bmad-method 6.10.1-next.9 → 6.11.0
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.
- package/.claude-plugin/marketplace.json +30 -57
- package/README.md +49 -82
- package/README_CN.md +10 -10
- package/README_VN.md +11 -11
- package/bmad-modules.yaml +43 -39
- package/package.json +7 -3
- package/removals.txt +17 -0
- package/src/bmm-skills/{1-analysis → agents}/bmad-agent-analyst/SKILL.md +1 -1
- package/src/bmm-skills/{1-analysis → agents}/bmad-agent-analyst/customize.toml +22 -7
- package/src/bmm-skills/{3-solutioning → agents}/bmad-agent-architect/SKILL.md +1 -1
- package/src/bmm-skills/{3-solutioning → agents}/bmad-agent-architect/customize.toml +2 -2
- package/src/bmm-skills/{4-implementation → agents}/bmad-agent-dev/SKILL.md +1 -1
- package/src/bmm-skills/{4-implementation → agents}/bmad-agent-dev/customize.toml +7 -14
- package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-pm/SKILL.md +1 -1
- package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-pm/customize.toml +2 -2
- package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-ux-designer/SKILL.md +1 -1
- package/src/bmm-skills/module-help.csv +14 -26
- package/src/bmm-skills/module.yaml +5 -15
- package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/SKILL.md +3 -3
- package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/customize.toml +4 -2
- package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/SKILL.md +1 -1
- package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/src/bmm-skills/plan/bmad-generate-project-context/SKILL.md +10 -0
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/SKILL.md +3 -1
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/prd-template.md +1 -1
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/customize.toml +5 -3
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/references/validate.md +3 -3
- package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/SKILL.md +1 -1
- package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/bmad-manifest.json +1 -1
- package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/verdict.md +1 -1
- package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/SKILL.md +1 -1
- package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/customize.toml +5 -3
- package/src/bmm-skills/plan/bmad-project-context/SKILL.md +110 -0
- package/src/bmm-skills/plan/bmad-project-context/customize.toml +24 -0
- package/src/bmm-skills/plan/bmad-project-context/references/best-practices.md +65 -0
- package/src/bmm-skills/plan/bmad-project-context/references/template.md +55 -0
- package/src/{core-skills → bmm-skills/plan}/bmad-spec/SKILL.md +1 -1
- package/src/{core-skills → bmm-skills/plan}/bmad-spec/assets/spec-template.md +1 -1
- package/src/{core-skills → bmm-skills/plan}/bmad-spec/customize.toml +3 -4
- package/src/bmm-skills/plan/bmad-sprint-planning/SKILL.md +62 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/references/fix-sprint-status.md +30 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/references/generate-tracking.md +25 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/references/readiness-gate.md +20 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/references/status-view.md +14 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/references/validate.md +10 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/sprint_plan.py +697 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
- package/src/bmm-skills/{4-implementation → plan}/bmad-sprint-planning/sprint-status-template.yaml +9 -7
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/SKILL.md +1 -1
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/color-themes.md +1 -1
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/customize.toml +4 -2
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/creative-tools.md +1 -1
- package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/validate.md +1 -1
- package/src/bmm-skills/ship/bmad-build/SKILL.md +13 -0
- package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/compile-epic-context.md +1 -1
- package/src/bmm-skills/ship/bmad-build/customize.toml +164 -0
- package/src/bmm-skills/ship/bmad-build/references/deletion-check.md +14 -0
- package/src/bmm-skills/ship/bmad-build/review-prompts/edge-case-hunter.md +88 -0
- package/src/bmm-skills/ship/bmad-build/review-prompts/verification-gap.md +113 -0
- package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-01-clarify-and-route.md +20 -19
- package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-02-plan.md +5 -9
- package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-03-implement.md +10 -6
- package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-04-review.md +9 -15
- package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-05-present.md +10 -13
- package/src/bmm-skills/ship/bmad-build/step-oneshot.md +77 -0
- package/src/bmm-skills/ship/bmad-build/sync-sprint-status.md +19 -0
- package/src/bmm-skills/ship/bmad-build/workflow.md +84 -0
- package/src/bmm-skills/ship/bmad-build-auto/SKILL.md +13 -0
- package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/compile-epic-context.md +1 -1
- package/src/bmm-skills/ship/bmad-build-auto/customize.toml +121 -0
- package/src/{core-skills/bmad-review-edge-case-hunter/SKILL.md → bmm-skills/ship/bmad-build-auto/review-prompts/edge-case-hunter.md} +21 -6
- package/src/{core-skills/bmad-review-verification-gap/SKILL.md → bmm-skills/ship/bmad-build-auto/review-prompts/verification-gap.md} +15 -8
- package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/spec-template.md +2 -1
- package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-01-clarify-and-route.md +16 -17
- package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-02-plan.md +5 -9
- package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-03-implement.md +6 -4
- package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-04-review.md +26 -25
- package/src/bmm-skills/{4-implementation/bmad-dev-auto/SKILL.md → ship/bmad-build-auto/workflow.md} +27 -46
- package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/SKILL.md +1 -1
- package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-05-wrapup.md +1 -1
- package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/SKILL.md +1 -1
- package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/customize.toml +37 -17
- package/src/bmm-skills/ship/bmad-code-review/references/deletion-check.md +14 -0
- package/src/bmm-skills/ship/bmad-code-review/review-prompts/edge-case-hunter.md +88 -0
- package/src/bmm-skills/ship/bmad-code-review/review-prompts/verification-gap.md +113 -0
- package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-01-gather-context.md +7 -4
- package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-02-review.md +1 -1
- package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-04-present.md +1 -1
- package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/SKILL.md +7 -8
- package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/SKILL.md +2 -2
- package/src/bmm-skills/ship/bmad-retrospective/SKILL.md +94 -0
- package/src/bmm-skills/{4-implementation → ship}/bmad-retrospective/customize.toml +2 -2
- package/src/bmm-skills/ship/bmad-retrospective/references/acceptance-verdict.md +55 -0
- package/src/bmm-skills/ship/bmad-retrospective/references/aggregate-views.md +17 -0
- package/src/bmm-skills/ship/bmad-retrospective/references/evidence-gathering.md +30 -0
- package/src/bmm-skills/ship/bmad-retrospective/references/retro-document.md +84 -0
- package/src/bmm-skills/ship/bmad-retrospective/references/team-discussion.md +22 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/git_evidence.py +304 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/sprint_status.py +746 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py +750 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py +1579 -0
- package/src/bmm-skills/v6-shims/README.md +28 -0
- package/src/bmm-skills/{3-solutioning → v6-shims}/bmad-create-architecture/SKILL.md +2 -2
- package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-create-prd/SKILL.md +4 -4
- package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/SKILL.md +5 -3
- package/src/bmm-skills/v6-shims/bmad-dev-auto/SKILL.md +19 -0
- package/src/bmm-skills/{4-implementation → v6-shims}/bmad-dev-story/SKILL.md +5 -3
- package/src/bmm-skills/{4-implementation → v6-shims}/bmad-dev-story/customize.toml +3 -0
- package/src/bmm-skills/v6-shims/bmad-document-project/SKILL.md +14 -0
- package/src/bmm-skills/v6-shims/bmad-domain-research/SKILL.md +14 -0
- package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-edit-prd/SKILL.md +4 -4
- package/src/bmm-skills/v6-shims/bmad-market-research/SKILL.md +14 -0
- package/src/bmm-skills/v6-shims/bmad-quick-dev/SKILL.md +19 -0
- package/src/bmm-skills/v6-shims/bmad-sprint-status/SKILL.md +26 -0
- package/src/bmm-skills/v6-shims/bmad-technical-research/SKILL.md +14 -0
- package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-validate-prd/SKILL.md +4 -4
- package/src/core-skills/bmad-advanced-elicitation/SKILL.md +26 -103
- package/src/core-skills/bmad-advanced-elicitation/customize.toml +54 -0
- package/src/core-skills/bmad-advanced-elicitation/scripts/pick_methods.py +233 -0
- package/src/core-skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py +228 -0
- package/src/core-skills/bmad-brainstorming/SKILL.md +3 -3
- package/src/core-skills/bmad-brainstorming/assets/brain-selector.html +2 -0
- package/src/core-skills/bmad-brainstorming/references/mode-autonomous.md +1 -1
- package/src/core-skills/bmad-brainstorming/scripts/brain.py +36 -6
- package/src/core-skills/bmad-brainstorming/scripts/tests/test_brain.py +22 -0
- package/src/core-skills/bmad-customize/SKILL.md +2 -2
- package/src/core-skills/bmad-deep-recon/SKILL.md +82 -0
- package/src/core-skills/bmad-deep-recon/assets/research.template.md +18 -0
- package/src/core-skills/bmad-deep-recon/customize.toml +212 -0
- package/src/core-skills/bmad-deep-recon/references/draft.md +8 -0
- package/src/core-skills/bmad-deep-recon/references/finalize.md +11 -0
- package/src/core-skills/bmad-deep-recon/references/html-briefing.md +16 -0
- package/src/core-skills/bmad-deep-recon/references/lifecycle.md +11 -0
- package/src/core-skills/bmad-deep-recon/references/process.md +10 -0
- package/src/core-skills/bmad-deep-recon/references/run.md +73 -0
- package/src/core-skills/bmad-deep-recon/references/selection.md +13 -0
- package/src/core-skills/bmad-deep-recon/references/synthesis.md +16 -0
- package/src/core-skills/bmad-deep-recon/references/verification.md +29 -0
- package/src/core-skills/bmad-deep-recon/scripts/recon_kit.py +322 -0
- package/src/core-skills/bmad-deep-recon/scripts/tests/test_recon_kit.py +144 -0
- package/src/core-skills/bmad-deep-recon/types/academic-lit.md +19 -0
- package/src/core-skills/bmad-deep-recon/types/competitive.md +19 -0
- package/src/core-skills/bmad-deep-recon/types/domain.md +19 -0
- package/src/core-skills/bmad-deep-recon/types/market.md +19 -0
- package/src/core-skills/bmad-deep-recon/types/technical.md +19 -0
- package/src/core-skills/bmad-deep-recon/types/user-voice.md +19 -0
- package/src/core-skills/bmad-forge-idea/SKILL.md +2 -2
- package/src/core-skills/bmad-forge-idea/scripts/resolve_personas.py +7 -2
- package/src/core-skills/bmad-help/SKILL.md +3 -3
- package/src/core-skills/bmad-party-mode/SKILL.md +2 -2
- package/src/core-skills/bmad-party-mode/customize.toml +1 -1
- package/src/core-skills/bmad-party-mode/scripts/resolve_party.py +14 -4
- package/src/core-skills/bmad-review/SKILL.md +49 -0
- package/src/core-skills/bmad-review/customize.toml +141 -0
- package/src/core-skills/bmad-review/references/editorial-common.md +56 -0
- package/src/core-skills/bmad-review/references/lens-adversarial.md +19 -0
- package/src/core-skills/bmad-review/references/lens-edge-case-hunter.md +54 -0
- package/src/core-skills/bmad-review/references/lens-prose.md +7 -0
- package/src/core-skills/bmad-review/references/lens-structure.md +9 -0
- package/src/core-skills/bmad-review/references/lens-verification-gap.md +92 -0
- package/src/core-skills/bmad-review/references/structure-models.md +44 -0
- package/src/core-skills/bmad-review/scripts/tests/test_word_metrics.py +62 -0
- package/src/core-skills/bmad-review/scripts/word_metrics.py +102 -0
- package/src/core-skills/module-help.csv +4 -8
- package/src/core-skills/module.yaml +5 -0
- package/src/core-skills/v6-shims/README.md +25 -0
- package/src/core-skills/v6-shims/bmad-editorial-review/SKILL.md +6 -0
- package/src/core-skills/v6-shims/bmad-editorial-review/customize.toml +31 -0
- package/src/core-skills/v6-shims/bmad-editorial-review-prose/SKILL.md +6 -0
- package/src/core-skills/v6-shims/bmad-editorial-review-structure/SKILL.md +6 -0
- package/src/core-skills/v6-shims/bmad-review-adversarial-general/SKILL.md +6 -0
- package/src/core-skills/v6-shims/bmad-review-edge-case-hunter/SKILL.md +6 -0
- package/src/core-skills/v6-shims/bmad-review-verification-gap/SKILL.md +6 -0
- package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
- package/src/scripts/config_utils.py +119 -0
- package/src/scripts/render_skill.py +401 -0
- package/src/scripts/resolve_config.py +32 -136
- package/src/scripts/resolve_customization.py +43 -184
- package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
- package/src/scripts/tests/test_config_utils.py +85 -0
- package/src/scripts/tests/test_resolve_config.py +89 -0
- package/src/scripts/tests/test_resolve_customization.py +27 -0
- package/tools/installer/cli-utils.js +6 -2
- package/tools/installer/core/installer.js +31 -9
- package/tools/installer/core/manifest-generator.js +1 -1
- package/tools/installer/core/uv-check.js +122 -24
- package/tools/installer/ide/_config-driven.js +1 -1
- package/tools/installer/ide/platform-codes.yaml +7 -0
- package/tools/installer/ide/shared/path-utils.js +2 -2
- package/tools/installer/install-messages.yaml +3 -2
- package/tools/installer/modules/custom-module-manager.js +12 -6
- package/tools/installer/modules/external-manager.js +12 -8
- package/tools/installer/modules/git-env.js +47 -0
- package/tools/installer/modules/official-modules.js +1 -1
- package/tools/installer/prompts.js +41 -102
- package/tools/installer/ui.js +99 -22
- package/tools/skill-validator.md +11 -1
- package/tools/validate-published-implementation-model.mjs +68 -0
- package/tools/validate-skills.js +33 -0
- package/web-bundles/prd-coach/prd-template.md +1 -1
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +0 -76
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/customize.toml +0 -81
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/explain-concept.md +0 -20
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/mermaid-gen.md +0 -20
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/validate-doc.md +0 -19
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/write-document.md +0 -20
- package/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md +0 -62
- package/src/bmm-skills/1-analysis/bmad-document-project/checklist.md +0 -245
- package/src/bmm-skills/1-analysis/bmad-document-project/customize.toml +0 -41
- package/src/bmm-skills/1-analysis/bmad-document-project/documentation-requirements.csv +0 -12
- package/src/bmm-skills/1-analysis/bmad-document-project/instructions.md +0 -128
- package/src/bmm-skills/1-analysis/bmad-document-project/templates/deep-dive-template.md +0 -345
- package/src/bmm-skills/1-analysis/bmad-document-project/templates/index-template.md +0 -169
- package/src/bmm-skills/1-analysis/bmad-document-project/templates/project-overview-template.md +0 -103
- package/src/bmm-skills/1-analysis/bmad-document-project/templates/project-scan-report-schema.json +0 -160
- package/src/bmm-skills/1-analysis/bmad-document-project/templates/source-tree-template.md +0 -135
- package/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-instructions.md +0 -300
- package/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
- package/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-instructions.md +0 -1108
- package/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-workflow.md +0 -34
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md +0 -96
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/customize.toml +0 -41
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md +0 -137
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -229
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -238
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -206
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -234
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -450
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/research.template.md +0 -29
- package/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md +0 -96
- package/src/bmm-skills/1-analysis/research/bmad-market-research/customize.toml +0 -41
- package/src/bmm-skills/1-analysis/research/bmad-market-research/research.template.md +0 -29
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-01-init.md +0 -184
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
- package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +0 -484
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md +0 -96
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/customize.toml +0 -41
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/research.template.md +0 -29
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md +0 -137
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -493
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md +0 -91
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/customize.toml +0 -41
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -132
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md +0 -81
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/customize.toml +0 -41
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/project-context-template.md +0 -21
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-01-discover.md +0 -186
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-02-generate.md +0 -321
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-03-complete.md +0 -284
- package/src/bmm-skills/4-implementation/bmad-dev-auto/customize.toml +0 -108
- package/src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md +0 -115
- package/src/bmm-skills/4-implementation/bmad-quick-dev/customize.toml +0 -83
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-oneshot.md +0 -82
- package/src/bmm-skills/4-implementation/bmad-quick-dev/sync-sprint-status.md +0 -19
- package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +0 -1527
- package/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md +0 -319
- package/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md +0 -34
- package/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md +0 -311
- package/src/core-skills/bmad-brainstorming/analysis/catalog-analysis.md +0 -239
- package/src/core-skills/bmad-brainstorming/analysis/method-matrix.csv +0 -109
- package/src/core-skills/bmad-editorial-review-prose/SKILL.md +0 -86
- package/src/core-skills/bmad-editorial-review-structure/SKILL.md +0 -179
- package/src/core-skills/bmad-index-docs/SKILL.md +0 -66
- package/src/core-skills/bmad-review-adversarial-general/SKILL.md +0 -37
- package/src/core-skills/bmad-shard-doc/SKILL.md +0 -105
- /package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-ux-designer/customize.toml +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/assets/spine-template.md +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/references/headless.md +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/references/reviewer-gate.md +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/scripts/lint_spine.py +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/scripts/tests/test_lint_spine.py +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/customize.toml +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
- /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/headless-schemas.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/prd-validation-checklist.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/validation-report-template.html +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/references/headless.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/agents/artifact-analyzer.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/agents/web-researcher.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/assets/prfaq-template.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/customize.toml +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/customer-faq.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/internal-faq.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/press-release.md +0 -0
- /package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/assets/brief-template.md +0 -0
- /package/src/{core-skills → bmm-skills/plan}/bmad-spec/assets/headless-schemas.md +0 -0
- /package/src/{core-skills → bmm-skills/plan}/bmad-spec/assets/stories-schema.md +0 -0
- /package/src/bmm-skills/{4-implementation → plan}/bmad-sprint-planning/customize.toml +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-directions.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-editorial.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-mobile.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-shadcn.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/excalidraw-wireframe.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/experience-example-mobile.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/experience-example-shadcn.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/headless-schemas.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/key-screens.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/validation-report-template.html +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/design-md-spec.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/headless.md +0 -0
- /package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/spec-template.md +0 -0
- /package/src/{core-skills/bmad-review-edge-case-hunter → bmm-skills/ship/bmad-build-auto}/references/deletion-check.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/customize.toml +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/generate-trail.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-01-orientation.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-02-walkthrough.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-03-detail-pass.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-04-testing.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-03-triage.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/checklist.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/customize.toml +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/checklist.md +0 -0
- /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/customize.toml +0 -0
- /package/src/bmm-skills/{3-solutioning → v6-shims}/bmad-create-architecture/customize.toml +0 -0
- /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-create-prd/customize.toml +0 -0
- /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/checklist.md +0 -0
- /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/customize.toml +0 -0
- /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/discover-inputs.md +0 -0
- /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/template.md +0 -0
- /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-dev-story/checklist.md +0 -0
- /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-edit-prd/customize.toml +0 -0
- /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-sprint-status/customize.toml +0 -0
- /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-validate-prd/customize.toml +0 -0
- /package/src/core-skills/bmad-advanced-elicitation/{methods.csv → assets/methods.csv} +0 -0
- /package/src/core-skills/bmad-party-mode/scripts/tests/{test-resolve_party.py → test_resolve_party.py} +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
3
2
|
spec_file: '' # set at runtime once a route resolves it; some HALT branches exit before it is set
|
|
4
3
|
spec_folder: '' # set at runtime under folder+id dispatch only
|
|
5
4
|
story_id: '' # set at runtime under folder+id dispatch only
|
|
@@ -9,7 +8,7 @@ story_id: '' # set at runtime under folder+id dispatch only
|
|
|
9
8
|
|
|
10
9
|
## RULES
|
|
11
10
|
|
|
12
|
-
-
|
|
11
|
+
- **Language** — Speak in `{{.communication_language}}`, tailored to `{{.user_skill_level}}`. Write files in `{{.document_output_language}}`.
|
|
13
12
|
- Treat the invocation intent as workflow input, not as a substitute for step-02 investigation and spec generation.
|
|
14
13
|
- **EARLY EXIT** means: stop this step immediately, then read and follow the target file. Return here only if a later step explicitly says to loop back.
|
|
15
14
|
|
|
@@ -18,21 +17,21 @@ story_id: '' # set at runtime under folder+id dispatch only
|
|
|
18
17
|
Use the invocation prompt as the intent.
|
|
19
18
|
|
|
20
19
|
If the invocation prompt explicitly points to an existing spec file with recognized `status` frontmatter, set `spec_file`, then **EARLY EXIT** to the appropriate step:
|
|
21
|
-
- `draft` →
|
|
22
|
-
- `ready-for-dev` or `in-progress` →
|
|
23
|
-
- `in-review` →
|
|
20
|
+
- `draft` → `[[bmad-snapshot:step-02-plan.md]]`
|
|
21
|
+
- `ready-for-dev` or `in-progress` → `[[bmad-snapshot:step-03-implement.md]]`
|
|
22
|
+
- `in-review` → `[[bmad-snapshot:step-04-review.md]]`
|
|
24
23
|
- `blocked` → HALT with status `blocked` and blocking condition `blocked spec supplied`.
|
|
25
|
-
- `done` → set `review_loop_iteration` to `0` in the frontmatter, then **EARLY EXIT** to
|
|
24
|
+
- `done` → set `review_loop_iteration` to `0` in the frontmatter, then **EARLY EXIT** to `[[bmad-snapshot:step-04-review.md]]` for a fresh review pass. (A `done` spec is a completed run, so this starts a follow-up review, not a resumption.)
|
|
26
25
|
|
|
27
26
|
If the invocation prompt instead supplies a spec folder and a story id, with no specific spec file path, this is a **folder+id dispatch**: set `spec_folder` (a `{project-root}`-relative or absolute path) and `story_id` from the prompt. Any further prompt text (e.g. `invoke_dev_with` guidance the caller appended) is additional planning context to carry into step-02 — not a competing description of what to implement.
|
|
28
27
|
|
|
29
|
-
Read `{spec_folder}/stories.yaml`. If the file does not exist or fails to parse, HALT with status `blocked` and blocking condition `no stories.yaml found`. Find the entry whose `id` equals `{story_id}`; if none matches, HALT with status `blocked` and blocking condition `story id not found in stories.yaml`. Take only that entry's `title` and `description` — never read the checkpoint fields or `invoke_dev_with`; those are the caller's orchestration fields, not
|
|
28
|
+
Read `{spec_folder}/stories.yaml`. If the file does not exist or fails to parse, HALT with status `blocked` and blocking condition `no stories.yaml found`. Find the entry whose `id` equals `{story_id}`; if none matches, HALT with status `blocked` and blocking condition `story id not found in stories.yaml`. Take only that entry's `title` and `description` — never read the checkpoint fields or `invoke_dev_with`; those are the caller's orchestration fields, not build-auto's.
|
|
30
29
|
|
|
31
30
|
Look for files matching `{spec_folder}/stories/{story_id}-*.md` (id-prefix match — story ids are prefix-free, so at most one should match):
|
|
32
31
|
- **If more than one matches**, HALT with status `blocked` and blocking condition `ambiguous story file match`.
|
|
33
32
|
- **If exactly one matches**, set `spec_file` to that path.
|
|
34
|
-
- `draft` (planning was interrupted mid-flight): accumulate cross-story context before resuming — load every other file matching `{spec_folder}/stories/*.md` (every match except `{spec_file}` itself), regardless of `status`, and carry forward each one's **Code Map**, **Design Notes**, **Spec Change Log**, **Tasks & Acceptance** checklist state, and **Auto Run Result** details, where present, as additional planning context for step-02. Then **EARLY EXIT** to
|
|
35
|
-
- Any other recognized `status`: **EARLY EXIT** using the same routing as above, including the `review_loop_iteration` reset for `done`. One difference: a `blocked` story HALTs with blocking condition `story already blocked`, not `blocked spec supplied` — the caller did not supply this file;
|
|
33
|
+
- `draft` (planning was interrupted mid-flight): accumulate cross-story context before resuming — load every other file matching `{spec_folder}/stories/*.md` (every match except `{spec_file}` itself), regardless of `status`, and carry forward each one's **Code Map**, **Design Notes**, **Spec Change Log**, **Tasks & Acceptance** checklist state, and **Auto Run Result** details, where present, as additional planning context for step-02. Then **EARLY EXIT** to `[[bmad-snapshot:step-02-plan.md]]`.
|
|
34
|
+
- Any other recognized `status`: **EARLY EXIT** using the same routing as above, including the `review_loop_iteration` reset for `done`. One difference: a `blocked` story HALTs with blocking condition `story already blocked`, not `blocked spec supplied` — the caller did not supply this file; build-auto found it by id.
|
|
36
35
|
- `status` missing or unrecognized: HALT with status `blocked` and blocking condition `unrecognized status in existing story file`.
|
|
37
36
|
- **If none matches**, this is the first dispatch for `{story_id}`. The entry's `title` and `description` are the resolved intent. If `{spec_folder}/SPEC.md` does not exist, HALT with status `blocked` and blocking condition `no epic spec found`. Otherwise load it and the files listed in its `companions:` frontmatter as planning context, then accumulate cross-story context the same way as the `draft` case above — load every file matching `{spec_folder}/stories/*.md` (none yet exists for `{story_id}` at this point, so nothing is excluded), regardless of `status`, carrying forward the same fields, where present, as additional planning context for step-02. Then continue to INSTRUCTIONS item 3 below — not `step-03-implement.md`, item 3 of the numbered list in this file (items 1 and 2 do not apply — context and intent are already resolved; item 1.A.5's previous-story continuity scan in particular never runs here, since folder+id dispatch already skips items 1 and 2 entirely — the cross-story accumulation above is its replacement for this dispatch mode).
|
|
38
37
|
|
|
@@ -44,7 +43,7 @@ If the invocation prompt does not contain enough intent to identify what to impl
|
|
|
44
43
|
## INSTRUCTIONS
|
|
45
44
|
|
|
46
45
|
1. Load context.
|
|
47
|
-
- List files in `{planning_artifacts}` and `{implementation_artifacts}`.
|
|
46
|
+
- List files in `{{.planning_artifacts}}` and `{{.implementation_artifacts}}`.
|
|
48
47
|
- If the invocation prompt points to an unformatted spec or intent file, ingest that file. Do not scan for unrelated intent files.
|
|
49
48
|
- **Determine context strategy.** Using the intent and the artifact listing, infer whether the current work is a story from an epic. Do not rely on filename patterns or regex — reason about the intent, the listing, and any epics file content together.
|
|
50
49
|
|
|
@@ -52,15 +51,15 @@ If the invocation prompt does not contain enough intent to identify what to impl
|
|
|
52
51
|
|
|
53
52
|
1. Identify the epic number `{epic_num}` and (if present) the story number `{story_num}`. If you can't identify an epic number, use path B.
|
|
54
53
|
|
|
55
|
-
2. **Check for a valid cached epic context.** Look for `{implementation_artifacts}/epic-<N>-context.md` (where `<N>` is the epic number). A file is **valid** when it exists, is non-empty, starts with `# Epic <N> Context:` (with the correct epic number), and no file in `{planning_artifacts}` is newer.
|
|
54
|
+
2. **Check for a valid cached epic context.** Look for `{{.implementation_artifacts}}/epic-<N>-context.md` (where `<N>` is the epic number). A file is **valid** when it exists, is non-empty, starts with `# Epic <N> Context:` (with the correct epic number), and no file in `{{.planning_artifacts}}` is newer.
|
|
56
55
|
- **If valid:** load it as the primary planning context. Do not load raw planning docs (PRD, architecture, UX, etc.).
|
|
57
56
|
- **If missing, empty, or invalid:** compile it in the next bullet.
|
|
58
57
|
|
|
59
|
-
3. **Compile epic context if needed.** If no valid cached epic context was loaded, produce `{implementation_artifacts}/epic-<N>-context.md` by spawning a subagent with
|
|
58
|
+
3. **Compile epic context if needed.** If no valid cached epic context was loaded, produce `{{.implementation_artifacts}}/epic-<N>-context.md` by spawning a subagent synchronously with `[[bmad-snapshot:compile-epic-context.md]]` as its prompt. Pass it the epic number, epics file path, `{{.planning_artifacts}}`, and output path `{{.implementation_artifacts}}/epic-<N>-context.md`.
|
|
60
59
|
|
|
61
60
|
4. **Verify if compiled.** If epic context was compiled, verify the output file exists, is non-empty, and starts with `# Epic <N> Context:`. If valid, load it. If verification fails, HALT with status `blocked` and blocking condition `context compilation verification failed`.
|
|
62
61
|
|
|
63
|
-
5. **Previous story continuity.** Regardless of which context source succeeded above, scan `{implementation_artifacts}` for specs from the same epic with `status: done` and a lower story number. Load the most recent one (highest story number below current). Extract its **Code Map**, **Design Notes**, **Spec Change Log**, and **task list** as continuity context for step-02 planning. If no `done` spec is found but an `in-review` spec exists for the same epic with a lower story number, HALT with status `blocked` and blocking condition `missing previous-story continuity decision`.
|
|
62
|
+
5. **Previous story continuity.** Regardless of which context source succeeded above, scan `{{.implementation_artifacts}}` for specs from the same epic with `status: done` and a lower story number. Load the most recent one (highest story number below current). Extract its **Code Map**, **Design Notes**, **Spec Change Log**, and **task list** as continuity context for step-02 planning. If no `done` spec is found but an `in-review` spec exists for the same epic with a lower story number, HALT with status `blocked` and blocking condition `missing previous-story continuity decision`.
|
|
64
63
|
|
|
65
64
|
**B) Freeform path** — if the intent is not an epic story:
|
|
66
65
|
- Planning artifacts are the output of BMAD phases 1-3. Typical files include:
|
|
@@ -71,14 +70,14 @@ If the invocation prompt does not contain enough intent to identify what to impl
|
|
|
71
70
|
- **Product Brief** (`*brief*`) — project vision and scope
|
|
72
71
|
- Scan the listing for files matching these patterns. If any look relevant to the current intent, load them selectively — you don't need all of them, but you need the right constraints and requirements rather than guessing from code alone.
|
|
73
72
|
2. Resolve intent from the invocation prompt and loaded artifacts. Do not fantasize or leave open questions. If the intent cannot be resolved, HALT with status `blocked` and the unresolved questions as blocking condition.
|
|
74
|
-
3. Version control sanity check.
|
|
73
|
+
3. Version control sanity check. If version control is unavailable, skip this check. Otherwise require a clean working tree, a branch that fits the intent, and writable repository metadata. For Git, run `git add --refresh -- .`, then confirm the tree is still clean; on failure or change, HALT with status `blocked` and blocking condition `version-control metadata not writable`. Under folder+id dispatch, judge the branch against the epic, not the story. HALT on a dirty tree or obvious branch mismatch.
|
|
75
74
|
4. Multi-goal warning. If the intent appears to contain multiple independently shippable goals, carry `multiple-goals` forward so step-02 can add it to `{spec_file}` frontmatter `warnings`. Do not split or block.
|
|
76
75
|
5. Route:
|
|
77
76
|
|
|
78
|
-
**Folder+id dispatch:** derive a valid kebab-case slug from the entry's `title` (and `description` if needed) — the same kebab-casing convention as below, but never prefixed with `{story_id}`, since the id is already the filename's separate leading segment. Set `spec_file` = `{spec_folder}/stories/{story_id}-{slug}.md`. The id already disambiguates: no `{implementation_artifacts}` fallback, no `-2`/`-3` suffixing.
|
|
77
|
+
**Folder+id dispatch:** derive a valid kebab-case slug from the entry's `title` (and `description` if needed) — the same kebab-casing convention as below, but never prefixed with `{story_id}`, since the id is already the filename's separate leading segment. Set `spec_file` = `{spec_folder}/stories/{story_id}-{slug}.md`. The id already disambiguates: no `{{.implementation_artifacts}}` fallback, no `-2`/`-3` suffixing.
|
|
79
78
|
|
|
80
|
-
**Otherwise:** derive a valid kebab-case slug from the clarified intent. If the intent references a tracking identifier (story number, issue number, ticket ID), lead the slug with it (e.g. `3-2-digest-delivery`, `gh-47-fix-auth`). If `{implementation_artifacts}/spec-{slug}.md` already exists: if its status is `draft`, treat it as the same work and resume it (set `spec_file` to that path, **EARLY EXIT** →
|
|
79
|
+
**Otherwise:** derive a valid kebab-case slug from the clarified intent. If the intent references a tracking identifier (story number, issue number, ticket ID), lead the slug with it (e.g. `3-2-digest-delivery`, `gh-47-fix-auth`). If `{{.implementation_artifacts}}/spec-{slug}.md` already exists: if its status is `draft`, treat it as the same work and resume it (set `spec_file` to that path, **EARLY EXIT** → `[[bmad-snapshot:step-02-plan.md]]`); otherwise append `-2`, `-3`, etc. Set `spec_file` = `{{.implementation_artifacts}}/spec-{slug}.md`.
|
|
81
80
|
|
|
82
81
|
## NEXT
|
|
83
82
|
|
|
84
|
-
Read fully and follow
|
|
83
|
+
Read fully and follow `[[bmad-snapshot:step-02-plan.md]]`
|
package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-02-plan.md
RENAMED
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
---
|
|
2
|
-
deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
3
|
-
---
|
|
4
|
-
|
|
5
1
|
# Step 2: Plan
|
|
6
2
|
|
|
7
3
|
## RULES
|
|
8
4
|
|
|
9
|
-
-
|
|
5
|
+
- **Language** — Speak in `{{.communication_language}}`, tailored to `{{.user_skill_level}}`. Write files in `{{.document_output_language}}`.
|
|
10
6
|
- No human interaction: do not ask questions or wait for approval in this step.
|
|
11
7
|
|
|
12
8
|
## INSTRUCTIONS
|
|
13
9
|
|
|
14
10
|
1. Draft resume check. If `{spec_file}` exists with `status: draft`, read it and capture the verbatim `<intent-contract>...</intent-contract>` block as `preserved_intent_contract`. Otherwise `preserved_intent_contract` is empty.
|
|
15
|
-
2. Investigate codebase. _Read the code yourself for narrow, localized tasks. Isolate deep exploration in subagents: instruct them to give you distilled summaries only, and plan from those summaries._
|
|
16
|
-
3. Read
|
|
11
|
+
2. Investigate codebase. _Read the code yourself for narrow, localized tasks. Isolate deep exploration in synchronous subagents: instruct them to give you distilled summaries only, and plan from those summaries._ Decide which findings actually matter for execution — the specific files, symbols/lines, reuse points, and read-only constraints — and carry those forward for the Code Map. This is where the investigation lands: the spec preserves it so it is never re-narrated to the implementer at dispatch time.
|
|
12
|
+
3. Read `[[bmad-snapshot:spec-template.md]]` fully. Fill it out based on the intent and investigation, resolving the template's `date` field to the current system date. Drain the investigation into the `## Code Map` section — annotated paths, symbol/line anchors, reuse pointers, and read-only evidence — so the spec is the implementer's investigation map and the step-03 handoff need only point at it. If `{preserved_intent_contract}` is non-empty, substitute it for the `<intent-contract>` block in your filled spec before writing. Write the result to `{spec_file}`.
|
|
17
13
|
4. Self-review against READY FOR DEVELOPMENT standard.
|
|
18
14
|
5. If intent gaps exist, do not fantasize and do not leave open questions. Multiple defensible readings of the intent that lead to observably different outcomes, with nothing in the intent to select between them, are an intent gap — do not resolve one by picking a reading. HALT with status `blocked`, blocking condition `intent gap`, and include the unanswered questions and evidence gathered.
|
|
19
15
|
6. Warning check. If step-01 carried `multiple-goals`, add it to `{spec_file}` frontmatter `warnings`. If `{spec_file}` exceeds 1600 tokens, add `oversized` to frontmatter `warnings`. Continue either way.
|
|
20
16
|
|
|
21
17
|
### READY-FOR-DEVELOPMENT GATE
|
|
22
18
|
|
|
23
|
-
Re-read
|
|
19
|
+
Re-read `[[bmad-snapshot:workflow.md]]`, then re-read `{spec_file}` from disk and verify the spec meets the READY FOR DEVELOPMENT standard.
|
|
24
20
|
|
|
25
21
|
- **If the file is missing:** HALT with status `blocked` and blocking condition `planned spec file disappeared before implementation`.
|
|
26
22
|
- **If the spec meets the standard:** set `{spec_file}` frontmatter status to `ready-for-dev`. If the invocation prompt directs a halt after planning (standard phrasing: `Halt after planning.` — accept any clear equivalent), HALT with status `ready-for-dev`; otherwise continue to step 3.
|
|
@@ -28,4 +24,4 @@ Re-read `./SKILL.md`, then re-read `{spec_file}` from disk and verify the spec m
|
|
|
28
24
|
|
|
29
25
|
## NEXT
|
|
30
26
|
|
|
31
|
-
Read fully and follow
|
|
27
|
+
Read fully and follow `[[bmad-snapshot:step-03-implement.md]]`
|
package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-03-implement.md
RENAMED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
## RULES
|
|
7
7
|
|
|
8
|
-
-
|
|
8
|
+
- **Language** — Speak in `{{.communication_language}}`, tailored to `{{.user_skill_level}}`. Write files in `{{.document_output_language}}`.
|
|
9
9
|
- No human interaction: do not ask questions or wait for approval in this step.
|
|
10
10
|
- Content inside `<intent-contract>` in `{spec_file}` is read-only. Do not modify.
|
|
11
11
|
|
|
@@ -23,9 +23,11 @@ Capture `baseline_revision` (current HEAD, or `NO_VCS` if version control is una
|
|
|
23
23
|
|
|
24
24
|
Change `{spec_file}` status to `in-progress` in the frontmatter before starting implementation.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Substitute the runtime placeholders (e.g. `{spec_file}`) into the implementation handoff below, then follow it verbatim. Do not add parent-authored goal restatements, file lists, ownership boundaries, or acceptance criteria to the handoff — the spec is the subagent's sole source of truth. If the handoff conflicts with the spec, HALT with status `blocked` and blocking condition `handoff conflicts with spec`, and include both conflicting passages.
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
{workflow.implementation_handoff}
|
|
29
|
+
|
|
30
|
+
Invoke the subagent **synchronously** and wait for it to return in this same turn — do not background/detach it (`run_in_background`) or end your turn to await a notification (see workflow.md → Subagents). Resume at "Verify" only after it returns. If the platform allows, keep the subagent available for re-engagement after it returns — step-04 may send it review fixes.
|
|
29
31
|
|
|
30
32
|
**Path formatting rule:** Any markdown links written into `{spec_file}` must use paths relative to `{spec_file}`'s directory so they are clickable in VS Code. Any file paths displayed in terminal/conversation output must use CWD-relative format with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability. No leading `/` in either case.
|
|
31
33
|
|
|
@@ -39,4 +41,4 @@ If `{spec_file}`'s intent-contract contains an I/O & Edge-Case Matrix, verify ev
|
|
|
39
41
|
|
|
40
42
|
## NEXT
|
|
41
43
|
|
|
42
|
-
Read fully and follow
|
|
44
|
+
Read fully and follow `[[bmad-snapshot:step-04-review.md]]`
|
package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-04-review.md
RENAMED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
3
|
-
---
|
|
4
|
-
|
|
5
1
|
# Step 4: Review
|
|
6
2
|
|
|
7
3
|
## RULES
|
|
8
4
|
|
|
9
|
-
-
|
|
5
|
+
- **Language** — Speak in `{{.communication_language}}`, tailored to `{{.user_skill_level}}`. Write files in `{{.document_output_language}}`.
|
|
10
6
|
- No human interaction: do not ask questions or wait for approval in this step.
|
|
11
7
|
- All review subagents must run at the same model capability as the current session.
|
|
12
8
|
|
|
@@ -22,13 +18,11 @@ Do NOT `git add` anything — this is read-only inspection.
|
|
|
22
18
|
|
|
23
19
|
### Review
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Skip every layer whose `instruction` is empty or missing — that is how an override disables a default layer — and every layer whose `when` condition (if present) does not hold in the current context. If no layers remain, HALT with status `blocked` and blocking condition `no active review layers`.
|
|
21
|
+
Runtime placeholders: `{diff_output}` is the diff constructed above. `{verbatim_intent}` is the invocation intent exactly as this run received it at step-01; if the run started from an existing spec file rather than a fresh intent, it is the spec's `<intent-contract>` block instead. Before launching a layer, expand its skill-root placeholder to this skill's absolute installed directory; never leave that placeholder unresolved in a child prompt.
|
|
28
22
|
|
|
29
|
-
|
|
23
|
+
Execute these review layers in parallel wherever their execution methods allow: substitute the runtime placeholders (e.g. `{diff_output}`) into each layer's instruction. When an instruction launches a reviewer subagent, launch that child with the prompt text after placeholder substitution; do not load the reviewer instruction file yourself. For any other customized instruction, execute it as written. Parallel means several blocking calls awaited together in this turn — never backgrounded or detached, never ending the turn to await results (see workflow.md → Subagents). Spawn every reviewer subagent before reading or reacting to any of their output; begin collection and triage only once all are launched.
|
|
30
24
|
|
|
31
|
-
|
|
25
|
+
{workflow.review_layers}
|
|
32
26
|
|
|
33
27
|
### Classify
|
|
34
28
|
|
|
@@ -56,40 +50,47 @@ Execute all remaining layers in parallel wherever their execution methods allow:
|
|
|
56
50
|
- addressed_findings:
|
|
57
51
|
- `[high|medium|low]` `[patch|bad_spec]` <finding summary and action taken in this pass>
|
|
58
52
|
```
|
|
59
|
-
Where `count` is either just `0`, or total with breakdown by severity `N: (high Nhigh, medium Nmedium, low Nlow)`.
|
|
53
|
+
Where `{date}` is the current system date and `count` is either just `0`, or total with breakdown by severity `N: (high Nhigh, medium Nmedium, low Nlow)`.
|
|
60
54
|
If no patch was fixed and no bad_spec repair loopback was triggered in this pass, write:
|
|
61
55
|
```markdown
|
|
62
56
|
- addressed_findings:
|
|
63
57
|
- none
|
|
64
58
|
```
|
|
65
59
|
5. Process findings in cascading order. If intent_gap exists, lower findings are moot; follow the intent_gap branch below. If bad_spec exists, lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Before each bad_spec loopback, read `{spec_file}` frontmatter `review_loop_iteration` (missing means `0`), increment it by 1, and write it back. If it exceeds 5, append the triage-log entry for this pass with `addressed_findings: none`, then HALT with status `blocked` and blocking condition `review repair loop exceeded 5 iterations (non-convergence)`.
|
|
66
|
-
- **intent_gap** — Root cause is inside `<intent-contract>`. Save the attempted change as a patch file in `{implementation_artifacts}` and reference it from the triage-log entry, then revert code changes. Append the triage-log entry for this pass with `addressed_findings: none`, then HALT with status `blocked`, blocking condition `intent gap`, and include the unresolved questions and the saved patch path.
|
|
67
|
-
- **bad_spec** — Root cause is outside `<intent-contract>`. Do not modify content inside `<intent-contract>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the sections outside `<intent-contract>` that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Append the triage-log entry for this pass, listing every bad_spec finding that triggered the spec amendment and implementation loopback under `addressed_findings`. Read fully and follow
|
|
68
|
-
- **patch** — Auto-fix. These are the only findings that survive loopbacks.
|
|
69
|
-
- **defer** —
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
summary:
|
|
73
|
-
|
|
60
|
+
- **intent_gap** — Root cause is inside `<intent-contract>`. Save the attempted change as a patch file in `{{.implementation_artifacts}}` and reference it from the triage-log entry, then revert code changes. Append the triage-log entry for this pass with `addressed_findings: none`, then HALT with status `blocked`, blocking condition `intent gap`, and include the unresolved questions and the saved patch path.
|
|
61
|
+
- **bad_spec** — Root cause is outside `<intent-contract>`. Do not modify content inside `<intent-contract>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the sections outside `<intent-contract>` that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Append the triage-log entry for this pass, listing every bad_spec finding that triggered the spec amendment and implementation loopback under `addressed_findings`. Read fully and follow `[[bmad-snapshot:step-03-implement.md]]` to re-derive the code, then this step will run again.
|
|
62
|
+
- **patch** — Auto-fix. These are the only findings that survive loopbacks. If the step-03 implementation subagent can be re-engaged with its context intact, send it all patch findings in one synchronous message — for each: the file, what is wrong, and what the fix must do. If it cannot be re-engaged, apply the patches yourself. Then re-run the commands in `{spec_file}`'s `## Verification` section (or perform its manual checks); if verification fails and the failure cannot be fixed, HALT with status `blocked` and blocking condition `patch verification failed`. Append the triage-log entry for this pass, listing every patch fixed in this pass under `addressed_findings`.
|
|
63
|
+
- **defer** — Update the single `deferred` list in `{spec_file}` frontmatter. If the field is absent (including on specs created before this field existed), add it once as an empty list. If it is `deferred: []`, replace that empty value when adding the first item; otherwise append to the existing list. Preserve every existing item, do not look for duplicates, and never add a second `deferred:` key. Serialize free-form values as YAML block scalars so characters such as `:`, `#`, quotes, and line breaks remain data. Each item uses this shape:
|
|
64
|
+
```yaml
|
|
65
|
+
deferred:
|
|
66
|
+
- summary: >-
|
|
67
|
+
<one sentence>
|
|
68
|
+
evidence: |-
|
|
69
|
+
<why this is real>
|
|
70
|
+
location: >- # optional — file:line or component
|
|
71
|
+
src/foo.py:42
|
|
72
|
+
severity: medium # optional — high | medium | low
|
|
74
73
|
```
|
|
74
|
+
After all appends, parse the complete frontmatter as YAML and verify that `deferred` is one list containing every prior item plus the new items with their intended text. Repair serialization errors before continuing.
|
|
75
75
|
- **reject** — Drop silently.
|
|
76
76
|
|
|
77
77
|
## Finalize
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
Write the following details to `{spec_file}` under `## Auto Run Result`:
|
|
80
80
|
- Summary of implemented change
|
|
81
81
|
- Files changed with one-line descriptions
|
|
82
82
|
- Review findings breakdown: patches applied, items deferred, items rejected
|
|
83
|
-
- Follow-up review recommendation:
|
|
83
|
+
- Follow-up review recommendation: count only this pass's findings triaged `patch` — never defer or reject. `true` if any patched finding was `high` severity, or if `3 × medium count + 1 × low count` is 5 or more; otherwise `false`. Record the patched counts by severity and the score.
|
|
84
84
|
- Verification performed, including command outcomes or manual inspection notes
|
|
85
85
|
- Any residual risks
|
|
86
86
|
|
|
87
|
-
Set `{spec_file}` frontmatter `followup_review_recommended` from the
|
|
87
|
+
Set `{spec_file}` frontmatter `followup_review_recommended` from the computation above.
|
|
88
88
|
|
|
89
|
-
If version control is
|
|
89
|
+
If version control is unavailable, set `{spec_file}` frontmatter `status: done`, then proceed to HALT.
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
If version control is available, write `status: done` into `{spec_file}` frontmatter, then:
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
1. Commit any reviewed-diff files that remain uncommitted, including `{spec_file}` when it is tracked in that working copy. Keep commits already created during this run. Verify every reviewed-diff file appears in the change set after `{baseline_revision}` and none remains uncommitted. Do not push.
|
|
94
|
+
2. Verify the version-controlled working copy is clean. Otherwise HALT with status `blocked` and blocking condition `finalization left repository dirty`.
|
|
94
95
|
|
|
95
96
|
HALT with status `done`.
|
package/src/bmm-skills/{4-implementation/bmad-dev-auto/SKILL.md → ship/bmad-build-auto/workflow.md}
RENAMED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
name: bmad-dev-auto
|
|
3
|
-
description: 'One iteration of an unattended development loop. Use when invoked by name.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Dev Auto Workflow
|
|
1
|
+
# Build Auto Workflow
|
|
7
2
|
|
|
8
3
|
**Goal:** Turn intent into a hardened, reviewable artifact, without human interaction.
|
|
9
4
|
|
|
10
|
-
**CRITICAL:** If a step
|
|
5
|
+
**CRITICAL:** If a step directs you to another snapshot file, read it fully and follow it. No exceptions.
|
|
11
6
|
|
|
12
7
|
## HALT
|
|
13
8
|
|
|
14
9
|
To HALT with a final status and optional blocking condition:
|
|
15
10
|
|
|
16
|
-
1. **Folder+id dispatch** (`{spec_folder}` and `{story_id}` are set): the write-back always lands at the id-keyed story spec. The `{implementation_artifacts}` fallback in step 2 below is never used in this mode, even for halts before planning starts.
|
|
11
|
+
1. **Folder+id dispatch** (`{spec_folder}` and `{story_id}` are set): the write-back always lands at the id-keyed story spec. The `{{.implementation_artifacts}}` fallback in step 2 below is never used in this mode, even for halts before planning starts.
|
|
17
12
|
- If `{spec_file}` is still empty, resolve it now:
|
|
18
13
|
- **Entry not resolved** (`stories.yaml` is missing/unparseable, or `{story_id}` has no matching entry): use the fixed slug segment `unresolved`: `{spec_file}` = `{spec_folder}/stories/{story_id}-unresolved.md`.
|
|
19
14
|
- **Ambiguous on-disk match** (the halt is `ambiguous story file match` — more than one file already matches `{spec_folder}/stories/{story_id}-*.md`): use the fixed slug segment `ambiguous` instead of deriving from the title, so the write-back neither creates a third title-derived candidate nor risks silently landing on one of the existing ambiguous files: `{spec_file}` = `{spec_folder}/stories/{story_id}-ambiguous.md`.
|
|
@@ -34,20 +29,24 @@ To HALT with a final status and optional blocking condition:
|
|
|
34
29
|
```
|
|
35
30
|
2. **Otherwise:**
|
|
36
31
|
- If `{spec_file}` is known and exists, update `status` in frontmatter and append missing result details under `## Auto Run Result`.
|
|
37
|
-
- If `{spec_file}` is unknown or missing, create `{implementation_artifacts}/bmad-
|
|
32
|
+
- If `{spec_file}` is unknown or missing, create `{{.implementation_artifacts}}/bmad-build-auto-result-<slug-or-timestamp>.md` with:
|
|
38
33
|
```markdown
|
|
39
34
|
---
|
|
40
35
|
status: <final status>
|
|
41
36
|
---
|
|
42
37
|
|
|
43
|
-
# BMad
|
|
38
|
+
# BMad Build Auto Result
|
|
44
39
|
|
|
45
40
|
Status: <final status>
|
|
46
41
|
Blocking condition: <blocking condition, if any>
|
|
47
42
|
```
|
|
48
|
-
3.
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
3. Follow **On Complete** below, then stop the workflow.
|
|
44
|
+
|
|
45
|
+
### On Complete
|
|
46
|
+
|
|
47
|
+
If anything appears below, follow it as the final terminal instruction before exiting; otherwise exit normally.
|
|
48
|
+
|
|
49
|
+
{workflow.on_complete}
|
|
51
50
|
|
|
52
51
|
## Subagents
|
|
53
52
|
|
|
@@ -62,55 +61,37 @@ A specification is "Ready for Development" when:
|
|
|
62
61
|
- **Actionable**: Every task has a file path and specific action.
|
|
63
62
|
- **Logical**: Tasks ordered by dependency.
|
|
64
63
|
- **Testable**: All ACs use Given/When/Then.
|
|
65
|
-
- **Surface-anchored**: ACs observe the outermost surface the intent references — never a more internal proxy for it
|
|
64
|
+
- **Surface-anchored**: ACs observe the outermost surface the intent references — never a more internal proxy for it.
|
|
66
65
|
- **Complete**: No placeholders or TBDs.
|
|
67
66
|
- **Sufficient**: No known requirement, acceptance, dependency, or implementation gaps remain unresolved.
|
|
68
67
|
- **Coherent**: No unresolved ambiguities or internal contradictions.
|
|
69
68
|
|
|
70
69
|
## Conventions
|
|
71
70
|
|
|
72
|
-
-
|
|
73
|
-
- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
|
|
71
|
+
- Every operational cross-file reference in this workflow is an absolute snapshot path. Open it directly; do not resolve it relative to a skill directory.
|
|
74
72
|
- `{project-root}`-prefixed paths resolve from the project working directory.
|
|
75
|
-
- `{
|
|
73
|
+
- Speak in `{{.communication_language}}`, tailor communication to `{{.user_skill_level}}`, and write documents in `{{.document_output_language}}`.
|
|
74
|
+
- Whenever this workflow captures or records a version-control revision, obtain the full canonical identifier directly from version control and preserve it verbatim.
|
|
76
75
|
|
|
77
76
|
## On Activation
|
|
78
77
|
|
|
79
|
-
### Step 1:
|
|
80
|
-
|
|
81
|
-
Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
|
|
82
|
-
|
|
83
|
-
**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:
|
|
84
|
-
|
|
85
|
-
1. `{skill-root}/customize.toml` — defaults
|
|
86
|
-
2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides
|
|
87
|
-
3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides
|
|
88
|
-
|
|
89
|
-
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.
|
|
90
|
-
|
|
91
|
-
### Step 2: Execute Prepend Steps
|
|
78
|
+
### Step 1: Execute Prepend Steps
|
|
92
79
|
|
|
93
|
-
Execute each
|
|
80
|
+
Execute each of these steps in order before proceeding (`_None._` means skip):
|
|
94
81
|
|
|
95
|
-
|
|
82
|
+
{workflow.activation_steps_prepend}
|
|
96
83
|
|
|
97
|
-
|
|
84
|
+
### Step 2: Load Persistent Facts
|
|
98
85
|
|
|
99
|
-
|
|
86
|
+
Treat every entry below 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 (`_None._` means none):
|
|
100
87
|
|
|
101
|
-
|
|
88
|
+
{workflow.persistent_facts}
|
|
102
89
|
|
|
103
|
-
|
|
104
|
-
- `communication_language`, `document_output_language`, `user_skill_level`
|
|
105
|
-
- `date` as system-generated current datetime
|
|
106
|
-
- `project_context` = `**/project-context.md` (load if exists)
|
|
107
|
-
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
|
108
|
-
- Language MUST be tailored to `{user_skill_level}`
|
|
109
|
-
- Generate all documents in `{document_output_language}`
|
|
90
|
+
### Step 3: Execute Append Steps
|
|
110
91
|
|
|
111
|
-
|
|
92
|
+
Execute each of these steps in order (`_None._` means skip):
|
|
112
93
|
|
|
113
|
-
|
|
94
|
+
{workflow.activation_steps_append}
|
|
114
95
|
|
|
115
96
|
Activation is complete after all activation steps have run.
|
|
116
97
|
|
|
@@ -118,6 +99,6 @@ Activation is complete after all activation steps have run.
|
|
|
118
99
|
|
|
119
100
|
Follow the step files in order. Read one step fully, execute it, then load the next step only when directed. Do not skip, reorder, or pre-load steps.
|
|
120
101
|
|
|
121
|
-
## First
|
|
102
|
+
## First Workflow Step
|
|
122
103
|
|
|
123
|
-
Read fully and follow:
|
|
104
|
+
Read fully and follow: `[[bmad-snapshot:step-01-clarify-and-route.md]]`.
|
|
@@ -20,7 +20,7 @@ description: 'LLM-assisted human-in-the-loop review. Make sense of a change, foc
|
|
|
20
20
|
|
|
21
21
|
### Step 1: Resolve the Workflow Block
|
|
22
22
|
|
|
23
|
-
Run: `
|
|
23
|
+
Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
|
|
24
24
|
|
|
25
25
|
**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:
|
|
26
26
|
|
|
@@ -25,6 +25,6 @@ HALT — do not proceed until the user makes their choice.
|
|
|
25
25
|
|
|
26
26
|
## On Complete
|
|
27
27
|
|
|
28
|
-
Run: `
|
|
28
|
+
Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_complete`
|
|
29
29
|
|
|
30
30
|
If the resolved `workflow.on_complete` is non-empty, follow it as the final terminal instruction before exiting.
|
|
@@ -21,7 +21,7 @@ If you need an explicit user instruction to run them, ask once now for the whole
|
|
|
21
21
|
|
|
22
22
|
### Step 1: Resolve the Workflow Block
|
|
23
23
|
|
|
24
|
-
Run: `
|
|
24
|
+
Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
|
|
25
25
|
|
|
26
26
|
**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:
|
|
27
27
|
|
|
@@ -50,33 +50,52 @@ on_complete = ""
|
|
|
50
50
|
id = "blind-hunter"
|
|
51
51
|
name = "Blind Hunter"
|
|
52
52
|
instruction = """
|
|
53
|
-
Launch a subagent with
|
|
53
|
+
Launch a context-free subagent with this prompt:
|
|
54
|
+
|
|
55
|
+
Conduct a review of CONTENT.
|
|
56
|
+
Look for what's missing, not only what's wrong.
|
|
57
|
+
Find at least ten issues to fix or improve.
|
|
58
|
+
Output a Markdown list of findings only — no severity, priority, or ranking.
|
|
59
|
+
If the content is empty, stop and say so.
|
|
60
|
+
If you have zero findings, re-check and keep thinking; do not stop with an empty list.
|
|
61
|
+
|
|
62
|
+
CONTENT:
|
|
63
|
+
{diff_output}
|
|
64
|
+
|
|
65
|
+
Do not invoke any skill. Return only the review result.
|
|
54
66
|
|
|
55
|
-
> Invoke the `bmad-review-adversarial-general` skill on this diff:
|
|
56
|
-
>
|
|
57
|
-
> {diff_output}
|
|
58
67
|
"""
|
|
59
68
|
|
|
60
69
|
[[workflow.review_layers]]
|
|
61
70
|
id = "edge-case-hunter"
|
|
62
71
|
name = "Edge Case Hunter"
|
|
63
72
|
instruction = """
|
|
64
|
-
Launch a subagent with
|
|
73
|
+
Launch a context-free subagent with this prompt:
|
|
74
|
+
|
|
75
|
+
Read `{skill-root}/review-prompts/edge-case-hunter.md` completely and follow it as your review instructions.
|
|
76
|
+
|
|
77
|
+
Review content:
|
|
78
|
+
|
|
79
|
+
{diff_output}
|
|
80
|
+
|
|
81
|
+
Do not invoke any skill. If the instruction file is unreadable, report that exact failure and stop. Return only the review result.
|
|
65
82
|
|
|
66
|
-
> Invoke the `bmad-review-edge-case-hunter` skill on this diff:
|
|
67
|
-
>
|
|
68
|
-
> {diff_output}
|
|
69
83
|
"""
|
|
70
84
|
|
|
71
85
|
[[workflow.review_layers]]
|
|
72
86
|
id = "verification-gap"
|
|
73
87
|
name = "Verification Gap Reviewer"
|
|
74
88
|
instruction = """
|
|
75
|
-
Launch a subagent with
|
|
89
|
+
Launch a context-free subagent with this prompt:
|
|
90
|
+
|
|
91
|
+
Read `{skill-root}/review-prompts/verification-gap.md` completely and follow it as your review instructions.
|
|
92
|
+
|
|
93
|
+
Review content:
|
|
94
|
+
|
|
95
|
+
{diff_output}
|
|
96
|
+
|
|
97
|
+
Do not invoke any skill. If the instruction file is unreadable, report that exact failure and stop. Return only the review result.
|
|
76
98
|
|
|
77
|
-
> Invoke the `bmad-review-verification-gap` skill on this diff:
|
|
78
|
-
>
|
|
79
|
-
> {diff_output}
|
|
80
99
|
"""
|
|
81
100
|
|
|
82
101
|
[[workflow.review_layers]]
|
|
@@ -84,10 +103,11 @@ id = "acceptance-auditor"
|
|
|
84
103
|
name = "Acceptance Auditor"
|
|
85
104
|
when = 'Only when {review_mode} = "full".'
|
|
86
105
|
instruction = """
|
|
87
|
-
Launch a subagent with
|
|
106
|
+
Launch a subagent with this prompt:
|
|
107
|
+
|
|
108
|
+
You are an Acceptance Auditor. Review the provided diff against `{spec_file}` and any loaded context docs. Check for: violations of acceptance criteria, deviations from spec intent, missing implementation of specified behavior, contradictions between spec constraints and actual code. Output findings as a Markdown list. Each finding: one-line title, which AC/constraint it violates, and evidence from the diff.
|
|
109
|
+
|
|
110
|
+
Diff:
|
|
88
111
|
|
|
89
|
-
|
|
90
|
-
>
|
|
91
|
-
> Diff:
|
|
92
|
-
> {diff_output}
|
|
112
|
+
{diff_output}
|
|
93
113
|
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Deletion Check
|
|
2
|
+
|
|
3
|
+
Secondary pass for the Edge Case Hunter — runs only when the diff removed meaningful code. Subordinate to the edge-case pass; findings are usually few or none.
|
|
4
|
+
|
|
5
|
+
For each chunk of removed or replaced code (ignore pure renames and whitespace), ask: did it carry behavior or a contract that the change neither re-established nor intentionally retired? Add a finding for any resulting regression, orphaned reference, or newly-dead code. Skip anything already covered by your edge-case findings.
|
|
6
|
+
|
|
7
|
+
Append each finding to the same JSON array as the edge-case findings, with the four standard fields plus:
|
|
8
|
+
|
|
9
|
+
- `kind`: `"deletion"`
|
|
10
|
+
- `confidence`: `"high"`, `"medium"`, or `"low"` — these are inferences; rate them
|
|
11
|
+
|
|
12
|
+
For a deletion finding the standard fields read as: `location` = the removed item; `trigger_condition` = the behavior or contract it enforced; `guard_snippet` = where or how to re-establish it; `potential_consequence` = the regression or orphan.
|
|
13
|
+
|
|
14
|
+
Add nothing if nothing qualifies.
|