Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan"
65
77%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.mdGoal: Generate sprint status tracking from epics, detecting current story statuses and building a complete sprint-status.yaml file.
Your Role: You are a Developer generating and maintaining sprint tracking. Parse epic files, detect story statuses, and produce a structured sprint-status.yaml.
checklist.md) resolve from the skill root.{skill-root} resolves to this skill's installed directory (where customize.toml lives).{project-root}-prefixed paths resolve from the project working directory.{skill-name} resolves to the skill directory's basename.Run: python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow
If the script fails, resolve the workflow block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
{skill-root}/customize.toml — defaults{project-root}/_bmad/custom/{skill-name}.toml — team overrides{project-root}/_bmad/custom/{skill-name}.user.toml — personal overridesAny missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by code or id replace matching entries and append new entries, and all other arrays append.
Execute each entry in {workflow.activation_steps_prepend} in order before proceeding.
Treat every entry in {workflow.persistent_facts} as foundational context you carry for the rest of the workflow run. Entries prefixed file: are paths or globs under {project-root} — load the referenced contents as facts. All other entries are facts verbatim.
Load config from {project-root}/_bmad/bmm/config.yaml and resolve:
project_name, user_namecommunication_language, document_output_languageimplementation_artifactsplanning_artifactsdate as system-generated current datetimeproject_context = **/project-context.md (load if exists){communication_language}{document_output_language}Greet {user_name}, speaking in {communication_language}.
Execute each entry in {workflow.activation_steps_append} in order.
Activation is complete. If activation_steps_prepend or activation_steps_append were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
tracking_system = file-systemproject_key = NOKEYstory_location = {implementation_artifacts}story_location_absolute = {implementation_artifacts}epics_location = {planning_artifacts}epics_pattern = *epic*.mdstatus_file = {implementation_artifacts}/sprint-status.yaml| Input | Path | Load Strategy |
|---|---|---|
| Epics | {planning_artifacts}/*epic*.md (whole) or {planning_artifacts}/*epic*/*.md (sharded) | FULL_LOAD |
Strategy: Sprint planning needs ALL epics and stories to build complete status tracking.
Epic Discovery Process:
epics.md, bmm-epics.md, or any *epic*.md fileepics/index.mdindex.md to understand the document structureepic-1.md, epic-2.md, etc.)Fuzzy matching: Be flexible with document names - users may use variations like epics.md, bmm-epics.md, user-stories.md, etc.
For each epic file found, extract:
## Epic 1: or ## Epic 2:### Story 1.1: User AuthenticationEpic.Story: Title to kebab-case key: epic-story-titleStory ID Conversion Rules:
### Story 1.1: User Authentication1-1user-authentication1-1-user-authenticationBuild complete inventory of all epics and stories from all epic files
For each epic found, create entries in this order:epic-{num}, Default status: backlog{epic}-{story}-{title}, Default status: backlogepic-{num}-retrospective, Default status: optionalExample structure:
development_status:
epic-1: backlog
1-1-user-authentication: backlog
1-2-account-management: backlog
epic-1-retrospective: optionalStory file detection:
{story_location_absolute}/{story-key}.md (e.g., stories/1-1-user-authentication.md)ready-for-devPreservation rule:
{status_file} exists and has more advanced status, preserve itdone to ready-for-dev){status_file} has an action_items section, carry it over unchangedStatus Flow Reference:
backlog → in-progress → donebacklog → ready-for-dev → in-progress → review → doneoptional ↔ done
File Structure:
# generated: {date}
# last_updated: {date}
# project: {project_name}
# project_key: {project_key}
# tracking_system: {tracking_system}
# story_location: {story_location}
# STATUS DEFINITIONS:
# ==================
# Epic Status:
# - backlog: Epic not yet started
# - in-progress: Epic actively being worked on
# - done: All stories in epic completed
#
# Epic Status Transitions:
# - backlog → in-progress: Automatically when first story is created (via create-story)
# - in-progress → done: Manually when all stories reach 'done' status
#
# Story Status:
# - backlog: Story only exists in epic file
# - ready-for-dev: Story file created in stories folder
# - in-progress: Developer actively working on implementation
# - review: Ready for code review (via Dev's code-review workflow)
# - done: Story completed
#
# Retrospective Status:
# - optional: Can be completed but not required
# - done: Retrospective has been completed
#
# Action Item Status:
# - open: Committed during a retrospective, not yet addressed
# - in-progress: Actively being worked on
# - done: Completed
#
# WORKFLOW NOTES:
# ===============
# - Epic transitions to 'in-progress' automatically when first story is created
# - Stories can be worked in parallel if team capacity allows
# - Developer typically creates next story after previous one is 'done' to incorporate learnings
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
# - Retrospective appends its action items to action_items; sprint-status surfaces open ones
generated: { date }
last_updated: { date }
project: { project_name }
project_key: { project_key }
tracking_system: { tracking_system }
story_location: { story_location }
development_status:
# All epics, stories, and retrospectives in orderWrite the complete sprint status YAML to {status_file} CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing Ensure all items are ordered: epic, its stories, its retrospective, next epic... If the existing file had an action_items section, write it back unchanged after development_status
Perform validation checks:Count totals:
Display completion summary to {user_name} in {communication_language}:
Sprint Status Generated Successfully
Next Steps:
Run: python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete — if the resolved value is non-empty, follow it as the final terminal instruction before exiting.
Epic Status Flow:
backlog → in-progress → doneStory Status Flow:
backlog → ready-for-dev → in-progress → review → donestories/1-3-plant-naming.md)Retrospective Status:
optional ↔ doneAction Item Status:
open → in-progress → donein-progress when starting work on its first storyin-progress if team capacity allowsreview before donedone to incorporate learningsbb45db4
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.