BM

bmad-sprint-planning

Tracks sprint progress by aggregating status from epic files into a unified report.

Install

mkdir -p .claude/skills/bmad-sprint-planning && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17377" && unzip -o skill.zip -d .claude/skills/bmad-sprint-planning && rm skill.zip

Installs to .claude/skills/bmad-sprint-planning

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Generate sprint status tracking from epics. Use when the user says "run sprint planning" or "generate sprint plan"
114 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Generate sprint status tracking from epics
  • Parse epic files and extract work items
  • Detect current story statuses
  • Build a complete `sprint-status.yaml` file
  • Display completion summary to the user

How it works

The skill resolves workflow configurations, loads persistent facts and project config, then parses epic files to extract work items and build a structured sprint status.

Inputs & outputs

You give it
Epic files containing work items
You get back
A `sprint-status.yaml` file with epic and story statuses, and a completion summary

When to use bmad-sprint-planning

  • Run sprint planning
  • Generate sprint progress report
  • Update status tracking

About this skill

Sprint Planning Workflow

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.

Conventions

  • Bare paths (e.g. 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.

On Activation

Step 1: Resolve the Workflow Block

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:

  1. {skill-root}/customize.toml — defaults
  2. {project-root}/_bmad/custom/{skill-name}.toml — team overrides
  3. {project-root}/_bmad/custom/{skill-name}.user.toml — personal overrides

Any 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.

Step 2: Execute Prepend Steps

Execute each entry in {workflow.activation_steps_prepend} in order before proceeding.

Step 3: Load Persistent Facts

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.

Step 4: Load Config

Load config from {project-root}/_bmad/bmm/config.yaml and resolve:

  • project_name, user_name
  • communication_language, document_output_language
  • implementation_artifacts
  • planning_artifacts
  • date as system-generated current datetime
  • project_context = **/project-context.md (load if exists)
  • YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config {communication_language}
  • Generate all documents in {document_output_language}

Step 5: Greet the User

Greet {user_name}, speaking in {communication_language}.

Step 6: Execute Append Steps

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.

Paths

  • tracking_system = file-system
  • project_key = NOKEY
  • story_location = {implementation_artifacts}
  • story_location_absolute = {implementation_artifacts}
  • epics_location = {planning_artifacts}
  • epics_pattern = *epic*.md
  • status_file = {implementation_artifacts}/sprint-status.yaml

Input Files

InputPathLoad Strategy
Epics{planning_artifacts}/*epic*.md (whole) or {planning_artifacts}/*epic*/*.md (sharded)FULL_LOAD

Execution

Document Discovery - Full Epic Loading

Strategy: Sprint planning needs ALL epics and stories to build complete status tracking.

Epic Discovery Process:

  1. Search for whole document first - Look for epics.md, bmm-epics.md, or any *epic*.md file
  2. Check for sharded version - If whole document not found, look for epics/index.md
  3. If sharded version found:
    • Read index.md to understand the document structure
    • Read ALL epic section files listed in the index (e.g., epic-1.md, epic-2.md, etc.)
    • Process all epics and their stories from the combined content
    • This ensures complete sprint status coverage
  4. Priority: If both whole and sharded versions exist, use the whole document

Fuzzy matching: Be flexible with document names - users may use variations like epics.md, bmm-epics.md, user-stories.md, etc.

<workflow> <step n="1" goal="Parse epic files and extract all work items"> <action>Load {project_context} for project-wide patterns and conventions (if exists)</action> <action>Communicate in {communication_language} with {user_name}</action> <action>Look for all files matching `{epics_pattern}` in {epics_location}</action> <action>Could be a single `epics.md` file or multiple `epic-1.md`, `epic-2.md` files</action>

<action>For each epic file found, extract:</action>

  • Epic numbers from headers like ## Epic 1: or ## Epic 2:
  • Story IDs and titles from patterns like ### Story 1.1: User Authentication
  • Convert story format from Epic.Story: Title to kebab-case key: epic-story-title

Story ID Conversion Rules:

  • Original: ### Story 1.1: User Authentication
  • Replace period with dash: 1-1
  • Convert title to kebab-case: user-authentication
  • Final key: 1-1-user-authentication

<action>Build complete inventory of all epics and stories from all epic files</action> </step>

<step n="2" goal="Build sprint status structure"> <action>For each epic found, create entries in this order:</action>
  1. Epic entry - Key: epic-{num}, Default status: backlog
  2. Story entries - Key: {epic}-{story}-{title}, Default status: backlog
  3. Retrospective entry - Key: epic-{num}-retrospective, Default status: optional

Example structure:

development_status:
  epic-1: backlog
  1-1-user-authentication: backlog
  1-2-account-management: backlog
  epic-1-retrospective: optional
</step> <step n="3" goal="Apply intelligent status detection"> <action>For each story, detect current status by checking files:</action>

Story file detection:

  • Check: {story_location_absolute}/{story-key}.md (e.g., stories/1-1-user-authentication.md)
  • If exists → upgrade status to at least ready-for-dev

Preservation rule:

  • If existing {status_file} exists and has more advanced status, preserve it
  • Never downgrade status (e.g., don't change done to ready-for-dev)
  • If existing {status_file} has an action_items section, carry it over unchanged

Status Flow Reference:

  • Epic: backlogin-progressdone
  • Story: backlogready-for-devin-progressreviewdone
  • Retrospective: optionaldone </step>
<step n="4" goal="Generate sprint status file"> <action>Create or update {status_file} with:</action>

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 order

<action>Write the complete sprint status YAML to {status_file}</action> <action>CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing</action> <action>Ensure all items are ordered: epic, its stories, its retrospective, next epic...</action> <action>If the existing file had an action_items section, write it back unchanged after development_status</action> </step>

<step n="5" goal="Validate and report"> <action>Perform validation checks:</action>
  • Every epic in epic files appears in {status_file}
  • Every story in epic files appears in {status_file}
  • Every epic has a corresponding retrospective entry
  • No development_status items in {status_file} that don't exist in epic files
  • action_items section (if it existed) carried over unchanged
  • All status values are legal (match state machine definitions)
  • File is valid YAML syntax

<action>Count totals:</action>

  • Total epics: {{epic_count}}
  • Total stories: {{story_count}}
  • Epics in-progress: {{in_progress_count}}
  • Stories done: {{done_count}}

<action>Display completion summary to {user_name} in {communication_language}:</action>

Sprint Status Generated Successfully

  • File Location: {status_file}
  • Total Epics: {{epic_count}}
  • Total Stories: {{story_count}}
  • Epics In Progress: {{in_progress_count}}
  • Stories Completed: {{d

Content truncated.

When not to use it

  • When the user needs to generate documents in a language other than the configured `document_output_language`
  • When the user needs to speak in a language other than the configured `communication_language`

Limitations

  • The skill requires epic files to be in a specific format for parsing
  • The skill generates documents in the configured `document_output_language`

How it compares

This skill automates the generation of a detailed sprint status file from epics, providing a structured and consistent tracking mechanism, unlike manual status updates.

Compared to similar skills

bmad-sprint-planning side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
bmad-sprint-planning (this skill)023dNo flagsIntermediate
task-master225moReviewIntermediate
agile-product-owner107moReviewBeginner
writing-plans152moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry