bmad-method 6.10.1-next.39 → 6.10.1-next.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.claude-plugin/marketplace.json +2 -3
  2. package/package.json +4 -3
  3. package/removals.txt +6 -0
  4. package/src/bmm-skills/agents/bmad-agent-architect/customize.toml +2 -2
  5. package/src/bmm-skills/agents/bmad-agent-pm/customize.toml +2 -2
  6. package/src/bmm-skills/module-help.csv +2 -3
  7. package/src/bmm-skills/plan/bmad-sprint-planning/SKILL.md +62 -0
  8. package/src/bmm-skills/plan/bmad-sprint-planning/references/fix-sprint-status.md +30 -0
  9. package/src/bmm-skills/plan/bmad-sprint-planning/references/generate-tracking.md +25 -0
  10. package/src/bmm-skills/plan/bmad-sprint-planning/references/readiness-gate.md +20 -0
  11. package/src/bmm-skills/plan/bmad-sprint-planning/references/status-view.md +14 -0
  12. package/src/bmm-skills/plan/bmad-sprint-planning/references/validate.md +10 -0
  13. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
  14. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/sprint_plan.py +697 -0
  15. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
  16. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
  17. package/src/bmm-skills/{ship → plan}/bmad-sprint-planning/sprint-status-template.yaml +9 -7
  18. package/src/bmm-skills/ship/bmad-retrospective/references/retro-document.md +1 -1
  19. package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
  20. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
  21. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
  22. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
  23. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py +6 -7
  24. package/src/bmm-skills/v6-shims/README.md +1 -0
  25. package/src/bmm-skills/v6-shims/bmad-sprint-status/SKILL.md +26 -0
  26. package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
  27. package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
  28. package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
  29. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
  30. package/src/bmm-skills/plan/bmad-check-implementation-readiness/SKILL.md +0 -91
  31. package/src/bmm-skills/plan/bmad-check-implementation-readiness/customize.toml +0 -41
  32. package/src/bmm-skills/plan/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
  33. package/src/bmm-skills/plan/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
  34. package/src/bmm-skills/plan/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
  35. package/src/bmm-skills/plan/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
  36. package/src/bmm-skills/plan/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
  37. package/src/bmm-skills/plan/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -132
  38. package/src/bmm-skills/plan/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
  39. package/src/bmm-skills/ship/bmad-sprint-planning/SKILL.md +0 -319
  40. package/src/bmm-skills/ship/bmad-sprint-planning/checklist.md +0 -34
  41. package/src/bmm-skills/ship/bmad-sprint-status/SKILL.md +0 -311
  42. /package/src/bmm-skills/{ship → plan}/bmad-sprint-planning/customize.toml +0 -0
  43. /package/src/bmm-skills/{ship → v6-shims}/bmad-sprint-status/customize.toml +0 -0
@@ -84,15 +84,14 @@
84
84
  "./src/bmm-skills/plan/bmad-ux",
85
85
  "./src/bmm-skills/agents/bmad-agent-architect",
86
86
  "./src/bmm-skills/plan/bmad-architecture",
87
- "./src/bmm-skills/plan/bmad-check-implementation-readiness",
88
87
  "./src/bmm-skills/plan/bmad-create-epics-and-stories",
89
88
  "./src/bmm-skills/plan/bmad-generate-project-context",
90
89
  "./src/bmm-skills/agents/bmad-agent-dev",
91
90
  "./src/bmm-skills/v6-shims/bmad-dev-story",
92
91
  "./src/bmm-skills/ship/bmad-build",
93
92
  "./src/bmm-skills/ship/bmad-checkpoint-preview",
94
- "./src/bmm-skills/ship/bmad-sprint-planning",
95
- "./src/bmm-skills/ship/bmad-sprint-status",
93
+ "./src/bmm-skills/plan/bmad-sprint-planning",
94
+ "./src/bmm-skills/v6-shims/bmad-sprint-status",
96
95
  "./src/bmm-skills/ship/bmad-code-review",
97
96
  "./src/bmm-skills/v6-shims/bmad-create-story",
98
97
  "./src/bmm-skills/ship/bmad-correct-course",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.10.1-next.39",
4
+ "version": "6.10.1-next.40",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -40,9 +40,9 @@
40
40
  "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
41
41
  "lint:md": "markdownlint-cli2 \"**/*.md\"",
42
42
  "prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
43
- "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:retrospective && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
43
+ "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:retrospective && npm run test:sprint-planning && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
44
44
  "rebundle": "node tools/installer/bundlers/bundle-web.js rebundle",
45
- "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:retrospective && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
45
+ "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:retrospective && npm run test:sprint-planning && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
46
46
  "test:channels": "node test/test-installer-channels.js",
47
47
  "test:install": "node test/test-installation-components.js",
48
48
  "test:refs": "node test/test-file-refs-csv.js",
@@ -50,6 +50,7 @@
50
50
  "test:retrospective": "uv run --python 3.11 src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py && uv run --python 3.11 src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py",
51
51
  "test:site-url": "node test/test-site-url.mjs",
52
52
  "test:skills": "node test/test-validate-skills.js",
53
+ "test:sprint-planning": "uv run --python 3.11 src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/test_sprint_plan.py && node test/test-template-sync.js",
53
54
  "test:urls": "node test/test-parse-source-urls.js",
54
55
  "validate:refs": "node tools/validate-file-refs.js --strict",
55
56
  "validate:skills": "node tools/validate-skills.js --strict"
package/removals.txt CHANGED
@@ -79,3 +79,9 @@ bmad-shard-doc
79
79
  # defaults; document-project remains directly invocable. Paige is on hiatus
80
80
  # and will return in the future far more capable.
81
81
  bmad-agent-tech-writer
82
+
83
+ # Removed skills (skill consolidation)
84
+ # bmad-check-implementation-readiness: folded into bmad-sprint-planning,
85
+ # which now opens with a readiness gate (PASS/CONCERNS/FAIL) before
86
+ # generating tracking. The IR agent menu trigger dispatches sprint-planning.
87
+ bmad-check-implementation-readiness
@@ -61,5 +61,5 @@ skill = "bmad-architecture"
61
61
 
62
62
  [[agent.menu]]
63
63
  code = "IR"
64
- description = "Ensure the PRD, UX, Architecture and Epics and Stories List are all aligned"
65
- skill = "bmad-check-implementation-readiness"
64
+ description = "Check implementation readiness — verify the planning artifacts are complete and aligned (opens sprint planning; stop after the gate or continue into tracking)"
65
+ skill = "bmad-sprint-planning"
@@ -66,8 +66,8 @@ skill = "bmad-create-epics-and-stories"
66
66
 
67
67
  [[agent.menu]]
68
68
  code = "IR"
69
- description = "Ensure the PRD, UX, Architecture and Epics and Stories List are all aligned"
70
- skill = "bmad-check-implementation-readiness"
69
+ description = "Check implementation readiness — verify the planning artifacts are complete and aligned (opens sprint planning; stop after the gate or continue into tracking)"
70
+ skill = "bmad-sprint-planning"
71
71
 
72
72
  [[agent.menu]]
73
73
  code = "CC"
@@ -12,9 +12,8 @@ BMad Method,bmad-prd,Create Edit and Review PRD,PRD,"Facilitated PRD workflow
12
12
  BMad Method,bmad-ux,Create UX,CU,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project.",,,2-planning,bmad-prd,,false,planning_artifacts,ux design
13
13
  BMad Method,bmad-architecture,Architecture,CA,Offer once requirements exist (a PRD or spec; plus UX if present) and the user is ready to move from what to how. Also offer any time independently-built parts risk diverging. Produces the architecture spine: the invariants that keep features epics and stories consistent. Comes before epics and stories and scales from a quick spine to a full architecture (brownfield: ratifies the existing codebase).,,,plan,,,true,planning_artifacts,architecture
14
14
  BMad Method,bmad-create-epics-and-stories,Create Epics and Stories,CE,,,,plan,bmad-architecture,,true,planning_artifacts,epics and stories
15
- BMad Method,bmad-check-implementation-readiness,Check Implementation Readiness,IR,Ensure PRD UX Architecture and Epics Stories are aligned.,,,plan,bmad-create-epics-and-stories,,true,planning_artifacts,readiness report
16
- BMad Method,bmad-sprint-planning,Sprint Planning,SP,Kicks off implementation by producing a plan the implementation agents will follow in sequence for every story.,,,ship,,,true,implementation_artifacts,sprint status
17
- BMad Method,bmad-sprint-status,Sprint Status,SS,Anytime: Summarize sprint status and route to next workflow.,,,ship,bmad-sprint-planning,,false,,
15
+ BMad Method,bmad-sprint-planning,Sprint Planning,SP,Readiness gate then tracking: verifies the planning is implementable (PASS/CONCERNS/FAIL) and produces the sprint status the implementation agents follow for every story.,,,plan,,,true,implementation_artifacts,sprint status
16
+ BMad Method,bmad-sprint-planning,Sprint Status,SS,Anytime: summarize sprint status with risks open action items and the next recommended action; can also validate or repair the tracking file.,status,,anytime,,,false,,status summary
18
17
  BMad Method,bmad-code-review,Code Review,CR,Ad hoc review of any code change. Optional extra layer after Build's built-in review.,,,ship,bmad-build,,false,,
19
18
  BMad Method,bmad-checkpoint-preview,Checkpoint,CK,Guided walkthrough of a change from purpose and context into details. Use for human review of commits branches or PRs.,,,ship,,,false,,
20
19
  BMad Method,bmad-qa-generate-e2e-tests,QA Automation Test,QA,Generate automated API and E2E tests for implemented code. NOT for code review or story validation — use CR for that.,,,ship,bmad-build,,false,implementation_artifacts,test suite
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: bmad-sprint-planning
3
+ description: 'Gate planning readiness, generate sprint status tracking from epics, summarize sprint progress, and validate or repair the tracking file. Use when the user says "run sprint planning", "generate sprint plan", "check implementation readiness", "show sprint status", "validate sprint status", or "fix sprint status"'
4
+ ---
5
+
6
+ # Overview
7
+
8
+ You are a senior developer about to commit to this plan. Two moves, in order: first scrutinize the planning the way a skeptic reads a handoff — gaps found now are cheap, gaps found mid-build are not. Then hand the mechanical work to the script: parsing epics, deriving keys, merging statuses, and writing `sprint-status.yaml` are deterministic jobs, not judgment calls. Your judgment goes where the script can't: deciding which files are epics, weighing readiness, and reconciling anything the script flags.
9
+
10
+ ## On Activation
11
+
12
+ 1. Resolve customization: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults.
13
+ 2. Execute each entry in `{workflow.activation_steps_prepend}` in order.
14
+ 3. Treat every entry in `{workflow.persistent_facts}` as foundational context for the rest of the run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.
15
+ 4. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{project_name}`, `{planning_artifacts}`, `{implementation_artifacts}`, `{project_knowledge}` (skip gracefully if unset), `{date}`. Stay in `{communication_language}` for every turn, not just the greeting.
16
+ 5. Greet `{user_name}`, detect intent, and load only what that intent needs:
17
+ - **readiness** — check implementation readiness only: load `references/readiness-gate.md`, run the gate, report, stop
18
+ - **sprint-planning** — the full flow (also the refresh path for an existing `sprint-status.yaml`): load `references/readiness-gate.md`, then on PASS `references/generate-tracking.md`
19
+ - **status** — "show sprint status", "where are we": skip the gate, load `references/status-view.md`
20
+ - **validate** — check the tracking file's format: load `references/validate.md`
21
+ - **fix** — repair or rebuild a broken `sprint-status.yaml`: load `references/fix-sprint-status.md`
22
+
23
+ If interactive and unclear, ask; for headless behavior see `## Headless Mode`.
24
+
25
+ Execute each entry in `{workflow.activation_steps_append}` in order.
26
+
27
+ Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding.
28
+
29
+ ## If the Script Fails
30
+
31
+ This rule covers every intent: when `sprint_plan.py` errors or the file is in a state it cannot handle, do not stop at the error and do not guess silently. Read the files yourself, deliver the same outcome by best judgment, tell the user the deterministic path failed and why, and offer the fix flow (`references/fix-sprint-status.md`) to restore a file the script can work with.
32
+
33
+ ## On Completion
34
+
35
+ Whatever the intent, close out in `{communication_language}` per the loaded reference, then run `{workflow.on_complete}` if non-empty; treat a string scalar as one instruction and an array as a sequence.
36
+
37
+ ## Headless Mode
38
+
39
+ When invoked headless, do not ask. Run the gate and, unless intent was readiness-only, generate tracking. Ambiguity the interactive flow would resolve by asking (duplicate epic versions, unreconciled orphans, an unconfirmed fix) halts with a `blocked` status instead of guessing. End with a JSON response:
40
+
41
+ ```json
42
+ {
43
+ "status": "complete",
44
+ "intent": "sprint-planning",
45
+ "gate": "PASS",
46
+ "status_file": "{implementation_artifacts}/sprint-status.yaml",
47
+ "findings": [],
48
+ "warnings": []
49
+ }
50
+ ```
51
+
52
+ `gate` is `PASS`, `CONCERNS`, or `FAIL`; on `FAIL` include `findings` and the saved findings path if written, and omit `status_file`. `intent` is `"readiness"`, `"sprint-planning"`, `"status"`, `"validate"`, or `"fix"` — for status and validate intents, omit `gate` and pass the script's JSON through under a `report` key (not `status`, which names the run state).
53
+
54
+ ## References
55
+
56
+ - `scripts/sprint_plan.py` — the deterministic parser/generator/merger; subcommands `generate`, `status`, `validate`. Its JSON output is the contract this skill reads; argparse errors are JSON too
57
+ - `references/readiness-gate.md` — the PASS/CONCERNS/FAIL gate: artifact inventory and the implementability question
58
+ - `references/generate-tracking.md` — epic discovery, the generate command, and acting on its JSON report
59
+ - `references/status-view.md` — the status view: counts, risks, open action items, next recommended action
60
+ - `references/fix-sprint-status.md` — rebuild a broken tracking file: evidence-gathering subagents, user confirmation, pristine regeneration
61
+ - `references/validate.md` — format validation of an existing `sprint-status.yaml`
62
+ - `sprint-status-template.yaml` — the documented file format and status vocabulary; the script embeds the same block and the test suite pins the two copies together
@@ -0,0 +1,30 @@
1
+ # Fix Sprint Status
2
+
3
+ Rebuild `sprint-status.yaml` to a pristine, script-valid state when it is broken, hand-mangled, drifted from reality, or the user simply asks to fix it. Inference determines what the state *should* be; the user confirms it; the script writes it. Never write without the confirmation.
4
+
5
+ 1. **Scope the damage.** Run `sprint_plan.py validate` and share what it found. If even the epic files are missing or unparseable, say so — there is nothing to rebuild tracking against until planning artifacts exist.
6
+
7
+ 2. **Determine the true state by inference.** This is judgment work — fan out subagents in parallel, each gathering one kind of evidence, and have each return proposed `key=status` pairs with the evidence behind them:
8
+ - **Epics** — read the epic files in `{planning_artifacts}`: the authoritative work breakdown (which epics, stories, and retrospectives should exist at all)
9
+ - **Story files** — scan `{implementation_artifacts}`: which stories have files on disk, and what their content says about progress (acceptance criteria checked off, completion notes, review sections)
10
+ - **Code evidence** — git history and the codebase: commits or merged work referencing story keys are evidence a story is done or in progress
11
+ - **The current file** — salvage everything credible from the existing `sprint-status.yaml`, especially `action_items`, even when its structure is broken
12
+
13
+ 3. **Reconcile into one proposed state.** Merge the evidence into a single table: key → proposed status, evidence, and anything uncertain. When evidence conflicts or is thin, prefer the lower status and flag it — a false `done` costs more than a false `in-progress`.
14
+
15
+ 4. **Confirm with `{user_name}`.** Show the table. Highlight every entry that differs from the current file — especially downgrades — and every low-confidence call. Adjust to their corrections. Headless: halt with `blocked` instead of confirming.
16
+
17
+ 5. **Write pristine.** One command, from the confirmed table:
18
+
19
+ ```
20
+ uv run {skill-root}/scripts/sprint_plan.py generate \
21
+ --epic-file <path> [...] \
22
+ --status-file {implementation_artifacts}/sprint-status.yaml \
23
+ --stories-dir {implementation_artifacts} \
24
+ --project "{project_name}" --date "{date}" \
25
+ --fresh --set <key>=<status> [--set <key>=<status> ...]
26
+ ```
27
+
28
+ `--fresh` rebuilds the document cleanly (canonical vocabulary, standard header) while still carrying `action_items`; `--set` applies the confirmed statuses and is the one path allowed to downgrade. Only confirmed entries that differ from the fresh defaults need a `--set`.
29
+
30
+ 6. **Verify.** Run `validate` again (expect `valid: true`) and present the status view summary so the user sees the repaired state.
@@ -0,0 +1,25 @@
1
+ # Generate Tracking
2
+
3
+ Discovery is your call; everything after it is the script's.
4
+
5
+ 1. Identify the epic files. The gate inventory already surfaced them — typically `epics.md`, `epic-*.md`, or a sharded `epics/` folder in `{planning_artifacts}`, but trust content over filename. If both a whole document and a sharded version exist, ask which is current rather than guessing.
6
+ 2. Run the script, passing every epic file:
7
+
8
+ ```
9
+ uv run {skill-root}/scripts/sprint_plan.py generate \
10
+ --epic-file <path> [--epic-file <path> ...] \
11
+ --status-file {implementation_artifacts}/sprint-status.yaml \
12
+ --stories-dir {implementation_artifacts} \
13
+ --project "{project_name}" --date "{date}"
14
+ ```
15
+
16
+ `{date}` must be `MM-DD-YYYY HH:MM` — the format the staleness check parses. The script owns parsing (`## Epic N:` / `### Story N.M: Title` → kebab-case keys; fenced code blocks ignored), ordering (epic, its stories, its retrospective), merging with any existing file (preserve advanced statuses, never downgrade; legacy v6 values like `drafted`/`contexted` are normalized to their modern meaning, never reset; `action_items`, custom keys, and user comments carried through; `project_key`/`tracking_system`/`story_location` kept from the existing file unless overridden by flag), story-file detection (a story file on disk floors its status at `ready-for-dev`), atomic writes, and post-write validation. It prints a JSON report. Add `--dry-run` to preview — the report's `in_sync`, `new_entries`, `dropped_orphans`, `illegal`, and `legacy_mapped` fields answer "is tracking in sync?" without writing.
17
+
18
+ 3. Read the JSON report and act on it — this is where judgment re-enters:
19
+ - `warnings` about unparsed Epic/Story-like headings mean the epic file deviates from the standard format. Show the user, fix the headings together (or accept the omission), and rerun.
20
+ - `dropped_orphans` are entries that existed in the old status file but match nothing in the epics — usually renames. Each carries its old status; reconcile with the user, then transplant by rerunning with `--set <new-key>=<old-status>`.
21
+ - If the epics defeat the parser entirely (a format the regexes can't see), fall back to building the file yourself against `sprint-status-template.yaml`, and tell the user the deterministic path didn't apply.
22
+
23
+ ## Report
24
+
25
+ Present the result from the script's JSON in `{communication_language}`: file path, epic/story counts, status breakdown, anything upgraded from disk. Suggest next steps — review the file, `bmad-build` to start the first story, rerun this skill anytime to refresh after epics change.
@@ -0,0 +1,20 @@
1
+ # Readiness Gate
2
+
3
+ Before generating any tracking, judge whether the plan can actually be built. If the user only asked to check readiness, this gate is the deliverable — report the verdict and stop.
4
+
5
+ Inventory what planning actually exists: scan `{planning_artifacts}` and `{project_knowledge}` for intent and planning artifacts — briefs, PRFAQs, PRDs, specs, UX outputs, architecture, epics and stories. Identify documents by reading what they are, not by filename patterns; projects arrive with different artifact mixes and naming.
6
+
7
+ Assess the plan as a whole against one question: **could a developer implement these epics without inventing decisions nothing records?**
8
+
9
+ - Requirements and decisions in the intent artifacts trace forward into stories; stories trace back to recorded intent — flag orphans in both directions
10
+ - Epics deliver user value and carry no forward dependencies; stories are independently completable
11
+ - Architecture and UX decisions the stories rely on are recorded somewhere, not assumed
12
+ - Conflicts between artifacts (a spec and an epic disagreeing) are surfaced, not silently resolved
13
+
14
+ A missing document type is only a finding if stories depend on decisions nothing records — a project with no UX artifact and no UI stories is fine.
15
+
16
+ Deliver a verdict:
17
+
18
+ - **PASS** — state it in one line; for the full sprint-planning intent, continue with `generate-tracking.md`
19
+ - **CONCERNS** — list them briefly with where each gap lives; ask `{user_name}` whether to proceed anyway or fix first
20
+ - **FAIL** — the plan is not implementable as recorded. Present findings ordered by severity, name the skill that fixes each (the relevant plan skill, or `bmad-correct-course` for cross-cutting changes), offer to save the findings to `{planning_artifacts}/implementation-readiness.md`, and stop
@@ -0,0 +1,14 @@
1
+ # Status View
2
+
3
+ When the user wants to know where the sprint stands ("show sprint status", "where are we"), run:
4
+
5
+ ```
6
+ uv run {skill-root}/scripts/sprint_plan.py status \
7
+ --status-file {implementation_artifacts}/sprint-status.yaml --date "{date}"
8
+ ```
9
+
10
+ `{date}` is `MM-DD-YYYY HH:MM`. The script computes everything: counts by status (legacy values like `drafted` mapped transparently and reported in `legacy_mapped`), risk flags (stale file, orphaned stories, in-progress epics without stories, stories waiting in review, unrecognized keys), open action items from retrospectives, and the next recommended action by fixed priority — resume in-progress → review what's in review → start the next ready or backlog story → run an open retrospective → all done. If the file is missing, the script says so — offer to run sprint planning to create it.
11
+
12
+ Render the JSON as a compact summary in `{communication_language}`: counts, risks, open action items, and the recommendation with its story key. Offer to run the recommended skill. Surface `illegal` and `unrecognized` entries and the script's `warnings` (malformed action items land there); if the user gives corrections, apply them via the fix flow rather than ad-hoc edits. No time estimates — status, risks, and next steps only.
13
+
14
+ If the script errors — malformed YAML, a hand-edited structure it can't parse, anything — do not stop at the error. Read `sprint-status.yaml` yourself, apply best judgment to give the user the same summary (counts, risks, next recommended action), tell them the deterministic path failed and why, and offer the fix flow (`fix-sprint-status.md`) so the script works next time.
@@ -0,0 +1,10 @@
1
+ # Validate
2
+
3
+ When the user asks whether `sprint-status.yaml` is well-formed, run:
4
+
5
+ ```
6
+ uv run {skill-root}/scripts/sprint_plan.py validate \
7
+ --status-file {implementation_artifacts}/sprint-status.yaml
8
+ ```
9
+
10
+ Never writes; exits 0 whether valid or not. Report `valid` in one line. If `problems` is non-empty, list them plainly (each names the key or field at fault) and offer the fix flow (`fix-sprint-status.md`). If `legacy_mapped` is non-empty, note the file still uses v6 status names and that any regenerate will rewrite them to the modern vocabulary — progress is preserved either way.