bmad-method 6.10.1-next.8 → 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.
Files changed (352) hide show
  1. package/.claude-plugin/marketplace.json +30 -57
  2. package/README.md +49 -82
  3. package/README_CN.md +10 -10
  4. package/README_VN.md +11 -11
  5. package/bmad-modules.yaml +43 -39
  6. package/package.json +7 -3
  7. package/removals.txt +17 -0
  8. package/src/bmm-skills/{1-analysis → agents}/bmad-agent-analyst/SKILL.md +1 -1
  9. package/src/bmm-skills/{1-analysis → agents}/bmad-agent-analyst/customize.toml +22 -7
  10. package/src/bmm-skills/{3-solutioning → agents}/bmad-agent-architect/SKILL.md +1 -1
  11. package/src/bmm-skills/{3-solutioning → agents}/bmad-agent-architect/customize.toml +2 -2
  12. package/src/bmm-skills/{4-implementation → agents}/bmad-agent-dev/SKILL.md +1 -1
  13. package/src/bmm-skills/{4-implementation → agents}/bmad-agent-dev/customize.toml +7 -14
  14. package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-pm/SKILL.md +1 -1
  15. package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-pm/customize.toml +2 -2
  16. package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-ux-designer/SKILL.md +1 -1
  17. package/src/bmm-skills/module-help.csv +14 -26
  18. package/src/bmm-skills/module.yaml +5 -15
  19. package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/SKILL.md +3 -3
  20. package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/customize.toml +4 -2
  21. package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/SKILL.md +1 -1
  22. package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-04-final-validation.md +1 -1
  23. package/src/bmm-skills/plan/bmad-generate-project-context/SKILL.md +10 -0
  24. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/SKILL.md +3 -1
  25. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/prd-template.md +1 -1
  26. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/customize.toml +5 -3
  27. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/references/validate.md +3 -3
  28. package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/SKILL.md +1 -1
  29. package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/bmad-manifest.json +1 -1
  30. package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/verdict.md +1 -1
  31. package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/SKILL.md +1 -1
  32. package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/customize.toml +5 -3
  33. package/src/bmm-skills/plan/bmad-project-context/SKILL.md +110 -0
  34. package/src/bmm-skills/plan/bmad-project-context/customize.toml +24 -0
  35. package/src/bmm-skills/plan/bmad-project-context/references/best-practices.md +65 -0
  36. package/src/bmm-skills/plan/bmad-project-context/references/template.md +55 -0
  37. package/src/{core-skills → bmm-skills/plan}/bmad-spec/SKILL.md +18 -3
  38. package/src/{core-skills → bmm-skills/plan}/bmad-spec/assets/spec-template.md +1 -1
  39. package/src/bmm-skills/plan/bmad-spec/assets/stories-schema.md +44 -0
  40. package/src/{core-skills → bmm-skills/plan}/bmad-spec/customize.toml +3 -4
  41. package/src/bmm-skills/plan/bmad-sprint-planning/SKILL.md +62 -0
  42. package/src/bmm-skills/plan/bmad-sprint-planning/references/fix-sprint-status.md +30 -0
  43. package/src/bmm-skills/plan/bmad-sprint-planning/references/generate-tracking.md +25 -0
  44. package/src/bmm-skills/plan/bmad-sprint-planning/references/readiness-gate.md +20 -0
  45. package/src/bmm-skills/plan/bmad-sprint-planning/references/status-view.md +14 -0
  46. package/src/bmm-skills/plan/bmad-sprint-planning/references/validate.md +10 -0
  47. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
  48. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/sprint_plan.py +697 -0
  49. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
  50. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
  51. package/src/bmm-skills/{4-implementation → plan}/bmad-sprint-planning/sprint-status-template.yaml +9 -7
  52. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/SKILL.md +1 -1
  53. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/color-themes.md +1 -1
  54. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/customize.toml +4 -2
  55. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/creative-tools.md +1 -1
  56. package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/validate.md +1 -1
  57. package/src/bmm-skills/ship/bmad-build/SKILL.md +13 -0
  58. package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/compile-epic-context.md +1 -1
  59. package/src/bmm-skills/ship/bmad-build/customize.toml +164 -0
  60. package/src/bmm-skills/ship/bmad-build/references/deletion-check.md +14 -0
  61. package/src/bmm-skills/ship/bmad-build/review-prompts/edge-case-hunter.md +88 -0
  62. package/src/bmm-skills/ship/bmad-build/review-prompts/verification-gap.md +113 -0
  63. package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-01-clarify-and-route.md +20 -19
  64. package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-02-plan.md +5 -9
  65. package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-03-implement.md +10 -6
  66. package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-04-review.md +9 -15
  67. package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/step-05-present.md +10 -13
  68. package/src/bmm-skills/ship/bmad-build/step-oneshot.md +77 -0
  69. package/src/bmm-skills/ship/bmad-build/sync-sprint-status.md +19 -0
  70. package/src/bmm-skills/ship/bmad-build/workflow.md +84 -0
  71. package/src/bmm-skills/ship/bmad-build-auto/SKILL.md +13 -0
  72. package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/compile-epic-context.md +1 -1
  73. package/src/bmm-skills/ship/bmad-build-auto/customize.toml +121 -0
  74. 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
  75. package/src/{core-skills/bmad-review-verification-gap/SKILL.md → bmm-skills/ship/bmad-build-auto/review-prompts/verification-gap.md} +15 -8
  76. package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/spec-template.md +2 -1
  77. package/src/bmm-skills/ship/bmad-build-auto/step-01-clarify-and-route.md +83 -0
  78. package/src/bmm-skills/ship/bmad-build-auto/step-02-plan.md +27 -0
  79. package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-03-implement.md +6 -4
  80. package/src/bmm-skills/{4-implementation/bmad-dev-auto → ship/bmad-build-auto}/step-04-review.md +26 -25
  81. package/src/bmm-skills/ship/bmad-build-auto/workflow.md +104 -0
  82. package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/SKILL.md +1 -1
  83. package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-05-wrapup.md +1 -1
  84. package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/SKILL.md +1 -1
  85. package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/customize.toml +37 -17
  86. package/src/bmm-skills/ship/bmad-code-review/references/deletion-check.md +14 -0
  87. package/src/bmm-skills/ship/bmad-code-review/review-prompts/edge-case-hunter.md +88 -0
  88. package/src/bmm-skills/ship/bmad-code-review/review-prompts/verification-gap.md +113 -0
  89. package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-01-gather-context.md +7 -4
  90. package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-02-review.md +1 -1
  91. package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-04-present.md +1 -1
  92. package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/SKILL.md +7 -8
  93. package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/SKILL.md +2 -2
  94. package/src/bmm-skills/ship/bmad-retrospective/SKILL.md +94 -0
  95. package/src/bmm-skills/{4-implementation → ship}/bmad-retrospective/customize.toml +2 -2
  96. package/src/bmm-skills/ship/bmad-retrospective/references/acceptance-verdict.md +55 -0
  97. package/src/bmm-skills/ship/bmad-retrospective/references/aggregate-views.md +17 -0
  98. package/src/bmm-skills/ship/bmad-retrospective/references/evidence-gathering.md +30 -0
  99. package/src/bmm-skills/ship/bmad-retrospective/references/retro-document.md +84 -0
  100. package/src/bmm-skills/ship/bmad-retrospective/references/team-discussion.md +22 -0
  101. package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
  102. package/src/bmm-skills/ship/bmad-retrospective/scripts/git_evidence.py +304 -0
  103. package/src/bmm-skills/ship/bmad-retrospective/scripts/sprint_status.py +746 -0
  104. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
  105. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
  106. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
  107. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py +750 -0
  108. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py +1579 -0
  109. package/src/bmm-skills/v6-shims/README.md +28 -0
  110. package/src/bmm-skills/{3-solutioning → v6-shims}/bmad-create-architecture/SKILL.md +2 -2
  111. package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-create-prd/SKILL.md +4 -4
  112. package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/SKILL.md +5 -3
  113. package/src/bmm-skills/v6-shims/bmad-dev-auto/SKILL.md +19 -0
  114. package/src/bmm-skills/{4-implementation → v6-shims}/bmad-dev-story/SKILL.md +5 -3
  115. package/src/bmm-skills/{4-implementation → v6-shims}/bmad-dev-story/customize.toml +3 -0
  116. package/src/bmm-skills/v6-shims/bmad-document-project/SKILL.md +14 -0
  117. package/src/bmm-skills/v6-shims/bmad-domain-research/SKILL.md +14 -0
  118. package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-edit-prd/SKILL.md +4 -4
  119. package/src/bmm-skills/v6-shims/bmad-market-research/SKILL.md +14 -0
  120. package/src/bmm-skills/v6-shims/bmad-quick-dev/SKILL.md +19 -0
  121. package/src/bmm-skills/v6-shims/bmad-sprint-status/SKILL.md +26 -0
  122. package/src/bmm-skills/v6-shims/bmad-technical-research/SKILL.md +14 -0
  123. package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-validate-prd/SKILL.md +4 -4
  124. package/src/core-skills/bmad-advanced-elicitation/SKILL.md +26 -103
  125. package/src/core-skills/bmad-advanced-elicitation/customize.toml +54 -0
  126. package/src/core-skills/bmad-advanced-elicitation/scripts/pick_methods.py +233 -0
  127. package/src/core-skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py +228 -0
  128. package/src/core-skills/bmad-brainstorming/SKILL.md +3 -3
  129. package/src/core-skills/bmad-brainstorming/assets/brain-selector.html +2 -0
  130. package/src/core-skills/bmad-brainstorming/references/mode-autonomous.md +1 -1
  131. package/src/core-skills/bmad-brainstorming/scripts/brain.py +36 -6
  132. package/src/core-skills/bmad-brainstorming/scripts/tests/test_brain.py +22 -0
  133. package/src/core-skills/bmad-customize/SKILL.md +2 -2
  134. package/src/core-skills/bmad-deep-recon/SKILL.md +82 -0
  135. package/src/core-skills/bmad-deep-recon/assets/research.template.md +18 -0
  136. package/src/core-skills/bmad-deep-recon/customize.toml +212 -0
  137. package/src/core-skills/bmad-deep-recon/references/draft.md +8 -0
  138. package/src/core-skills/bmad-deep-recon/references/finalize.md +11 -0
  139. package/src/core-skills/bmad-deep-recon/references/html-briefing.md +16 -0
  140. package/src/core-skills/bmad-deep-recon/references/lifecycle.md +11 -0
  141. package/src/core-skills/bmad-deep-recon/references/process.md +10 -0
  142. package/src/core-skills/bmad-deep-recon/references/run.md +73 -0
  143. package/src/core-skills/bmad-deep-recon/references/selection.md +13 -0
  144. package/src/core-skills/bmad-deep-recon/references/synthesis.md +16 -0
  145. package/src/core-skills/bmad-deep-recon/references/verification.md +29 -0
  146. package/src/core-skills/bmad-deep-recon/scripts/recon_kit.py +322 -0
  147. package/src/core-skills/bmad-deep-recon/scripts/tests/test_recon_kit.py +144 -0
  148. package/src/core-skills/bmad-deep-recon/types/academic-lit.md +19 -0
  149. package/src/core-skills/bmad-deep-recon/types/competitive.md +19 -0
  150. package/src/core-skills/bmad-deep-recon/types/domain.md +19 -0
  151. package/src/core-skills/bmad-deep-recon/types/market.md +19 -0
  152. package/src/core-skills/bmad-deep-recon/types/technical.md +19 -0
  153. package/src/core-skills/bmad-deep-recon/types/user-voice.md +19 -0
  154. package/src/core-skills/bmad-forge-idea/SKILL.md +2 -2
  155. package/src/core-skills/bmad-forge-idea/scripts/resolve_personas.py +7 -2
  156. package/src/core-skills/bmad-help/SKILL.md +3 -3
  157. package/src/core-skills/bmad-party-mode/SKILL.md +2 -2
  158. package/src/core-skills/bmad-party-mode/customize.toml +1 -1
  159. package/src/core-skills/bmad-party-mode/scripts/resolve_party.py +14 -4
  160. package/src/core-skills/bmad-review/SKILL.md +49 -0
  161. package/src/core-skills/bmad-review/customize.toml +141 -0
  162. package/src/core-skills/bmad-review/references/editorial-common.md +56 -0
  163. package/src/core-skills/bmad-review/references/lens-adversarial.md +19 -0
  164. package/src/core-skills/bmad-review/references/lens-edge-case-hunter.md +54 -0
  165. package/src/core-skills/bmad-review/references/lens-prose.md +7 -0
  166. package/src/core-skills/bmad-review/references/lens-structure.md +9 -0
  167. package/src/core-skills/bmad-review/references/lens-verification-gap.md +92 -0
  168. package/src/core-skills/bmad-review/references/structure-models.md +44 -0
  169. package/src/core-skills/bmad-review/scripts/tests/test_word_metrics.py +62 -0
  170. package/src/core-skills/bmad-review/scripts/word_metrics.py +102 -0
  171. package/src/core-skills/module-help.csv +4 -8
  172. package/src/core-skills/module.yaml +5 -0
  173. package/src/core-skills/v6-shims/README.md +25 -0
  174. package/src/core-skills/v6-shims/bmad-editorial-review/SKILL.md +6 -0
  175. package/src/core-skills/v6-shims/bmad-editorial-review/customize.toml +31 -0
  176. package/src/core-skills/v6-shims/bmad-editorial-review-prose/SKILL.md +6 -0
  177. package/src/core-skills/v6-shims/bmad-editorial-review-structure/SKILL.md +6 -0
  178. package/src/core-skills/v6-shims/bmad-review-adversarial-general/SKILL.md +6 -0
  179. package/src/core-skills/v6-shims/bmad-review-edge-case-hunter/SKILL.md +6 -0
  180. package/src/core-skills/v6-shims/bmad-review-verification-gap/SKILL.md +6 -0
  181. package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
  182. package/src/scripts/config_utils.py +119 -0
  183. package/src/scripts/render_skill.py +401 -0
  184. package/src/scripts/resolve_config.py +32 -136
  185. package/src/scripts/resolve_customization.py +43 -184
  186. package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
  187. package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
  188. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
  189. package/src/scripts/tests/test_config_utils.py +85 -0
  190. package/src/scripts/tests/test_resolve_config.py +89 -0
  191. package/src/scripts/tests/test_resolve_customization.py +27 -0
  192. package/tools/installer/cli-utils.js +6 -2
  193. package/tools/installer/core/installer.js +31 -9
  194. package/tools/installer/core/manifest-generator.js +1 -1
  195. package/tools/installer/core/uv-check.js +122 -24
  196. package/tools/installer/ide/_config-driven.js +1 -1
  197. package/tools/installer/ide/platform-codes.yaml +7 -0
  198. package/tools/installer/ide/shared/path-utils.js +2 -2
  199. package/tools/installer/install-messages.yaml +3 -2
  200. package/tools/installer/modules/custom-module-manager.js +12 -6
  201. package/tools/installer/modules/external-manager.js +12 -8
  202. package/tools/installer/modules/git-env.js +47 -0
  203. package/tools/installer/modules/official-modules.js +1 -1
  204. package/tools/installer/prompts.js +41 -102
  205. package/tools/installer/ui.js +99 -22
  206. package/tools/skill-validator.md +11 -1
  207. package/tools/validate-published-implementation-model.mjs +68 -0
  208. package/tools/validate-skills.js +33 -0
  209. package/web-bundles/prd-coach/prd-template.md +1 -1
  210. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +0 -76
  211. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/customize.toml +0 -81
  212. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/explain-concept.md +0 -20
  213. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/mermaid-gen.md +0 -20
  214. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/validate-doc.md +0 -19
  215. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/write-document.md +0 -20
  216. package/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md +0 -62
  217. package/src/bmm-skills/1-analysis/bmad-document-project/checklist.md +0 -245
  218. package/src/bmm-skills/1-analysis/bmad-document-project/customize.toml +0 -41
  219. package/src/bmm-skills/1-analysis/bmad-document-project/documentation-requirements.csv +0 -12
  220. package/src/bmm-skills/1-analysis/bmad-document-project/instructions.md +0 -128
  221. package/src/bmm-skills/1-analysis/bmad-document-project/templates/deep-dive-template.md +0 -345
  222. package/src/bmm-skills/1-analysis/bmad-document-project/templates/index-template.md +0 -169
  223. package/src/bmm-skills/1-analysis/bmad-document-project/templates/project-overview-template.md +0 -103
  224. package/src/bmm-skills/1-analysis/bmad-document-project/templates/project-scan-report-schema.json +0 -160
  225. package/src/bmm-skills/1-analysis/bmad-document-project/templates/source-tree-template.md +0 -135
  226. package/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-instructions.md +0 -300
  227. package/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
  228. package/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-instructions.md +0 -1108
  229. package/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-workflow.md +0 -34
  230. package/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md +0 -96
  231. package/src/bmm-skills/1-analysis/research/bmad-domain-research/customize.toml +0 -41
  232. package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md +0 -137
  233. package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -229
  234. package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -238
  235. package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -206
  236. package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -234
  237. package/src/bmm-skills/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -450
  238. package/src/bmm-skills/1-analysis/research/bmad-domain-research/research.template.md +0 -29
  239. package/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md +0 -96
  240. package/src/bmm-skills/1-analysis/research/bmad-market-research/customize.toml +0 -41
  241. package/src/bmm-skills/1-analysis/research/bmad-market-research/research.template.md +0 -29
  242. package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-01-init.md +0 -184
  243. package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
  244. package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
  245. package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
  246. package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
  247. package/src/bmm-skills/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +0 -484
  248. package/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md +0 -96
  249. package/src/bmm-skills/1-analysis/research/bmad-technical-research/customize.toml +0 -41
  250. package/src/bmm-skills/1-analysis/research/bmad-technical-research/research.template.md +0 -29
  251. package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md +0 -137
  252. package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
  253. package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
  254. package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
  255. package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
  256. package/src/bmm-skills/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -493
  257. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md +0 -91
  258. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/customize.toml +0 -41
  259. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
  260. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
  261. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
  262. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
  263. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
  264. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -132
  265. package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
  266. package/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md +0 -81
  267. package/src/bmm-skills/3-solutioning/bmad-generate-project-context/customize.toml +0 -41
  268. package/src/bmm-skills/3-solutioning/bmad-generate-project-context/project-context-template.md +0 -21
  269. package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-01-discover.md +0 -186
  270. package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-02-generate.md +0 -321
  271. package/src/bmm-skills/3-solutioning/bmad-generate-project-context/steps/step-03-complete.md +0 -284
  272. package/src/bmm-skills/4-implementation/bmad-dev-auto/SKILL.md +0 -103
  273. package/src/bmm-skills/4-implementation/bmad-dev-auto/customize.toml +0 -108
  274. package/src/bmm-skills/4-implementation/bmad-dev-auto/step-01-clarify-and-route.md +0 -66
  275. package/src/bmm-skills/4-implementation/bmad-dev-auto/step-02-plan.md +0 -31
  276. package/src/bmm-skills/4-implementation/bmad-quick-dev/SKILL.md +0 -115
  277. package/src/bmm-skills/4-implementation/bmad-quick-dev/customize.toml +0 -83
  278. package/src/bmm-skills/4-implementation/bmad-quick-dev/step-oneshot.md +0 -82
  279. package/src/bmm-skills/4-implementation/bmad-quick-dev/sync-sprint-status.md +0 -19
  280. package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +0 -1527
  281. package/src/bmm-skills/4-implementation/bmad-sprint-planning/SKILL.md +0 -319
  282. package/src/bmm-skills/4-implementation/bmad-sprint-planning/checklist.md +0 -34
  283. package/src/bmm-skills/4-implementation/bmad-sprint-status/SKILL.md +0 -311
  284. package/src/core-skills/bmad-brainstorming/analysis/catalog-analysis.md +0 -239
  285. package/src/core-skills/bmad-brainstorming/analysis/method-matrix.csv +0 -109
  286. package/src/core-skills/bmad-editorial-review-prose/SKILL.md +0 -86
  287. package/src/core-skills/bmad-editorial-review-structure/SKILL.md +0 -179
  288. package/src/core-skills/bmad-index-docs/SKILL.md +0 -66
  289. package/src/core-skills/bmad-review-adversarial-general/SKILL.md +0 -37
  290. package/src/core-skills/bmad-shard-doc/SKILL.md +0 -105
  291. /package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-ux-designer/customize.toml +0 -0
  292. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/assets/spine-template.md +0 -0
  293. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/references/headless.md +0 -0
  294. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/references/reviewer-gate.md +0 -0
  295. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/scripts/lint_spine.py +0 -0
  296. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/scripts/tests/test_lint_spine.py +0 -0
  297. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/customize.toml +0 -0
  298. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  299. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
  300. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  301. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
  302. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/headless-schemas.md +0 -0
  303. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/prd-validation-checklist.md +0 -0
  304. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/validation-report-template.html +0 -0
  305. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/references/headless.md +0 -0
  306. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/agents/artifact-analyzer.md +0 -0
  307. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/agents/web-researcher.md +0 -0
  308. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/assets/prfaq-template.md +0 -0
  309. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/customize.toml +0 -0
  310. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/customer-faq.md +0 -0
  311. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/internal-faq.md +0 -0
  312. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/press-release.md +0 -0
  313. /package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/assets/brief-template.md +0 -0
  314. /package/src/{core-skills → bmm-skills/plan}/bmad-spec/assets/headless-schemas.md +0 -0
  315. /package/src/bmm-skills/{4-implementation → plan}/bmad-sprint-planning/customize.toml +0 -0
  316. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-directions.md +0 -0
  317. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-editorial.md +0 -0
  318. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-mobile.md +0 -0
  319. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-shadcn.md +0 -0
  320. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/excalidraw-wireframe.md +0 -0
  321. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/experience-example-mobile.md +0 -0
  322. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/experience-example-shadcn.md +0 -0
  323. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/headless-schemas.md +0 -0
  324. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/key-screens.md +0 -0
  325. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/validation-report-template.html +0 -0
  326. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/design-md-spec.md +0 -0
  327. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/headless.md +0 -0
  328. /package/src/bmm-skills/{4-implementation/bmad-quick-dev → ship/bmad-build}/spec-template.md +0 -0
  329. /package/src/{core-skills/bmad-review-edge-case-hunter → bmm-skills/ship/bmad-build-auto}/references/deletion-check.md +0 -0
  330. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/customize.toml +0 -0
  331. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/generate-trail.md +0 -0
  332. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-01-orientation.md +0 -0
  333. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-02-walkthrough.md +0 -0
  334. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-03-detail-pass.md +0 -0
  335. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-04-testing.md +0 -0
  336. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-03-triage.md +0 -0
  337. /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/checklist.md +0 -0
  338. /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/customize.toml +0 -0
  339. /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/checklist.md +0 -0
  340. /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/customize.toml +0 -0
  341. /package/src/bmm-skills/{3-solutioning → v6-shims}/bmad-create-architecture/customize.toml +0 -0
  342. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-create-prd/customize.toml +0 -0
  343. /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/checklist.md +0 -0
  344. /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/customize.toml +0 -0
  345. /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/discover-inputs.md +0 -0
  346. /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-create-story/template.md +0 -0
  347. /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-dev-story/checklist.md +0 -0
  348. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-edit-prd/customize.toml +0 -0
  349. /package/src/bmm-skills/{4-implementation → v6-shims}/bmad-sprint-status/customize.toml +0 -0
  350. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-validate-prd/customize.toml +0 -0
  351. /package/src/core-skills/bmad-advanced-elicitation/{methods.csv → assets/methods.csv} +0 -0
  352. /package/src/core-skills/bmad-party-mode/scripts/tests/{test-resolve_party.py → test_resolve_party.py} +0 -0
@@ -0,0 +1,304 @@
1
+ # /// script
2
+ # requires-python = ">=3.10"
3
+ # ///
4
+ """Measure git commit and file-change evidence over a revision range.
5
+
6
+ Prints ONLY JSON to stdout. Errors are emitted as JSON to stdout with a
7
+ non-zero exit code: 2 for invalid arguments (rejected before git runs),
8
+ 1 for git or I/O failures. This script only MEASURES — it never judges
9
+ acceleration or violations. The model interprets the numbers.
10
+
11
+ Two git passes. The first lists every commit in the range (merges included)
12
+ and sums the per-file churn of the non-merge commits, which is what `files`
13
+ reports. The second runs only when the range contains merges and measures
14
+ those merges alone, reported separately as `merge_files` — never folded into
15
+ `files`, because a merge's diff against its first parent restates the churn
16
+ of the commits it merged in, which the first pass already counted.
17
+ """
18
+
19
+ import argparse
20
+ import json
21
+ import os
22
+ import re
23
+ import subprocess
24
+ import sys
25
+
26
+ UNIT_SEP = "\x1f"
27
+ # sha, space-separated parents (empty for a root commit), subject.
28
+ LOG_FORMAT = f"--format=%H{UNIT_SEP}%P{UNIT_SEP}%s"
29
+
30
+
31
+ def _emit(obj, code=0):
32
+ sys.stdout.write(json.dumps(obj))
33
+ sys.exit(code)
34
+
35
+
36
+ class JsonArgumentParser(argparse.ArgumentParser):
37
+ """Emit argparse failures on the JSON-only stdout contract, not usage text.
38
+
39
+ The parser is constructed with ``add_help=False``. The override below covers
40
+ ``error()``, but ``-h`` never reaches it: the built-in help action calls
41
+ ``print_help()`` and ``exit(0)`` directly, which would put plain usage text
42
+ on stdout with a zero exit and break the JSON-only contract. Removing the
43
+ action instead of intercepting it routes ``-h`` through the already-tested
44
+ ``error()`` path as an ordinary unrecognized argument. The cost is that the
45
+ ``help=`` strings are unreachable from the CLI; the skill's references carry
46
+ the usage a human needs.
47
+ """
48
+
49
+ def error(self, message):
50
+ _emit({"ok": False, "error": f"argument error: {message}"}, 2)
51
+
52
+
53
+ def _parse_numstat_line(line):
54
+ # numstat lines: "<added>\t<deleted>\t<path>"; binary files use "-".
55
+ parts = line.split("\t")
56
+ if len(parts) < 3:
57
+ return None
58
+ added_raw, deleted_raw, path = parts[0], parts[1], "\t".join(parts[2:])
59
+ added = None if added_raw == "-" else int(added_raw)
60
+ deleted = None if deleted_raw == "-" else int(deleted_raw)
61
+ return added, deleted, path
62
+
63
+
64
+ def _git_log(repo, extra_args, rng):
65
+ """Run one `git log --numstat` pass over `rng` and return its stdout.
66
+
67
+ `core.quotePath=false` keeps non-ASCII paths as real UTF-8 strings instead
68
+ of octal escapes, and `--no-renames` makes a rename an honest delete + add
69
+ instead of an unopenable "src/{a => b}" pseudo-path that splits one file's
70
+ churn across several keys. Both matter for every pass, so both live here.
71
+
72
+ `log.diffMerges=separate` is pinned on the command line because it is what
73
+ `-m` means: a user or repo config setting it to `off` makes pass 2 emit no
74
+ file rows at all, so `merge_files` would come back empty beside a non-zero
75
+ `merges_measured` and read as "the merges changed nothing".
76
+ """
77
+ cmd = [
78
+ "git",
79
+ "-c",
80
+ "core.quotePath=false",
81
+ "-c",
82
+ "log.diffMerges=separate",
83
+ "-C",
84
+ repo,
85
+ "log",
86
+ "--numstat",
87
+ "--no-renames",
88
+ *extra_args,
89
+ LOG_FORMAT,
90
+ rng,
91
+ "--", # terminate rev parsing so the range can never match a pathspec
92
+ ]
93
+ try:
94
+ # Decode explicitly: git emits UTF-8 path bytes regardless of the
95
+ # caller's locale, and a C locale would otherwise decode them as ASCII.
96
+ # surrogateescape, not replace: replace maps every invalid byte to the
97
+ # same U+FFFD, so two distinct non-UTF-8 paths would collapse into one
98
+ # `files` key with their churn silently summed. Lone surrogates survive
99
+ # json.dumps (escaped as \udcXX under ensure_ascii) and json.loads.
100
+ proc = subprocess.run(
101
+ cmd,
102
+ capture_output=True,
103
+ text=True,
104
+ encoding="utf-8",
105
+ errors="surrogateescape",
106
+ env={k: v for k, v in os.environ.items() if not k.startswith("GIT_")},
107
+ )
108
+ except Exception as exc: # noqa: BLE001
109
+ _emit({"ok": False, "error": str(exc)}, 1)
110
+
111
+ if proc.returncode != 0:
112
+ # stderr can be empty (a signal kill, a quiet failure); the exit code is
113
+ # then the only thing left to report, so never emit an empty error.
114
+ _emit(
115
+ {
116
+ "ok": False,
117
+ "error": proc.stderr.strip() or f"git exited {proc.returncode}",
118
+ },
119
+ 1,
120
+ )
121
+ return proc.stdout
122
+
123
+
124
+ def _parse_log(output, stories):
125
+ """Turn one pass's log output into (commits, files_map). Shared by both."""
126
+ commits = []
127
+ files = {} # path -> {path, _added, _deleted, binary_revisions, commit_count}
128
+ seen = set()
129
+ counting = True
130
+
131
+ for raw in output.splitlines():
132
+ if UNIT_SEP in raw:
133
+ sha, parents, subject = raw.split(UNIT_SEP, 2)
134
+ # Under -m, git repeats a merge's header once per parent unless it
135
+ # also honours --first-parent (git 2.31+). Count only the first
136
+ # block for a sha — git emits parents in order, so that block is
137
+ # the first-parent diff either way, and no churn is double counted.
138
+ counting = sha not in seen
139
+ if not counting:
140
+ continue
141
+ seen.add(sha)
142
+ commits.append(
143
+ {
144
+ "sha": sha,
145
+ "subject": subject,
146
+ # Every id the subject names, in --stories order: a commit
147
+ # spanning two stories belongs to both. Word-boundary match
148
+ # so a story id like "1-2" does not also match "11-2".
149
+ "stories": [
150
+ sid
151
+ for sid in stories
152
+ if re.search(rf"\b{re.escape(sid)}\b", subject)
153
+ ],
154
+ "is_merge": len(parents.split()) > 1,
155
+ }
156
+ )
157
+ continue
158
+
159
+ if not counting or not raw.strip():
160
+ continue
161
+
162
+ parsed = _parse_numstat_line(raw)
163
+ if parsed is None:
164
+ continue
165
+ added, deleted, path = parsed
166
+
167
+ entry = files.get(path)
168
+ if entry is None:
169
+ # _added/_deleted are running sums over the path's text revisions.
170
+ entry = {
171
+ "path": path,
172
+ "_added": 0,
173
+ "_deleted": 0,
174
+ "binary_revisions": 0,
175
+ "commit_count": 0,
176
+ }
177
+ files[path] = entry
178
+
179
+ entry["commit_count"] += 1
180
+ if added is None or deleted is None:
181
+ # A binary revision is unmeasurable, not zero — count it alongside
182
+ # the sums instead of nulling the path's real measured churn.
183
+ entry["binary_revisions"] += 1
184
+ else:
185
+ entry["_added"] += added
186
+ entry["_deleted"] += deleted
187
+
188
+ return commits, files
189
+
190
+
191
+ def _file_list(files):
192
+ return [
193
+ {
194
+ "path": entry["path"],
195
+ "added": entry["_added"],
196
+ "deleted": entry["_deleted"],
197
+ "net": entry["_added"] - entry["_deleted"],
198
+ "commit_count": entry["commit_count"],
199
+ "binary_revisions": entry["binary_revisions"],
200
+ }
201
+ for entry in files.values()
202
+ ]
203
+
204
+
205
+ def main(argv=None):
206
+ parser = JsonArgumentParser(
207
+ description=(
208
+ "Measure commit and per-file change evidence over a git revision "
209
+ "range. Measures only; does not judge."
210
+ ),
211
+ add_help=False,
212
+ )
213
+ parser.add_argument("--repo", default=".", help="Path to the git repo (default: .)")
214
+ parser.add_argument("--range", dest="range", help="Revision range REV..REV")
215
+ parser.add_argument(
216
+ "--stories",
217
+ help="Comma-separated story ids to match against commit subjects.",
218
+ )
219
+ args = parser.parse_args(argv)
220
+
221
+ stories = []
222
+ if args.stories:
223
+ # dict.fromkeys dedupes while keeping the caller's order: a repeated id
224
+ # would otherwise land twice in a commit's `stories`, double counting
225
+ # that commit in any per-story total built from the output.
226
+ stories = list(
227
+ dict.fromkeys(s.strip() for s in args.stories.split(",") if s.strip())
228
+ )
229
+
230
+ if not args.range:
231
+ _emit(
232
+ {
233
+ "range": None,
234
+ "note": "no range supplied",
235
+ "commits": [],
236
+ "files": [],
237
+ }
238
+ )
239
+
240
+ # Accept only an explicit REV..REV range. Anything else silently measures
241
+ # the wrong thing: a leading "-" is consumed by git as an option, a single
242
+ # rev logs all history up to it, a bare pathspec logs by path, an empty
243
+ # endpoint ("..", "a..", "..b") makes git default that side to HEAD, and a
244
+ # three-dot "A...B" is a symmetric difference — a different commit set
245
+ # entirely. partition splits at the FIRST "..", so any of those extra-dot
246
+ # shapes leaves `right` empty or dot-prefixed.
247
+ left, _, right = args.range.partition("..")
248
+ if (
249
+ args.range != args.range.strip()
250
+ or args.range.startswith("-")
251
+ or not left
252
+ or not right
253
+ or right.startswith(".")
254
+ ):
255
+ _emit(
256
+ {
257
+ "ok": False,
258
+ "error": f"invalid --range {args.range!r}: expected a revision range like REV..REV",
259
+ },
260
+ 2,
261
+ )
262
+
263
+ # Pass 1 — the listing. No extra args, so full topology: every commit in
264
+ # the range including merges, which is what per-story attribution reads.
265
+ # Merges contribute no numstat rows here, so `files` is non-merge churn.
266
+ commits, files = _parse_log(_git_log(args.repo, [], args.range), stories)
267
+ merge_count = sum(1 for commit in commits if commit["is_merge"])
268
+
269
+ # Pass 2 — merge churn, only when there is any. `-m --first-parent
270
+ # --min-parents=2` walks the range head's first-parent spine and emits
271
+ # exactly one diff-against-first-parent block per merge sitting on it.
272
+ # Merges off that spine are counted in merge_count and never measured,
273
+ # which is precisely why merges_measured is a separate key: the gap
274
+ # between the two is a visible statement that some merges went
275
+ # unmeasured. This never folds into `files` — a merge's first-parent diff
276
+ # restates the churn of the commits it merged in, which pass 1 already
277
+ # counted, so adding it in would double count.
278
+ merge_commits, merge_files = [], {}
279
+ if merge_count:
280
+ merge_commits, merge_files = _parse_log(
281
+ _git_log(
282
+ args.repo,
283
+ ["-m", "--first-parent", "--min-parents=2"],
284
+ args.range,
285
+ ),
286
+ stories,
287
+ )
288
+
289
+ _emit(
290
+ {
291
+ "range": args.range,
292
+ "commit_count": len(commits),
293
+ "merge_count": merge_count,
294
+ "merges_measured": len(merge_commits),
295
+ "commits": commits,
296
+ "files": _file_list(files),
297
+ "merge_files": _file_list(merge_files),
298
+ "stories_supplied": stories,
299
+ }
300
+ )
301
+
302
+
303
+ if __name__ == "__main__":
304
+ main()