bmad-method 6.0.0-alpha.7 → 6.0.0-alpha.8

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 (637) hide show
  1. package/.bmad/_cfg/agent-manifest.csv +11 -0
  2. package/.bmad/_cfg/agents/bmm-architect.customize.yaml +42 -0
  3. package/.bmad/_cfg/agents/bmm-dev.customize.yaml +42 -0
  4. package/.bmad/_cfg/agents/bmm-pm.customize.yaml +42 -0
  5. package/.bmad/_cfg/agents/bmm-sm.customize.yaml +42 -0
  6. package/.bmad/_cfg/agents/bmm-tea.customize.yaml +42 -0
  7. package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +42 -0
  8. package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +42 -0
  9. package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +42 -0
  10. package/.bmad/_cfg/files-manifest.csv +289 -0
  11. package/.bmad/_cfg/ides/claude-code.yaml +7 -0
  12. package/.bmad/_cfg/manifest.yaml +10 -0
  13. package/.bmad/_cfg/task-manifest.csv +6 -0
  14. package/.bmad/_cfg/tool-manifest.csv +2 -0
  15. package/.bmad/_cfg/workflow-manifest.csv +44 -0
  16. package/{bmad → .bmad}/bmb/agents/bmad-builder.md +12 -12
  17. package/.bmad/bmb/config.yaml +16 -0
  18. package/{bmad → .bmad}/bmb/workflows/audit-workflow/checklist.md +2 -2
  19. package/{bmad → .bmad}/bmb/workflows/audit-workflow/instructions.md +5 -5
  20. package/{bmad → .bmad}/bmb/workflows/audit-workflow/workflow.yaml +2 -2
  21. package/{bmad → .bmad}/bmb/workflows/convert-legacy/README.md +5 -5
  22. package/{bmad → .bmad}/bmb/workflows/convert-legacy/checklist.md +2 -2
  23. package/{bmad → .bmad}/bmb/workflows/convert-legacy/instructions.md +17 -17
  24. package/{bmad → .bmad}/bmb/workflows/convert-legacy/workflow.yaml +6 -6
  25. package/{bmad → .bmad}/bmb/workflows/create-agent/README.md +5 -5
  26. package/{bmad → .bmad}/bmb/workflows/create-agent/agent-architecture.md +15 -15
  27. package/{bmad → .bmad}/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
  28. package/{bmad → .bmad}/bmb/workflows/create-agent/agent-types.md +15 -15
  29. package/{bmad → .bmad}/bmb/workflows/create-agent/checklist.md +3 -3
  30. package/{bmad → .bmad}/bmb/workflows/create-agent/instructions.md +11 -11
  31. package/{bmad → .bmad}/bmb/workflows/create-agent/workflow.yaml +6 -6
  32. package/{bmad → .bmad}/bmb/workflows/create-module/README.md +1 -1
  33. package/{bmad → .bmad}/bmb/workflows/create-module/checklist.md +1 -1
  34. package/{bmad → .bmad}/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
  35. package/{bmad → .bmad}/bmb/workflows/create-module/instructions.md +7 -7
  36. package/{bmad → .bmad}/bmb/workflows/create-module/module-structure.md +4 -4
  37. package/{bmad → .bmad}/bmb/workflows/create-module/workflow.yaml +9 -9
  38. package/{bmad → .bmad}/bmb/workflows/create-workflow/README.md +4 -4
  39. package/{bmad → .bmad}/bmb/workflows/create-workflow/checklist.md +1 -1
  40. package/{bmad → .bmad}/bmb/workflows/create-workflow/instructions.md +29 -29
  41. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-creation-guide.md +36 -36
  42. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
  43. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/workflow.yaml +1 -1
  44. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow.yaml +5 -5
  45. package/{bmad → .bmad}/bmb/workflows/edit-agent/checklist.md +1 -1
  46. package/{bmad → .bmad}/bmb/workflows/edit-agent/instructions.md +2 -2
  47. package/{bmad → .bmad}/bmb/workflows/edit-agent/workflow.yaml +8 -8
  48. package/{bmad → .bmad}/bmb/workflows/edit-module/README.md +2 -2
  49. package/{bmad → .bmad}/bmb/workflows/edit-module/checklist.md +2 -2
  50. package/{bmad → .bmad}/bmb/workflows/edit-module/instructions.md +4 -4
  51. package/{bmad → .bmad}/bmb/workflows/edit-module/workflow.yaml +10 -10
  52. package/{bmad → .bmad}/bmb/workflows/edit-workflow/instructions.md +4 -4
  53. package/{bmad → .bmad}/bmb/workflows/edit-workflow/workflow.yaml +5 -5
  54. package/{bmad → .bmad}/bmb/workflows/module-brief/README.md +2 -2
  55. package/{bmad → .bmad}/bmb/workflows/module-brief/instructions.md +2 -2
  56. package/{bmad → .bmad}/bmb/workflows/module-brief/workflow.yaml +4 -4
  57. package/{bmad → .bmad}/bmb/workflows/redoc/README.md +5 -5
  58. package/{bmad → .bmad}/bmb/workflows/redoc/instructions.md +1 -1
  59. package/{bmad → .bmad}/bmb/workflows/redoc/workflow.yaml +1 -1
  60. package/.bmad/bmm/README.md +128 -0
  61. package/.bmad/bmm/agents/analyst.md +75 -0
  62. package/.bmad/bmm/agents/architect.md +80 -0
  63. package/.bmad/bmm/agents/dev.md +69 -0
  64. package/.bmad/bmm/agents/pm.md +84 -0
  65. package/.bmad/bmm/agents/sm.md +93 -0
  66. package/.bmad/bmm/agents/tea.md +80 -0
  67. package/.bmad/bmm/agents/tech-writer.md +90 -0
  68. package/.bmad/bmm/agents/ux-designer.md +79 -0
  69. package/.bmad/bmm/config.yaml +18 -0
  70. package/.bmad/bmm/docs/README.md +235 -0
  71. package/.bmad/bmm/docs/agents-guide.md +1056 -0
  72. package/.bmad/bmm/docs/brownfield-guide.md +754 -0
  73. package/.bmad/bmm/docs/enterprise-agentic-development.md +680 -0
  74. package/.bmad/bmm/docs/faq.md +587 -0
  75. package/.bmad/bmm/docs/glossary.md +320 -0
  76. package/.bmad/bmm/docs/party-mode.md +224 -0
  77. package/.bmad/bmm/docs/quick-spec-flow.md +652 -0
  78. package/.bmad/bmm/docs/quick-start.md +366 -0
  79. package/.bmad/bmm/docs/scale-adaptive-system.md +599 -0
  80. package/.bmad/bmm/docs/test-architecture.md +394 -0
  81. package/.bmad/bmm/docs/workflow-architecture-reference.md +371 -0
  82. package/.bmad/bmm/docs/workflow-document-project-reference.md +487 -0
  83. package/.bmad/bmm/docs/workflows-analysis.md +370 -0
  84. package/.bmad/bmm/docs/workflows-implementation.md +284 -0
  85. package/.bmad/bmm/docs/workflows-planning.md +601 -0
  86. package/.bmad/bmm/docs/workflows-solutioning.md +501 -0
  87. package/.bmad/bmm/tasks/daily-standup.xml +85 -0
  88. package/.bmad/bmm/teams/default-party.csv +19 -0
  89. package/.bmad/bmm/teams/team-fullstack.yaml +12 -0
  90. package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -0
  91. package/.bmad/bmm/testarch/knowledge/component-tdd.md +486 -0
  92. package/.bmad/bmm/testarch/knowledge/contract-testing.md +957 -0
  93. package/.bmad/bmm/testarch/knowledge/data-factories.md +500 -0
  94. package/.bmad/bmm/testarch/knowledge/email-auth.md +721 -0
  95. package/.bmad/bmm/testarch/knowledge/error-handling.md +725 -0
  96. package/.bmad/bmm/testarch/knowledge/feature-flags.md +750 -0
  97. package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -0
  98. package/.bmad/bmm/testarch/knowledge/network-first.md +486 -0
  99. package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -0
  100. package/.bmad/bmm/testarch/knowledge/playwright-config.md +730 -0
  101. package/.bmad/bmm/testarch/knowledge/probability-impact.md +601 -0
  102. package/.bmad/bmm/testarch/knowledge/risk-governance.md +615 -0
  103. package/.bmad/bmm/testarch/knowledge/selective-testing.md +732 -0
  104. package/.bmad/bmm/testarch/knowledge/selector-resilience.md +527 -0
  105. package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
  106. package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -0
  107. package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
  108. package/.bmad/bmm/testarch/knowledge/test-quality.md +664 -0
  109. package/.bmad/bmm/testarch/knowledge/timing-debugging.md +372 -0
  110. package/.bmad/bmm/testarch/knowledge/visual-debugging.md +524 -0
  111. package/.bmad/bmm/testarch/tea-index.csv +22 -0
  112. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +110 -0
  113. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +25 -0
  114. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +26 -0
  115. package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +423 -0
  116. package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +180 -0
  117. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +40 -0
  118. package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +115 -0
  119. package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +524 -0
  120. package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +181 -0
  121. package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +45 -0
  122. package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
  123. package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
  124. package/.bmad/bmm/workflows/1-analysis/research/checklist.md +299 -0
  125. package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +114 -0
  126. package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +439 -0
  127. package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +679 -0
  128. package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +133 -0
  129. package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +538 -0
  130. package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +94 -0
  131. package/.bmad/bmm/workflows/1-analysis/research/template-market.md +347 -0
  132. package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +245 -0
  133. package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +44 -0
  134. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +310 -0
  135. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1301 -0
  136. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +145 -0
  137. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +60 -0
  138. package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +350 -0
  139. package/.bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +52 -0
  140. package/.bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +169 -0
  141. package/.bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +45 -0
  142. package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  143. package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +408 -0
  144. package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +237 -0
  145. package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  146. package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +46 -0
  147. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +214 -0
  148. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +80 -0
  149. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +200 -0
  150. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +451 -0
  151. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +1115 -0
  152. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +181 -0
  153. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +90 -0
  154. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +60 -0
  155. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +347 -0
  156. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +103 -0
  157. package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +244 -0
  158. package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +222 -0
  159. package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +704 -0
  160. package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +13 -0
  161. package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +68 -0
  162. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +175 -0
  163. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +305 -0
  164. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +146 -0
  165. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +189 -0
  166. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +64 -0
  167. package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +12 -0
  168. package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +22 -0
  169. package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +420 -0
  170. package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +65 -0
  171. package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
  172. package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +201 -0
  173. package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +43 -0
  174. package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +240 -0
  175. package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +283 -0
  176. package/.bmad/bmm/workflows/4-implementation/create-story/template.md +51 -0
  177. package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +74 -0
  178. package/.bmad/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +367 -0
  179. package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
  180. package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +262 -0
  181. package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +26 -0
  182. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +17 -0
  183. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +189 -0
  184. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +76 -0
  185. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +58 -0
  186. package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1460 -0
  187. package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +71 -0
  188. package/.bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  189. package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +238 -0
  190. package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  191. package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
  192. package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +16 -0
  193. package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +34 -0
  194. package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +234 -0
  195. package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +57 -0
  196. package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +111 -0
  197. package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +25 -0
  198. package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +117 -0
  199. package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +25 -0
  200. package/.bmad/bmm/workflows/document-project/checklist.md +245 -0
  201. package/.bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  202. package/.bmad/bmm/workflows/document-project/instructions.md +222 -0
  203. package/.bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  204. package/.bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
  205. package/.bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  206. package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  207. package/.bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  208. package/.bmad/bmm/workflows/document-project/workflow.yaml +34 -0
  209. package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  210. package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  211. package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  212. package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  213. package/.bmad/bmm/workflows/techdoc/documentation-standards.md +262 -0
  214. package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  215. package/.bmad/bmm/workflows/testarch/atdd/checklist.md +373 -0
  216. package/.bmad/bmm/workflows/testarch/atdd/instructions.md +785 -0
  217. package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +52 -0
  218. package/.bmad/bmm/workflows/testarch/automate/checklist.md +580 -0
  219. package/.bmad/bmm/workflows/testarch/automate/instructions.md +1303 -0
  220. package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +61 -0
  221. package/.bmad/bmm/workflows/testarch/ci/checklist.md +246 -0
  222. package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +165 -0
  223. package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
  224. package/.bmad/bmm/workflows/testarch/ci/instructions.md +517 -0
  225. package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +53 -0
  226. package/.bmad/bmm/workflows/testarch/framework/checklist.md +321 -0
  227. package/.bmad/bmm/workflows/testarch/framework/instructions.md +455 -0
  228. package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +53 -0
  229. package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +405 -0
  230. package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +722 -0
  231. package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
  232. package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +56 -0
  233. package/.bmad/bmm/workflows/testarch/test-design/checklist.md +234 -0
  234. package/.bmad/bmm/workflows/testarch/test-design/instructions.md +621 -0
  235. package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +285 -0
  236. package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +52 -0
  237. package/.bmad/bmm/workflows/testarch/test-review/checklist.md +470 -0
  238. package/.bmad/bmm/workflows/testarch/test-review/instructions.md +608 -0
  239. package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +388 -0
  240. package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +53 -0
  241. package/.bmad/bmm/workflows/testarch/trace/checklist.md +654 -0
  242. package/.bmad/bmm/workflows/testarch/trace/instructions.md +1045 -0
  243. package/.bmad/bmm/workflows/testarch/trace/trace-template.md +673 -0
  244. package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +66 -0
  245. package/.bmad/bmm/workflows/workflow-status/init/instructions.md +822 -0
  246. package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +27 -0
  247. package/.bmad/bmm/workflows/workflow-status/instructions.md +387 -0
  248. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +127 -0
  249. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +115 -0
  250. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +52 -0
  251. package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +97 -0
  252. package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +88 -0
  253. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +58 -0
  254. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +47 -0
  255. package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +59 -0
  256. package/.bmad/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +49 -0
  257. package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +31 -0
  258. package/.bmad/bmm/workflows/workflow-status/workflow.yaml +28 -0
  259. package/{bmad → .bmad}/core/agents/bmad-master.md +7 -7
  260. package/{bmad → .bmad}/core/agents/bmad-web-orchestrator.agent.xml +8 -17
  261. package/{bmad → .bmad}/core/config.yaml +4 -2
  262. package/{bmad → .bmad}/core/tasks/adv-elicit.xml +5 -3
  263. package/{bmad → .bmad}/core/tasks/index-docs.xml +1 -1
  264. package/{bmad → .bmad}/core/tasks/validate-workflow.xml +1 -1
  265. package/{bmad → .bmad}/core/tasks/workflow.xml +1 -1
  266. package/{bmad → .bmad}/core/tools/shard-doc.xml +1 -1
  267. package/{bmad → .bmad}/core/workflows/brainstorming/README.md +2 -2
  268. package/{bmad → .bmad}/core/workflows/brainstorming/instructions.md +3 -3
  269. package/{bmad → .bmad}/core/workflows/brainstorming/workflow.yaml +8 -8
  270. package/{bmad → .bmad}/core/workflows/party-mode/instructions.md +2 -7
  271. package/.bmad/core/workflows/party-mode/workflow.yaml +27 -0
  272. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +12 -12
  273. package/.claude/commands/bmad/bmm/agents/analyst.md +75 -0
  274. package/.claude/commands/bmad/bmm/agents/architect.md +80 -0
  275. package/.claude/commands/bmad/bmm/agents/dev.md +69 -0
  276. package/.claude/commands/bmad/bmm/agents/pm.md +84 -0
  277. package/.claude/commands/bmad/bmm/agents/sm.md +93 -0
  278. package/.claude/commands/bmad/bmm/agents/tea.md +80 -0
  279. package/.claude/commands/bmad/bmm/agents/tech-writer.md +90 -0
  280. package/.claude/commands/bmad/bmm/agents/ux-designer.md +79 -0
  281. package/.claude/commands/bmad/bmm/workflows/architecture.md +15 -0
  282. package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +15 -0
  283. package/.claude/commands/bmad/bmm/workflows/code-review.md +15 -0
  284. package/.claude/commands/bmad/bmm/workflows/correct-course.md +15 -0
  285. package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +15 -0
  286. package/.claude/commands/bmad/bmm/workflows/create-story.md +15 -0
  287. package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +15 -0
  288. package/.claude/commands/bmad/bmm/workflows/dev-story.md +15 -0
  289. package/.claude/commands/bmad/bmm/workflows/document-project.md +15 -0
  290. package/.claude/commands/bmad/bmm/workflows/domain-research.md +15 -0
  291. package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +15 -0
  292. package/.claude/commands/bmad/bmm/workflows/prd.md +15 -0
  293. package/.claude/commands/bmad/bmm/workflows/product-brief.md +15 -0
  294. package/.claude/commands/bmad/bmm/workflows/research.md +15 -0
  295. package/.claude/commands/bmad/bmm/workflows/retrospective.md +15 -0
  296. package/.claude/commands/bmad/bmm/workflows/solutioning-gate-check.md +15 -0
  297. package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +15 -0
  298. package/.claude/commands/bmad/bmm/workflows/story-context.md +15 -0
  299. package/.claude/commands/bmad/bmm/workflows/story-done.md +15 -0
  300. package/.claude/commands/bmad/bmm/workflows/story-ready.md +15 -0
  301. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +15 -0
  302. package/.claude/commands/bmad/bmm/workflows/workflow-init.md +15 -0
  303. package/.claude/commands/bmad/bmm/workflows/workflow-status.md +15 -0
  304. package/.claude/commands/bmad/core/agents/bmad-master.md +7 -7
  305. package/.claude/commands/bmad/core/tasks/adv-elicit.md +9 -0
  306. package/.claude/settings.local.json +6 -12
  307. package/.vscode/settings.json +2 -1
  308. package/package.json +1 -1
  309. package/src/core/_module-installer/install-config.yaml +15 -9
  310. package/src/core/_module-installer/installer.js +0 -8
  311. package/src/core/agents/bmad-master.agent.yaml +5 -5
  312. package/src/core/agents/bmad-web-orchestrator.agent.xml +8 -17
  313. package/src/core/tasks/adv-elicit.xml +5 -3
  314. package/src/core/tasks/index-docs.xml +1 -1
  315. package/src/core/tasks/validate-workflow.xml +1 -1
  316. package/src/core/tasks/workflow.xml +1 -1
  317. package/src/core/tools/shard-doc.xml +1 -1
  318. package/src/core/workflows/brainstorming/README.md +2 -2
  319. package/src/core/workflows/brainstorming/instructions.md +3 -3
  320. package/src/core/workflows/brainstorming/workflow.yaml +8 -8
  321. package/src/core/workflows/party-mode/instructions.md +2 -7
  322. package/src/core/workflows/party-mode/workflow.yaml +10 -6
  323. package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
  324. package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -10
  325. package/src/modules/bmb/workflows/audit-workflow/checklist.md +2 -2
  326. package/src/modules/bmb/workflows/audit-workflow/instructions.md +5 -5
  327. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +2 -2
  328. package/src/modules/bmb/workflows/convert-legacy/README.md +5 -5
  329. package/src/modules/bmb/workflows/convert-legacy/checklist.md +2 -2
  330. package/src/modules/bmb/workflows/convert-legacy/instructions.md +17 -17
  331. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +6 -6
  332. package/src/modules/bmb/workflows/create-agent/README.md +5 -5
  333. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +15 -15
  334. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
  335. package/src/modules/bmb/workflows/create-agent/agent-types.md +15 -15
  336. package/src/modules/bmb/workflows/create-agent/checklist.md +3 -3
  337. package/src/modules/bmb/workflows/create-agent/instructions.md +11 -11
  338. package/src/modules/bmb/workflows/create-agent/workflow.yaml +12 -12
  339. package/src/modules/bmb/workflows/create-module/README.md +1 -1
  340. package/src/modules/bmb/workflows/create-module/checklist.md +1 -1
  341. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
  342. package/src/modules/bmb/workflows/create-module/instructions.md +7 -7
  343. package/src/modules/bmb/workflows/create-module/module-structure.md +4 -4
  344. package/src/modules/bmb/workflows/create-module/workflow.yaml +9 -9
  345. package/src/modules/bmb/workflows/create-workflow/README.md +4 -4
  346. package/src/modules/bmb/workflows/create-workflow/checklist.md +1 -1
  347. package/src/modules/bmb/workflows/create-workflow/instructions.md +29 -29
  348. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +42 -42
  349. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
  350. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -12
  351. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +5 -5
  352. package/src/modules/bmb/workflows/edit-agent/checklist.md +1 -1
  353. package/src/modules/bmb/workflows/edit-agent/instructions.md +2 -2
  354. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +8 -8
  355. package/src/modules/bmb/workflows/edit-module/README.md +2 -2
  356. package/src/modules/bmb/workflows/edit-module/checklist.md +2 -2
  357. package/src/modules/bmb/workflows/edit-module/instructions.md +4 -4
  358. package/src/modules/bmb/workflows/edit-module/workflow.yaml +10 -10
  359. package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
  360. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +5 -5
  361. package/src/modules/bmb/workflows/module-brief/README.md +2 -2
  362. package/src/modules/bmb/workflows/module-brief/instructions.md +2 -2
  363. package/src/modules/bmb/workflows/module-brief/workflow.yaml +4 -4
  364. package/src/modules/bmb/workflows/redoc/README.md +5 -5
  365. package/src/modules/bmb/workflows/redoc/instructions.md +1 -1
  366. package/src/modules/bmb/workflows/redoc/workflow.yaml +1 -1
  367. package/src/modules/bmgd/README.md +1 -1
  368. package/src/modules/bmgd/_module-installer/install-config.yaml +17 -16
  369. package/src/modules/bmgd/agents/game-architect.agent.yaml +15 -10
  370. package/src/modules/bmgd/agents/game-designer.agent.yaml +16 -11
  371. package/src/modules/bmgd/agents/game-dev.agent.yaml +18 -12
  372. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +30 -25
  373. package/src/modules/bmgd/teams/default-party.csv +10 -0
  374. package/src/modules/bmgd/teams/team-gamedev.yaml +2 -0
  375. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
  376. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +9 -9
  377. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
  378. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +8 -8
  379. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +8 -8
  380. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +30 -30
  381. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +6 -6
  382. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +5 -5
  383. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +6 -6
  384. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +2 -2
  385. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +4 -4
  386. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +4 -13
  387. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
  388. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +2 -2
  389. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +2 -2
  390. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +3 -3
  391. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +3 -3
  392. package/src/modules/bmgd/workflows/4-production/dev-story/AUDIT-REPORT.md +3 -3
  393. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +2 -2
  394. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +3 -3
  395. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +1 -1
  396. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +2 -2
  397. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +2 -2
  398. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +2 -2
  399. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +4 -4
  400. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +2 -2
  401. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +3 -3
  402. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +1 -1
  403. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +1 -1
  404. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +2 -2
  405. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +4 -4
  406. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +1 -1
  407. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +3 -3
  408. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +1 -1
  409. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +3 -3
  410. package/src/modules/bmm/_module-installer/install-config.yaml +10 -24
  411. package/src/modules/bmm/_module-installer/installer.js +2 -2
  412. package/src/modules/bmm/agents/analyst.agent.yaml +20 -15
  413. package/src/modules/bmm/agents/architect.agent.yaml +17 -12
  414. package/src/modules/bmm/agents/dev.agent.yaml +9 -12
  415. package/src/modules/bmm/agents/pm.agent.yaml +24 -23
  416. package/src/modules/bmm/agents/sm.agent.yaml +24 -19
  417. package/src/modules/bmm/agents/tea.agent.yaml +23 -17
  418. package/src/modules/bmm/agents/tech-writer.agent.yaml +14 -10
  419. package/src/modules/bmm/agents/ux-designer.agent.yaml +16 -11
  420. package/src/modules/bmm/docs/agents-guide.md +4 -4
  421. package/src/modules/bmm/docs/brownfield-guide.md +4 -4
  422. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  423. package/src/modules/bmm/docs/faq.md +1 -1
  424. package/src/modules/bmm/docs/party-mode.md +3 -3
  425. package/src/modules/bmm/docs/quick-start.md +1 -1
  426. package/src/modules/bmm/docs/test-architecture.md +1 -1
  427. package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
  428. package/src/modules/bmm/sub-modules/claude-code/README.md +1 -1
  429. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +22 -22
  430. package/src/modules/bmm/tasks/daily-standup.xml +2 -2
  431. package/src/modules/bmm/teams/default-party.csv +19 -0
  432. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  433. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +1 -1
  434. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
  435. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +1 -1
  436. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +8 -8
  437. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +1 -1
  438. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +9 -9
  439. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +2 -2
  440. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +5 -5
  441. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +1 -1
  442. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +4 -4
  443. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +14 -14
  444. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -1
  445. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +10 -10
  446. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +3 -3
  447. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +6 -6
  448. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +5 -5
  449. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +16 -16
  450. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +1 -1
  451. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +5 -5
  452. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +6 -6
  453. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +2 -2
  454. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +12 -12
  455. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +6 -6
  456. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +19 -19
  457. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +2 -2
  458. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +4 -4
  459. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +38 -38
  460. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +6 -23
  461. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  462. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
  463. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
  464. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +38 -40
  465. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +6 -19
  466. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +3 -3
  467. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +2 -2
  468. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +3 -3
  469. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
  470. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +26 -28
  471. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +6 -18
  472. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +11 -11
  473. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +8 -11
  474. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +6 -15
  475. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +5 -4
  476. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
  477. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
  478. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +8 -9
  479. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +6 -14
  480. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
  481. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +4 -4
  482. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +1 -1
  483. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +4 -4
  484. package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
  485. package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
  486. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  487. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  488. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
  489. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
  490. package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
  491. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
  492. package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
  493. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
  494. package/src/modules/bmm/workflows/testarch/framework/instructions.md +2 -2
  495. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
  496. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  497. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  498. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +2 -2
  499. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
  500. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
  501. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
  502. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
  503. package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
  504. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
  505. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +28 -26
  506. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +5 -4
  507. package/src/modules/bmm/workflows/workflow-status/instructions.md +5 -4
  508. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  509. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
  510. package/src/modules/cis/README.md +1 -1
  511. package/src/modules/cis/_module-installer/install-config.yaml +6 -4
  512. package/src/modules/cis/agents/README.md +1 -1
  513. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +13 -8
  514. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +13 -8
  515. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +13 -8
  516. package/src/modules/cis/agents/innovation-strategist.agent.yaml +13 -8
  517. package/src/modules/cis/agents/storyteller.agent.yaml +13 -8
  518. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  519. package/src/modules/cis/teams/default-party.csv +11 -0
  520. package/src/modules/cis/workflows/README.md +1 -1
  521. package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
  522. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
  523. package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
  524. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
  525. package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
  526. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
  527. package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
  528. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
  529. package/src/utility/models/action-command-header.md +0 -0
  530. package/src/utility/models/agent-activation-ide.xml +3 -3
  531. package/src/utility/models/agent-activation-web.xml +4 -4
  532. package/src/utility/models/agent-command-header.md +1 -0
  533. package/src/utility/models/fragments/activation-steps.xml +3 -2
  534. package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
  535. package/src/utility/models/fragments/handler-workflow.xml +1 -1
  536. package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
  537. package/tools/cli/bundlers/web-bundler.js +85 -16
  538. package/tools/cli/commands/install.js +1 -4
  539. package/tools/cli/installers/lib/core/config-collector.js +201 -28
  540. package/tools/cli/installers/lib/core/detector.js +62 -7
  541. package/tools/cli/installers/lib/core/installer.js +158 -23
  542. package/tools/cli/installers/lib/core/manifest-generator.js +26 -115
  543. package/tools/cli/installers/lib/ide/_base-ide.js +57 -3
  544. package/tools/cli/installers/lib/ide/auggie.js +78 -224
  545. package/tools/cli/installers/lib/ide/claude-code.js +14 -22
  546. package/tools/cli/installers/lib/ide/cline.js +15 -18
  547. package/tools/cli/installers/lib/ide/codex.js +17 -48
  548. package/tools/cli/installers/lib/ide/crush.js +14 -50
  549. package/tools/cli/installers/lib/ide/cursor.js +51 -8
  550. package/tools/cli/installers/lib/ide/gemini.js +87 -37
  551. package/tools/cli/installers/lib/ide/github-copilot.js +47 -35
  552. package/tools/cli/installers/lib/ide/iflow.js +13 -30
  553. package/tools/cli/installers/lib/ide/kilo.js +20 -16
  554. package/tools/cli/installers/lib/ide/manager.js +15 -0
  555. package/tools/cli/installers/lib/ide/opencode.js +16 -17
  556. package/tools/cli/installers/lib/ide/qwen.js +39 -11
  557. package/tools/cli/installers/lib/ide/roo.js +27 -62
  558. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
  559. package/tools/cli/installers/lib/ide/{task-tool-command-generator.js → shared/task-tool-command-generator.js} +1 -1
  560. package/tools/cli/installers/lib/ide/{workflow-command-generator.js → shared/workflow-command-generator.js} +11 -9
  561. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  562. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  563. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  564. package/tools/cli/installers/lib/ide/{workflow-command-template.md → templates/workflow-command-template.md} +3 -5
  565. package/tools/cli/installers/lib/ide/trae.js +20 -32
  566. package/tools/cli/installers/lib/ide/windsurf.js +18 -8
  567. package/tools/cli/installers/lib/modules/manager.js +89 -17
  568. package/tools/cli/lib/cli-utils.js +52 -50
  569. package/tools/cli/lib/ui.js +15 -8
  570. package/tools/schema/agent.js +7 -3
  571. package/web-bundles/bmgd/agents/game-architect.xml +664 -0
  572. package/web-bundles/bmgd/agents/game-designer.xml +5489 -0
  573. package/web-bundles/bmgd/agents/game-dev.xml +595 -0
  574. package/web-bundles/bmgd/agents/game-scrum-master.xml +699 -0
  575. package/web-bundles/bmgd/teams/team-gamedev.xml +6588 -0
  576. package/web-bundles/bmm/agents/analyst.xml +424 -189
  577. package/web-bundles/bmm/agents/architect.xml +514 -183
  578. package/web-bundles/bmm/agents/dev.xml +185 -5
  579. package/web-bundles/bmm/agents/pm.xml +522 -193
  580. package/web-bundles/bmm/agents/sm.xml +636 -5
  581. package/web-bundles/bmm/agents/tea.xml +697 -4
  582. package/web-bundles/bmm/agents/tech-writer.xml +544 -4
  583. package/web-bundles/bmm/agents/ux-designer.xml +505 -31
  584. package/web-bundles/bmm/teams/team-fullstack.xml +1588 -1258
  585. package/web-bundles/cis/agents/brainstorming-coach.xml +1069 -0
  586. package/web-bundles/cis/agents/creative-problem-solver.xml +1060 -0
  587. package/web-bundles/cis/agents/design-thinking-coach.xml +955 -0
  588. package/web-bundles/cis/agents/innovation-strategist.xml +1108 -0
  589. package/web-bundles/cis/agents/storyteller.xml +598 -0
  590. package/web-bundles/cis/teams/creative-squad.xml +3449 -0
  591. package/bmad/_cfg/agent-manifest.csv +0 -5
  592. package/bmad/_cfg/files-manifest.csv +0 -82
  593. package/bmad/_cfg/ides/claude-code.yaml +0 -6
  594. package/bmad/_cfg/manifest.yaml +0 -11
  595. package/bmad/_cfg/task-manifest.csv +0 -13
  596. package/bmad/_cfg/tool-manifest.csv +0 -4
  597. package/bmad/_cfg/workflow-manifest.csv +0 -17
  598. package/bmad/bmb/config.yaml +0 -14
  599. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  600. package/bmd/README.md +0 -193
  601. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  602. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  603. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  604. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  605. package/bmd/agents/cli-chief.agent.yaml +0 -126
  606. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  607. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  608. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  609. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  610. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  611. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  612. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  613. package/bmd/agents/release-chief.agent.yaml +0 -127
  614. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  615. package/bmd/config.yaml +0 -12
  616. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  617. /package/{bmad → .bmad}/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -0
  618. /package/{bmad/_cfg/agents/core-bmad-master.customize.yaml → .bmad/_cfg/agents/bmm-analyst.customize.yaml} +0 -0
  619. /package/{bmad → .bmad}/bmb/README.md +0 -0
  620. /package/{bmad → .bmad}/bmb/workflows/audit-workflow/template.md +0 -0
  621. /package/{bmad → .bmad}/bmb/workflows/create-agent/brainstorm-context.md +0 -0
  622. /package/{bmad → .bmad}/bmb/workflows/create-agent/communication-styles.md +0 -0
  623. /package/{bmad → .bmad}/bmb/workflows/create-module/brainstorm-context.md +0 -0
  624. /package/{bmad → .bmad}/bmb/workflows/create-module/installer-templates/installer.js +0 -0
  625. /package/{bmad → .bmad}/bmb/workflows/create-workflow/brainstorm-context.md +0 -0
  626. /package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -0
  627. /package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/template.md +0 -0
  628. /package/{bmad → .bmad}/bmb/workflows/edit-agent/README.md +0 -0
  629. /package/{bmad → .bmad}/bmb/workflows/edit-workflow/README.md +0 -0
  630. /package/{bmad → .bmad}/bmb/workflows/edit-workflow/checklist.md +0 -0
  631. /package/{bmad → .bmad}/bmb/workflows/module-brief/checklist.md +0 -0
  632. /package/{bmad → .bmad}/bmb/workflows/module-brief/template.md +0 -0
  633. /package/{bmad → .bmad}/bmb/workflows/redoc/checklist.md +0 -0
  634. /package/{bmad → .bmad}/core/tasks/adv-elicit-methods.csv +0 -0
  635. /package/{bmad → .bmad}/core/workflows/brainstorming/brain-methods.csv +0 -0
  636. /package/{bmad → .bmad}/core/workflows/brainstorming/template.md +0 -0
  637. /package/{bmad → .bmad}/docs/claude-code-instructions.md +0 -0
@@ -205,6 +205,18 @@ class WebBundler {
205
205
  this.stats.warnings.push({ agent: agentName, warnings: dependencyWarnings });
206
206
  }
207
207
 
208
+ // Check for module's default-party.csv and include it as agent manifest
209
+ const defaultPartyPath = path.join(this.modulesPath, moduleName, 'teams', 'default-party.csv');
210
+ if (await fs.pathExists(defaultPartyPath)) {
211
+ const partyContent = await fs.readFile(defaultPartyPath, 'utf8');
212
+ // Process any placeholders in the CSV content
213
+ const processedPartyContent = this.processProjectRootReferences(partyContent);
214
+ // Wrap as text to preserve raw CSV format in CDATA
215
+ const wrappedParty = this.wrapContentInXml(processedPartyContent, 'bmad/_cfg/agent-manifest.csv', 'text');
216
+ dependencies.set('bmad/_cfg/agent-manifest.csv', wrappedParty);
217
+ console.log(chalk.gray(` + Added party manifest from module default-party.csv`));
218
+ }
219
+
208
220
  // Remove commands for skipped workflows from agent XML
209
221
  if (skippedWorkflows.length > 0) {
210
222
  agentXml = this.removeSkippedWorkflowCommands(agentXml, skippedWorkflows);
@@ -260,6 +272,24 @@ class WebBundler {
260
272
  const allAgentXmls = [];
261
273
  const warnings = [];
262
274
 
275
+ // Check if team has a party CSV file (agent manifest)
276
+ const hasPartyFile = teamConfig.party && teamConfig.party.endsWith('.csv');
277
+ if (hasPartyFile) {
278
+ // Load the party CSV and add it as bmad/_cfg/agent-manifest.csv
279
+ const partyPath = path.join(path.dirname(teamPath), teamConfig.party.replace(/^\.\//, ''));
280
+ if (await fs.pathExists(partyPath)) {
281
+ const partyContent = await fs.readFile(partyPath, 'utf8');
282
+ // Process any placeholders in the CSV content
283
+ const processedPartyContent = this.processProjectRootReferences(partyContent);
284
+ // Wrap as text/csv to preserve raw CSV format in CDATA
285
+ const wrappedParty = this.wrapContentInXml(processedPartyContent, 'bmad/_cfg/agent-manifest.csv', 'text');
286
+ dependencies.set('bmad/_cfg/agent-manifest.csv', wrappedParty);
287
+ console.log(chalk.gray(` + Added agent manifest from: ${teamConfig.party}`));
288
+ } else {
289
+ console.log(chalk.yellow(` ⚠ Party file not found: ${partyPath}`));
290
+ }
291
+ }
292
+
263
293
  // 1. First, always add the bmad-web-orchestrator (XML file only, no transformation needed)
264
294
  const orchestratorXmlPath = path.join(this.sourceDir, 'core', 'agents', 'bmad-web-orchestrator.agent.xml');
265
295
 
@@ -476,8 +506,9 @@ class WebBundler {
476
506
  }
477
507
 
478
508
  // Parse paths to extract module and workflow location
479
- const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/bmad\/([^/]+)\/workflows\/(.+)/);
480
- const installMatch = installWorkflowPath.match(/\{project-root\}\/bmad\/([^/]+)\/workflows\/(.+)/);
509
+ // Support both {project-root}/bmad/... and {project-root}/{bmad_folder}/... patterns
510
+ const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
511
+ const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
481
512
 
482
513
  if (!sourceMatch || !installMatch) {
483
514
  continue;
@@ -528,8 +559,9 @@ class WebBundler {
528
559
  let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
529
560
 
530
561
  // Replace config_source with new module reference
531
- const configSourcePattern = /config_source:\s*["']?\{project-root\}\/bmad\/[^/]+\/config\.yaml["']?/g;
532
- const newConfigSource = `config_source: "{project-root}/bmad/${newModuleName}/config.yaml"`;
562
+ // Support both old format (bmad) and new format ({bmad_folder})
563
+ const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(?:\{bmad_folder\}|bmad)\/[^/]+\/config\.yaml["']?/g;
564
+ const newConfigSource = `config_source: "{project-root}/{bmad_folder}/${newModuleName}/config.yaml"`;
533
565
 
534
566
  const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
535
567
  await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
@@ -651,7 +683,8 @@ class WebBundler {
651
683
  /system-prompts="([^"]+)"/g,
652
684
  /tools="([^"]+)"/g,
653
685
  /knowledge="([^"]+)"/g,
654
- /{project-root}\/([^"'\s<>]+)/g,
686
+ /{project-root}\/([^"'\s<>]+)/g, // Legacy {project-root} paths
687
+ /\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after {bmad_folder} replacement)
655
688
  ];
656
689
 
657
690
  for (const pattern of patterns) {
@@ -660,9 +693,16 @@ class WebBundler {
660
693
  let filePath = match[1];
661
694
  // Remove {project-root} prefix if present
662
695
  filePath = filePath.replace(/^{project-root}\//, '');
696
+ // Remove {bmad_folder} prefix if present (should be rare, mostly replaced already)
697
+ filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
698
+
699
+ // For bmad/ pattern, prepend 'bmad/' since it was captured without it
700
+ if (pattern.source.includes(String.raw`\bbmad\/`)) {
701
+ filePath = 'bmad/' + filePath;
702
+ }
663
703
 
664
704
  // Skip obvious placeholder/example paths
665
- if (filePath && !filePath.includes('path/to/') && !filePath.includes('example')) {
705
+ if (filePath && !filePath.includes('path/to/') && !filePath.includes('example') && !filePath.includes('...')) {
666
706
  refs.add(filePath);
667
707
  }
668
708
  }
@@ -680,6 +720,8 @@ class WebBundler {
680
720
  while ((match = pattern.exec(xml)) !== null) {
681
721
  let workflowPath = match[1];
682
722
  workflowPath = workflowPath.replace(/^{project-root}\//, '');
723
+ // Remove {bmad_folder} prefix if present and replace with bmad
724
+ workflowPath = workflowPath.replace(/^{bmad_folder}\//, 'bmad/');
683
725
 
684
726
  // Skip obvious placeholder/example paths
685
727
  if (workflowPath && workflowPath.endsWith('.yaml') && !workflowPath.includes('path/to/') && !workflowPath.includes('example')) {
@@ -725,6 +767,11 @@ class WebBundler {
725
767
  * Process a file dependency recursively
726
768
  */
727
769
  async processFileDependency(filePath, dependencies, processed, moduleName, warnings = []) {
770
+ // Skip workflow YAML files - they're handled by processWorkflowDependency
771
+ if (filePath.includes('/workflow') && filePath.endsWith('workflow.yaml')) {
772
+ return;
773
+ }
774
+
728
775
  // Skip if already processed
729
776
  if (processed.has(filePath)) {
730
777
  return;
@@ -766,7 +813,8 @@ class WebBundler {
766
813
  const deps = depMatch[1].match(/['"]([^'"]+)['"]/g);
767
814
  if (deps) {
768
815
  for (const dep of deps) {
769
- const depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
816
+ let depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
817
+ depPath = depPath.replace(/^{bmad_folder}\//, 'bmad/');
770
818
  if (depPath && !processed.has(depPath)) {
771
819
  await this.processFileDependency(depPath, dependencies, processed, moduleName, warnings);
772
820
  }
@@ -779,7 +827,8 @@ class WebBundler {
779
827
  const templates = templateMatch[1].match(/['"]([^'"]+)['"]/g);
780
828
  if (templates) {
781
829
  for (const template of templates) {
782
- const templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
830
+ let templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
831
+ templatePath = templatePath.replace(/^{bmad_folder}\//, 'bmad/');
783
832
  if (templatePath && !processed.has(templatePath)) {
784
833
  await this.processFileDependency(templatePath, dependencies, processed, moduleName, warnings);
785
834
  }
@@ -967,8 +1016,13 @@ class WebBundler {
967
1016
  bundleYamlContent = yamlContent;
968
1017
  }
969
1018
 
1019
+ // Process {project-root} and {bmad_folder} references in the YAML content
1020
+ bundleYamlContent = this.processProjectRootReferences(bundleYamlContent);
1021
+
970
1022
  // Include the YAML file with only web_bundle content, wrapped in XML
971
- const yamlId = workflowPath.replace(/^{project-root}\//, '');
1023
+ // Process the workflow path to create a clean ID
1024
+ let yamlId = workflowPath.replace(/^{project-root}\//, '');
1025
+ yamlId = yamlId.replace(/^{bmad_folder}\//, 'bmad/');
972
1026
  const wrappedYaml = this.wrapContentInXml(bundleYamlContent, yamlId, 'yaml');
973
1027
  dependencies.set(yamlId, wrappedYaml);
974
1028
 
@@ -985,7 +1039,11 @@ class WebBundler {
985
1039
  const bundleFiles = workflowConfig.web_bundle.web_bundle_files;
986
1040
 
987
1041
  for (const bundleFilePath of bundleFiles) {
988
- if (processed.has(bundleFilePath)) {
1042
+ // Process the file path to create a clean ID for checking if already processed
1043
+ let cleanFilePath = bundleFilePath.replace(/^{project-root}\//, '');
1044
+ cleanFilePath = cleanFilePath.replace(/^{bmad_folder}\//, 'bmad/');
1045
+
1046
+ if (processed.has(cleanFilePath)) {
989
1047
  continue;
990
1048
  }
991
1049
 
@@ -1002,7 +1060,7 @@ class WebBundler {
1002
1060
  await this.processWorkflowDependency(bundleFilePath, dependencies, processed, moduleName, warnings);
1003
1061
  } else {
1004
1062
  // Regular file - process normally
1005
- processed.add(bundleFilePath);
1063
+ processed.add(cleanFilePath);
1006
1064
 
1007
1065
  // Read the file content
1008
1066
  let fileContent = await fs.readFile(bundleActualPath, 'utf8');
@@ -1012,8 +1070,8 @@ class WebBundler {
1012
1070
  fileContent = this.processProjectRootReferences(fileContent);
1013
1071
 
1014
1072
  // Wrap in XML with proper escaping
1015
- const wrappedContent = this.wrapContentInXml(fileContent, bundleFilePath, fileExt);
1016
- dependencies.set(bundleFilePath, wrappedContent);
1073
+ const wrappedContent = this.wrapContentInXml(fileContent, cleanFilePath, fileExt);
1074
+ dependencies.set(cleanFilePath, wrappedContent);
1017
1075
  }
1018
1076
  }
1019
1077
  }
@@ -1039,7 +1097,9 @@ class WebBundler {
1039
1097
  return;
1040
1098
  }
1041
1099
 
1042
- const fileContent = await fs.readFile(actualPath, 'utf8');
1100
+ let fileContent = await fs.readFile(actualPath, 'utf8');
1101
+ // Process {project-root} and {bmad_folder} references
1102
+ fileContent = this.processProjectRootReferences(fileContent);
1043
1103
  const wrappedContent = this.wrapContentInXml(fileContent, coreWorkflowPath, 'xml');
1044
1104
  dependencies.set(coreWorkflowPath, wrappedContent);
1045
1105
  }
@@ -1063,7 +1123,9 @@ class WebBundler {
1063
1123
  continue;
1064
1124
  }
1065
1125
 
1066
- const fileContent = await fs.readFile(actualPath, 'utf8');
1126
+ let fileContent = await fs.readFile(actualPath, 'utf8');
1127
+ // Process {project-root} and {bmad_folder} references
1128
+ fileContent = this.processProjectRootReferences(fileContent);
1067
1129
  const fileExt = path.extname(actualPath).toLowerCase().replace('.', '');
1068
1130
  const wrappedContent = this.wrapContentInXml(fileContent, filePath, fileExt);
1069
1131
  dependencies.set(filePath, wrappedContent);
@@ -1096,6 +1158,8 @@ class WebBundler {
1096
1158
  async processWildcardDependency(pattern, dependencies, processed, moduleName, warnings = []) {
1097
1159
  // Remove {project-root} prefix
1098
1160
  pattern = pattern.replace(/^{project-root}\//, '');
1161
+ // Replace {bmad_folder} with bmad
1162
+ pattern = pattern.replace(/^{bmad_folder}\//, 'bmad/');
1099
1163
 
1100
1164
  // Get directory and file pattern
1101
1165
  const lastSlash = pattern.lastIndexOf('/');
@@ -1163,6 +1227,9 @@ class WebBundler {
1163
1227
  resolveFilePath(filePath, moduleName) {
1164
1228
  // Remove {project-root} prefix
1165
1229
  filePath = filePath.replace(/^{project-root}\//, '');
1230
+ // Replace {bmad_folder} with bmad
1231
+ filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
1232
+ filePath = filePath.replace(/^{bmad_folder}$/, 'bmad');
1166
1233
 
1167
1234
  // Check temp directory first for _cfg files
1168
1235
  if (filePath.startsWith('bmad/_cfg/')) {
@@ -1229,13 +1296,15 @@ class WebBundler {
1229
1296
  }
1230
1297
 
1231
1298
  /**
1232
- * Process and remove {project-root} references
1299
+ * Process and remove {project-root} references and replace {bmad_folder} with bmad
1233
1300
  */
1234
1301
  processProjectRootReferences(content) {
1235
1302
  // Remove {project-root}/ prefix (with slash)
1236
1303
  content = content.replaceAll('{project-root}/', '');
1237
1304
  // Also remove {project-root} without slash
1238
1305
  content = content.replaceAll('{project-root}', '');
1306
+ // Replace {bmad_folder} with bmad
1307
+ content = content.replaceAll('{bmad_folder}', 'bmad');
1239
1308
  return content;
1240
1309
  }
1241
1310
 
@@ -56,10 +56,7 @@ module.exports = {
56
56
  // Check if installation succeeded
57
57
  if (result && result.success) {
58
58
  console.log(chalk.green('\n✨ Installation complete!'));
59
- console.log(
60
- chalk.cyan('BMAD Core and Selected Modules have been installed to:'),
61
- chalk.bold(result.path || path.resolve(config.directory, 'bmad')),
62
- );
59
+ console.log(chalk.cyan('BMAD Core and Selected Modules have been installed to:'), chalk.bold(result.path));
63
60
  console.log(chalk.yellow('\nThank you for helping test the early release version of the new BMad Core and BMad Method!'));
64
61
  console.log(chalk.cyan('Stable Beta coming soon - please read the full readme.md and linked documentation to get started!'));
65
62
  process.exit(0);
@@ -13,14 +13,56 @@ 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
+
16
51
  /**
17
52
  * Load existing config if it exists from module config files
18
53
  * @param {string} projectDir - Target project directory
19
54
  */
20
55
  async loadExistingConfig(projectDir) {
21
- const bmadDir = path.join(projectDir, 'bmad');
22
56
  this.existingConfig = {};
23
57
 
58
+ // Check if project directory exists first
59
+ if (!(await fs.pathExists(projectDir))) {
60
+ return false;
61
+ }
62
+
63
+ // Find the actual bmad directory (handles custom folder names)
64
+ const bmadDir = await this.findBmadDir(projectDir);
65
+
24
66
  // Check if bmad directory exists
25
67
  if (!(await fs.pathExists(bmadDir))) {
26
68
  return false;
@@ -159,27 +201,25 @@ class ConfigCollector {
159
201
  this.allAnswers[`${moduleName}_${key}`] = value;
160
202
  }
161
203
  }
204
+ // Show "no config" message for modules with no new questions
205
+ CLIUtils.displayModuleNoConfig(moduleName, moduleConfig.header, moduleConfig.subheader);
162
206
  return false; // No new fields
163
207
  }
164
208
 
165
- // If we have new fields, show prompt section and collect only new fields
209
+ // If we have new fields, build questions first
166
210
  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
211
  const questions = [];
174
212
  for (const key of newKeys) {
175
213
  const item = moduleConfig[key];
176
- const question = await this.buildQuestion(moduleName, key, item);
214
+ const question = await this.buildQuestion(moduleName, key, item, moduleConfig);
177
215
  if (question) {
178
216
  questions.push(question);
179
217
  }
180
218
  }
181
219
 
182
220
  if (questions.length > 0) {
221
+ // Only show header if we actually have questions
222
+ CLIUtils.displayModuleConfigHeader(moduleName, moduleConfig.header, moduleConfig.subheader);
183
223
  console.log(); // Line break before questions
184
224
  const answers = await inquirer.prompt(questions);
185
225
 
@@ -206,6 +246,9 @@ class ConfigCollector {
206
246
  }
207
247
  this.collectedConfig[moduleName][originalKey] = result;
208
248
  }
249
+ } else {
250
+ // New keys exist but no questions generated - show no config message
251
+ CLIUtils.displayModuleNoConfig(moduleName, moduleConfig.header, moduleConfig.subheader);
209
252
  }
210
253
  }
211
254
 
@@ -325,12 +368,6 @@ class ConfigCollector {
325
368
  return;
326
369
  }
327
370
 
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
371
  // Process each config item
335
372
  const questions = [];
336
373
  const configKeys = Object.keys(moduleConfig).filter((key) => key !== 'prompt');
@@ -343,13 +380,15 @@ class ConfigCollector {
343
380
  continue;
344
381
  }
345
382
 
346
- const question = await this.buildQuestion(moduleName, key, item);
383
+ const question = await this.buildQuestion(moduleName, key, item, moduleConfig);
347
384
  if (question) {
348
385
  questions.push(question);
349
386
  }
350
387
  }
351
388
 
389
+ // Display appropriate header based on whether there are questions
352
390
  if (questions.length > 0) {
391
+ CLIUtils.displayModuleConfigHeader(moduleName, moduleConfig.header, moduleConfig.subheader);
353
392
  console.log(); // Line break before questions
354
393
  const answers = await inquirer.prompt(questions);
355
394
 
@@ -450,20 +489,68 @@ class ConfigCollector {
450
489
  this.collectedConfig[moduleName][originalKey] = result;
451
490
  }
452
491
 
453
- // Display module completion message after collecting all answers (unless skipped)
454
- if (!skipCompletion) {
455
- CLIUtils.displayModuleComplete(moduleName);
456
- }
492
+ // No longer display completion boxes - keep output clean
493
+ } else {
494
+ // No questions for this module - show completion message
495
+ CLIUtils.displayModuleNoConfig(moduleName, moduleConfig.header, moduleConfig.subheader);
457
496
  }
458
497
  }
459
498
 
499
+ /**
500
+ * Replace placeholders in a string with collected config values
501
+ * @param {string} str - String with placeholders
502
+ * @param {string} currentModule - Current module name (to look up defaults in same module)
503
+ * @param {Object} moduleConfig - Current module's config schema (to look up defaults)
504
+ * @returns {string} String with placeholders replaced
505
+ */
506
+ replacePlaceholders(str, currentModule = null, moduleConfig = null) {
507
+ if (typeof str !== 'string') {
508
+ return str;
509
+ }
510
+
511
+ return str.replaceAll(/{([^}]+)}/g, (match, configKey) => {
512
+ // Preserve special placeholders
513
+ if (configKey === 'project-root' || configKey === 'value' || configKey === 'directory_name') {
514
+ return match;
515
+ }
516
+
517
+ // Look for the config value in allAnswers (already answered questions)
518
+ let configValue = this.allAnswers[configKey] || this.allAnswers[`core_${configKey}`];
519
+
520
+ // Check in already collected config
521
+ if (!configValue) {
522
+ for (const mod of Object.keys(this.collectedConfig)) {
523
+ if (mod !== '_meta' && this.collectedConfig[mod] && this.collectedConfig[mod][configKey]) {
524
+ configValue = this.collectedConfig[mod][configKey];
525
+ // Remove {project-root}/ prefix if present for cleaner display
526
+ if (typeof configValue === 'string' && configValue.includes('{project-root}/')) {
527
+ configValue = configValue.replace('{project-root}/', '');
528
+ }
529
+ break;
530
+ }
531
+ }
532
+ }
533
+
534
+ // If still not found and we're in the same module, use the default from the config schema
535
+ if (!configValue && currentModule && moduleConfig && moduleConfig[configKey]) {
536
+ const referencedItem = moduleConfig[configKey];
537
+ if (referencedItem && referencedItem.default !== undefined) {
538
+ configValue = referencedItem.default;
539
+ }
540
+ }
541
+
542
+ return configValue || match;
543
+ });
544
+ }
545
+
460
546
  /**
461
547
  * Build an inquirer question from a config item
462
548
  * @param {string} moduleName - Module name
463
549
  * @param {string} key - Config key
464
550
  * @param {Object} item - Config item definition
551
+ * @param {Object} moduleConfig - Full module config schema (for resolving defaults)
465
552
  */
466
- async buildQuestion(moduleName, key, item) {
553
+ async buildQuestion(moduleName, key, item, moduleConfig = null) {
467
554
  const questionName = `${moduleName}_${key}`;
468
555
 
469
556
  // Check for existing value
@@ -483,9 +570,42 @@ class ConfigCollector {
483
570
  let defaultValue = item.default;
484
571
  let choices = null;
485
572
 
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);
573
+ // Check if default contains references to other fields in the same module
574
+ const hasSameModuleReference = typeof defaultValue === 'string' && defaultValue.match(/{([^}]+)}/);
575
+ let dynamicDefault = false;
576
+
577
+ // Replace placeholders in default value with collected config values
578
+ if (typeof defaultValue === 'string') {
579
+ if (defaultValue.includes('{directory_name}') && this.currentProjectDir) {
580
+ const dirName = path.basename(this.currentProjectDir);
581
+ defaultValue = defaultValue.replaceAll('{directory_name}', dirName);
582
+ }
583
+
584
+ // Check if this references another field in the same module (for dynamic defaults)
585
+ if (hasSameModuleReference && moduleConfig) {
586
+ const matches = defaultValue.match(/{([^}]+)}/g);
587
+ if (matches) {
588
+ for (const match of matches) {
589
+ const fieldName = match.slice(1, -1); // Remove { }
590
+ // Check if this field exists in the same module config
591
+ if (moduleConfig[fieldName]) {
592
+ dynamicDefault = true;
593
+ break;
594
+ }
595
+ }
596
+ }
597
+ }
598
+
599
+ // If not dynamic, replace placeholders now
600
+ if (!dynamicDefault) {
601
+ defaultValue = this.replacePlaceholders(defaultValue, moduleName, moduleConfig);
602
+ }
603
+
604
+ // Strip {project-root}/ from defaults since it will be added back by result template
605
+ // This makes the display cleaner and user input simpler
606
+ if (defaultValue.includes('{project-root}/')) {
607
+ defaultValue = defaultValue.replace('{project-root}/', '');
608
+ }
489
609
  }
490
610
 
491
611
  // Handle different question types
@@ -548,31 +668,67 @@ class ConfigCollector {
548
668
  message = item.prompt;
549
669
  }
550
670
 
671
+ // Replace placeholders in prompt message with collected config values
672
+ if (typeof message === 'string') {
673
+ message = this.replacePlaceholders(message, moduleName, moduleConfig);
674
+ }
675
+
551
676
  // Add current value indicator for existing configs
552
677
  if (existingValue !== null && existingValue !== undefined) {
553
678
  if (typeof existingValue === 'boolean') {
554
679
  message += chalk.dim(` (current: ${existingValue ? 'true' : 'false'})`);
555
- defaultValue = existingValue;
556
680
  } else if (Array.isArray(existingValue)) {
557
681
  message += chalk.dim(` (current: ${existingValue.join(', ')})`);
558
682
  } else if (questionType !== 'list') {
559
683
  // Show the cleaned value (without {project-root}/) for display
560
684
  message += chalk.dim(` (current: ${existingValue})`);
561
- defaultValue = existingValue;
562
685
  }
563
686
  } else if (item.example && questionType === 'input') {
564
687
  // Show example for input fields
565
- const exampleText = typeof item.example === 'string' ? item.example.replace('{project-root}/', '') : JSON.stringify(item.example);
688
+ let exampleText = typeof item.example === 'string' ? item.example : JSON.stringify(item.example);
689
+ // Replace placeholders in example
690
+ if (typeof exampleText === 'string') {
691
+ exampleText = this.replacePlaceholders(exampleText, moduleName, moduleConfig);
692
+ exampleText = exampleText.replace('{project-root}/', '');
693
+ }
566
694
  message += chalk.dim(` (e.g., ${exampleText})`);
567
695
  }
568
696
 
697
+ // Build the question object
569
698
  const question = {
570
699
  type: questionType,
571
700
  name: questionName,
572
701
  message: message,
573
- default: defaultValue,
574
702
  };
575
703
 
704
+ // Set default - if it's dynamic, use a function that inquirer will evaluate with current answers
705
+ // But if we have an existing value, always use that instead
706
+ if (existingValue !== null && existingValue !== undefined && questionType !== 'list') {
707
+ question.default = existingValue;
708
+ } else if (dynamicDefault && typeof item.default === 'string') {
709
+ const originalDefault = item.default;
710
+ question.default = (answers) => {
711
+ // Replace placeholders using answers from previous questions in the same batch
712
+ let resolved = originalDefault;
713
+ resolved = resolved.replaceAll(/{([^}]+)}/g, (match, fieldName) => {
714
+ // Look for the answer in the current batch (prefixed with module name)
715
+ const answerKey = `${moduleName}_${fieldName}`;
716
+ if (answers[answerKey] !== undefined) {
717
+ return answers[answerKey];
718
+ }
719
+ // Fall back to collected config
720
+ return this.collectedConfig[moduleName]?.[fieldName] || match;
721
+ });
722
+ // Strip {project-root}/ for cleaner display
723
+ if (resolved.includes('{project-root}/')) {
724
+ resolved = resolved.replace('{project-root}/', '');
725
+ }
726
+ return resolved;
727
+ };
728
+ } else {
729
+ question.default = defaultValue;
730
+ }
731
+
576
732
  // Add choices for select types
577
733
  if (choices) {
578
734
  question.choices = choices;
@@ -584,6 +740,23 @@ class ConfigCollector {
584
740
  if (!input && item.required) {
585
741
  return 'This field is required';
586
742
  }
743
+ // Validate against regex pattern if provided
744
+ if (input && item.regex) {
745
+ const regex = new RegExp(item.regex);
746
+ if (!regex.test(input)) {
747
+ return `Invalid format. Must match pattern: ${item.regex}`;
748
+ }
749
+ }
750
+ return true;
751
+ };
752
+ }
753
+
754
+ // Add validation for checkbox (multi-select) fields
755
+ if (questionType === 'checkbox' && item.required) {
756
+ question.validate = (answers) => {
757
+ if (!answers || answers.length === 0) {
758
+ return 'At least one option must be selected';
759
+ }
587
760
  return true;
588
761
  };
589
762
  }