$npx -y skills add aj-geddes/claude-code-bmad-skills --skill bmad-sprint-planningOrchestration handoff bridge: emits and maintains sprint-status.yaml as the project's sequencing system-of-record. Orders stories by epic then dependency, assigns parallel-set (wave) membership, and drives the status lifecycle (backlog → ready-for-dev → in-progress → review → don
| 1 | # BMAD Sprint Planning |
| 2 | |
| 3 | **Role:** Sequencing & Handoff Bridge — Phase 4 orchestration |
| 4 | **System-of-record:** `bmad-output/sprint-status.yaml` |
| 5 | |
| 6 | --- |
| 7 | |
| 8 | ## What This Skill Does |
| 9 | |
| 10 | 1. Reads planning artifacts (PRD, architecture, epics, stories) from `bmad-output/`. |
| 11 | 2. Derives a dependency graph across all stories. |
| 12 | 3. Assigns each story a `parallel_set` (wave) — stories in the same wave have no mutual dependencies and can run concurrently. |
| 13 | 4. Emits `bmad-output/sprint-status.yaml` using the canonical template. |
| 14 | 5. Marks the first wave of stories `ready-for-dev`; all others remain `backlog`. |
| 15 | 6. Optionally re-sequences on demand as stories are completed or new ones are added. |
| 16 | |
| 17 | This skill does **not** write application code, run tests, lint, build, or review diffs. |
| 18 | |
| 19 | --- |
| 20 | |
| 21 | ## Three-Intent Operation |
| 22 | |
| 23 | | Intent | Trigger phrase | Action | |
| 24 | |--------|---------------|--------| |
| 25 | | **Create** | "initialize sprint status", "first time" | Scaffold fresh `sprint-status.yaml` from template | |
| 26 | | **Update** | "re-sequence", "story X is done", "add story", "update wave" | Mutate existing `sprint-status.yaml` in-place | |
| 27 | | **Validate** | "check sequencing", "are dependencies correct", "show wave plan" | Read and report without writing | |
| 28 | |
| 29 | --- |
| 30 | |
| 31 | ## Workflow — Create |
| 32 | |
| 33 | 1. **Load planning artifacts** |
| 34 | ``` |
| 35 | Glob: bmad-output/**/*.md, bmad-output/**/*.yaml |
| 36 | ``` |
| 37 | Priority order: `epics.md` → `prd.md` → `architecture.md` → individual story files. |
| 38 | |
| 39 | 2. **Extract epics and stories** |
| 40 | - Parse all story IDs: format `{epic}.{story}.{slug}.story.md` (e.g., `2.1.stripe-integration.story.md`) |
| 41 | - Derive epic ordering from the epic list in `epics.md` or `prd.md` |
| 42 | |
| 43 | 3. **Build dependency graph** |
| 44 | - Read `dependencies[]` from each story's frontmatter or Dev Notes section |
| 45 | - Topological sort: stories with no unmet dependencies → wave 1; stories unblocked after wave 1 → wave 2; etc. |
| 46 | |
| 47 | 4. **Initialize sprint-status.yaml** |
| 48 | ```bash |
| 49 | bash ${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/scripts/init-sprint-status.sh |
| 50 | ``` |
| 51 | Then populate with sequenced data (see template). |
| 52 | |
| 53 | 5. **Sequence stories** |
| 54 | ```bash |
| 55 | bash ${CLAUDE_PLUGIN_ROOT}/skills/bmad-sprint-planning/scripts/sequence-stories.sh |
| 56 | ``` |
| 57 | |
| 58 | 6. **Set initial statuses** |
| 59 | - Wave 1 stories: `status: ready-for-dev` |
| 60 | - All other stories: `status: backlog` |
| 61 | - Epics: `status: in-progress` if any child story is ready-for-dev; else `backlog` |
| 62 | |
| 63 | 7. **Emit handoff summary** — list wave 1 stories by `owned_scope` for conflict-free parallel dispatch |
| 64 | |
| 65 | --- |
| 66 | |
| 67 | ## Workflow — Update |
| 68 | |
| 69 | When a story moves to `done`: |
| 70 | 1. Remove it from any `dependencies[]` lists where it appears |
| 71 | 2. Identify newly unblocked stories (dependencies now fully satisfied) |
| 72 | 3. Promote them to `ready-for-dev` |
| 73 | 4. Re-evaluate parent epic status |
| 74 | 5. Write updated `sprint-status.yaml` |
| 75 | |
| 76 | --- |
| 77 | |
| 78 | ## Parallel Set Assignment |
| 79 | |
| 80 | 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. |
| 81 | |
| 82 | ``` |
| 83 | Wave 1: all stories with no dependencies |
| 84 | Wave 2: all stories whose only dependencies are in wave 1 |
| 85 | Wave N: all stories whose dependencies are fully in waves 1…(N-1) |
| 86 | ``` |
| 87 | |
| 88 | 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. |
| 89 | |
| 90 | --- |
| 91 | |
| 92 | ## Status Lifecycle (view, not metric) |
| 93 | |
| 94 | ``` |
| 95 | backlog → ready-for-dev → in-progress → review → done |
| 96 | ``` |
| 97 | |
| 98 | - This is a **view** of sequencing state, not a tracking instrument. |
| 99 | - Transitions are triggered by external signals (dev tool reports, user command). |
| 100 | - This skill never computes velocity, burndown, or completion rates from these statuses. |
| 101 | |
| 102 | --- |
| 103 | |
| 104 | ## Scale-Adaptive Track Guidance |
| 105 | |
| 106 | | Track | Story count | Sprint-status behavior | |
| 107 | |-------|-------------|- |