mcpField
B
bmad-sprint-planning

bmad-sprint-planning

github.com/aj-geddesAgent workflows494100 installsUpdated 19w ago
Repository

About bmad-sprint-planning

bmad-sprint-planning is a Phase 4 planning skill in the BMAD Planning & Orchestrator plugin. It sequences stories by dependency, assigns parallel waves, and maintains sprint-status.yaml without writing code or tracking velocity.

Key features

  1. 01Reads planning artifacts and stories
  2. 02Builds a story dependency graph
  3. 03Assigns dependency-based parallel waves
  4. 04Updates story readiness and status
  5. 05Validates sequencing without writing

Use cases

  1. 01Prepare a first sprint-status.yaml
  2. 02Identify stories ready for parallel development
  3. 03Re-sequence work when stories are completed

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/claude-code-bmad-skills --skill bmad-sprint-planning

After installing, type/bmad-sprint-planningin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

scripts/
init-sprint-status.sh
sequence-stories.sh
templates/
sprint-status.template.yaml

Details

From the project README

BMAD Sprint Planning

Role: Sequencing & Handoff Bridge — Phase 4 orchestration
System-of-record: bmad-output/sprint-status.yaml


What This Skill Does

  1. Reads planning artifacts (PRD, architecture, epics, stories) from bmad-output/.
  2. Derives a dependency graph across all stories.
  3. Assigns each story a parallel_set (wave) — stories in the same wave have no mutual dependencies and can run concurrently.
  4. Emits bmad-output/sprint-status.yaml using the canonical template.
  5. Marks the first wave of stories ready-for-dev; all others remain backlog.
  6. Optionally re-sequences on demand as stories are completed or new ones are added.

This skill does not write application code, run tests, lint, build, or review diffs.


Three-Intent Operation

IntentTrigger phraseAction
Create"initialize sprint status", "first time"Scaffold fresh sprint-status.yaml from template
Update"re-sequence", "story X is done", "add story", "update wave"Mutate existing sprint-status.yaml in-place
Validate"check sequencing", "are dependencies correct", "show wave plan"Read and report without writing

Workflow — Create

  1. Load planning artifacts

    Glob: bmad-output/**/*.md, bmad-output/**/*.yaml
    

    Priority order: epics.md → prd.md → architecture.md → individual story files.

  2. Extract epics and stories

    • Parse all story IDs: format {epic}.{story}.{slug}.story.md (e.g., 2.1.stripe-integration.story.md)
    • Derive epic ordering from the epic list in epics.md or prd.md
  3. Build dependency graph

    • Read dependencies[] from each story's frontmatter or Dev Notes section
    • Topological sort: stories with no unmet dependencies → wave 1; stories unblocked after wave 1 → wave 2; etc.
  4. Initialize sprint-status.yaml

    bash ${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/scripts/init-sprint-status.sh
    

    Then populate with sequenced data (see template).

  5. Sequence stories

    bash ${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/scripts/sequence-stories.sh
    
  6. Set initial statuses

    • Wave 1 stories: status: ready-for-dev
    • All other stories: status: backlog
    • Epics: status: in-progress if any child story is ready-for-dev; else backlog
  7. Emit handoff summary — list wave 1 stories by owned_scope for conflict-free parallel dispatch


Workflow — Update

When a story moves to done:

  1. Remove it from any dependencies[] lists where it appears
  2. Identify newly unblocked stories (dependencies now fully satisfied)
  3. Promote them to ready-for-dev
  4. Re-evaluate parent epic status
  5. Write updated sprint-status.yaml

Parallel Set Assignment

Wave width (how many stories can run at once) is not a fixed number — it is the size of the dependency-free frontier at each topological level. There is no points budget or velocity ceiling.

Wave 1: all stories with no dependencies
Wave 2: all stories whose only dependencies are in wave 1
Wave N: all stories whose dependencies are fully in waves 1…(N-1)

Stories within a wave MUST have non-overlapping owned_scope to be safe for parallel dispatch. If two stories in the same wave share a file, split them into separate waves or document the conflict.


Status Lifecycle (view, not metric)

backlog → ready-for-dev → in-progress → review → done
  • This is a view of sequencing state, not a tracking instrument.
  • Transitions are triggered by external signals (dev tool reports, user command).
  • This skill never computes velocity, burndown, or completion rates from these statuses.

Scale-Adaptive Track Guidance

TrackStory countSprint-status behavior
Quick Flow1–15Single wave pass; minimal epic structure
BMAD Method10–50+Full wave assignment; epic grouping
Enterprise30+Multi-phase wave planning; dependency map documented in REFERENCE

Track is confirmed with the user before generating the status file.


Subagent Strategy

Pattern: Parallel dependency analysis
Use when: 15+ stories across 3+ epics

AgentTaskOutput
Agent 1Parse all story files, extract dependency declarationsbmad-output/context/dependency-raw.yaml
Agent 2Parse epic ordering from PRD/epics.mdbmad-output/context/epic-order.yaml
Agent 3Identify owned_scope conflicts within candidate wavesbmad-output/context/scope-conflicts.md

Main context: merge outputs, run topological sort, write sprint-status.yaml.

Example subagent prompt
Task: Extract dependencies from all story files
Context: Read all *.story.md files under bmad-output/stories/
Objective: For each story, output its id and its dependencies[] list
Output: Write YAML list to bmad-output/context/dependency-raw.yaml

Format:
- id: "2.1.stripe-integration"
  dependencies: ["1.3.user-auth"]
- id: "2.2.payment-webhook"
  dependencies: ["2.1.stripe-integration"]

Scripts

init-sprint-status.sh

Scaffolds bmad-output/sprint-status.yaml from the template if it does not exist.

bash ${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/scripts/init-sprint-status.sh \
  [project-name] [output-dir]
sequence-stories.sh

Orders stories: epics first (by epic number), then stories within each epic by dependency (topological), then assigns parallel_set integers.

bash ${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/scripts/sequence-stories.sh \
  [sprint-status-file]

Template

${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/templates/sprint-status.template.yaml

Fields: epics[], stories[] (with id, title, status, dependencies, parallel_set, owned_scope). The template contains no velocity, burndown, or points fields.


Key Guidelines

  1. Load context first — always read existing sprint-status.yaml before writing
  2. Use TodoWrite to track multi-step sequencing workflows
  3. Respect owned_scope — flag conflicts before assigning same-wave membership
  4. No metrics — if a field resembles velocity, points, or burndown, remove it
  5. Handoff clearly — conclude every Create/Update with the list of ready-for-dev stories and their owned_scope
  6. Decision log — append sequencing decisions to bmad-output/decision-log.md


Part of the BMAD Planning & Orchestrator plugin — a Claude Code harness for the BMAD Method by the BMAD Code Organization (https://github.com/bmad-code-org/BMAD-METHOD). Implements the spirit of bmad-sprint-planning. All methodology credit belongs to the BMAD Code Organization.

Comments

Markdown supported