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
@@ -1,1176 +0,0 @@
1
- # BMAD Custom Module Installer - Implementation Plan
2
-
3
- **Document Version**: 1.0
4
- **Date**: 2025-10-19
5
- **Status**: Planning Phase
6
- **Owner**: CLI Chief (Scott) + BMad
7
-
8
- ---
9
-
10
- ## Executive Summary
11
-
12
- This document outlines the architecture and implementation plan for a new BMAD CLI tool that enables installation of **custom modules from any location**. This tool is critical for the future of BMAD as an extensible framework where module authors can create and distribute modules independently of the core BMAD repository.
13
-
14
- ### The Vision
15
-
16
- - **Core as npm package**: Future state where `@bmad/core` is an npm package with CLI tools
17
- - **Custom modules**: Module authors use BMad Builder (BMB) to create standalone modules
18
- - **Universal installer**: A CLI tool that can install any valid BMAD module from any path
19
- - **IDE integration**: Compiled agents work with 14+ IDE environments (Codex, Cursor, Windsurf, etc.)
20
-
21
- ---
22
-
23
- ## Problem Statement
24
-
25
- ### Current Limitations
26
-
27
- The existing `bmad install` command (tools/cli/commands/install.js) is hardcoded to:
28
-
29
- - Discover modules ONLY from `src/modules/` directory
30
- - Install bundled modules (BMM, BMB, CIS) that ship with the framework
31
- - Cannot handle external/custom modules from arbitrary filesystem locations
32
-
33
- **Code Reference**: `tools/cli/installers/lib/modules/manager.js:27`
34
-
35
- ```javascript
36
- this.modulesSourcePath = getSourcePath('modules'); // Hardcoded to src/modules/
37
- ```
38
-
39
- ### Real-World Use Case
40
-
41
- - User has a custom foo module at `/Users/username/dev/foo` (standalone folder)
42
- - Module has agents that need compilation (YAML → Markdown with XML)
43
- - Module needs IDE integration (generate commands for Claude Code, etc.)
44
- - Current installer cannot handle this - module must be in `src/modules/foo` to be discovered
45
-
46
- ---
47
-
48
- ## Critical Architectural Understanding
49
-
50
- ### Module Structure (SOURCE - What Authors Create)
51
-
52
- **CORRECT STRUCTURE:**
53
-
54
- ```
55
- my-custom-module/
56
- ├── agents/
57
- │ └── my-agent.agent.yaml ← Required: At least one agent
58
- ├── workflows/ ← Optional: Workflow definitions
59
- │ └── my-workflow/
60
- │ ├── README.md
61
- │ └── workflow.yaml
62
- └── _module-installer/ ← Required: Installation configuration
63
- ├── install-config.yaml ← REQUIRED: Defines config questions
64
- └── installer.js ← OPTIONAL: Custom install hooks
65
- ```
66
-
67
- **CRITICAL: NO config.yaml in source!**
68
-
69
- - The `config.yaml` is GENERATED at install time from user answers
70
- - Source modules use `_module-installer/install-config.yaml` to define questions
71
- - The legacy pattern of having `config.yaml` in source is being deprecated
72
-
73
- ### Module Structure (INSTALLED - What Gets Generated)
74
-
75
- ```
76
- {target-project}/bmad/my-custom-module/
77
- ├── agents/
78
- │ └── my-agent.md ← Compiled from .agent.yaml
79
- ├── workflows/
80
- │ └── my-workflow/
81
- └── config.yaml ← GENERATED from user answers during install
82
- ```
83
-
84
- **Key Points:**
85
-
86
- - `_module-installer/` directory is NOT copied to target (only used during install)
87
- - Agents are compiled from YAML to Markdown with XML
88
- - `config.yaml` is generated fresh for each installation
89
-
90
- ### Example: install-config.yaml
91
-
92
- **Reference**: `/src/modules/bmm/_module-installer/install-config.yaml`
93
-
94
- ```yaml
95
- # Module metadata
96
- code: bmm
97
- name: 'BMM: BMad Method Agile-AI Driven-Development'
98
- default_selected: true
99
-
100
- # Optional welcome message
101
- prompt:
102
- - 'Thank you for choosing the BMAD™ Method...'
103
- - 'All paths are relative to project root, with no leading slash.'
104
-
105
- # Configuration questions
106
- project_name:
107
- prompt: 'What is the title of your project?'
108
- default: '{directory_name}'
109
- result: '{value}'
110
-
111
- user_skill_level:
112
- prompt:
113
- - 'What is your technical experience level?'
114
- default: 'intermediate'
115
- result: '{value}'
116
- single-select:
117
- - value: 'beginner'
118
- label: 'Beginner - New to development'
119
- - value: 'intermediate'
120
- label: 'Intermediate - Familiar with development'
121
- - value: 'expert'
122
- label: 'Expert - Deep technical knowledge'
123
-
124
- tech_docs:
125
- prompt: 'Where is Technical Documentation located?'
126
- default: 'docs'
127
- result: '{project-root}/{value}'
128
- ```
129
-
130
- **How ConfigCollector Uses This:**
131
-
132
- 1. Reads `install-config.yaml` from source module
133
- 2. Builds interactive prompts for each config item
134
- 3. Collects user answers
135
- 4. Processes answers with variable substitution (`{value}`, `{project-root}`, etc.)
136
- 5. Generates `config.yaml` in installed module location
137
-
138
- **Code Reference**: `tools/cli/installers/lib/core/config-collector.js:108-122`
139
-
140
- ---
141
-
142
- ## Current CLI Architecture
143
-
144
- ### Installation Flow (Existing System)
145
-
146
- ```
147
- User runs: npm run install:bmad
148
-
149
- 1. Command Handler (commands/install.js)
150
- ├── Prompts for target directory, modules, IDEs
151
- └── Calls Installer.install(config)
152
-
153
- 2. Installer (installers/lib/core/installer.js)
154
- ├── Validates target directory
155
- ├── Resolves module dependencies
156
- ├── Calls ModuleManager.install() for each module
157
- ├── Calls IdeManager.setup() for each IDE
158
- └── Generates manifests
159
-
160
- 3. ModuleManager (installers/lib/modules/manager.js)
161
- ├── Discovers modules from src/modules/ ONLY
162
- ├── Copies module files to {target}/bmad/{module}/
163
- ├── Compiles agents using YamlXmlBuilder
164
- └── Runs module-specific installer if exists
165
-
166
- 4. ConfigCollector (installers/lib/core/config-collector.js)
167
- ├── Reads _module-installer/install-config.yaml
168
- ├── Prompts user for configuration
169
- ├── Generates config.yaml in target
170
-
171
- 5. IdeManager (installers/lib/ide/manager.js)
172
- ├── For each selected IDE (codex, windsurf, cursor, etc.)
173
- ├── Creates IDE-specific artifacts
174
- │ - Claude Code: .claude/commands/*.md
175
- │ - Windsurf: .windsurf/workflows/*.yaml
176
- │ - Cursor: .cursor/rules/*.txt
177
- └── Runs platform-specific hooks
178
-
179
- 6. ManifestGenerator (installers/lib/core/manifest-generator.js)
180
- ├── manifest.yaml (installation metadata)
181
- ├── workflow-manifest.csv (workflow catalog)
182
- ├── agent-manifest.csv (agent metadata)
183
- └── files-manifest.csv (file integrity hashes)
184
- ```
185
-
186
- ### Key Components (Reusable for Custom Installer)
187
-
188
- **Agent Compilation Engine:**
189
-
190
- - `tools/cli/lib/yaml-xml-builder.js` - YamlXmlBuilder class
191
- - `tools/cli/lib/activation-builder.js` - Generates activation blocks
192
- - `tools/cli/lib/agent-analyzer.js` - Detects required handlers
193
- - `src/utility/models/fragments/*.xml` - Reusable XML fragments
194
-
195
- **Installation Infrastructure:**
196
-
197
- - `tools/cli/installers/lib/core/config-collector.js` - ConfigCollector class
198
- - `tools/cli/installers/lib/ide/manager.js` - IdeManager class
199
- - `tools/cli/installers/lib/core/manifest-generator.js` - ManifestGenerator class
200
- - `tools/cli/installers/lib/modules/manager.js` - ModuleManager class (needs adaptation)
201
-
202
- **Key Insight**: 80% of the code we need already exists! We just need to:
203
-
204
- 1. Create a new command handler
205
- 2. Adapt ModuleManager to accept external paths
206
- 3. Wire everything together
207
-
208
- ---
209
-
210
- ## Proposed Architecture
211
-
212
- ### New Command: `install-module`
213
-
214
- **Purpose**: Install a custom module from any filesystem location
215
-
216
- **Usage:**
217
-
218
- ```bash
219
- # Interactive mode
220
- install-module
221
- ```
222
-
223
- ### System Architecture
224
-
225
- ```
226
- ┌──────────────────────────────────────────────────────────────┐
227
- │ NEW: install-module Command │
228
- │ File: tools/cli/commands/install-module.js │
229
- │ │
230
- │ Responsibilities: │
231
- │ - Parse command-line flags │
232
- │ - Prompt for missing information (interactive mode) │
233
- │ - Validate inputs │
234
- │ - Call CustomModuleInstaller │
235
- └──────────────────────────────────────────────────────────────┘
236
-
237
- ┌───────────────────────────────────────────────────────────────┐
238
- │ NEW: CustomModuleInstaller Class │
239
- │ File: tools/cli/installers/lib/core/custom-module-installer.js│
240
- │ │
241
- │ Responsibilities: │
242
- │ 1. Validate source module structure (ModuleValidator) │
243
- │ 2. Ensure core is installed in target │
244
- │ 3. Collect module configuration (ConfigCollector) │
245
- │ 4. Install module files (ModuleManager) │
246
- │ 5. Compile agents (YamlXmlBuilder) │
247
- │ 6. Generate IDE artifacts (IdeManager) │
248
- │ 7. Update manifests (ManifestGenerator) │
249
- │ 8. Run custom installer hooks (if exists) │
250
- └───────────────────────────────────────────────────────────────┘
251
-
252
- ┌──────────────────────────────────────────────────────────────┐
253
- │ NEW: ModuleValidator Class │
254
- │ File: tools/cli/installers/lib/core/module-validator.js │
255
- │ │
256
- │ Validates: │
257
- │ ✓ _module-installer/install-config.yaml exists │
258
- │ ✓ At least one agents/*.agent.yaml exists │
259
- │ ✓ Module metadata is valid │
260
- │ ⚠ Warns if legacy config.yaml found in source │
261
- │ ✗ Fails if required structure missing │
262
- └──────────────────────────────────────────────────────────────┘
263
-
264
- ┌──────────────────────────────────────────────────────────────┐
265
- │ REUSED: Existing Infrastructure │
266
- │ │
267
- │ - ConfigCollector (configuration prompts) │
268
- │ - YamlXmlBuilder (agent compilation) │
269
- │ - IdeManager (IDE integration) │
270
- │ - ManifestGenerator (tracking) │
271
- │ - ModuleManager (file operations) │
272
- └──────────────────────────────────────────────────────────────┘
273
- ```
274
-
275
- ---
276
-
277
- ## Detailed Installation Flow
278
-
279
- ### Phase 1: Validation
280
-
281
- ```
282
- Input: --source /path/to/custom-module
283
-
284
- 1. ModuleValidator.validate(sourcePath)
285
- ├── Check: _module-installer/install-config.yaml exists
286
- ├── Check: agents/ directory exists
287
- ├── Check: At least one *.agent.yaml in agents/
288
- ├── Parse: install-config.yaml for metadata
289
- │ - Extract: code, name, version
290
- │ - Extract: dependencies (if any)
291
- │ - Extract: core_version requirement
292
- ├── Warn: If legacy config.yaml found in source
293
- └── Return: { valid: true/false, errors: [], warnings: [], metadata: {} }
294
-
295
- 2. If invalid:
296
- ├── Display all errors clearly
297
- └── Exit with helpful message + link to module authoring guide
298
- ```
299
-
300
- ### Phase 2: Core Dependency Check
301
-
302
- ```
303
- Input: --target /path/to/project
304
-
305
- 1. Check if core installed:
306
- ├── Look for: {target}/bmad/core/
307
- ├── Validate: core/config.yaml exists
308
- └── Check version compatibility
309
-
310
- 2. If core NOT installed:
311
- ├── Display message: "Core framework required but not found"
312
- ├── Prompt: "Install core framework now? (Y/n)"
313
- ├── If yes: Run core installer
314
- │ └── Use existing Installer.installCore() or similar
315
- ├── If no: Exit with error
316
- └── After core install: Continue to Phase 3
317
-
318
- 3. If core installed but incompatible version:
319
- ├── Display warning with version mismatch details
320
- ├── Prompt: "Continue anyway? (may cause issues)"
321
- └── Respect user choice
322
- ```
323
-
324
- ### Phase 3: Configuration Collection
325
-
326
- ```
327
- Input: Module's install-config.yaml
328
-
329
- 1. ConfigCollector.collectModuleConfig(moduleName, projectDir)
330
- ├── Read: {source}/_module-installer/install-config.yaml
331
- ├── Display: Module welcome prompt (if defined)
332
- ├── Build questions:
333
- │ - Text inputs
334
- │ - Single-select (radio)
335
- │ - Multi-select (checkboxes)
336
- │ - Confirmations
337
- ├── Check for existing values:
338
- │ - If module already installed, load existing config
339
- │ - Prompt: "Use existing value or change?"
340
- ├── Prompt user interactively (or use --config-file in non-interactive mode)
341
- └── Return: { key: value } answers object
342
-
343
- 2. Process answers with variable substitution:
344
- ├── {value} → actual answer
345
- ├── {project-root} → absolute target path
346
- ├── {directory_name} → basename of target directory
347
- ├── {value:other_key} → reference another config value
348
- └── Return: Final configuration object
349
-
350
- 3. Store configuration (will be written in Phase 5)
351
- ```
352
-
353
- ### Phase 4: File Installation
354
-
355
- ```
356
- Input: Source module path, Target bmad directory
357
-
358
- 1. ModuleManager.installFromPath(sourcePath, bmadDir, fileTrackingCallback)
359
- ├── Determine module name from metadata
360
- ├── Create target directory: {bmadDir}/{module-name}/
361
- ├── Copy files with filtering:
362
- │ ├── COPY: agents/ (all files)
363
- │ ├── COPY: workflows/ (strip web_bundle sections from workflow.yaml)
364
- │ ├── SKIP: _module-installer/ (not needed in target)
365
- │ ├── SKIP: config.yaml from source (if exists - legacy)
366
- │ ├── SKIP: *.bak files
367
- │ └── SKIP: Agents with localskip="true" (web-only agents)
368
- └── Track all copied files for manifest generation
369
-
370
- 2. File tracking callback:
371
- └── Store: { path, hash } for each file (for files-manifest.csv)
372
- ```
373
-
374
- ### Phase 5: Agent Compilation
375
-
376
- ```
377
- Input: Installed module path
378
-
379
- 1. For each agents/*.agent.yaml:
380
- ├── Read YAML file
381
- ├── Check for customize.yaml (sidecar file)
382
- ├── Merge if exists: agent.yaml + customize.yaml
383
- ├── YamlXmlBuilder.build(agentData, options)
384
- │ - forWebBundle: false (IDE mode)
385
- │ - includeMetadata: true
386
- │ - skipActivation: false
387
- ├── AgentAnalyzer.analyze(agentData)
388
- │ - Detect: Which handlers are used (workflow, exec, tmpl, data, action)
389
- ├── ActivationBuilder.build(handlers)
390
- │ - Load: activation-steps.xml (base)
391
- │ - Inject: Only needed handler fragments
392
- ├── Generate: Markdown file with XML
393
- └── Write: {bmadDir}/{module}/agents/{name}.md
394
-
395
- 2. Result:
396
- └── Compiled agents ready for IDE consumption
397
- ```
398
-
399
- ### Phase 6: Configuration File Generation
400
-
401
- ```
402
- Input: Collected configuration from Phase 3
403
-
404
- 1. Build config.yaml content:
405
- ├── Add: Module metadata (code, name, version)
406
- ├── Add: All configuration values from user answers
407
- ├── Add: Installation metadata
408
- │ - installed_date
409
- │ - installed_version
410
- └── Add: User info from core config
411
- - user_name
412
- - communication_language
413
- - output_folder
414
-
415
- 2. Write config.yaml:
416
- └── {bmadDir}/{module}/config.yaml
417
-
418
- 3. This is the ONLY config.yaml that exists after installation
419
- ```
420
-
421
- ### Phase 7: IDE Integration
422
-
423
- ```
424
- Input: Selected IDEs (codex, windsurf, cursor, etc.)
425
-
426
- 1. IdeManager.setup(selectedIdes, bmadDir, projectRoot)
427
- ├── For each IDE:
428
- │ ├── Load IDE handler: ide/{ide-code}.js
429
- │ ├── Call: handler.setup()
430
- │ ├── Call: handler.createArtifacts()
431
- │ │ └── Generate IDE-specific files
432
- │ └── Run: Platform-specific hooks if defined
433
- │ - Check: {source}/_module-installer/platform-specifics/{ide}.js
434
- │ - Execute if exists
435
- └── Examples:
436
- - Claude Code: .claude/commands/bmad/{module}/agents/*.md
437
- - Windsurf: .windsurf/workflows/bmad-{module}-*.yaml
438
- - Cursor: .cursor/rules/bmad-{module}.txt
439
-
440
- 2. Workflow Command Generation:
441
- ├── Read: workflow-manifest.csv (from Phase 8)
442
- ├── For each workflow in module:
443
- │ └── Generate: IDE command to launch workflow
444
- └── Format varies by IDE
445
- ```
446
-
447
- ### Phase 8: Manifest Updates
448
-
449
- ```
450
- Input: Installation details, installed files, module metadata
451
-
452
- 1. ManifestGenerator.update(bmadDir, installData)
453
- ├── Update: {bmadDir}/_cfg/manifest.yaml
454
- │ - Add module to installed_modules[]
455
- │ - Add custom_modules[] section (track source path)
456
- │ - Update: last_modified timestamp
457
-
458
- ├── Update: {bmadDir}/_cfg/agent-manifest.csv
459
- │ - Add row for each agent
460
- │ - Columns: module, agent_path, agent_name, role, identity_summary,
461
- │ communication_style, expertise, approach, responsibilities, workflows
462
-
463
- ├── Update: {bmadDir}/_cfg/workflow-manifest.csv
464
- │ - Add row for each workflow
465
- │ - Columns: module, workflow_path, workflow_name, description, scale_level
466
-
467
- ├── Update: {bmadDir}/_cfg/files-manifest.csv
468
- │ - Add row for each installed file
469
- │ - Columns: file_path, file_type, module, hash (SHA256)
470
-
471
- └── Update: {bmadDir}/_cfg/task-manifest.csv (if tasks exist - legacy)
472
-
473
- 2. Manifest purposes:
474
- - Update detection (compare file hashes)
475
- - Installation integrity validation
476
- - Rollback capability
477
- - IDE artifact generation
478
- - Documentation generation
479
- ```
480
-
481
- ### Phase 9: Custom Installer Hooks
482
-
483
- ```
484
- Input: Module's _module-installer/installer.js (if exists)
485
-
486
- 1. Check for custom installer:
487
- └── {source}/_module-installer/installer.js
488
-
489
- 2. If exists:
490
- ├── Load module: require(installerPath)
491
- ├── Validate: exports.install is a function
492
- ├── Prepare context:
493
- │ {
494
- │ projectRoot: '/path/to/project',
495
- │ config: { collected user configuration },
496
- │ installedIDEs: ['codex', 'windsurf'],
497
- │ logger: { log, error, warn }
498
- │ }
499
- ├── Execute: await installer.install(context)
500
- └── Handle errors gracefully
501
-
502
- 3. Custom installer use cases:
503
- - Create subagent variations
504
- - Set up additional project files
505
- - Run initialization scripts
506
- - Configure external dependencies
507
- ```
508
-
509
- ### Phase 10: Validation & Completion
510
-
511
- ```
512
- 1. Validate installation:
513
- ├── Check: All manifest files exist
514
- ├── Verify: Agent files compiled successfully
515
- ├── Verify: IDE artifacts created
516
- ├── Validate: File hashes match manifest
517
- └── Check: No errors during installation
518
-
519
- 2. Display success message:
520
- ├── Show: Module name and version
521
- ├── Show: Installation location
522
- ├── Show: Installed agents count
523
- ├── Show: IDE integrations configured
524
- └── Show: Next steps
525
-
526
- 3. Next steps message:
527
- - How to use the module
528
- - How to verify IDE integration
529
- - Link to module documentation
530
- - How to update or uninstall
531
- ```
532
-
533
- ---
534
-
535
- ## Implementation Checklist
536
-
537
- ### New Files to Create
538
-
539
- 1. **`tools/cli/commands/install-module.js`**
540
- - Command handler for `bmad install-module`
541
- - CLI argument parsing
542
- - Interactive prompts for missing info
543
- - Call CustomModuleInstaller
544
-
545
- 2. **`tools/cli/installers/lib/core/custom-module-installer.js`**
546
- - CustomModuleInstaller class
547
- - Main orchestration logic
548
- - Coordinate all phases (1-10)
549
- - Error handling and rollback
550
-
551
- 3. **`tools/cli/installers/lib/core/module-validator.js`**
552
- - ModuleValidator class
553
- - Validate module structure
554
- - Check required files
555
- - Parse and validate metadata
556
- - Return detailed validation results
557
-
558
- 4. **`tools/cli/installers/lib/core/core-installer.js`** (optional)
559
- - CoreInstaller class
560
- - Install just the core framework
561
- - Can be extracted from existing Installer class
562
-
563
- ### Files to Modify
564
-
565
- 5. **`tools/cli/installers/lib/modules/manager.js`**
566
- - Add: `installFromPath(sourcePath, bmadDir, ...)` method
567
- - Adapt existing `install()` logic to work with external paths
568
- - Keep existing functionality intact (backward compatibility)
569
-
570
- 6. **`tools/cli/installers/lib/core/manifest-generator.js`**
571
- - Add: Support for tracking custom module source paths
572
- - Add: `custom_modules` section in manifest.yaml
573
- - Format:
574
- ```yaml
575
- custom_modules:
576
- - name: my-module
577
- source_path: /path/to/source/my-module
578
- installed_date: 2025-10-19
579
- version: 1.0.0
580
- ```
581
-
582
- 7. **`tools/cli/bmad-cli.js`**
583
- - Already dynamically loads commands, no changes needed
584
- - New command will be auto-discovered
585
-
586
- ### Files to Document
587
-
588
- 8. **`docs/custom-module-authoring-guide.md`** (new)
589
- - How to create a custom module
590
- - Required structure and files
591
- - install-config.yaml format
592
- - Best practices
593
- - Testing your module
594
- - Distribution strategies
595
-
596
- 9. **`tools/cli/README.md`** (update)
597
- - Add documentation for `install-module` command
598
- - Update architecture diagrams
599
- - Add examples
600
-
601
- ### Testing Strategy
602
-
603
- 10. **Test with existing BMD module**
604
- - Source: `/Users/brianmadison/dev/BMAD-METHOD/bmd`
605
- - Target: Test project
606
- - Validate: All phases work correctly
607
-
608
- 11. **Create test fixtures**
609
- - Minimal valid module
610
- - Module with all optional features
611
- - Invalid modules (for error testing)
612
-
613
- 12. **IDE integration tests**
614
- - Test with Claude Code
615
- - Test with Windsurf
616
- - Verify artifact generation
617
-
618
- ---
619
-
620
- ## Code Examples
621
-
622
- ### Example: ModuleValidator.validate()
623
-
624
- ```javascript
625
- // tools/cli/installers/lib/core/module-validator.js
626
-
627
- const path = require('node:path');
628
- const fs = require('fs-extra');
629
- const yaml = require('js-yaml');
630
-
631
- class ModuleValidator {
632
- async validate(sourcePath) {
633
- const result = {
634
- valid: false,
635
- errors: [],
636
- warnings: [],
637
- metadata: null,
638
- };
639
-
640
- // 1. Check _module-installer/install-config.yaml
641
- const installConfigPath = path.join(sourcePath, '_module-installer', 'install-config.yaml');
642
-
643
- if (!(await fs.pathExists(installConfigPath))) {
644
- result.errors.push('Missing required file: _module-installer/install-config.yaml');
645
- } else {
646
- // Parse and validate
647
- try {
648
- const content = await fs.readFile(installConfigPath, 'utf8');
649
- const config = yaml.load(content);
650
-
651
- // Extract metadata
652
- result.metadata = {
653
- code: config.code,
654
- name: config.name,
655
- version: config.version || '1.0.0',
656
- dependencies: config.dependencies || [],
657
- core_version: config.core_version,
658
- };
659
-
660
- // Validate required metadata
661
- if (!config.code) {
662
- result.errors.push('install-config.yaml missing required field: code');
663
- }
664
- if (!config.name) {
665
- result.errors.push('install-config.yaml missing required field: name');
666
- }
667
- } catch (error) {
668
- result.errors.push(`Invalid install-config.yaml: ${error.message}`);
669
- }
670
- }
671
-
672
- // 2. Check agents/ directory
673
- const agentsPath = path.join(sourcePath, 'agents');
674
- if (!(await fs.pathExists(agentsPath))) {
675
- result.errors.push('Missing required directory: agents/');
676
- } else {
677
- const agentFiles = await fs.readdir(agentsPath);
678
- const yamlAgents = agentFiles.filter((f) => f.endsWith('.agent.yaml'));
679
-
680
- if (yamlAgents.length === 0) {
681
- result.errors.push('No agent YAML files found in agents/ directory');
682
- } else {
683
- result.metadata = result.metadata || {};
684
- result.metadata.agent_count = yamlAgents.length;
685
- }
686
- }
687
-
688
- // 3. Warn about legacy config.yaml
689
- const legacyConfigPath = path.join(sourcePath, 'config.yaml');
690
- if (await fs.pathExists(legacyConfigPath)) {
691
- result.warnings.push(
692
- 'Found config.yaml in module source. This is legacy and will be ignored. ' +
693
- 'The installer will generate config.yaml from user input. ' +
694
- 'Use _module-installer/install-config.yaml instead.',
695
- );
696
- }
697
-
698
- // 4. Check for workflows (optional but log if missing)
699
- const workflowsPath = path.join(sourcePath, 'workflows');
700
- if (!(await fs.pathExists(workflowsPath))) {
701
- result.warnings.push('No workflows/ directory found (optional but recommended)');
702
- }
703
-
704
- // Set valid flag
705
- result.valid = result.errors.length === 0;
706
-
707
- return result;
708
- }
709
- }
710
-
711
- module.exports = { ModuleValidator };
712
- ```
713
-
714
- ### Example: CustomModuleInstaller.install()
715
-
716
- ```javascript
717
- // tools/cli/installers/lib/core/custom-module-installer.js
718
-
719
- const chalk = require('chalk');
720
- const ora = require('ora');
721
- const { ModuleValidator } = require('./module-validator');
722
- const { ConfigCollector } = require('./config-collector');
723
- const { ModuleManager } = require('../modules/manager');
724
- const { IdeManager } = require('../ide/manager');
725
- const { ManifestGenerator } = require('./manifest-generator');
726
-
727
- class CustomModuleInstaller {
728
- constructor() {
729
- this.validator = new ModuleValidator();
730
- this.configCollector = new ConfigCollector();
731
- this.moduleManager = new ModuleManager();
732
- this.ideManager = new IdeManager();
733
- this.manifestGenerator = new ManifestGenerator();
734
- }
735
-
736
- async install(options) {
737
- const { sourcePath, targetPath, selectedIdes } = options;
738
-
739
- console.log(chalk.cyan('\n🔧 BMAD Custom Module Installer\n'));
740
-
741
- // PHASE 1: Validate source module
742
- console.log(chalk.bold('Phase 1: Validating module structure...'));
743
- const validation = await this.validator.validate(sourcePath);
744
-
745
- if (!validation.valid) {
746
- console.error(chalk.red('\n❌ Module validation failed:\n'));
747
- validation.errors.forEach((err) => console.error(chalk.red(` - ${err}`)));
748
- throw new Error('Invalid module structure');
749
- }
750
-
751
- if (validation.warnings.length > 0) {
752
- console.log(chalk.yellow('\n⚠️ Warnings:'));
753
- validation.warnings.forEach((warn) => console.log(chalk.yellow(` - ${warn}`)));
754
- }
755
-
756
- console.log(chalk.green('✓ Module structure valid'));
757
- console.log(chalk.dim(` Module: ${validation.metadata.name}`));
758
- console.log(chalk.dim(` Code: ${validation.metadata.code}`));
759
- console.log(chalk.dim(` Agents: ${validation.metadata.agent_count}`));
760
-
761
- // PHASE 2: Check core dependency
762
- console.log(chalk.bold('\nPhase 2: Checking core framework...'));
763
- const bmadDir = path.join(targetPath, 'bmad');
764
- const coreInstalled = await this.checkCoreInstalled(bmadDir);
765
-
766
- if (!coreInstalled) {
767
- // Prompt to install core
768
- const shouldInstall = await this.promptInstallCore();
769
- if (shouldInstall) {
770
- await this.installCore(targetPath);
771
- } else {
772
- throw new Error('Core framework required for module installation');
773
- }
774
- }
775
-
776
- console.log(chalk.green('✓ Core framework available'));
777
-
778
- // PHASE 3: Collect configuration
779
- console.log(chalk.bold('\nPhase 3: Collecting module configuration...'));
780
- const config = await this.configCollector.collectModuleConfigFromPath(sourcePath, validation.metadata.code, targetPath);
781
- console.log(chalk.green('✓ Configuration collected'));
782
-
783
- // PHASE 4-6: Install module files and compile agents
784
- console.log(chalk.bold('\nPhase 4-6: Installing module and compiling agents...'));
785
- const spinner = ora('Installing module files...').start();
786
-
787
- const installResult = await this.moduleManager.installFromPath(sourcePath, bmadDir, (file) => this.trackFile(file), {
788
- moduleConfig: config,
789
- installedIDEs: selectedIdes,
790
- });
791
-
792
- spinner.succeed('Module files installed and agents compiled');
793
-
794
- // PHASE 7: IDE integration
795
- if (selectedIdes && selectedIdes.length > 0) {
796
- console.log(chalk.bold('\nPhase 7: Configuring IDE integrations...'));
797
- await this.ideManager.setup(selectedIdes, bmadDir, targetPath);
798
- console.log(chalk.green(`✓ Configured ${selectedIdes.length} IDE(s)`));
799
- }
800
-
801
- // PHASE 8: Update manifests
802
- console.log(chalk.bold('\nPhase 8: Updating manifests...'));
803
- await this.manifestGenerator.updateForCustomModule({
804
- bmadDir,
805
- moduleName: validation.metadata.code,
806
- sourcePath,
807
- metadata: validation.metadata,
808
- installedFiles: this.trackedFiles,
809
- });
810
- console.log(chalk.green('✓ Manifests updated'));
811
-
812
- // PHASE 9: Run custom installer
813
- const customInstallerPath = path.join(sourcePath, '_module-installer', 'installer.js');
814
- if (await fs.pathExists(customInstallerPath)) {
815
- console.log(chalk.bold('\nPhase 9: Running custom installer hooks...'));
816
- await this.runCustomInstaller(customInstallerPath, {
817
- projectRoot: targetPath,
818
- config,
819
- installedIDEs: selectedIdes,
820
- });
821
- console.log(chalk.green('✓ Custom installer completed'));
822
- }
823
-
824
- // PHASE 10: Success
825
- console.log(chalk.green('\n✨ Module installation complete!\n'));
826
- console.log(chalk.cyan('Module:'), chalk.bold(validation.metadata.name));
827
- console.log(chalk.cyan('Location:'), path.join(bmadDir, validation.metadata.code));
828
- console.log(chalk.cyan('Agents:'), validation.metadata.agent_count);
829
-
830
- if (selectedIdes && selectedIdes.length > 0) {
831
- console.log(chalk.cyan('IDE Integration:'), selectedIdes.join(', '));
832
- }
833
-
834
- return { success: true };
835
- }
836
-
837
- trackFile(filePath) {
838
- if (!this.trackedFiles) this.trackedFiles = [];
839
- this.trackedFiles.push(filePath);
840
- }
841
-
842
- // ... other helper methods
843
- }
844
-
845
- module.exports = { CustomModuleInstaller };
846
- ```
847
-
848
- ### Example: ModuleManager.installFromPath()
849
-
850
- ```javascript
851
- // Addition to tools/cli/installers/lib/modules/manager.js
852
-
853
- /**
854
- * Install a module from an external path (not from src/modules/)
855
- * @param {string} sourcePath - Absolute path to module source
856
- * @param {string} bmadDir - Target bmad directory
857
- * @param {Function} fileTrackingCallback - Optional callback to track files
858
- * @param {Object} options - Installation options
859
- */
860
- async installFromPath(sourcePath, bmadDir, fileTrackingCallback = null, options = {}) {
861
- // Read module metadata from install-config.yaml
862
- const installConfigPath = path.join(
863
- sourcePath,
864
- '_module-installer',
865
- 'install-config.yaml'
866
- );
867
-
868
- const configContent = await fs.readFile(installConfigPath, 'utf8');
869
- const config = yaml.load(configContent);
870
- const moduleName = config.code;
871
-
872
- const targetPath = path.join(bmadDir, moduleName);
873
-
874
- // Check if already installed
875
- if (await fs.pathExists(targetPath)) {
876
- console.log(chalk.yellow(`Module '${moduleName}' already installed, updating...`));
877
- await fs.remove(targetPath);
878
- }
879
-
880
- // Copy module files with filtering (reuse existing method)
881
- await this.copyModuleWithFiltering(sourcePath, targetPath, fileTrackingCallback);
882
-
883
- // Process agent files to inject activation block (reuse existing method)
884
- await this.processAgentFiles(targetPath, moduleName);
885
-
886
- // Write generated config.yaml
887
- if (options.moduleConfig) {
888
- const configYamlPath = path.join(targetPath, 'config.yaml');
889
- const configYaml = yaml.dump(options.moduleConfig);
890
- await fs.writeFile(configYamlPath, configYaml, 'utf8');
891
-
892
- if (fileTrackingCallback) {
893
- fileTrackingCallback(configYamlPath);
894
- }
895
- }
896
-
897
- // Call module-specific installer if it exists
898
- if (!options.skipModuleInstaller) {
899
- await this.runModuleInstallerFromPath(sourcePath, bmadDir, options);
900
- }
901
-
902
- return {
903
- success: true,
904
- module: moduleName,
905
- path: targetPath,
906
- };
907
- }
908
-
909
- /**
910
- * Run module-specific installer from external path
911
- */
912
- async runModuleInstallerFromPath(sourcePath, bmadDir, options = {}) {
913
- const installerPath = path.join(sourcePath, '_module-installer', 'installer.js');
914
-
915
- if (!(await fs.pathExists(installerPath))) {
916
- return; // No custom installer
917
- }
918
-
919
- try {
920
- const moduleInstaller = require(installerPath);
921
-
922
- if (typeof moduleInstaller.install === 'function') {
923
- const projectRoot = path.dirname(bmadDir);
924
- const logger = options.logger || {
925
- log: console.log,
926
- error: console.error,
927
- warn: console.warn,
928
- };
929
-
930
- const result = await moduleInstaller.install({
931
- projectRoot,
932
- config: options.moduleConfig || {},
933
- installedIDEs: options.installedIDEs || [],
934
- logger,
935
- });
936
-
937
- if (!result) {
938
- console.warn(chalk.yellow(`Module installer returned false`));
939
- }
940
- }
941
- } catch (error) {
942
- console.error(chalk.red(`Error running module installer: ${error.message}`));
943
- }
944
- }
945
- ```
946
-
947
- ---
948
-
949
- ## Command-Line Interface Design
950
-
951
- ### Interactive Mode
952
-
953
- ```bash
954
- $ bmad install-module
955
-
956
- 🔧 BMAD Custom Module Installer
957
-
958
- ? Module source path: /Users/brianmadison/dev/my-custom-module
959
- ? Target project path: /Users/brianmadison/dev/my-app
960
- ? Select IDEs to integrate with: (Use arrows, space to select)
961
- ◉ codex (Claude Code)
962
- ◯ windsurf (Windsurf)
963
- ◯ cursor (Cursor)
964
- ◯ cline (Cline)
965
-
966
- Validating module structure...
967
- ✓ Module structure valid
968
- Module: My Custom Module
969
- Code: my-module
970
- Agents: 3
971
-
972
- ... (rest of installation)
973
- ```
974
-
975
- ### Non-Interactive Mode
976
-
977
- ```bash
978
- bmad install-module \
979
- --source /path/to/module \
980
- --target /path/to/project \
981
- --ides codex,windsurf \
982
- --non-interactive
983
- ```
984
-
985
- ### With Config File (CI/CD)
986
-
987
- ```bash
988
- # Create config file: module-config.json
989
- {
990
- "project_name": "My Project",
991
- "user_skill_level": "intermediate",
992
- "tech_docs": "docs"
993
- }
994
-
995
- # Install with config
996
- bmad install-module \
997
- --source ./my-module \
998
- --target . \
999
- --ides codex \
1000
- --config-file ./module-config.json \
1001
- --non-interactive
1002
- ```
1003
-
1004
- ---
1005
-
1006
- ## Future Enhancements
1007
-
1008
- ### npm Package Integration
1009
-
1010
- When core becomes `@bmad/core`:
1011
-
1012
- ```bash
1013
- # Install globally
1014
- npm install -g @bmad/core
1015
-
1016
- # Use anywhere
1017
- bmad install-module --source ~/modules/my-module --target ./project
1018
-
1019
- # Or as project dependency
1020
- npm install --save-dev @bmad/core
1021
- npx bmad install-module --source ./custom-module --target .
1022
- ```
1023
-
1024
- ### Module Registry
1025
-
1026
- Future consideration: BMAD module registry
1027
-
1028
- ```bash
1029
- # Publish to registry
1030
- bmad publish-module --source ./my-module
1031
-
1032
- # Install from registry
1033
- bmad install-module my-module # Looks up in registry
1034
-
1035
- # Search registry
1036
- bmad search-module testing
1037
- ```
1038
-
1039
- ### Update Detection
1040
-
1041
- ```bash
1042
- # Check for updates to custom modules
1043
- bmad check-updates
1044
-
1045
- # Update specific module
1046
- bmad update-module my-module --from-source /path/to/latest
1047
- ```
1048
-
1049
- ---
1050
-
1051
- ## Testing Plan
1052
-
1053
- ### Unit Tests
1054
-
1055
- 1. **ModuleValidator tests**
1056
- - Valid module structure
1057
- - Missing required files
1058
- - Invalid metadata
1059
- - Legacy warnings
1060
-
1061
- 2. **ConfigCollector tests**
1062
- - Read install-config.yaml
1063
- - Variable substitution
1064
- - Multi-select handling
1065
-
1066
- 3. **ModuleManager.installFromPath tests**
1067
- - File copying
1068
- - Filtering logic
1069
- - Agent compilation
1070
-
1071
- ### Integration Tests
1072
-
1073
- 1. **End-to-end installation**
1074
- - Install BMD module
1075
- - Verify all files copied
1076
- - Verify agents compiled
1077
- - Verify IDE artifacts created
1078
- - Verify manifests updated
1079
-
1080
- 2. **Error scenarios**
1081
- - Invalid module structure
1082
- - Missing core
1083
- - Installation failures
1084
- - Rollback behavior
1085
-
1086
- ### Manual Testing
1087
-
1088
- 1. **Test with BMD module**
1089
- - Source: `/Users/brianmadison/dev/BMAD-METHOD/bmd`
1090
- - Various IDEs
1091
- - Verify functionality
1092
-
1093
- 2. **Test with minimal module**
1094
- - Create simple test module
1095
- - Verify basic flow works
1096
-
1097
- ---
1098
-
1099
- ## Key Insights & Decisions
1100
-
1101
- ### Why This Approach?
1102
-
1103
- 1. **Reuses 80% of existing code**: YamlXmlBuilder, IdeManager, ConfigCollector, ManifestGenerator all work as-is
1104
-
1105
- 2. **Clean separation**: New CustomModuleInstaller doesn't interfere with existing Installer
1106
-
1107
- 3. **Backward compatible**: Existing `bmad install` continues to work unchanged
1108
-
1109
- 4. **Future-proof**: Architecture supports npm packaging and module registry
1110
-
1111
- 5. **Extensible**: Easy to add new features like update detection, module search, etc.
1112
-
1113
- ### Critical Design Principles
1114
-
1115
- 1. **Source modules NEVER have config.yaml** - it's generated at install time
1116
- 2. **install-config.yaml is the source of truth** for module configuration
1117
- 3. **\_module-installer/ is transient** - used during install, not copied to target
1118
- 4. **Core is always required** - custom modules extend core functionality
1119
- 5. **IDE integration is modular** - easy to add new IDE support
1120
-
1121
- ### Common Pitfalls to Avoid
1122
-
1123
- 1. ❌ Don't copy config.yaml from source
1124
- 2. ❌ Don't skip validation - always validate module structure first
1125
- 3. ❌ Don't ignore legacy warnings - help users modernize
1126
- 4. ❌ Don't forget to update manifests - critical for integrity
1127
- 5. ❌ Don't hardcode paths - use {project-root} placeholders
1128
-
1129
- ---
1130
-
1131
- ## References
1132
-
1133
- ### Key Files to Study
1134
-
1135
- 1. **tools/cli/commands/install.js** - Current installer command
1136
- 2. **tools/cli/installers/lib/core/installer.js** - Main installer orchestration
1137
- 3. **tools/cli/installers/lib/modules/manager.js** - Module management logic
1138
- 4. **tools/cli/installers/lib/core/config-collector.js** - Configuration collection
1139
- 5. **tools/cli/lib/yaml-xml-builder.js** - Agent compilation engine
1140
- 6. **tools/cli/installers/lib/ide/manager.js** - IDE integration
1141
- 7. **src/modules/bmm/\_module-installer/install-config.yaml** - Example config
1142
-
1143
- ### Documentation
1144
-
1145
- 1. **tools/cli/README.md** - CLI documentation
1146
- 2. **CLAUDE.md** - Project conventions and architecture
1147
- 3. **src/modules/bmm/workflows/README.md** - BMM workflow guide
1148
-
1149
- ---
1150
-
1151
- ## Next Steps (When Building)
1152
-
1153
- 1. **Read this document completely**
1154
- 2. **Study the referenced key files** to understand existing patterns
1155
- 3. **Start with ModuleValidator** - it's the simplest and most isolated
1156
- 4. **Then CustomModuleInstaller** - wire everything together
1157
- 5. **Then command handler** - user interface
1158
- 6. **Test incrementally** - validate each phase works before moving on
1159
- 7. **Test with BMD module** - real-world validation
1160
- 8. **Update documentation** - CLI README and create authoring guide
1161
-
1162
- ---
1163
-
1164
- ## Contact & Support
1165
-
1166
- - **Owner**: BMad (user_name from config)
1167
- - **Agent**: Scott - Chief CLI Tooling Officer
1168
- - **Primary Domain**: tools/cli/
1169
- - **Discord**: https://discord.gg/gk8jAdXWmj (#general-dev)
1170
- - **GitHub Issues**: https://github.com/bmad-code-org/BMAD-METHOD/issues
1171
-
1172
- ---
1173
-
1174
- **Document Status**: Ready for implementation
1175
- **Last Updated**: 2025-10-19
1176
- **Version**: 1.0