bmad-method 6.0.0-alpha.1 → 6.0.0-alpha.11

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 (714) hide show
  1. package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
  2. package/.github/workflows/bundle-latest.yaml +277 -0
  3. package/.github/workflows/manual-release.yaml +64 -17
  4. package/.github/workflows/{lint.yaml → quality.yaml} +19 -2
  5. package/.husky/pre-commit +4 -0
  6. package/.prettierignore +4 -0
  7. package/.vscode/settings.json +3 -1
  8. package/CHANGELOG.md +321 -12
  9. package/CONTRIBUTING.md +1 -13
  10. package/README.md +138 -187
  11. package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  12. package/docs/agent-customization-guide.md +208 -0
  13. package/docs/custom-agent-installation.md +169 -0
  14. package/docs/document-sharding-guide.md +449 -0
  15. package/docs/ide-info/crush.md +1 -1
  16. package/docs/ide-info/cursor.md +7 -7
  17. package/docs/ide-info/iflow.md +3 -3
  18. package/docs/ide-info/opencode.md +1 -1
  19. package/docs/index.md +227 -0
  20. package/docs/installers-bundlers/ide-injections.md +2 -2
  21. package/docs/installers-bundlers/installers-modules-platforms-reference.md +80 -19
  22. package/docs/v4-to-v6-upgrade.md +21 -19
  23. package/docs/v6-open-items.md +17 -0
  24. package/docs/web-bundles-gemini-gpt-guide.md +473 -0
  25. package/eslint.config.mjs +2 -0
  26. package/package.json +6 -3
  27. package/src/core/_module-installer/install-config.yaml +17 -10
  28. package/src/core/_module-installer/installer.js +0 -8
  29. package/src/core/agents/bmad-master.agent.yaml +5 -5
  30. package/src/core/agents/bmad-web-orchestrator.agent.xml +8 -17
  31. package/src/core/resources/excalidraw/README.md +160 -0
  32. package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  33. package/src/core/resources/excalidraw/library-loader.md +50 -0
  34. package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
  35. package/src/core/tasks/advanced-elicitation-methods.csv +21 -0
  36. package/{bmad/core/tasks/adv-elicit.xml → src/core/tasks/advanced-elicitation.xml} +6 -4
  37. package/src/core/tasks/index-docs.xml +1 -1
  38. package/src/core/tasks/validate-workflow.xml +1 -1
  39. package/src/core/tasks/workflow.xml +126 -22
  40. package/src/core/tools/shard-doc.xml +54 -45
  41. package/src/core/workflows/brainstorming/README.md +6 -16
  42. package/src/core/workflows/brainstorming/instructions.md +6 -5
  43. package/src/core/workflows/brainstorming/template.md +4 -0
  44. package/src/core/workflows/brainstorming/workflow.yaml +8 -13
  45. package/src/core/workflows/party-mode/instructions.md +2 -7
  46. package/src/core/workflows/party-mode/workflow.yaml +11 -6
  47. package/src/modules/bmb/README.md +135 -73
  48. package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
  49. package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -12
  50. package/src/modules/bmb/docs/agent-compilation.md +340 -0
  51. package/src/modules/bmb/docs/agent-menu-patterns.md +524 -0
  52. package/src/modules/bmb/docs/expert-agent-architecture.md +364 -0
  53. package/src/modules/bmb/docs/index.md +55 -0
  54. package/src/modules/bmb/docs/module-agent-architecture.md +367 -0
  55. package/src/modules/bmb/docs/simple-agent-architecture.md +288 -0
  56. package/src/modules/bmb/docs/understanding-agent-types.md +184 -0
  57. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  58. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  59. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  60. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  61. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  62. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  63. package/src/modules/bmb/reference/agents/module-examples/README.md +50 -0
  64. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  65. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  66. package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
  67. package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  68. package/src/modules/bmb/reference/readme.md +3 -0
  69. package/src/modules/bmb/workflows/audit-workflow/checklist.md +5 -6
  70. package/src/modules/bmb/workflows/audit-workflow/instructions.md +6 -6
  71. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +2 -2
  72. package/src/modules/bmb/workflows/convert-legacy/README.md +5 -5
  73. package/src/modules/bmb/workflows/convert-legacy/checklist.md +2 -2
  74. package/src/modules/bmb/workflows/convert-legacy/instructions.md +17 -17
  75. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +6 -10
  76. package/src/modules/bmb/workflows/create-agent/agent-validation-checklist.md +174 -0
  77. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +99 -120
  78. package/src/modules/bmb/workflows/create-agent/communication-presets.csv +61 -0
  79. package/src/modules/bmb/workflows/create-agent/instructions.md +171 -82
  80. package/src/modules/bmb/workflows/create-agent/workflow.yaml +26 -20
  81. package/src/modules/bmb/workflows/create-module/README.md +163 -154
  82. package/src/modules/bmb/workflows/create-module/checklist.md +1 -10
  83. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
  84. package/src/modules/bmb/workflows/create-module/instructions.md +13 -17
  85. package/src/modules/bmb/workflows/create-module/module-structure.md +39 -5
  86. package/src/modules/bmb/workflows/create-module/workflow.yaml +21 -13
  87. package/src/modules/bmb/workflows/create-workflow/README.md +4 -4
  88. package/src/modules/bmb/workflows/create-workflow/checklist.md +1 -1
  89. package/src/modules/bmb/workflows/create-workflow/instructions.md +46 -37
  90. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +219 -42
  91. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +4 -2
  92. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -16
  93. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +7 -8
  94. package/src/modules/bmb/workflows/edit-agent/README.md +174 -47
  95. package/src/modules/bmb/workflows/edit-agent/instructions.md +399 -35
  96. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +27 -13
  97. package/src/modules/bmb/workflows/edit-module/README.md +2 -2
  98. package/src/modules/bmb/workflows/edit-module/checklist.md +2 -2
  99. package/src/modules/bmb/workflows/edit-module/instructions.md +7 -5
  100. package/src/modules/bmb/workflows/edit-module/workflow.yaml +11 -13
  101. package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
  102. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +6 -8
  103. package/src/modules/bmb/workflows/module-brief/README.md +2 -2
  104. package/src/modules/bmb/workflows/module-brief/checklist.md +2 -2
  105. package/src/modules/bmb/workflows/module-brief/instructions.md +3 -2
  106. package/src/modules/bmb/workflows/module-brief/workflow.yaml +12 -7
  107. package/src/modules/bmgd/README.md +208 -0
  108. package/src/modules/bmgd/_module-installer/install-config.yaml +54 -0
  109. package/src/modules/bmgd/agents/game-architect.agent.yaml +33 -0
  110. package/src/modules/bmgd/agents/game-designer.agent.yaml +40 -0
  111. package/src/modules/bmgd/agents/game-dev.agent.yaml +40 -0
  112. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +75 -0
  113. package/src/modules/bmgd/teams/default-party.csv +10 -0
  114. package/src/modules/{bmm → bmgd}/teams/team-gamedev.yaml +5 -1
  115. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
  116. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/workflow.yaml +10 -10
  117. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/instructions.md +44 -28
  118. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/workflow.yaml +9 -17
  119. package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/instructions-gdd.md +58 -31
  120. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +81 -0
  121. package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/instructions-narrative.md +75 -28
  122. package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/workflow.yaml +6 -12
  123. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
  124. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +103 -0
  125. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
  126. package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +222 -0
  127. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
  128. package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
  129. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +69 -0
  130. package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +12 -0
  131. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +22 -0
  132. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +398 -0
  133. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +61 -0
  134. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
  135. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
  136. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +58 -0
  137. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +240 -0
  138. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +256 -0
  139. package/src/modules/bmgd/workflows/4-production/create-story/template.md +51 -0
  140. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +74 -0
  141. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +38 -0
  142. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +267 -0
  143. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +58 -0
  144. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +17 -0
  145. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +164 -0
  146. package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +76 -0
  147. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +58 -0
  148. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
  149. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +57 -0
  150. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
  151. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
  152. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  153. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +51 -0
  154. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +16 -0
  155. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +34 -0
  156. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +209 -0
  157. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +63 -0
  158. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +111 -0
  159. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +28 -0
  160. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +117 -0
  161. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +25 -0
  162. package/src/modules/bmm/README.md +79 -92
  163. package/src/modules/bmm/_module-installer/install-config.yaml +9 -23
  164. package/src/modules/bmm/_module-installer/installer.js +2 -2
  165. package/src/modules/bmm/agents/analyst.agent.yaml +25 -19
  166. package/src/modules/bmm/agents/architect.agent.yaml +28 -19
  167. package/src/modules/bmm/agents/dev.agent.yaml +12 -15
  168. package/src/modules/bmm/agents/pm.agent.yaml +40 -22
  169. package/src/modules/bmm/agents/sm.agent.yaml +30 -24
  170. package/src/modules/bmm/agents/tea.agent.yaml +25 -17
  171. package/src/modules/bmm/agents/tech-writer.agent.yaml +80 -0
  172. package/src/modules/bmm/agents/ux-designer.agent.yaml +22 -12
  173. package/src/modules/bmm/docs/README.md +240 -0
  174. package/src/modules/bmm/docs/agents-guide.md +1058 -0
  175. package/src/modules/bmm/docs/brownfield-guide.md +762 -0
  176. package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
  177. package/src/modules/bmm/docs/faq.md +588 -0
  178. package/src/modules/bmm/docs/glossary.md +320 -0
  179. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5919 -0
  180. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -0
  181. package/src/modules/bmm/docs/party-mode.md +224 -0
  182. package/src/modules/bmm/docs/quick-spec-flow.md +652 -0
  183. package/src/modules/bmm/docs/quick-start.md +382 -0
  184. package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
  185. package/src/modules/bmm/docs/test-architecture.md +396 -0
  186. package/src/modules/bmm/{workflows/3-solutioning/architecture/readme.md → docs/workflow-architecture-reference.md} +132 -84
  187. package/src/modules/bmm/{workflows/document-project/README.md → docs/workflow-document-project-reference.md} +49 -4
  188. package/src/modules/bmm/docs/workflows-analysis.md +370 -0
  189. package/src/modules/bmm/docs/workflows-implementation.md +296 -0
  190. package/src/modules/bmm/docs/workflows-planning.md +612 -0
  191. package/src/modules/bmm/docs/workflows-solutioning.md +554 -0
  192. package/src/modules/bmm/teams/default-party.csv +20 -0
  193. package/src/modules/bmm/teams/team-fullstack.yaml +2 -0
  194. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +45 -24
  195. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
  196. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +425 -0
  197. package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +180 -0
  198. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +56 -0
  199. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +435 -232
  200. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +93 -77
  201. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +32 -14
  202. package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
  203. package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
  204. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +156 -59
  205. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +70 -65
  206. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +205 -143
  207. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +55 -46
  208. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +116 -83
  209. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +37 -1
  210. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +36 -1
  211. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +25 -12
  212. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +51 -26
  213. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +67 -16
  214. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +292 -63
  215. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  216. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +544 -290
  217. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +165 -23
  218. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  219. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +50 -18
  220. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +146 -36
  221. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +67 -4
  222. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +436 -0
  223. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +874 -163
  224. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +132 -6
  225. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +54 -20
  226. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +36 -28
  227. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -26
  228. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +1 -1
  229. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +5 -9
  230. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +215 -150
  231. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +72 -26
  232. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md +80 -0
  233. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +616 -0
  234. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +63 -0
  235. package/src/modules/bmm/workflows/3-solutioning/{solutioning-gate-check → implementation-readiness}/checklist.md +7 -13
  236. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +332 -0
  237. package/src/modules/bmm/workflows/3-solutioning/{solutioning-gate-check → implementation-readiness}/template.md +1 -1
  238. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +64 -0
  239. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +25 -18
  240. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +31 -26
  241. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  242. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
  243. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +38 -25
  244. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +22 -18
  245. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -14
  246. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +8 -3
  247. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +35 -5
  248. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
  249. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +10 -6
  250. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +40 -16
  251. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1207 -243
  252. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
  253. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +28 -15
  254. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +1 -1
  255. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +16 -6
  256. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
  257. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
  258. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +23 -15
  259. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +39 -8
  260. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
  261. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +5 -4
  262. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +6 -6
  263. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +5 -7
  264. package/src/modules/bmm/workflows/diagrams/_shared/excalidraw-library.json +90 -0
  265. package/src/modules/bmm/workflows/diagrams/_shared/excalidraw-templates.yaml +127 -0
  266. package/src/modules/bmm/workflows/diagrams/create-dataflow/checklist.md +39 -0
  267. package/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md +130 -0
  268. package/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml +27 -0
  269. package/src/modules/bmm/workflows/diagrams/create-diagram/checklist.md +43 -0
  270. package/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md +141 -0
  271. package/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml +27 -0
  272. package/src/modules/bmm/workflows/diagrams/create-flowchart/checklist.md +49 -0
  273. package/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md +241 -0
  274. package/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml +27 -0
  275. package/src/modules/bmm/workflows/diagrams/create-wireframe/checklist.md +38 -0
  276. package/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md +133 -0
  277. package/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml +27 -0
  278. package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
  279. package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
  280. package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -7
  281. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +4 -4
  282. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  283. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
  284. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  285. package/src/modules/bmm/workflows/techdoc/documentation-standards.md +262 -0
  286. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
  287. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
  288. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
  289. package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
  290. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
  291. package/src/modules/bmm/workflows/testarch/ci/checklist.md +4 -4
  292. package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
  293. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
  294. package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
  295. package/src/modules/bmm/workflows/testarch/framework/instructions.md +2 -2
  296. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
  297. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  298. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
  299. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +4 -4
  300. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +175 -14
  301. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +4 -4
  302. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +7 -11
  303. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
  304. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
  305. package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
  306. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
  307. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +249 -212
  308. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
  309. package/src/modules/bmm/workflows/workflow-status/instructions.md +177 -113
  310. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +126 -0
  311. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +114 -0
  312. package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-3.yaml → method-brownfield.yaml} +48 -33
  313. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +101 -0
  314. package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-1.yaml → quick-flow-brownfield.yaml} +18 -18
  315. package/src/modules/bmm/workflows/workflow-status/paths/{greenfield-level-1.yaml → quick-flow-greenfield.yaml} +16 -18
  316. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  317. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  318. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +5 -5
  319. package/src/modules/cis/README.md +153 -0
  320. package/src/modules/cis/_module-installer/install-config.yaml +6 -4
  321. package/src/modules/cis/agents/README.md +1 -1
  322. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +13 -8
  323. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +13 -8
  324. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +13 -8
  325. package/src/modules/cis/agents/innovation-strategist.agent.yaml +13 -8
  326. package/src/modules/cis/agents/presentation-master.agent.yaml +60 -0
  327. package/src/modules/cis/agents/storyteller.agent.yaml +13 -8
  328. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  329. package/src/modules/cis/teams/default-party.csv +11 -0
  330. package/src/modules/cis/workflows/README.md +102 -30
  331. package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
  332. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
  333. package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
  334. package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
  335. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
  336. package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
  337. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
  338. package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
  339. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
  340. package/src/utility/models/action-command-header.md +0 -0
  341. package/src/utility/models/agent-activation-ide.xml +3 -3
  342. package/src/utility/models/agent-activation-web.xml +4 -4
  343. package/src/utility/models/agent-command-header.md +1 -0
  344. package/src/utility/models/fragments/activation-steps.xml +3 -2
  345. package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
  346. package/src/utility/models/fragments/handler-workflow.xml +1 -1
  347. package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
  348. package/test/test-installation-components.js +214 -0
  349. package/tools/bmad-npx-wrapper.js +10 -98
  350. package/tools/cli/README.md +50 -32
  351. package/tools/cli/bundlers/web-bundler.js +322 -26
  352. package/tools/cli/commands/agent-install.js +409 -0
  353. package/tools/cli/commands/install.js +2 -5
  354. package/tools/cli/installers/lib/core/config-collector.js +279 -39
  355. package/tools/cli/installers/lib/core/detector.js +62 -7
  356. package/tools/cli/installers/lib/core/ide-config-manager.js +3 -1
  357. package/tools/cli/installers/lib/core/installer.js +338 -46
  358. package/tools/cli/installers/lib/core/manifest-generator.js +33 -117
  359. package/tools/cli/installers/lib/core/manifest.js +6 -2
  360. package/tools/cli/installers/lib/ide/_base-ide.js +82 -3
  361. package/tools/cli/installers/lib/ide/antigravity.js +463 -0
  362. package/tools/cli/installers/lib/ide/auggie.js +81 -238
  363. package/tools/cli/installers/lib/ide/claude-code.js +90 -25
  364. package/tools/cli/installers/lib/ide/cline.js +15 -18
  365. package/tools/cli/installers/lib/ide/codex.js +225 -71
  366. package/tools/cli/installers/lib/ide/crush.js +14 -50
  367. package/tools/cli/installers/lib/ide/cursor.js +116 -8
  368. package/tools/cli/installers/lib/ide/gemini.js +87 -37
  369. package/tools/cli/installers/lib/ide/github-copilot.js +121 -35
  370. package/tools/cli/installers/lib/ide/iflow.js +13 -30
  371. package/tools/cli/installers/lib/ide/kilo.js +20 -16
  372. package/tools/cli/installers/lib/ide/manager.js +50 -0
  373. package/tools/cli/installers/lib/ide/opencode.js +61 -17
  374. package/tools/cli/installers/lib/ide/qwen.js +39 -11
  375. package/tools/cli/installers/lib/ide/roo.js +27 -62
  376. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
  377. package/tools/cli/installers/lib/ide/{task-tool-command-generator.js → shared/task-tool-command-generator.js} +1 -1
  378. package/tools/cli/installers/lib/ide/{workflow-command-generator.js → shared/workflow-command-generator.js} +11 -9
  379. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  380. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  381. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  382. package/tools/cli/installers/lib/ide/{workflow-command-template.md → templates/workflow-command-template.md} +3 -5
  383. package/tools/cli/installers/lib/ide/trae.js +20 -32
  384. package/tools/cli/installers/lib/ide/windsurf.js +65 -8
  385. package/tools/cli/installers/lib/modules/manager.js +213 -7
  386. package/tools/cli/lib/agent/compiler.js +390 -0
  387. package/tools/cli/lib/agent/installer.js +725 -0
  388. package/tools/cli/lib/agent/template-engine.js +152 -0
  389. package/tools/cli/lib/cli-utils.js +52 -50
  390. package/tools/cli/lib/config.js +3 -1
  391. package/tools/cli/lib/ui.js +34 -17
  392. package/tools/cli/lib/xml-handler.js +1 -0
  393. package/tools/cli/lib/yaml-format.js +2 -1
  394. package/tools/cli/lib/yaml-xml-builder.js +76 -8
  395. package/tools/schema/agent.js +12 -3
  396. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  397. package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
  398. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  399. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  400. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  401. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  402. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  403. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  404. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  405. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  406. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  407. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  408. package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
  409. package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
  410. package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
  411. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  412. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  413. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  414. package/.claude/commands/bmad/core/workflows/README.md +0 -27
  415. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  416. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  417. package/.claude/hooks/bmad-tts-injector.sh +0 -415
  418. package/.claude/hooks/bmad-voice-manager.sh +0 -511
  419. package/.claude/hooks/check-output-style.sh +0 -112
  420. package/.claude/hooks/download-extra-voices.sh +0 -244
  421. package/.claude/hooks/github-star-reminder.sh +0 -154
  422. package/.claude/hooks/language-manager.sh +0 -392
  423. package/.claude/hooks/learn-manager.sh +0 -475
  424. package/.claude/hooks/personality-manager.sh +0 -438
  425. package/.claude/hooks/piper-download-voices.sh +0 -165
  426. package/.claude/hooks/piper-installer.sh +0 -178
  427. package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
  428. package/.claude/hooks/piper-voice-manager.sh +0 -293
  429. package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
  430. package/.claude/hooks/play-tts-piper.sh +0 -338
  431. package/.claude/hooks/play-tts.sh +0 -100
  432. package/.claude/hooks/provider-commands.sh +0 -540
  433. package/.claude/hooks/provider-manager.sh +0 -298
  434. package/.claude/hooks/replay-target-audio.sh +0 -95
  435. package/.claude/hooks/sentiment-manager.sh +0 -201
  436. package/.claude/hooks/speed-manager.sh +0 -291
  437. package/.claude/hooks/voice-manager.sh +0 -594
  438. package/.claude/hooks/voices-config.sh +0 -70
  439. package/.claude/settings.local.json +0 -41
  440. package/bmad/_cfg/agent-manifest.csv +0 -7
  441. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  442. package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
  443. package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
  444. package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
  445. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  446. package/bmad/_cfg/files-manifest.csv +0 -83
  447. package/bmad/_cfg/manifest.yaml +0 -12
  448. package/bmad/_cfg/task-manifest.csv +0 -5
  449. package/bmad/_cfg/tool-manifest.csv +0 -2
  450. package/bmad/_cfg/workflow-manifest.csv +0 -15
  451. package/bmad/bmb/README.md +0 -132
  452. package/bmad/bmb/agents/bmad-builder.md +0 -70
  453. package/bmad/bmb/config.yaml +0 -14
  454. package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  455. package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  456. package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
  457. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  458. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
  459. package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
  460. package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  461. package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  462. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  463. package/bmad/bmb/workflows/create-agent/README.md +0 -320
  464. package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  465. package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
  466. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  467. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
  468. package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  469. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  470. package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
  471. package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  472. package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
  473. package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  474. package/bmad/bmb/workflows/create-module/README.md +0 -220
  475. package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
  476. package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  477. package/bmad/bmb/workflows/create-module/checklist.md +0 -244
  478. package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
  479. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  480. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  481. package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
  482. package/bmad/bmb/workflows/create-module/instructions.md +0 -581
  483. package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
  484. package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
  485. package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
  486. package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  487. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
  488. package/bmad/bmb/workflows/create-workflow/README.md +0 -277
  489. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  490. package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  491. package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
  492. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  493. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  494. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  495. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  496. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  497. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
  498. package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  499. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
  500. package/bmad/bmb/workflows/edit-agent/README.md +0 -112
  501. package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  502. package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  503. package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  504. package/bmad/bmb/workflows/edit-module/README.md +0 -187
  505. package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
  506. package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
  507. package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  508. package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
  509. package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  510. package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  511. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  512. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
  513. package/bmad/bmb/workflows/module-brief/README.md +0 -264
  514. package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
  515. package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
  516. package/bmad/bmb/workflows/module-brief/template.md +0 -275
  517. package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  518. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
  519. package/bmad/bmb/workflows/redoc/README.md +0 -87
  520. package/bmad/bmb/workflows/redoc/checklist.md +0 -99
  521. package/bmad/bmb/workflows/redoc/instructions.md +0 -265
  522. package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  523. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
  524. package/bmad/bmd/README.md +0 -193
  525. package/bmad/bmd/README.md.bak +0 -193
  526. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  527. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
  528. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  529. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
  530. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  531. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
  532. package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  533. package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
  534. package/bmad/bmd/agents/cli-chief.md +0 -108
  535. package/bmad/bmd/agents/cli-chief.md.bak +0 -108
  536. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  537. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
  538. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  539. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
  540. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  541. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
  542. package/bmad/bmd/agents/doc-keeper.md +0 -115
  543. package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
  544. package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  545. package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
  546. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  547. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
  548. package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
  549. package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
  550. package/bmad/bmd/agents/release-chief.md +0 -109
  551. package/bmad/bmd/agents/release-chief.md.bak +0 -109
  552. package/bmad/bmd/config.yaml +0 -10
  553. package/bmad/core/agents/bmad-master.md +0 -71
  554. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  555. package/bmad/core/config.yaml +0 -9
  556. package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
  557. package/bmad/core/tasks/index-docs.xml +0 -65
  558. package/bmad/core/tasks/validate-workflow.xml +0 -89
  559. package/bmad/core/tasks/workflow.xml +0 -174
  560. package/bmad/core/tools/shard-doc.xml +0 -100
  561. package/bmad/core/workflows/brainstorming/README.md +0 -271
  562. package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  563. package/bmad/core/workflows/brainstorming/instructions.md +0 -314
  564. package/bmad/core/workflows/brainstorming/template.md +0 -102
  565. package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  566. package/bmad/core/workflows/party-mode/instructions.md +0 -188
  567. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  568. package/bmad/docs/claude-code-instructions.md +0 -25
  569. package/bmad/docs/codex-instructions.md +0 -21
  570. package/bmd/README.md +0 -193
  571. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  572. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  573. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  574. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  575. package/bmd/agents/cli-chief.agent.yaml +0 -126
  576. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  577. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  578. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  579. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  580. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  581. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  582. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  583. package/bmd/agents/release-chief.agent.yaml +0 -127
  584. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  585. package/bmd/config.yaml +0 -12
  586. package/docs/bmad-brownfield-guide.md +0 -1260
  587. package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
  588. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  589. package/src/core/tasks/adv-elicit.xml +0 -104
  590. package/src/modules/bmb/workflows/create-agent/README.md +0 -320
  591. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
  592. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  593. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  594. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  595. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  596. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  597. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  598. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  599. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  600. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  601. package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
  602. package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
  603. package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
  604. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  605. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  606. package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
  607. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  608. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  609. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  610. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  611. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  612. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  613. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  614. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  615. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  616. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  617. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  618. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  619. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  620. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  621. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  622. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  623. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  624. package/src/modules/bmm/tasks/retrospective.xml +0 -104
  625. package/src/modules/bmm/testarch/README.md +0 -311
  626. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
  627. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
  628. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
  629. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
  630. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
  631. package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
  632. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
  633. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
  634. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
  635. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
  636. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
  637. package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
  638. package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
  639. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
  640. package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
  641. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
  642. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
  643. package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
  644. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
  645. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
  646. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  647. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
  648. package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
  649. package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
  650. package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
  651. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
  652. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  653. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
  654. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
  655. package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
  656. package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
  657. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
  658. package/src/modules/bmm/workflows/README.md +0 -577
  659. package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
  660. package/src/modules/bmm/workflows/testarch/README.md +0 -26
  661. package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
  662. package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
  663. package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
  664. package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
  665. package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
  666. package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
  667. package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
  668. package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
  669. package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
  670. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
  671. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
  672. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
  673. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
  674. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
  675. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
  676. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
  677. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
  678. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
  679. package/src/modules/cis/readme.md +0 -86
  680. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  681. package/v6-open-items.md +0 -23
  682. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
  683. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
  684. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
  685. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/template.md +0 -0
  686. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
  687. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
  688. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
  689. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
  690. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
  691. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
  692. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
  693. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
  694. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
  695. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
  696. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
  697. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
  698. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
  699. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
  700. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
  701. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
  702. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
  703. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
  704. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
  705. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
  706. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
  707. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
  708. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
  709. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
  710. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
  711. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
  712. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/gdd-template.md +0 -0
  713. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
  714. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/narrative-template.md +0 -0
@@ -13,14 +13,86 @@ class ConfigCollector {
13
13
  this.currentProjectDir = null;
14
14
  }
15
15
 
16
+ /**
17
+ * Find the bmad installation directory in a project
18
+ * V6+ installations can use ANY folder name but ALWAYS have _cfg/manifest.yaml
19
+ * @param {string} projectDir - Project directory
20
+ * @returns {Promise<string>} Path to bmad directory
21
+ */
22
+ async findBmadDir(projectDir) {
23
+ // Check if project directory exists
24
+ if (!(await fs.pathExists(projectDir))) {
25
+ // Project doesn't exist yet, return default
26
+ return path.join(projectDir, 'bmad');
27
+ }
28
+
29
+ // V6+ strategy: Look for ANY directory with _cfg/manifest.yaml
30
+ // This is the definitive marker of a V6+ installation
31
+ try {
32
+ const entries = await fs.readdir(projectDir, { withFileTypes: true });
33
+ for (const entry of entries) {
34
+ if (entry.isDirectory()) {
35
+ const manifestPath = path.join(projectDir, entry.name, '_cfg', 'manifest.yaml');
36
+ if (await fs.pathExists(manifestPath)) {
37
+ // Found a V6+ installation
38
+ return path.join(projectDir, entry.name);
39
+ }
40
+ }
41
+ }
42
+ } catch {
43
+ // Ignore errors, fall through to default
44
+ }
45
+
46
+ // No V6+ installation found, return default
47
+ // This will be used for new installations
48
+ return path.join(projectDir, 'bmad');
49
+ }
50
+
51
+ /**
52
+ * Detect the existing BMAD folder name in a project
53
+ * @param {string} projectDir - Project directory
54
+ * @returns {Promise<string|null>} Folder name (just the name, not full path) or null if not found
55
+ */
56
+ async detectExistingBmadFolder(projectDir) {
57
+ // Check if project directory exists
58
+ if (!(await fs.pathExists(projectDir))) {
59
+ return null;
60
+ }
61
+
62
+ // Look for ANY directory with _cfg/manifest.yaml
63
+ try {
64
+ const entries = await fs.readdir(projectDir, { withFileTypes: true });
65
+ for (const entry of entries) {
66
+ if (entry.isDirectory()) {
67
+ const manifestPath = path.join(projectDir, entry.name, '_cfg', 'manifest.yaml');
68
+ if (await fs.pathExists(manifestPath)) {
69
+ // Found a V6+ installation, return just the folder name
70
+ return entry.name;
71
+ }
72
+ }
73
+ }
74
+ } catch {
75
+ // Ignore errors
76
+ }
77
+
78
+ return null;
79
+ }
80
+
16
81
  /**
17
82
  * Load existing config if it exists from module config files
18
83
  * @param {string} projectDir - Target project directory
19
84
  */
20
85
  async loadExistingConfig(projectDir) {
21
- const bmadDir = path.join(projectDir, 'bmad');
22
86
  this.existingConfig = {};
23
87
 
88
+ // Check if project directory exists first
89
+ if (!(await fs.pathExists(projectDir))) {
90
+ return false;
91
+ }
92
+
93
+ // Find the actual bmad directory (handles custom folder names)
94
+ const bmadDir = await this.findBmadDir(projectDir);
95
+
24
96
  // Check if bmad directory exists
25
97
  if (!(await fs.pathExists(bmadDir))) {
26
98
  return false;
@@ -159,27 +231,25 @@ class ConfigCollector {
159
231
  this.allAnswers[`${moduleName}_${key}`] = value;
160
232
  }
161
233
  }
234
+ // Show "no config" message for modules with no new questions
235
+ CLIUtils.displayModuleNoConfig(moduleName, moduleConfig.header, moduleConfig.subheader);
162
236
  return false; // No new fields
163
237
  }
164
238
 
165
- // If we have new fields, show prompt section and collect only new fields
239
+ // If we have new fields, build questions first
166
240
  if (newKeys.length > 0) {
167
- console.log(chalk.yellow(`\n📋 New configuration options available for ${moduleName}`));
168
- if (moduleConfig.prompt) {
169
- const prompts = Array.isArray(moduleConfig.prompt) ? moduleConfig.prompt : [moduleConfig.prompt];
170
- CLIUtils.displayPromptSection(prompts);
171
- }
172
-
173
241
  const questions = [];
174
242
  for (const key of newKeys) {
175
243
  const item = moduleConfig[key];
176
- const question = await this.buildQuestion(moduleName, key, item);
244
+ const question = await this.buildQuestion(moduleName, key, item, moduleConfig);
177
245
  if (question) {
178
246
  questions.push(question);
179
247
  }
180
248
  }
181
249
 
182
250
  if (questions.length > 0) {
251
+ // Only show header if we actually have questions
252
+ CLIUtils.displayModuleConfigHeader(moduleName, moduleConfig.header, moduleConfig.subheader);
183
253
  console.log(); // Line break before questions
184
254
  const answers = await inquirer.prompt(questions);
185
255
 
@@ -206,6 +276,9 @@ class ConfigCollector {
206
276
  }
207
277
  this.collectedConfig[moduleName][originalKey] = result;
208
278
  }
279
+ } else {
280
+ // New keys exist but no questions generated - show no config message
281
+ CLIUtils.displayModuleNoConfig(moduleName, moduleConfig.header, moduleConfig.subheader);
209
282
  }
210
283
  }
211
284
 
@@ -325,12 +398,6 @@ class ConfigCollector {
325
398
  return;
326
399
  }
327
400
 
328
- // Display module prompts using better formatting
329
- if (moduleConfig.prompt) {
330
- const prompts = Array.isArray(moduleConfig.prompt) ? moduleConfig.prompt : [moduleConfig.prompt];
331
- CLIUtils.displayPromptSection(prompts);
332
- }
333
-
334
401
  // Process each config item
335
402
  const questions = [];
336
403
  const configKeys = Object.keys(moduleConfig).filter((key) => key !== 'prompt');
@@ -343,13 +410,15 @@ class ConfigCollector {
343
410
  continue;
344
411
  }
345
412
 
346
- const question = await this.buildQuestion(moduleName, key, item);
413
+ const question = await this.buildQuestion(moduleName, key, item, moduleConfig);
347
414
  if (question) {
348
415
  questions.push(question);
349
416
  }
350
417
  }
351
418
 
419
+ // Display appropriate header based on whether there are questions
352
420
  if (questions.length > 0) {
421
+ CLIUtils.displayModuleConfigHeader(moduleName, moduleConfig.header, moduleConfig.subheader);
353
422
  console.log(); // Line break before questions
354
423
  const answers = await inquirer.prompt(questions);
355
424
 
@@ -450,20 +519,68 @@ class ConfigCollector {
450
519
  this.collectedConfig[moduleName][originalKey] = result;
451
520
  }
452
521
 
453
- // Display module completion message after collecting all answers (unless skipped)
454
- if (!skipCompletion) {
455
- CLIUtils.displayModuleComplete(moduleName);
456
- }
522
+ // No longer display completion boxes - keep output clean
523
+ } else {
524
+ // No questions for this module - show completion message
525
+ CLIUtils.displayModuleNoConfig(moduleName, moduleConfig.header, moduleConfig.subheader);
457
526
  }
458
527
  }
459
528
 
529
+ /**
530
+ * Replace placeholders in a string with collected config values
531
+ * @param {string} str - String with placeholders
532
+ * @param {string} currentModule - Current module name (to look up defaults in same module)
533
+ * @param {Object} moduleConfig - Current module's config schema (to look up defaults)
534
+ * @returns {string} String with placeholders replaced
535
+ */
536
+ replacePlaceholders(str, currentModule = null, moduleConfig = null) {
537
+ if (typeof str !== 'string') {
538
+ return str;
539
+ }
540
+
541
+ return str.replaceAll(/{([^}]+)}/g, (match, configKey) => {
542
+ // Preserve special placeholders
543
+ if (configKey === 'project-root' || configKey === 'value' || configKey === 'directory_name') {
544
+ return match;
545
+ }
546
+
547
+ // Look for the config value in allAnswers (already answered questions)
548
+ let configValue = this.allAnswers[configKey] || this.allAnswers[`core_${configKey}`];
549
+
550
+ // Check in already collected config
551
+ if (!configValue) {
552
+ for (const mod of Object.keys(this.collectedConfig)) {
553
+ if (mod !== '_meta' && this.collectedConfig[mod] && this.collectedConfig[mod][configKey]) {
554
+ configValue = this.collectedConfig[mod][configKey];
555
+ // Remove {project-root}/ prefix if present for cleaner display
556
+ if (typeof configValue === 'string' && configValue.includes('{project-root}/')) {
557
+ configValue = configValue.replace('{project-root}/', '');
558
+ }
559
+ break;
560
+ }
561
+ }
562
+ }
563
+
564
+ // If still not found and we're in the same module, use the default from the config schema
565
+ if (!configValue && currentModule && moduleConfig && moduleConfig[configKey]) {
566
+ const referencedItem = moduleConfig[configKey];
567
+ if (referencedItem && referencedItem.default !== undefined) {
568
+ configValue = referencedItem.default;
569
+ }
570
+ }
571
+
572
+ return configValue || match;
573
+ });
574
+ }
575
+
460
576
  /**
461
577
  * Build an inquirer question from a config item
462
578
  * @param {string} moduleName - Module name
463
579
  * @param {string} key - Config key
464
580
  * @param {Object} item - Config item definition
581
+ * @param {Object} moduleConfig - Full module config schema (for resolving defaults)
465
582
  */
466
- async buildQuestion(moduleName, key, item) {
583
+ async buildQuestion(moduleName, key, item, moduleConfig = null) {
467
584
  const questionName = `${moduleName}_${key}`;
468
585
 
469
586
  // Check for existing value
@@ -478,34 +595,104 @@ class ConfigCollector {
478
595
  }
479
596
  }
480
597
 
598
+ // Special handling for bmad_folder: detect existing folder name
599
+ if (moduleName === 'core' && key === 'bmad_folder' && !existingValue && this.currentProjectDir) {
600
+ // Try to detect the existing BMAD folder name
601
+ const detectedFolder = await this.detectExistingBmadFolder(this.currentProjectDir);
602
+ if (detectedFolder) {
603
+ existingValue = detectedFolder;
604
+ }
605
+ }
606
+
481
607
  // Determine question type and default value
482
608
  let questionType = 'input';
483
609
  let defaultValue = item.default;
484
610
  let choices = null;
485
611
 
486
- if (typeof defaultValue === 'string' && defaultValue.includes('{directory_name}') && this.currentProjectDir) {
487
- const dirName = path.basename(this.currentProjectDir);
488
- defaultValue = defaultValue.replaceAll('{directory_name}', dirName);
612
+ // Check if default contains references to other fields in the same module
613
+ const hasSameModuleReference = typeof defaultValue === 'string' && defaultValue.match(/{([^}]+)}/);
614
+ let dynamicDefault = false;
615
+
616
+ // Replace placeholders in default value with collected config values
617
+ if (typeof defaultValue === 'string') {
618
+ if (defaultValue.includes('{directory_name}') && this.currentProjectDir) {
619
+ const dirName = path.basename(this.currentProjectDir);
620
+ defaultValue = defaultValue.replaceAll('{directory_name}', dirName);
621
+ }
622
+
623
+ // Check if this references another field in the same module (for dynamic defaults)
624
+ if (hasSameModuleReference && moduleConfig) {
625
+ const matches = defaultValue.match(/{([^}]+)}/g);
626
+ if (matches) {
627
+ for (const match of matches) {
628
+ const fieldName = match.slice(1, -1); // Remove { }
629
+ // Check if this field exists in the same module config
630
+ if (moduleConfig[fieldName]) {
631
+ dynamicDefault = true;
632
+ break;
633
+ }
634
+ }
635
+ }
636
+ }
637
+
638
+ // If not dynamic, replace placeholders now
639
+ if (!dynamicDefault) {
640
+ defaultValue = this.replacePlaceholders(defaultValue, moduleName, moduleConfig);
641
+ }
642
+
643
+ // Strip {project-root}/ from defaults since it will be added back by result template
644
+ // This makes the display cleaner and user input simpler
645
+ if (defaultValue.includes('{project-root}/')) {
646
+ defaultValue = defaultValue.replace('{project-root}/', '');
647
+ }
489
648
  }
490
649
 
491
650
  // Handle different question types
492
651
  if (item['single-select']) {
493
652
  questionType = 'list';
494
- choices = item['single-select'];
495
- if (existingValue && choices.includes(existingValue)) {
653
+ choices = item['single-select'].map((choice) => {
654
+ // If choice is an object with label and value
655
+ if (typeof choice === 'object' && choice.label && choice.value !== undefined) {
656
+ return {
657
+ name: choice.label,
658
+ value: choice.value,
659
+ };
660
+ }
661
+ // Otherwise it's a simple string choice
662
+ return {
663
+ name: choice,
664
+ value: choice,
665
+ };
666
+ });
667
+ if (existingValue) {
496
668
  defaultValue = existingValue;
497
669
  }
498
670
  } else if (item['multi-select']) {
499
671
  questionType = 'checkbox';
500
- choices = item['multi-select'].map((choice) => ({
501
- name: choice,
502
- value: choice,
503
- checked: existingValue
504
- ? existingValue.includes(choice)
505
- : item.default && Array.isArray(item.default)
506
- ? item.default.includes(choice)
507
- : false,
508
- }));
672
+ choices = item['multi-select'].map((choice) => {
673
+ // If choice is an object with label and value
674
+ if (typeof choice === 'object' && choice.label && choice.value !== undefined) {
675
+ return {
676
+ name: choice.label,
677
+ value: choice.value,
678
+ checked: existingValue
679
+ ? existingValue.includes(choice.value)
680
+ : item.default && Array.isArray(item.default)
681
+ ? item.default.includes(choice.value)
682
+ : false,
683
+ };
684
+ }
685
+ // Otherwise it's a simple string choice
686
+ return {
687
+ name: choice,
688
+ value: choice,
689
+ checked: existingValue
690
+ ? existingValue.includes(choice)
691
+ : item.default && Array.isArray(item.default)
692
+ ? item.default.includes(choice)
693
+ : false,
694
+ };
695
+ });
509
696
  } else if (typeof defaultValue === 'boolean') {
510
697
  questionType = 'confirm';
511
698
  }
@@ -520,31 +707,67 @@ class ConfigCollector {
520
707
  message = item.prompt;
521
708
  }
522
709
 
710
+ // Replace placeholders in prompt message with collected config values
711
+ if (typeof message === 'string') {
712
+ message = this.replacePlaceholders(message, moduleName, moduleConfig);
713
+ }
714
+
523
715
  // Add current value indicator for existing configs
524
716
  if (existingValue !== null && existingValue !== undefined) {
525
717
  if (typeof existingValue === 'boolean') {
526
718
  message += chalk.dim(` (current: ${existingValue ? 'true' : 'false'})`);
527
- defaultValue = existingValue;
528
719
  } else if (Array.isArray(existingValue)) {
529
720
  message += chalk.dim(` (current: ${existingValue.join(', ')})`);
530
721
  } else if (questionType !== 'list') {
531
722
  // Show the cleaned value (without {project-root}/) for display
532
723
  message += chalk.dim(` (current: ${existingValue})`);
533
- defaultValue = existingValue;
534
724
  }
535
725
  } else if (item.example && questionType === 'input') {
536
726
  // Show example for input fields
537
- const exampleText = typeof item.example === 'string' ? item.example.replace('{project-root}/', '') : JSON.stringify(item.example);
727
+ let exampleText = typeof item.example === 'string' ? item.example : JSON.stringify(item.example);
728
+ // Replace placeholders in example
729
+ if (typeof exampleText === 'string') {
730
+ exampleText = this.replacePlaceholders(exampleText, moduleName, moduleConfig);
731
+ exampleText = exampleText.replace('{project-root}/', '');
732
+ }
538
733
  message += chalk.dim(` (e.g., ${exampleText})`);
539
734
  }
540
735
 
736
+ // Build the question object
541
737
  const question = {
542
738
  type: questionType,
543
739
  name: questionName,
544
740
  message: message,
545
- default: defaultValue,
546
741
  };
547
742
 
743
+ // Set default - if it's dynamic, use a function that inquirer will evaluate with current answers
744
+ // But if we have an existing value, always use that instead
745
+ if (existingValue !== null && existingValue !== undefined && questionType !== 'list') {
746
+ question.default = existingValue;
747
+ } else if (dynamicDefault && typeof item.default === 'string') {
748
+ const originalDefault = item.default;
749
+ question.default = (answers) => {
750
+ // Replace placeholders using answers from previous questions in the same batch
751
+ let resolved = originalDefault;
752
+ resolved = resolved.replaceAll(/{([^}]+)}/g, (match, fieldName) => {
753
+ // Look for the answer in the current batch (prefixed with module name)
754
+ const answerKey = `${moduleName}_${fieldName}`;
755
+ if (answers[answerKey] !== undefined) {
756
+ return answers[answerKey];
757
+ }
758
+ // Fall back to collected config
759
+ return this.collectedConfig[moduleName]?.[fieldName] || match;
760
+ });
761
+ // Strip {project-root}/ for cleaner display
762
+ if (resolved.includes('{project-root}/')) {
763
+ resolved = resolved.replace('{project-root}/', '');
764
+ }
765
+ return resolved;
766
+ };
767
+ } else {
768
+ question.default = defaultValue;
769
+ }
770
+
548
771
  // Add choices for select types
549
772
  if (choices) {
550
773
  question.choices = choices;
@@ -556,6 +779,23 @@ class ConfigCollector {
556
779
  if (!input && item.required) {
557
780
  return 'This field is required';
558
781
  }
782
+ // Validate against regex pattern if provided
783
+ if (input && item.regex) {
784
+ const regex = new RegExp(item.regex);
785
+ if (!regex.test(input)) {
786
+ return `Invalid format. Must match pattern: ${item.regex}`;
787
+ }
788
+ }
789
+ return true;
790
+ };
791
+ }
792
+
793
+ // Add validation for checkbox (multi-select) fields
794
+ if (questionType === 'checkbox' && item.required) {
795
+ question.validate = (answers) => {
796
+ if (!answers || answers.length === 0) {
797
+ return 'At least one option must be selected';
798
+ }
559
799
  return true;
560
800
  };
561
801
  }
@@ -199,6 +199,8 @@ class Detector {
199
199
 
200
200
  /**
201
201
  * Detect legacy BMAD v4 footprints (case-sensitive path checks)
202
+ * V4 used .bmad-method as default folder name
203
+ * V6+ uses configurable folder names and ALWAYS has _cfg/manifest.yaml with installation.version
202
204
  * @param {string} projectDir - Project directory to check
203
205
  * @returns {{ hasLegacyV4: boolean, offenders: string[] }}
204
206
  */
@@ -223,18 +225,62 @@ class Detector {
223
225
  return true;
224
226
  };
225
227
 
228
+ // Helper: check if a directory is a V6+ installation
229
+ const isV6Installation = async (dirPath) => {
230
+ const manifestPath = path.join(dirPath, '_cfg', 'manifest.yaml');
231
+ if (!(await fs.pathExists(manifestPath))) {
232
+ return false;
233
+ }
234
+ try {
235
+ const yaml = require('js-yaml');
236
+ const manifestContent = await fs.readFile(manifestPath, 'utf8');
237
+ const manifest = yaml.load(manifestContent);
238
+ // V6+ manifest has installation.version
239
+ return manifest && manifest.installation && manifest.installation.version;
240
+ } catch {
241
+ return false;
242
+ }
243
+ };
244
+
226
245
  const offenders = [];
227
246
 
228
- // Find all directories starting with .bmad, bmad, or Bmad
247
+ // Strategy:
248
+ // 1. First scan for ANY V6+ installation (_cfg/manifest.yaml)
249
+ // 2. If V6+ found → don't flag anything (user is already on V6+)
250
+ // 3. If NO V6+ found → flag folders with "bmad" in name as potential V4 legacy
251
+
252
+ let hasV6Installation = false;
253
+ const potentialV4Folders = [];
254
+
229
255
  try {
230
256
  const entries = await fs.readdir(projectDir, { withFileTypes: true });
257
+
231
258
  for (const entry of entries) {
232
259
  if (entry.isDirectory()) {
233
260
  const name = entry.name;
234
- // Match .bmad*, bmad* (lowercase), or Bmad* (capital B)
235
- // BUT exclude 'bmad' exactly (that's the new v6 installation directory)
236
- if ((name.startsWith('.bmad') || name.startsWith('bmad') || name.startsWith('Bmad')) && name !== 'bmad') {
237
- offenders.push(path.join(projectDir, entry.name));
261
+ const fullPath = path.join(projectDir, entry.name);
262
+
263
+ // Check if directory is empty (skip empty leftover folders)
264
+ const dirContents = await fs.readdir(fullPath);
265
+ if (dirContents.length === 0) {
266
+ continue; // Skip empty folders
267
+ }
268
+
269
+ // Check if it's a V6+ installation by looking for _cfg/manifest.yaml
270
+ // This works for ANY folder name (not just bmad-prefixed)
271
+ const isV6 = await isV6Installation(fullPath);
272
+
273
+ if (isV6) {
274
+ // Found a V6+ installation - user is already on V6+
275
+ hasV6Installation = true;
276
+ // Don't break - continue scanning to be thorough
277
+ } else {
278
+ // Not V6+, check if folder name contains "bmad" (case insensitive)
279
+ const nameLower = name.toLowerCase();
280
+ if (nameLower.includes('bmad')) {
281
+ // Potential V4 legacy folder
282
+ potentialV4Folders.push(fullPath);
283
+ }
238
284
  }
239
285
  }
240
286
  }
@@ -242,8 +288,15 @@ class Detector {
242
288
  // Ignore errors reading directory
243
289
  }
244
290
 
291
+ // Only flag V4 folders if NO V6+ installation was found
292
+ if (!hasV6Installation && potentialV4Folders.length > 0) {
293
+ offenders.push(...potentialV4Folders);
294
+ }
295
+
245
296
  // Check inside various IDE command folders for legacy bmad folders
246
- // List of IDE config folders that might have commands directories
297
+ // V4 used folders like 'bmad-method' or custom names in IDE commands
298
+ // V6+ uses 'bmad' in IDE commands (hardcoded in IDE handlers)
299
+ // Legacy V4 IDE command folders won't have a corresponding V6+ installation
247
300
  const ideConfigFolders = ['.opencode', '.claude', '.crush', '.continue', '.cursor', '.windsurf', '.cline', '.roo-cline'];
248
301
 
249
302
  for (const ideFolder of ideConfigFolders) {
@@ -255,7 +308,9 @@ class Detector {
255
308
  for (const entry of commandEntries) {
256
309
  if (entry.isDirectory()) {
257
310
  const name = entry.name;
258
- // Find bmad-related folders (excluding exact 'bmad' if it exists)
311
+ // V4 used 'bmad-method' or similar in IDE commands folders
312
+ // V6+ uses 'bmad' (hardcoded)
313
+ // So anything that's NOT 'bmad' but starts with bmad/Bmad is likely V4
259
314
  if ((name.startsWith('bmad') || name.startsWith('Bmad') || name === 'BMad') && name !== 'bmad') {
260
315
  offenders.push(path.join(commandsPath, entry.name));
261
316
  }
@@ -68,7 +68,9 @@ class IdeConfigManager {
68
68
  sortKeys: false,
69
69
  });
70
70
 
71
- await fs.writeFile(configPath, yamlContent, 'utf8');
71
+ // Ensure POSIX-compliant final newline
72
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
73
+ await fs.writeFile(configPath, content, 'utf8');
72
74
  }
73
75
 
74
76
  /**