with one click
bmad-sprint-planning
// Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan"
// Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan"
| name | bmad-sprint-planning |
| description | Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan" |
Goal: 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 datetime{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. Begin the workflow below.
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: optional
For each story, detect current status by checking files:
Story 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 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
#
# 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)
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 order
Write 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...
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 → done
Story Status Flow:
backlog → ready-for-dev → in-progress → review → done
stories/1-3-plant-naming.md)Retrospective Status:
optional ↔ done
in-progress when starting work on its first storyin-progress if team capacity allowsreview before donedone to incorporate learningsCreate, update, or validate a product brief. Use when the user wants help producing, editing, or validating a brief.
UX designer and UI specialist. Use when the user asks to talk to Sally or requests the UX designer.
Create, update, or validate a PRD. Use when the user wants help producing, editing, or validating a PRD.
Plan UX patterns and design specifications. Use when the user says "lets create UX design" or "create UX specifications" or "help me plan the UX"
Product manager for PRD creation and requirements discovery. Use when the user asks to talk to John or requests the product manager.
DEPRECATED — consolidated into bmad-prd create intent - this skill will be removed in v7 in favor of `bmad-prd`.