bmad-method 6.0.0-alpha.2 → 6.0.0-alpha.20

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 (1280) hide show
  1. package/.coderabbit.yaml +40 -0
  2. package/.github/CODE_OF_CONDUCT.md +128 -0
  3. package/.github/ISSUE_TEMPLATE/idea_submission.md +2 -2
  4. package/.github/scripts/discord-helpers.sh +34 -0
  5. package/.github/workflows/bundle-latest.yaml +329 -0
  6. package/.github/workflows/discord.yaml +302 -8
  7. package/.github/workflows/docs.yaml +72 -0
  8. package/.github/workflows/manual-release.yaml +35 -18
  9. package/.github/workflows/quality.yaml +94 -0
  10. package/.husky/pre-commit +4 -0
  11. package/.markdownlint-cli2.yaml +42 -0
  12. package/.prettierignore +7 -0
  13. package/.vscode/settings.json +4 -2
  14. package/CHANGELOG.md +678 -13
  15. package/CONTRIBUTING.md +2 -16
  16. package/LICENSE +1 -1
  17. package/README.md +159 -177
  18. package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  19. package/docs/agent-customization-guide.md +208 -0
  20. package/docs/custom-content-installation.md +149 -0
  21. package/docs/custom-content.md +122 -0
  22. package/docs/document-sharding-guide.md +449 -0
  23. package/docs/getting-started/installation.md +76 -0
  24. package/docs/ide-info/crush.md +1 -1
  25. package/docs/ide-info/cursor.md +7 -7
  26. package/docs/ide-info/iflow.md +3 -3
  27. package/docs/ide-info/index.md +24 -0
  28. package/docs/ide-info/opencode.md +1 -1
  29. package/docs/ide-info/rovo-dev.md +22 -0
  30. package/docs/index.md +143 -0
  31. package/docs/v4-to-v6-upgrade.md +38 -36
  32. package/docs/web-bundles-gemini-gpt-guide.md +21 -0
  33. package/eslint.config.mjs +23 -2
  34. package/package.json +24 -9
  35. package/samples/sample-custom-modules/README.md +11 -0
  36. package/samples/sample-custom-modules/sample-unitary-module/README.md +8 -0
  37. package/samples/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +129 -0
  38. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
  39. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
  40. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
  41. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
  42. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
  43. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
  44. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
  45. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
  46. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith.agent.yaml +109 -0
  47. package/samples/sample-custom-modules/sample-unitary-module/module.yaml +8 -0
  48. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +168 -0
  49. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +155 -0
  50. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +89 -0
  51. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +36 -0
  52. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +36 -0
  53. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +36 -0
  54. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +36 -0
  55. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +36 -0
  56. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +36 -0
  57. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +36 -0
  58. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +36 -0
  59. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +150 -0
  60. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/templates/csv-headers.template +1 -0
  61. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +54 -0
  62. package/samples/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md +26 -0
  63. package/samples/sample-custom-modules/sample-wellness-module/README.md +6 -0
  64. package/samples/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +136 -0
  65. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/foo.md +3 -0
  66. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/addition1.md +1 -0
  67. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
  68. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
  69. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
  70. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
  71. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion.agent.yaml +120 -0
  72. package/samples/sample-custom-modules/sample-wellness-module/module.yaml +17 -0
  73. package/samples/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/README.md +32 -0
  74. package/samples/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/workflow.md +45 -0
  75. package/samples/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/README.md +31 -0
  76. package/samples/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/workflow.md +45 -0
  77. package/samples/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/README.md +31 -0
  78. package/samples/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/workflow.md +45 -0
  79. package/src/core/_module-installer/installer.js +1 -9
  80. package/src/core/agents/bmad-master.agent.yaml +6 -11
  81. package/src/core/module.yaml +25 -0
  82. package/src/core/resources/excalidraw/README.md +160 -0
  83. package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  84. package/src/core/resources/excalidraw/library-loader.md +50 -0
  85. package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
  86. package/src/core/tasks/advanced-elicitation-methods.csv +51 -0
  87. package/src/core/tasks/advanced-elicitation.xml +116 -0
  88. package/src/core/tasks/index-docs.xml +1 -1
  89. package/src/core/tasks/review-adversarial-general.xml +41 -0
  90. package/src/core/tasks/validate-workflow.xml +1 -1
  91. package/src/core/tasks/workflow.xml +126 -57
  92. package/src/core/tools/shard-doc.xml +53 -44
  93. package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
  94. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
  95. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
  96. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
  97. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
  98. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
  99. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
  100. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
  101. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
  102. package/src/core/workflows/brainstorming/template.md +13 -100
  103. package/src/core/workflows/brainstorming/workflow.md +51 -0
  104. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  105. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
  106. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +158 -0
  107. package/src/core/workflows/party-mode/workflow.md +206 -0
  108. package/src/modules/bmb/README.md +12 -119
  109. package/src/modules/bmb/agents/bmad-builder.agent.yaml +77 -41
  110. package/src/modules/bmb/docs/agents/agent-compilation.md +340 -0
  111. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +523 -0
  112. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +363 -0
  113. package/src/modules/bmb/docs/agents/index.md +55 -0
  114. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  115. package/src/modules/bmb/docs/agents/simple-agent-architecture.md +257 -0
  116. package/src/modules/bmb/docs/agents/understanding-agent-types.md +184 -0
  117. package/src/modules/bmb/docs/index.md +247 -0
  118. package/src/modules/bmb/docs/workflows/architecture.md +220 -0
  119. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
  120. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
  121. package/src/modules/bmb/docs/workflows/index.md +45 -0
  122. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
  123. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  124. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
  125. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
  126. package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
  127. package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
  128. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
  129. package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
  130. package/src/modules/bmb/docs/workflows/terms.md +97 -0
  131. package/src/modules/bmb/module.yaml +16 -0
  132. package/src/modules/bmb/reference/README.md +3 -0
  133. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  134. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  135. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  136. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  137. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  138. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  139. package/src/modules/bmb/reference/agents/module-examples/README.md +49 -0
  140. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  141. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  142. package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
  143. package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  144. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  145. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  146. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  147. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
  148. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
  149. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  150. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
  151. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  152. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  153. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  154. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  155. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  156. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  157. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  158. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  159. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  160. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  161. package/src/modules/bmb/workflows/create-agent/data/agent-validation-checklist.md +174 -0
  162. package/src/modules/bmb/workflows/create-agent/data/brainstorm-context.md +153 -0
  163. package/src/modules/bmb/workflows/create-agent/data/communication-presets.csv +61 -0
  164. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
  165. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
  166. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  167. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  168. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  169. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  170. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  171. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  172. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +48 -0
  173. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  174. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  175. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
  176. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  177. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  178. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  179. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  180. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  181. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  182. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  183. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  184. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  185. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  186. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  187. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  188. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  189. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  190. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  191. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  192. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  193. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  194. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
  195. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
  196. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +206 -0
  197. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
  198. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
  199. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +232 -0
  200. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +186 -0
  201. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
  202. package/src/modules/bmb/workflows/create-agent/steps/step-08-celebrate.md +218 -0
  203. package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +3 -0
  204. package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +364 -0
  205. package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +257 -0
  206. package/src/modules/bmb/workflows/create-agent/workflow.md +58 -0
  207. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
  208. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
  209. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
  210. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
  211. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
  212. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
  213. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
  214. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
  215. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
  216. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +309 -0
  217. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +337 -0
  218. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
  219. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +313 -0
  220. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
  221. package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
  222. package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +53 -0
  223. package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
  224. package/src/modules/bmb/workflows/create-module/validation.md +126 -0
  225. package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
  226. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
  227. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
  228. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
  229. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
  230. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
  231. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
  232. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
  233. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
  234. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
  235. package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
  236. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
  237. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
  238. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
  239. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
  240. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
  241. package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
  242. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
  243. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
  244. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
  245. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
  246. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
  247. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
  248. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
  249. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
  250. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
  251. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
  252. package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
  253. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
  254. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
  255. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
  256. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
  257. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
  258. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
  259. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
  260. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
  261. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
  262. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
  263. package/src/modules/bmb/workflows-legacy/edit-module/README.md +171 -0
  264. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +163 -0
  265. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +340 -0
  266. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +34 -0
  267. package/src/modules/bmb/workflows-legacy/module-brief/README.md +264 -0
  268. package/src/modules/bmb/workflows-legacy/module-brief/checklist.md +116 -0
  269. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +268 -0
  270. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +36 -0
  271. package/src/modules/bmgd/_module-installer/installer.js +160 -0
  272. package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
  273. package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
  274. package/src/modules/bmgd/agents/game-architect.agent.yaml +52 -0
  275. package/src/modules/bmgd/agents/game-designer.agent.yaml +60 -0
  276. package/src/modules/bmgd/agents/game-dev.agent.yaml +56 -0
  277. package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
  278. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +63 -0
  279. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
  280. package/src/modules/bmgd/docs/agents-guide.md +407 -0
  281. package/src/modules/bmgd/docs/game-types-guide.md +503 -0
  282. package/src/modules/bmgd/docs/glossary.md +294 -0
  283. package/src/modules/bmgd/docs/index.md +180 -0
  284. package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
  285. package/src/modules/bmgd/docs/quick-start.md +250 -0
  286. package/src/modules/bmgd/docs/troubleshooting.md +259 -0
  287. package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
  288. package/src/modules/bmgd/docs/workflows-guide.md +463 -0
  289. package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
  290. package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
  291. package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
  292. package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
  293. package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
  294. package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
  295. package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
  296. package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
  297. package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
  298. package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
  299. package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
  300. package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
  301. package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
  302. package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
  303. package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
  304. package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
  305. package/src/modules/bmgd/gametest/qa-index.csv +17 -0
  306. package/src/modules/bmgd/module.yaml +64 -0
  307. package/src/modules/bmgd/teams/default-party.csv +12 -0
  308. package/src/modules/bmgd/teams/team-gamedev.yaml +29 -0
  309. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
  310. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
  311. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
  312. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
  313. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
  314. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
  315. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
  316. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +373 -0
  317. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
  318. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
  319. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
  320. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
  321. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
  322. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
  323. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
  324. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
  325. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
  326. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
  327. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
  328. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
  329. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
  330. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
  331. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
  332. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
  333. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
  334. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
  335. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
  336. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
  337. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
  338. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
  339. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
  340. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
  341. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
  342. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
  343. package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
  344. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +101 -0
  345. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +604 -0
  346. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
  347. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
  348. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
  349. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
  350. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
  351. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
  352. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
  353. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
  354. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
  355. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
  356. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
  357. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
  358. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
  359. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +77 -0
  360. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
  361. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
  362. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
  363. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
  364. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
  365. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
  366. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
  367. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
  368. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
  369. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
  370. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
  371. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
  372. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +356 -0
  373. package/src/modules/bmgd/workflows/3-technical/game-architecture/templates/architecture-template.md +103 -0
  374. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
  375. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +98 -0
  376. package/src/modules/bmgd/workflows/3-technical/generate-project-context/project-context-template.md +20 -0
  377. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +201 -0
  378. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +373 -0
  379. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +279 -0
  380. package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +48 -0
  381. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
  382. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
  383. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +64 -0
  384. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
  385. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
  386. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +63 -0
  387. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +358 -0
  388. package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
  389. package/src/modules/bmgd/workflows/4-production/create-story/template.md +49 -0
  390. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +79 -0
  391. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +80 -0
  392. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
  393. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +68 -0
  394. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
  395. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +62 -0
  396. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
  397. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
  398. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  399. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +56 -0
  400. package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
  401. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
  402. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
  403. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
  404. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
  405. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
  406. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
  407. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
  408. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
  409. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
  410. package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
  411. package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
  412. package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
  413. package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
  414. package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
  415. package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
  416. package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
  417. package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
  418. package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
  419. package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
  420. package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  421. package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
  422. package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
  423. package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
  424. package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
  425. package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
  426. package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
  427. package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
  428. package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
  429. package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
  430. package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
  431. package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
  432. package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
  433. package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
  434. package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
  435. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
  436. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
  437. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
  438. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
  439. package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
  440. package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
  441. package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
  442. package/src/modules/bmm/README.md +78 -92
  443. package/src/modules/bmm/_module-installer/installer.js +3 -3
  444. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
  445. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
  446. package/src/modules/bmm/agents/analyst.agent.yaml +32 -23
  447. package/src/modules/bmm/agents/architect.agent.yaml +32 -25
  448. package/src/modules/bmm/agents/dev.agent.yaml +32 -27
  449. package/src/modules/bmm/agents/pm.agent.yaml +30 -30
  450. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +27 -0
  451. package/src/modules/bmm/agents/sm.agent.yaml +35 -44
  452. package/src/modules/bmm/agents/tea.agent.yaml +31 -20
  453. package/src/modules/bmm/agents/tech-writer.agent.yaml +67 -0
  454. package/src/modules/bmm/agents/ux-designer.agent.yaml +35 -20
  455. package/src/modules/bmm/data/README.md +29 -0
  456. package/src/modules/bmm/data/documentation-standards.md +262 -0
  457. package/src/modules/bmm/data/project-context-template.md +40 -0
  458. package/src/modules/bmm/docs/agents-guide.md +144 -0
  459. package/src/modules/bmm/docs/bmad-quick-flow.md +506 -0
  460. package/src/modules/bmm/docs/brownfield-guide.md +748 -0
  461. package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
  462. package/src/modules/bmm/docs/faq.md +542 -0
  463. package/src/modules/bmm/docs/glossary.md +306 -0
  464. package/src/modules/bmm/docs/images/README.md +37 -0
  465. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5034 -0
  466. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -0
  467. package/src/modules/bmm/docs/index.md +168 -0
  468. package/src/modules/bmm/docs/party-mode.md +224 -0
  469. package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
  470. package/src/modules/bmm/docs/quick-spec-flow.md +638 -0
  471. package/src/modules/bmm/docs/quick-start.md +366 -0
  472. package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
  473. package/src/modules/bmm/docs/test-architecture.md +455 -0
  474. package/src/modules/bmm/docs/troubleshooting.md +661 -0
  475. package/src/modules/bmm/docs/workflow-architecture-reference.md +366 -0
  476. package/src/modules/bmm/docs/workflow-document-project-reference.md +489 -0
  477. package/src/modules/bmm/docs/workflows-analysis.md +266 -0
  478. package/src/modules/bmm/docs/workflows-implementation.md +210 -0
  479. package/src/modules/bmm/docs/workflows-planning.md +451 -0
  480. package/src/modules/bmm/docs/workflows-solutioning.md +509 -0
  481. package/src/modules/bmm/module.yaml +56 -0
  482. package/src/modules/bmm/teams/default-party.csv +21 -0
  483. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  484. package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
  485. package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
  486. package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
  487. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
  488. package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
  489. package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  490. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
  491. package/src/modules/bmm/testarch/knowledge/log.md +294 -0
  492. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
  493. package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
  494. package/src/modules/bmm/testarch/knowledge/overview.md +283 -0
  495. package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
  496. package/src/modules/bmm/testarch/tea-index.csv +11 -0
  497. package/src/modules/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  498. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +192 -0
  499. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +165 -0
  500. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +203 -0
  501. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +206 -0
  502. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +209 -0
  503. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +223 -0
  504. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +198 -0
  505. package/src/modules/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  506. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
  507. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
  508. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
  509. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
  510. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
  511. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
  512. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
  513. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
  514. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
  515. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
  516. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
  517. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
  518. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
  519. package/src/modules/bmm/workflows/1-analysis/research/research.template.md +29 -0
  520. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
  521. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
  522. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
  523. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
  524. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
  525. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
  526. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +173 -0
  527. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
  528. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
  529. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +189 -0
  530. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
  531. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
  532. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
  533. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
  534. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
  535. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
  536. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
  537. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
  538. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
  539. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
  540. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
  541. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
  542. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
  543. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +57 -0
  544. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  545. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +12 -58
  546. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  547. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +243 -0
  548. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
  549. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
  550. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
  551. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
  552. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
  553. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
  554. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
  555. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
  556. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
  557. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
  558. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +223 -0
  559. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
  560. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +189 -0
  561. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +177 -0
  562. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
  563. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +138 -0
  564. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
  565. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
  566. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  567. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  568. package/src/modules/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  569. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  570. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  571. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +182 -0
  572. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +163 -0
  573. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +223 -0
  574. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +330 -0
  575. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +317 -0
  576. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +358 -0
  577. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +378 -0
  578. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +358 -0
  579. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +351 -0
  580. package/src/modules/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  581. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
  582. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
  583. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
  584. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
  585. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  586. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  587. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
  588. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
  589. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +34 -36
  590. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  591. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
  592. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +42 -27
  593. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
  594. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +344 -0
  595. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
  596. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -27
  597. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
  598. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
  599. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +9 -10
  600. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1208 -244
  601. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
  602. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +59 -55
  603. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +14 -14
  604. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +21 -8
  605. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  606. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  607. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
  608. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +28 -0
  609. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
  610. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  611. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  612. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  613. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  614. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
  615. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +51 -0
  616. package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
  617. package/src/modules/bmm/workflows/document-project/instructions.md +31 -32
  618. package/src/modules/bmm/workflows/document-project/workflow.yaml +4 -10
  619. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +6 -6
  620. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  621. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
  622. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  623. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  624. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  625. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  626. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  627. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  628. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  629. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  630. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  631. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  632. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  633. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  634. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  635. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  636. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  637. package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  638. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +183 -0
  639. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
  640. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
  641. package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
  642. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +10 -9
  643. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +1 -0
  644. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +26 -5
  645. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
  646. package/src/modules/bmm/workflows/testarch/automate/checklist.md +2 -0
  647. package/src/modules/bmm/workflows/testarch/automate/instructions.md +25 -4
  648. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
  649. package/src/modules/bmm/workflows/testarch/ci/checklist.md +7 -5
  650. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
  651. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
  652. package/src/modules/bmm/workflows/testarch/ci/instructions.md +23 -4
  653. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
  654. package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
  655. package/src/modules/bmm/workflows/testarch/framework/instructions.md +28 -2
  656. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
  657. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +2 -0
  658. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  659. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +2 -0
  660. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
  661. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +7 -6
  662. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +182 -15
  663. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +13 -4
  664. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +13 -11
  665. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +2 -0
  666. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
  667. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +2 -0
  668. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
  669. package/src/modules/bmm/workflows/testarch/trace/checklist.md +1 -0
  670. package/src/modules/bmm/workflows/testarch/trace/instructions.md +11 -9
  671. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +2 -0
  672. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
  673. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +259 -210
  674. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
  675. package/src/modules/bmm/workflows/workflow-status/instructions.md +188 -117
  676. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +122 -0
  677. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +110 -0
  678. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +106 -0
  679. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +96 -0
  680. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  681. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  682. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +7 -5
  683. package/src/modules/cis/_module-installer/installer.js +1 -1
  684. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +15 -9
  685. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +14 -8
  686. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +14 -8
  687. package/src/modules/cis/agents/innovation-strategist.agent.yaml +14 -8
  688. package/src/modules/cis/agents/presentation-master.agent.yaml +61 -0
  689. package/src/modules/cis/agents/storyteller/storyteller-sidecar/stories-told.md +7 -0
  690. package/src/modules/cis/agents/storyteller/storyteller-sidecar/story-preferences.md +7 -0
  691. package/src/modules/cis/agents/storyteller/storyteller.agent.yaml +34 -0
  692. package/src/modules/cis/docs/index.md +149 -0
  693. package/src/modules/cis/module.yaml +11 -0
  694. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  695. package/src/modules/cis/teams/default-party.csv +12 -0
  696. package/src/modules/cis/workflows/README.md +102 -30
  697. package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
  698. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
  699. package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
  700. package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
  701. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
  702. package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
  703. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
  704. package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
  705. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
  706. package/src/utility/agent-components/activation-rules.txt +7 -0
  707. package/src/utility/agent-components/activation-steps.txt +13 -0
  708. package/src/utility/agent-components/agent-command-header.md +1 -0
  709. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  710. package/src/utility/agent-components/handler-action.txt +4 -0
  711. package/src/utility/agent-components/handler-exec.txt +6 -0
  712. package/src/utility/agent-components/handler-multi.txt +14 -0
  713. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  714. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  715. package/src/utility/agent-components/handler-workflow.txt +10 -0
  716. package/src/utility/agent-components/menu-handlers.txt +6 -0
  717. package/test/README.md +2 -2
  718. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +24 -0
  719. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +24 -0
  720. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-wrong-shortcut.agent.yaml +24 -0
  721. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
  722. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +30 -0
  723. package/test/test-agent-schema.js +2 -2
  724. package/test/test-installation-components.js +214 -0
  725. package/tools/build-docs.js +630 -0
  726. package/tools/cli/README.md +1 -588
  727. package/tools/cli/commands/install.js +61 -20
  728. package/tools/cli/installers/install-messages.yaml +52 -0
  729. package/tools/cli/installers/lib/core/config-collector.js +595 -98
  730. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  731. package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
  732. package/tools/cli/installers/lib/core/detector.js +75 -16
  733. package/tools/cli/installers/lib/core/ide-config-manager.js +12 -8
  734. package/tools/cli/installers/lib/core/installer.js +1277 -722
  735. package/tools/cli/installers/lib/core/manifest-generator.js +285 -142
  736. package/tools/cli/installers/lib/core/manifest.js +74 -20
  737. package/tools/cli/installers/lib/custom/handler.js +363 -0
  738. package/tools/cli/installers/lib/ide/_base-ide.js +94 -12
  739. package/tools/cli/installers/lib/ide/antigravity.js +507 -0
  740. package/tools/cli/installers/lib/ide/auggie.js +148 -240
  741. package/tools/cli/installers/lib/ide/claude-code.js +92 -32
  742. package/tools/cli/installers/lib/ide/cline.js +64 -18
  743. package/tools/cli/installers/lib/ide/codex.js +226 -72
  744. package/tools/cli/installers/lib/ide/crush.js +79 -55
  745. package/tools/cli/installers/lib/ide/cursor.js +144 -20
  746. package/tools/cli/installers/lib/ide/gemini.js +180 -35
  747. package/tools/cli/installers/lib/ide/github-copilot.js +154 -57
  748. package/tools/cli/installers/lib/ide/iflow.js +79 -30
  749. package/tools/cli/installers/lib/ide/kilo.js +94 -16
  750. package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
  751. package/tools/cli/installers/lib/ide/manager.js +50 -0
  752. package/tools/cli/installers/lib/ide/opencode.js +66 -22
  753. package/tools/cli/installers/lib/ide/qwen.js +93 -11
  754. package/tools/cli/installers/lib/ide/roo.js +158 -176
  755. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  756. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
  757. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
  758. package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
  759. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
  760. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +241 -0
  761. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  762. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  763. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  764. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  765. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  766. package/tools/cli/installers/lib/ide/trae.js +67 -32
  767. package/tools/cli/installers/lib/ide/windsurf.js +65 -8
  768. package/tools/cli/installers/lib/message-loader.js +85 -0
  769. package/tools/cli/installers/lib/modules/manager.js +785 -97
  770. package/tools/cli/lib/activation-builder.js +8 -13
  771. package/tools/cli/lib/agent/compiler.js +564 -0
  772. package/tools/cli/lib/agent/installer.js +716 -0
  773. package/tools/cli/lib/agent/template-engine.js +152 -0
  774. package/tools/cli/lib/agent-analyzer.js +48 -20
  775. package/tools/cli/lib/agent-party-generator.js +5 -17
  776. package/tools/cli/lib/cli-utils.js +65 -46
  777. package/tools/cli/lib/config.js +7 -4
  778. package/tools/cli/lib/platform-codes.js +2 -2
  779. package/tools/cli/lib/ui.js +1132 -81
  780. package/tools/cli/lib/xml-handler.js +4 -55
  781. package/tools/cli/lib/yaml-format.js +6 -7
  782. package/tools/cli/lib/yaml-xml-builder.js +196 -56
  783. package/tools/flattener/ignoreRules.js +1 -1
  784. package/tools/flattener/xml.js +1 -7
  785. package/tools/lib/xml-utils.js +13 -0
  786. package/tools/maintainer/review-pr-README.md +55 -0
  787. package/tools/maintainer/review-pr.md +242 -0
  788. package/tools/migrate-custom-module-paths.js +124 -0
  789. package/tools/platform-codes.yaml +12 -0
  790. package/tools/schema/agent.js +304 -23
  791. package/tools/validate-agent-schema.js +2 -2
  792. package/tools/validate-svg-changes.sh +356 -0
  793. package/website/css/custom.css +52 -0
  794. package/website/docusaurus.config.js +179 -0
  795. package/website/sidebars.js +157 -0
  796. package/website/src/pages/downloads.md +81 -0
  797. package/website/src/pages/index.js +50 -0
  798. package/website/static/favicon.ico +0 -0
  799. package/website/static/img/logo.svg +4 -0
  800. package/website/static/robots.txt +37 -0
  801. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  802. package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
  803. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  804. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  805. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  806. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  807. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  808. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  809. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  810. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  811. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  812. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  813. package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
  814. package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
  815. package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
  816. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  817. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  818. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  819. package/.claude/commands/bmad/core/workflows/README.md +0 -27
  820. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  821. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  822. package/.claude/hooks/bmad-tts-injector.sh +0 -415
  823. package/.claude/hooks/bmad-voice-manager.sh +0 -511
  824. package/.claude/hooks/check-output-style.sh +0 -112
  825. package/.claude/hooks/download-extra-voices.sh +0 -244
  826. package/.claude/hooks/github-star-reminder.sh +0 -154
  827. package/.claude/hooks/language-manager.sh +0 -392
  828. package/.claude/hooks/learn-manager.sh +0 -475
  829. package/.claude/hooks/personality-manager.sh +0 -438
  830. package/.claude/hooks/piper-download-voices.sh +0 -165
  831. package/.claude/hooks/piper-installer.sh +0 -178
  832. package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
  833. package/.claude/hooks/piper-voice-manager.sh +0 -293
  834. package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
  835. package/.claude/hooks/play-tts-piper.sh +0 -338
  836. package/.claude/hooks/play-tts.sh +0 -100
  837. package/.claude/hooks/provider-commands.sh +0 -540
  838. package/.claude/hooks/provider-manager.sh +0 -298
  839. package/.claude/hooks/replay-target-audio.sh +0 -95
  840. package/.claude/hooks/sentiment-manager.sh +0 -201
  841. package/.claude/hooks/speed-manager.sh +0 -291
  842. package/.claude/hooks/voice-manager.sh +0 -594
  843. package/.claude/hooks/voices-config.sh +0 -70
  844. package/.claude/settings.local.json +0 -41
  845. package/.github/workflows/lint.yaml +0 -61
  846. package/bmad/_cfg/agent-manifest.csv +0 -7
  847. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  848. package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
  849. package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
  850. package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
  851. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  852. package/bmad/_cfg/files-manifest.csv +0 -83
  853. package/bmad/_cfg/manifest.yaml +0 -12
  854. package/bmad/_cfg/task-manifest.csv +0 -5
  855. package/bmad/_cfg/tool-manifest.csv +0 -2
  856. package/bmad/_cfg/workflow-manifest.csv +0 -15
  857. package/bmad/bmb/README.md +0 -132
  858. package/bmad/bmb/agents/bmad-builder.md +0 -70
  859. package/bmad/bmb/config.yaml +0 -14
  860. package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  861. package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  862. package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
  863. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  864. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
  865. package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
  866. package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  867. package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  868. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  869. package/bmad/bmb/workflows/create-agent/README.md +0 -320
  870. package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  871. package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
  872. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  873. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
  874. package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  875. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  876. package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
  877. package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  878. package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
  879. package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  880. package/bmad/bmb/workflows/create-module/README.md +0 -220
  881. package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
  882. package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  883. package/bmad/bmb/workflows/create-module/checklist.md +0 -244
  884. package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
  885. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  886. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  887. package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
  888. package/bmad/bmb/workflows/create-module/instructions.md +0 -581
  889. package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
  890. package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
  891. package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
  892. package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  893. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
  894. package/bmad/bmb/workflows/create-workflow/README.md +0 -277
  895. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  896. package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  897. package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
  898. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  899. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  900. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  901. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  902. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  903. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
  904. package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  905. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
  906. package/bmad/bmb/workflows/edit-agent/README.md +0 -112
  907. package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  908. package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  909. package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  910. package/bmad/bmb/workflows/edit-module/README.md +0 -187
  911. package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
  912. package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
  913. package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  914. package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
  915. package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  916. package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  917. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  918. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
  919. package/bmad/bmb/workflows/module-brief/README.md +0 -264
  920. package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
  921. package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
  922. package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  923. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
  924. package/bmad/bmb/workflows/redoc/README.md +0 -87
  925. package/bmad/bmb/workflows/redoc/checklist.md +0 -99
  926. package/bmad/bmb/workflows/redoc/instructions.md +0 -265
  927. package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  928. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
  929. package/bmad/bmd/README.md +0 -193
  930. package/bmad/bmd/README.md.bak +0 -193
  931. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  932. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
  933. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  934. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
  935. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  936. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
  937. package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  938. package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
  939. package/bmad/bmd/agents/cli-chief.md +0 -108
  940. package/bmad/bmd/agents/cli-chief.md.bak +0 -108
  941. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  942. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
  943. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  944. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
  945. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  946. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
  947. package/bmad/bmd/agents/doc-keeper.md +0 -115
  948. package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
  949. package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  950. package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
  951. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  952. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
  953. package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
  954. package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
  955. package/bmad/bmd/agents/release-chief.md +0 -109
  956. package/bmad/bmd/agents/release-chief.md.bak +0 -109
  957. package/bmad/bmd/config.yaml +0 -10
  958. package/bmad/core/agents/bmad-master.md +0 -71
  959. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  960. package/bmad/core/config.yaml +0 -9
  961. package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
  962. package/bmad/core/tasks/adv-elicit.xml +0 -104
  963. package/bmad/core/tasks/index-docs.xml +0 -65
  964. package/bmad/core/tasks/validate-workflow.xml +0 -89
  965. package/bmad/core/tasks/workflow.xml +0 -174
  966. package/bmad/core/tools/shard-doc.xml +0 -100
  967. package/bmad/core/workflows/brainstorming/README.md +0 -271
  968. package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  969. package/bmad/core/workflows/brainstorming/instructions.md +0 -314
  970. package/bmad/core/workflows/brainstorming/template.md +0 -102
  971. package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  972. package/bmad/core/workflows/party-mode/instructions.md +0 -188
  973. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  974. package/bmad/docs/claude-code-instructions.md +0 -25
  975. package/bmad/docs/codex-instructions.md +0 -21
  976. package/bmd/README.md +0 -193
  977. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  978. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  979. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  980. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  981. package/bmd/agents/cli-chief.agent.yaml +0 -126
  982. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  983. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  984. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  985. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  986. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  987. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  988. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  989. package/bmd/agents/release-chief.agent.yaml +0 -127
  990. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  991. package/bmd/config.yaml +0 -12
  992. package/docs/bmad-brownfield-guide.md +0 -1260
  993. package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
  994. package/docs/installers-bundlers/ide-injections.md +0 -186
  995. package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -327
  996. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  997. package/src/core/_module-installer/install-config.yaml +0 -28
  998. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  999. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  1000. package/src/core/tasks/adv-elicit.xml +0 -104
  1001. package/src/core/workflows/brainstorming/README.md +0 -271
  1002. package/src/core/workflows/brainstorming/instructions.md +0 -314
  1003. package/src/core/workflows/brainstorming/workflow.yaml +0 -43
  1004. package/src/core/workflows/party-mode/instructions.md +0 -188
  1005. package/src/core/workflows/party-mode/workflow.yaml +0 -23
  1006. package/src/modules/bmb/_module-installer/install-config.yaml +0 -26
  1007. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -143
  1008. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  1009. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  1010. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  1011. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  1012. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  1013. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  1014. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
  1015. package/src/modules/bmb/workflows/create-agent/README.md +0 -320
  1016. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
  1017. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  1018. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  1019. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  1020. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  1021. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  1022. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -430
  1023. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
  1024. package/src/modules/bmb/workflows/create-module/README.md +0 -220
  1025. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  1026. package/src/modules/bmb/workflows/create-module/checklist.md +0 -244
  1027. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  1028. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  1029. package/src/modules/bmb/workflows/create-module/instructions.md +0 -581
  1030. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -366
  1031. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
  1032. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  1033. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  1034. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  1035. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -716
  1036. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  1037. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  1038. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  1039. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  1040. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
  1041. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
  1042. package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
  1043. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  1044. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
  1045. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
  1046. package/src/modules/bmb/workflows/edit-module/README.md +0 -187
  1047. package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
  1048. package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
  1049. package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
  1050. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  1051. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  1052. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  1053. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
  1054. package/src/modules/bmb/workflows/module-brief/README.md +0 -264
  1055. package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
  1056. package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
  1057. package/src/modules/bmb/workflows/module-brief/template.md +0 -275
  1058. package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
  1059. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  1060. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  1061. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  1062. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  1063. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  1064. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  1065. package/src/modules/bmm/_module-installer/install-config.yaml +0 -74
  1066. package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
  1067. package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
  1068. package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
  1069. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  1070. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  1071. package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
  1072. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  1073. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  1074. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  1075. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  1076. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  1077. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  1078. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  1079. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  1080. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  1081. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  1082. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  1083. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  1084. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  1085. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  1086. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  1087. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  1088. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  1089. package/src/modules/bmm/tasks/retrospective.xml +0 -104
  1090. package/src/modules/bmm/teams/team-gamedev.yaml +0 -14
  1091. package/src/modules/bmm/testarch/README.md +0 -311
  1092. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
  1093. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
  1094. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +0 -41
  1095. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
  1096. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -91
  1097. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  1098. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  1099. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
  1100. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +0 -357
  1101. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +0 -44
  1102. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
  1103. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  1104. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -321
  1105. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -165
  1106. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -43
  1107. package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
  1108. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -202
  1109. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  1110. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
  1111. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
  1112. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
  1113. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
  1114. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
  1115. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -433
  1116. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -613
  1117. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -125
  1118. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -501
  1119. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  1120. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -311
  1121. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -210
  1122. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -49
  1123. package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
  1124. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  1125. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1283
  1126. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -42
  1127. package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
  1128. package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +0 -475
  1129. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
  1130. package/src/modules/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -557
  1131. package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -38
  1132. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -117
  1133. package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
  1134. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -449
  1135. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -46
  1136. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -107
  1137. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -11
  1138. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
  1139. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
  1140. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -269
  1141. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -55
  1142. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -56
  1143. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -52
  1144. package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
  1145. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
  1146. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  1147. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
  1148. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -703
  1149. package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +0 -318
  1150. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -54
  1151. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
  1152. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
  1153. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
  1154. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  1155. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  1156. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
  1157. package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
  1158. package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
  1159. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -391
  1160. package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
  1161. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
  1162. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -252
  1163. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  1164. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
  1165. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
  1166. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
  1167. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  1168. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -160
  1169. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  1170. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -34
  1171. package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
  1172. package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
  1173. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
  1174. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  1175. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  1176. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -201
  1177. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -32
  1178. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  1179. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -27
  1180. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  1181. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -27
  1182. package/src/modules/bmm/workflows/README.md +0 -577
  1183. package/src/modules/bmm/workflows/document-project/README.md +0 -444
  1184. package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
  1185. package/src/modules/bmm/workflows/testarch/README.md +0 -26
  1186. package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
  1187. package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
  1188. package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
  1189. package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
  1190. package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
  1191. package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
  1192. package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
  1193. package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
  1194. package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
  1195. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
  1196. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +0 -58
  1197. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
  1198. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +0 -95
  1199. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
  1200. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
  1201. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
  1202. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +0 -49
  1203. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
  1204. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
  1205. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
  1206. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
  1207. package/src/modules/cis/_module-installer/install-config.yaml +0 -14
  1208. package/src/modules/cis/agents/README.md +0 -104
  1209. package/src/modules/cis/agents/storyteller.agent.yaml +0 -23
  1210. package/src/modules/cis/readme.md +0 -86
  1211. package/src/utility/models/agent-activation-ide.xml +0 -51
  1212. package/src/utility/models/agent-activation-web.xml +0 -60
  1213. package/src/utility/models/agent-config-template.md +0 -23
  1214. package/src/utility/models/agent-in-team-activation.xml +0 -3
  1215. package/src/utility/models/fragments/activation-rules.xml +0 -8
  1216. package/src/utility/models/fragments/activation-steps.xml +0 -15
  1217. package/src/utility/models/fragments/handler-action.xml +0 -4
  1218. package/src/utility/models/fragments/handler-exec.xml +0 -5
  1219. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  1220. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  1221. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  1222. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  1223. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  1224. package/src/utility/templates/agent.customize.template.yaml +0 -42
  1225. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  1226. package/tools/cli/bundlers/bundle-web.js +0 -179
  1227. package/tools/cli/bundlers/test-analyst.js +0 -28
  1228. package/tools/cli/bundlers/test-bundler.js +0 -118
  1229. package/tools/cli/bundlers/web-bundler.js +0 -1479
  1230. package/tools/cli/commands/build.js +0 -458
  1231. package/tools/cli/commands/list.js +0 -28
  1232. package/tools/cli/commands/status.js +0 -47
  1233. package/tools/cli/commands/uninstall.js +0 -44
  1234. package/tools/cli/commands/update.js +0 -28
  1235. package/tools/cli/installers/lib/ide/task-tool-command-generator.js +0 -119
  1236. package/tools/cli/installers/lib/ide/workflow-command-generator.js +0 -235
  1237. package/tools/cli/installers/lib/ide/workflow-command-template.md +0 -15
  1238. package/tools/cli/lib/replace-project-root.js +0 -239
  1239. package/tools/cli/regenerate-manifests.js +0 -28
  1240. package/tools/cli/test-yaml-builder.js +0 -43
  1241. package/tools/validate-bundles.js +0 -87
  1242. package/v6-open-items.md +0 -23
  1243. /package/{bmad/bmb/workflows → src/modules/bmb/workflows-legacy}/module-brief/template.md +0 -0
  1244. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
  1245. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
  1246. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
  1247. /package/src/modules/{bmm/workflows/1-analysis/game-brief/template.md → bmgd/workflows/1-preproduction/game-brief/templates/game-brief-template.md} +0 -0
  1248. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
  1249. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
  1250. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
  1251. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
  1252. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
  1253. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
  1254. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
  1255. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
  1256. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
  1257. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
  1258. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
  1259. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
  1260. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
  1261. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
  1262. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
  1263. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
  1264. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
  1265. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
  1266. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
  1267. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
  1268. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
  1269. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
  1270. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
  1271. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
  1272. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
  1273. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
  1274. /package/src/modules/{bmm/workflows/2-plan-workflows/gdd → bmgd/workflows/2-design/gdd/templates}/gdd-template.md +0 -0
  1275. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
  1276. /package/src/modules/{bmm/workflows/2-plan-workflows/narrative → bmgd/workflows/2-design/narrative/templates}/narrative-template.md +0 -0
  1277. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/decision-catalog.yaml +0 -0
  1278. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/pattern-categories.csv +0 -0
  1279. /package/src/modules/{bmm/workflows/4-implementation/code-review/backlog_template.md → bmgd/workflows/4-production/code-review/backlog-template.md} +0 -0
  1280. /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
@@ -4,47 +4,250 @@ const path = require('node:path');
4
4
  const os = require('node:os');
5
5
  const fs = require('fs-extra');
6
6
  const { CLIUtils } = require('./cli-utils');
7
+ const { CustomHandler } = require('../installers/lib/custom/handler');
7
8
 
8
9
  /**
9
10
  * UI utilities for the installer
10
11
  */
11
12
  class UI {
12
- constructor() {}
13
-
14
13
  /**
15
14
  * Prompt for installation configuration
16
15
  * @returns {Object} Installation configuration
17
16
  */
18
17
  async promptInstall() {
19
18
  CLIUtils.displayLogo();
20
- CLIUtils.displaySection('BMAD™ Setup', 'Build More, Architect Dreams');
19
+
20
+ // Display version-specific start message from install-messages.yaml
21
+ const { MessageLoader } = require('../installers/lib/message-loader');
22
+ const messageLoader = new MessageLoader();
23
+ messageLoader.displayStartMessage();
21
24
 
22
25
  const confirmedDirectory = await this.getConfirmedDirectory();
23
26
 
24
- // Check if there's an existing BMAD installation
25
- const fs = require('fs-extra');
26
- const path = require('node:path');
27
- const bmadDir = path.join(confirmedDirectory, 'bmad');
27
+ // Preflight: Check for legacy BMAD v4 footprints immediately after getting directory
28
+ const { Detector } = require('../installers/lib/core/detector');
29
+ const { Installer } = require('../installers/lib/core/installer');
30
+ const detector = new Detector();
31
+ const installer = new Installer();
32
+ const legacyV4 = await detector.detectLegacyV4(confirmedDirectory);
33
+ if (legacyV4.hasLegacyV4) {
34
+ await installer.handleLegacyV4Migration(confirmedDirectory, legacyV4);
35
+ }
36
+
37
+ // Check for legacy folders and prompt for rename before showing any menus
38
+ let hasLegacyCfg = false;
39
+ let hasLegacyBmadFolder = false;
40
+ let bmadDir = null;
41
+ let legacyBmadPath = null;
42
+
43
+ // First check for legacy .bmad folder (instead of _bmad)
44
+ // Only check if directory exists
45
+ if (await fs.pathExists(confirmedDirectory)) {
46
+ const entries = await fs.readdir(confirmedDirectory, { withFileTypes: true });
47
+ for (const entry of entries) {
48
+ if (entry.isDirectory() && (entry.name === '.bmad' || entry.name === 'bmad')) {
49
+ hasLegacyBmadFolder = true;
50
+ legacyBmadPath = path.join(confirmedDirectory, '.bmad');
51
+ bmadDir = legacyBmadPath;
52
+
53
+ // Check if it has _cfg folder
54
+ const cfgPath = path.join(legacyBmadPath, '_cfg');
55
+ if (await fs.pathExists(cfgPath)) {
56
+ hasLegacyCfg = true;
57
+ }
58
+ break;
59
+ }
60
+ }
61
+ }
62
+
63
+ // If no .bmad or bmad found, check for current installations _bmad
64
+ if (!hasLegacyBmadFolder) {
65
+ const bmadResult = await installer.findBmadDir(confirmedDirectory);
66
+ bmadDir = bmadResult.bmadDir;
67
+ hasLegacyCfg = bmadResult.hasLegacyCfg;
68
+ }
69
+
70
+ // Handle legacy .bmad or _cfg folder - these are very old (more than 2 versions behind)
71
+ // Show version warning instead of offering conversion
72
+ if (hasLegacyBmadFolder || hasLegacyCfg) {
73
+ console.log('');
74
+ console.log(chalk.yellow.bold('⚠️ LEGACY INSTALLATION DETECTED'));
75
+ console.log(chalk.yellow('─'.repeat(80)));
76
+ console.log(
77
+ chalk.yellow(
78
+ 'Found a ".bmad"/"bmad" folder, or a legacy "_cfg" folder under the bmad folder - this is from a old BMAD version that is out of date for automatic upgrade, manual intervention required.',
79
+ ),
80
+ );
81
+ console.log(chalk.yellow('This version is more than 2 alpha versions behind current.'));
82
+ console.log('');
83
+ console.log(chalk.dim('For stability, we only support updates from the previous 2 alpha versions.'));
84
+ console.log(chalk.dim('Legacy installations may have compatibility issues.'));
85
+ console.log('');
86
+ console.log(chalk.dim('For the best experience, we strongly recommend:'));
87
+ console.log(chalk.dim(' 1. Delete your current BMAD installation folder (.bmad or bmad)'));
88
+ console.log(
89
+ chalk.dim(
90
+ ' 2. Run a fresh installation\n\nIf you do not want to start fresh, you can attempt to proceed beyond this point IF you have ensured the bmad folder is named _bmad, and under it there is a _config folder. If you have a folder under your bmad folder named _cfg, you would need to rename it _config, and then restart the installer.',
91
+ ),
92
+ );
93
+ console.log('');
94
+ console.log(chalk.dim('Benefits of a fresh install:'));
95
+ console.log(chalk.dim(' • Cleaner configuration without legacy artifacts'));
96
+ console.log(chalk.dim(' • All new features properly configured'));
97
+ console.log(chalk.dim(' • Fewer potential conflicts'));
98
+ console.log(chalk.dim(''));
99
+ console.log(
100
+ chalk.dim(
101
+ 'If you have already produced output from an earlier alpha version, you can still retain those artifacts. After installation, ensure you configured during install the proper file locations for artifacts depending on the module you are using, or move the files to the proper locations.',
102
+ ),
103
+ );
104
+ console.log(chalk.yellow('─'.repeat(80)));
105
+ console.log('');
106
+
107
+ const { proceed } = await inquirer.prompt([
108
+ {
109
+ type: 'list',
110
+ name: 'proceed',
111
+ message: 'What would you like to do?',
112
+ choices: [
113
+ {
114
+ name: 'Cancel and do a fresh install (recommended)',
115
+ value: 'cancel',
116
+ short: 'Cancel installation',
117
+ },
118
+ {
119
+ name: 'Proceed anyway (will attempt update, potentially may fail or have unstable behavior)',
120
+ value: 'proceed',
121
+ short: 'Proceed with update',
122
+ },
123
+ ],
124
+ default: 'cancel',
125
+ },
126
+ ]);
127
+
128
+ if (proceed === 'cancel') {
129
+ console.log('');
130
+ console.log(chalk.cyan('To do a fresh install:'));
131
+ console.log(chalk.dim(' 1. Delete the existing bmad folder in your project'));
132
+ console.log(chalk.dim(" 2. Run 'bmad install' again"));
133
+ console.log('');
134
+ process.exit(0);
135
+ return;
136
+ }
137
+
138
+ const ora = require('ora');
139
+ const spinner = ora('Updating folder structure...').start();
140
+ try {
141
+ // Handle .bmad folder
142
+ if (hasLegacyBmadFolder) {
143
+ const newBmadPath = path.join(confirmedDirectory, '_bmad');
144
+ await fs.move(legacyBmadPath, newBmadPath);
145
+ bmadDir = newBmadPath;
146
+ spinner.succeed('Renamed ".bmad" to "_bmad"');
147
+ }
148
+
149
+ // Handle _cfg folder (either from .bmad or standalone)
150
+ const cfgPath = path.join(bmadDir, '_cfg');
151
+ if (await fs.pathExists(cfgPath)) {
152
+ spinner.start('Renaming configuration folder...');
153
+ const newCfgPath = path.join(bmadDir, '_config');
154
+ await fs.move(cfgPath, newCfgPath);
155
+ spinner.succeed('Renamed "_cfg" to "_config"');
156
+ }
157
+ } catch (error) {
158
+ spinner.fail('Failed to update folder structure');
159
+ console.error(chalk.red(`Error: ${error.message}`));
160
+ process.exit(1);
161
+ }
162
+ }
163
+
164
+ // Check if there's an existing BMAD installation (after any folder renames)
28
165
  const hasExistingInstall = await fs.pathExists(bmadDir);
29
166
 
167
+ // Collect IDE tool selection early - we need this to know if we should ask about TTS
168
+ let toolSelection;
169
+ let agentVibesConfig = { enabled: false, alreadyInstalled: false };
170
+ let claudeCodeSelected = false;
171
+
172
+ if (!hasExistingInstall) {
173
+ // For new installations, collect IDE selection first
174
+ // We don't have modules yet, so pass empty array
175
+ toolSelection = await this.promptToolSelection(confirmedDirectory, []);
176
+
177
+ // Check if Claude Code was selected
178
+ claudeCodeSelected = toolSelection.ides && toolSelection.ides.includes('claude-code');
179
+
180
+ // If Claude Code was selected, ask about TTS
181
+ if (claudeCodeSelected) {
182
+ const { enableTts } = await inquirer.prompt([
183
+ {
184
+ type: 'confirm',
185
+ name: 'enableTts',
186
+ message: 'Claude Code supports TTS (Text-to-Speech). Would you like to enable it?',
187
+ default: false,
188
+ },
189
+ ]);
190
+
191
+ if (enableTts) {
192
+ agentVibesConfig = { enabled: true, alreadyInstalled: false };
193
+ }
194
+ }
195
+ }
196
+
197
+ let customContentConfig = { hasCustomContent: false };
198
+ if (!hasExistingInstall) {
199
+ customContentConfig._shouldAsk = true;
200
+ }
201
+
30
202
  // Track action type (only set if there's an existing installation)
31
203
  let actionType;
32
204
 
33
205
  // Only show action menu if there's an existing installation
34
206
  if (hasExistingInstall) {
207
+ // Get version information
208
+ const { existingInstall, bmadDir } = await this.getExistingInstallation(confirmedDirectory);
209
+ const packageJsonPath = path.join(__dirname, '../../../package.json');
210
+ const currentVersion = require(packageJsonPath).version;
211
+ const installedVersion = existingInstall.version || 'unknown';
212
+
213
+ // Check if version is too old and warn user
214
+ const shouldProceed = await this.showOldAlphaVersionWarning(installedVersion, currentVersion, path.basename(bmadDir));
215
+
216
+ // If user chose to cancel, exit the installer
217
+ if (!shouldProceed) {
218
+ process.exit(0);
219
+ return;
220
+ }
221
+
222
+ // Build menu choices dynamically
223
+ const choices = [];
224
+
225
+ // Always show Quick Update first (allows refreshing installation even on same version)
226
+ if (installedVersion !== 'unknown') {
227
+ choices.push({
228
+ name: `Quick Update (v${installedVersion} → v${currentVersion})`,
229
+ value: 'quick-update',
230
+ });
231
+ }
232
+
233
+ // Add custom agent compilation option
234
+ if (installedVersion !== 'unknown') {
235
+ choices.push({
236
+ name: 'Recompile Agents (apply customizations only)',
237
+ value: 'compile-agents',
238
+ });
239
+ }
240
+
241
+ // Common actions
242
+ choices.push({ name: 'Modify BMAD Installation', value: 'update' });
243
+
35
244
  const promptResult = await inquirer.prompt([
36
245
  {
37
246
  type: 'list',
38
247
  name: 'actionType',
39
248
  message: 'What would you like to do?',
40
- choices: [
41
- { name: 'Quick Update (Settings Preserved)', value: 'quick-update' },
42
- { name: 'Modify BMAD Installation (Confirm or change each setting)', value: 'update' },
43
- { name: 'Remove BMad Folder and Reinstall (Full clean install - BMad Customization Will Be Lost)', value: 'reinstall' },
44
- { name: 'Compile Agents (Quick rebuild of all agent .md files)', value: 'compile' },
45
- { name: 'Cancel', value: 'cancel' },
46
- ],
47
- default: 'quick-update',
249
+ choices: choices,
250
+ default: choices[0].value, // Use the first option as default
48
251
  },
49
252
  ]);
50
253
 
@@ -53,57 +256,190 @@ class UI {
53
256
 
54
257
  // Handle quick update separately
55
258
  if (actionType === 'quick-update') {
259
+ // Quick update doesn't install custom content - just updates existing modules
56
260
  return {
57
261
  actionType: 'quick-update',
58
262
  directory: confirmedDirectory,
263
+ customContent: { hasCustomContent: false },
59
264
  };
60
265
  }
61
266
 
62
- // Handle agent compilation separately
63
- if (actionType === 'compile') {
267
+ // Handle compile agents separately
268
+ if (actionType === 'compile-agents') {
269
+ // Only recompile agents with customizations, don't update any files
64
270
  return {
65
- actionType: 'compile',
271
+ actionType: 'compile-agents',
66
272
  directory: confirmedDirectory,
273
+ customContent: { hasCustomContent: false },
67
274
  };
68
275
  }
69
276
 
70
- // Handle cancel
71
- if (actionType === 'cancel') {
277
+ // If actionType === 'update', handle it with the new flow
278
+ // Return early with modify configuration
279
+ if (actionType === 'update') {
280
+ // Get existing installation info
281
+ const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
282
+
283
+ console.log(chalk.dim(` Found existing modules: ${[...installedModuleIds].join(', ')}`));
284
+ const { changeModuleSelection } = await inquirer.prompt([
285
+ {
286
+ type: 'confirm',
287
+ name: 'changeModuleSelection',
288
+ message: 'Modify official module selection (BMad Method, BMad Builder, Creative Innovation Suite)?',
289
+ default: false,
290
+ },
291
+ ]);
292
+
293
+ let selectedModules = [];
294
+ if (changeModuleSelection) {
295
+ // Show module selection with existing modules pre-selected
296
+ const moduleChoices = await this.getModuleChoices(new Set(installedModuleIds), { hasCustomContent: false });
297
+ selectedModules = await this.selectModules(moduleChoices, [...installedModuleIds]);
298
+ } else {
299
+ selectedModules = [...installedModuleIds];
300
+ }
301
+
302
+ // After module selection, ask about custom modules
303
+ console.log('');
304
+ const { changeCustomModules } = await inquirer.prompt([
305
+ {
306
+ type: 'confirm',
307
+ name: 'changeCustomModules',
308
+ message: 'Modify custom module selection (add, update, or remove custom modules/agents/workflows)?',
309
+ default: false,
310
+ },
311
+ ]);
312
+
313
+ let customModuleResult = { selectedCustomModules: [], customContentConfig: { hasCustomContent: false } };
314
+ if (changeCustomModules) {
315
+ customModuleResult = await this.handleCustomModulesInModifyFlow(confirmedDirectory, selectedModules);
316
+ } else {
317
+ // Preserve existing custom modules if user doesn't want to modify them
318
+ const { Installer } = require('../installers/lib/core/installer');
319
+ const installer = new Installer();
320
+ const { bmadDir } = await installer.findBmadDir(confirmedDirectory);
321
+
322
+ const cacheDir = path.join(bmadDir, '_config', 'custom');
323
+ if (await fs.pathExists(cacheDir)) {
324
+ const entries = await fs.readdir(cacheDir, { withFileTypes: true });
325
+ for (const entry of entries) {
326
+ if (entry.isDirectory()) {
327
+ customModuleResult.selectedCustomModules.push(entry.name);
328
+ }
329
+ }
330
+ }
331
+ }
332
+
333
+ // Merge any selected custom modules
334
+ if (customModuleResult.selectedCustomModules.length > 0) {
335
+ selectedModules.push(...customModuleResult.selectedCustomModules);
336
+ }
337
+
338
+ // Get tool selection
339
+ const toolSelection = await this.promptToolSelection(confirmedDirectory, selectedModules);
340
+
341
+ // TTS configuration - ask right after tool selection (matches new install flow)
342
+ const hasClaudeCode = toolSelection.ides && toolSelection.ides.includes('claude-code');
343
+ let enableTts = false;
344
+
345
+ if (hasClaudeCode) {
346
+ const { enableTts: enable } = await inquirer.prompt([
347
+ {
348
+ type: 'confirm',
349
+ name: 'enableTts',
350
+ message: 'Claude Code supports TTS (Text-to-Speech). Would you like to enable it?',
351
+ default: false,
352
+ },
353
+ ]);
354
+ enableTts = enable;
355
+ }
356
+
357
+ // Core config with existing defaults (ask after TTS)
358
+ const coreConfig = await this.collectCoreConfig(confirmedDirectory);
359
+
72
360
  return {
73
- actionType: 'cancel',
361
+ actionType: 'update',
74
362
  directory: confirmedDirectory,
363
+ installCore: true,
364
+ modules: selectedModules,
365
+ ides: toolSelection.ides,
366
+ skipIde: toolSelection.skipIde,
367
+ coreConfig: coreConfig,
368
+ customContent: customModuleResult.customContentConfig,
369
+ enableAgentVibes: enableTts,
370
+ agentVibesInstalled: false,
75
371
  };
76
372
  }
373
+ }
374
+
375
+ // This section is only for new installations (update returns early above)
376
+ const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
377
+
378
+ // Ask about official modules for new installations
379
+ const { wantsOfficialModules } = await inquirer.prompt([
380
+ {
381
+ type: 'confirm',
382
+ name: 'wantsOfficialModules',
383
+ message: 'Will you be installing any official BMad modules (BMad Method, BMad Builder, Creative Innovation Suite)?',
384
+ default: true,
385
+ },
386
+ ]);
77
387
 
78
- // Handle reinstall - DON'T return early, let it flow through configuration collection
79
- // The installer will handle deletion when it sees actionType === 'reinstall'
80
- // For now, just note that we're in reinstall mode and continue below
388
+ let selectedOfficialModules = [];
389
+ if (wantsOfficialModules) {
390
+ const moduleChoices = await this.getModuleChoices(installedModuleIds, { hasCustomContent: false });
391
+ selectedOfficialModules = await this.selectModules(moduleChoices);
392
+ }
81
393
 
82
- // If actionType === 'update' or 'reinstall', continue with normal flow below
394
+ // Ask about custom content
395
+ const { wantsCustomContent } = await inquirer.prompt([
396
+ {
397
+ type: 'confirm',
398
+ name: 'wantsCustomContent',
399
+ message: 'Would you like to install a local custom module (this includes custom agents and workflows also)?',
400
+ default: false,
401
+ },
402
+ ]);
403
+
404
+ if (wantsCustomContent) {
405
+ customContentConfig = await this.promptCustomContentSource();
83
406
  }
84
407
 
85
- // Collect IDE tool selection EARLY (before module configuration)
86
- // This allows users to make all decisions upfront before file copying begins
87
- const toolSelection = await this.promptToolSelection(confirmedDirectory, []);
408
+ // Store the selected modules for later
409
+ customContentConfig._selectedOfficialModules = selectedOfficialModules;
88
410
 
89
- const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
411
+ // Build the final list of selected modules
412
+ let selectedModules = customContentConfig._selectedOfficialModules || [];
413
+
414
+ // Add custom content modules if any were selected
415
+ if (customContentConfig && customContentConfig.selectedModuleIds) {
416
+ selectedModules = [...selectedModules, ...customContentConfig.selectedModuleIds];
417
+ }
418
+
419
+ // Remove core if it's in the list (it's always installed)
420
+ selectedModules = selectedModules.filter((m) => m !== 'core');
421
+
422
+ // Tool selection (already done for new installs at the beginning)
423
+ if (!toolSelection) {
424
+ toolSelection = await this.promptToolSelection(confirmedDirectory, selectedModules);
425
+ }
426
+
427
+ // Collect configurations for new installations
90
428
  const coreConfig = await this.collectCoreConfig(confirmedDirectory);
91
- const moduleChoices = await this.getModuleChoices(installedModuleIds);
92
- const selectedModules = await this.selectModules(moduleChoices);
93
429
 
94
- console.clear();
95
- CLIUtils.displayLogo();
96
- CLIUtils.displayModuleComplete('core', false); // false = don't clear the screen again
430
+ // TTS already handled at the beginning for new installs
97
431
 
98
432
  return {
99
- actionType: actionType || 'update', // Preserve reinstall or update action
433
+ actionType: 'install',
100
434
  directory: confirmedDirectory,
101
- installCore: true, // Always install core
435
+ installCore: true,
102
436
  modules: selectedModules,
103
- // IDE selection collected early, will be configured later
104
437
  ides: toolSelection.ides,
105
438
  skipIde: toolSelection.skipIde,
106
- coreConfig: coreConfig, // Pass collected core config to installer
439
+ coreConfig: coreConfig,
440
+ customContent: customContentConfig,
441
+ enableAgentVibes: agentVibesConfig.enabled,
442
+ agentVibesInstalled: agentVibesConfig.alreadyInstalled,
107
443
  };
108
444
  }
109
445
 
@@ -114,10 +450,13 @@ class UI {
114
450
  * @returns {Object} Tool configuration
115
451
  */
116
452
  async promptToolSelection(projectDir, selectedModules) {
117
- // Check for existing configured IDEs
453
+ // Check for existing configured IDEs - use findBmadDir to detect custom folder names
118
454
  const { Detector } = require('../installers/lib/core/detector');
455
+ const { Installer } = require('../installers/lib/core/installer');
119
456
  const detector = new Detector();
120
- const bmadDir = path.join(projectDir || process.cwd(), 'bmad');
457
+ const installer = new Installer();
458
+ const bmadResult = await installer.findBmadDir(projectDir || process.cwd());
459
+ const bmadDir = bmadResult.bmadDir;
121
460
  const existingInstall = await detector.detect(bmadDir);
122
461
  const configuredIdes = existingInstall.ides || [];
123
462
 
@@ -187,17 +526,50 @@ class UI {
187
526
  }
188
527
  }
189
528
 
190
- CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
529
+ let answers;
530
+ let userConfirmedNoTools = false;
191
531
 
192
- const answers = await inquirer.prompt([
193
- {
194
- type: 'checkbox',
195
- name: 'ides',
196
- message: 'Select tools to configure:',
197
- choices: ideChoices,
198
- pageSize: 15,
199
- },
200
- ]);
532
+ // Loop until user selects at least one tool OR explicitly confirms no tools
533
+ while (!userConfirmedNoTools) {
534
+ answers = await inquirer.prompt([
535
+ {
536
+ type: 'checkbox',
537
+ name: 'ides',
538
+ message: 'Select tools to configure:',
539
+ choices: ideChoices,
540
+ pageSize: 30,
541
+ },
542
+ ]);
543
+
544
+ // If tools were selected, we're done
545
+ if (answers.ides && answers.ides.length > 0) {
546
+ break;
547
+ }
548
+
549
+ // Warn that no tools were selected - users often miss the spacebar requirement
550
+ console.log();
551
+ console.log(chalk.red.bold('⚠️ WARNING: No tools were selected!'));
552
+ console.log(chalk.red(' You must press SPACEBAR to select items, then ENTER to confirm.'));
553
+ console.log(chalk.red(' Simply highlighting an item does NOT select it.'));
554
+ console.log();
555
+
556
+ const { goBack } = await inquirer.prompt([
557
+ {
558
+ type: 'confirm',
559
+ name: 'goBack',
560
+ message: chalk.yellow('Would you like to go back and select at least one tool?'),
561
+ default: true,
562
+ },
563
+ ]);
564
+
565
+ if (goBack) {
566
+ // Re-display a message before looping back
567
+ console.log();
568
+ } else {
569
+ // User explicitly chose to proceed without tools
570
+ userConfirmedNoTools = true;
571
+ }
572
+ }
201
573
 
202
574
  return {
203
575
  ides: answers.ides || [],
@@ -282,20 +654,33 @@ class UI {
282
654
  * @param {Object} result - Installation result
283
655
  */
284
656
  showInstallSummary(result) {
285
- CLIUtils.displaySection('Installation Complete', 'BMAD™ has been successfully installed');
657
+ // Clean, simple completion message
658
+ console.log('\n' + chalk.green.bold('✨ BMAD is ready to use!'));
286
659
 
287
- const summary = [
288
- `📁 Installation Path: ${result.path}`,
289
- `📦 Modules Installed: ${result.modules?.length > 0 ? result.modules.join(', ') : 'core only'}`,
290
- `🔧 Tools Configured: ${result.ides?.length > 0 ? result.ides.join(', ') : 'none'}`,
291
- ];
660
+ // Show installation summary in a simple format
661
+ console.log(chalk.dim(`Installed to: ${result.path}`));
662
+ if (result.modules && result.modules.length > 0) {
663
+ console.log(chalk.dim(`Modules: ${result.modules.join(', ')}`));
664
+ }
665
+ if (result.agentVibesEnabled) {
666
+ console.log(chalk.dim(`TTS: Enabled`));
667
+ }
292
668
 
293
- CLIUtils.displayBox(summary.join('\n\n'), {
294
- borderColor: 'green',
295
- borderStyle: 'round',
296
- });
669
+ // TTS injection info (simplified)
670
+ if (result.ttsInjectedFiles && result.ttsInjectedFiles.length > 0) {
671
+ console.log(chalk.dim(`\n💡 TTS enabled for ${result.ttsInjectedFiles.length} agent(s)`));
672
+ console.log(chalk.dim(' Agents will now speak when using AgentVibes'));
673
+ }
297
674
 
298
- console.log('\n' + chalk.green.bold(' BMAD is ready to use!'));
675
+ console.log(chalk.yellow('\nThank you for helping test the early release version of the new BMad Core and BMad Method!'));
676
+ console.log(chalk.cyan('Stable Beta coming soon - please read the full README.md and linked documentation to get started!'));
677
+
678
+ // Add changelog link at the end
679
+ console.log(
680
+ chalk.magenta(
681
+ "\n📋 Want to see what's new? Check out the changelog: https://github.com/bmad-code-org/BMAD-METHOD/blob/main/CHANGELOG.md",
682
+ ),
683
+ );
299
684
  }
300
685
 
301
686
  /**
@@ -318,16 +703,19 @@ class UI {
318
703
  /**
319
704
  * Get existing installation info and installed modules
320
705
  * @param {string} directory - Installation directory
321
- * @returns {Object} Object with existingInstall and installedModuleIds
706
+ * @returns {Object} Object with existingInstall, installedModuleIds, and bmadDir
322
707
  */
323
708
  async getExistingInstallation(directory) {
324
709
  const { Detector } = require('../installers/lib/core/detector');
710
+ const { Installer } = require('../installers/lib/core/installer');
325
711
  const detector = new Detector();
326
- const bmadDir = path.join(directory, 'bmad');
712
+ const installer = new Installer();
713
+ const bmadDirResult = await installer.findBmadDir(directory);
714
+ const bmadDir = bmadDirResult.bmadDir;
327
715
  const existingInstall = await detector.detect(bmadDir);
328
716
  const installedModuleIds = new Set(existingInstall.modules.map((mod) => mod.id));
329
717
 
330
- return { existingInstall, installedModuleIds };
718
+ return { existingInstall, installedModuleIds, bmadDir };
331
719
  }
332
720
 
333
721
  /**
@@ -343,25 +731,90 @@ class UI {
343
731
  // Now collect with existing values as defaults (false = don't skip loading, true = skip completion message)
344
732
  await configCollector.collectModuleConfig('core', directory, false, true);
345
733
 
346
- return configCollector.collectedConfig.core;
734
+ const coreConfig = configCollector.collectedConfig.core;
735
+ // Ensure we always have a core config object, even if empty
736
+ return coreConfig || {};
347
737
  }
348
738
 
349
739
  /**
350
740
  * Get module choices for selection
351
741
  * @param {Set} installedModuleIds - Currently installed module IDs
742
+ * @param {Object} customContentConfig - Custom content configuration
352
743
  * @returns {Array} Module choices for inquirer
353
744
  */
354
- async getModuleChoices(installedModuleIds) {
745
+ async getModuleChoices(installedModuleIds, customContentConfig = null) {
746
+ const moduleChoices = [];
747
+ const isNewInstallation = installedModuleIds.size === 0;
748
+
749
+ const customContentItems = [];
750
+ const hasCustomContentItems = false;
751
+
752
+ // Add custom content items
753
+ if (customContentConfig && customContentConfig.hasCustomContent && customContentConfig.customPath) {
754
+ // Existing installation - show from directory
755
+ const customHandler = new CustomHandler();
756
+ const customFiles = await customHandler.findCustomContent(customContentConfig.customPath);
757
+
758
+ for (const customFile of customFiles) {
759
+ const customInfo = await customHandler.getCustomInfo(customFile);
760
+ if (customInfo) {
761
+ customContentItems.push({
762
+ name: `${chalk.cyan('✓')} ${customInfo.name} ${chalk.gray(`(${customInfo.relativePath})`)}`,
763
+ value: `__CUSTOM_CONTENT__${customFile}`, // Unique value for each custom content
764
+ checked: true, // Default to selected since user chose to provide custom content
765
+ path: customInfo.path, // Track path to avoid duplicates
766
+ });
767
+ }
768
+ }
769
+ }
770
+
771
+ // Add official modules
355
772
  const { ModuleManager } = require('../installers/lib/modules/manager');
356
773
  const moduleManager = new ModuleManager();
357
- const availableModules = await moduleManager.listAvailable();
774
+ const { modules: availableModules, customModules: customModulesFromCache } = await moduleManager.listAvailable();
358
775
 
359
- const isNewInstallation = installedModuleIds.size === 0;
360
- return availableModules.map((mod) => ({
361
- name: mod.name,
362
- value: mod.id,
363
- checked: isNewInstallation ? mod.defaultSelected || false : installedModuleIds.has(mod.id),
364
- }));
776
+ // First, add all items to appropriate sections
777
+ const allCustomModules = [];
778
+
779
+ // Add custom content items from directory
780
+ allCustomModules.push(...customContentItems);
781
+
782
+ // Add custom modules from cache
783
+ for (const mod of customModulesFromCache) {
784
+ // Skip if this module is already in customContentItems (by path)
785
+ const isDuplicate = allCustomModules.some((item) => item.path && mod.path && path.resolve(item.path) === path.resolve(mod.path));
786
+
787
+ if (!isDuplicate) {
788
+ allCustomModules.push({
789
+ name: `${chalk.cyan('✓')} ${mod.name} ${chalk.gray(`(cached)`)}`,
790
+ value: mod.id,
791
+ checked: isNewInstallation ? mod.defaultSelected || false : installedModuleIds.has(mod.id),
792
+ });
793
+ }
794
+ }
795
+
796
+ // Add separators and modules in correct order
797
+ if (allCustomModules.length > 0) {
798
+ // Add separator for custom content, all custom modules, and official content separator
799
+ moduleChoices.push(
800
+ new inquirer.Separator('── Custom Content ──'),
801
+ ...allCustomModules,
802
+ new inquirer.Separator('── Official Content ──'),
803
+ );
804
+ }
805
+
806
+ // Add official modules (only non-custom ones)
807
+ for (const mod of availableModules) {
808
+ if (!mod.isCustom) {
809
+ moduleChoices.push({
810
+ name: mod.name,
811
+ value: mod.id,
812
+ checked: isNewInstallation ? mod.defaultSelected || false : installedModuleIds.has(mod.id),
813
+ });
814
+ }
815
+ }
816
+
817
+ return moduleChoices;
365
818
  }
366
819
 
367
820
  /**
@@ -369,19 +822,20 @@ class UI {
369
822
  * @param {Array} moduleChoices - Available module choices
370
823
  * @returns {Array} Selected module IDs
371
824
  */
372
- async selectModules(moduleChoices) {
373
- CLIUtils.displaySection('Module Selection', 'Choose the BMAD modules to install');
374
-
825
+ async selectModules(moduleChoices, defaultSelections = []) {
375
826
  const moduleAnswer = await inquirer.prompt([
376
827
  {
377
828
  type: 'checkbox',
378
829
  name: 'modules',
379
830
  message: 'Select modules to install:',
380
831
  choices: moduleChoices,
832
+ default: defaultSelections,
381
833
  },
382
834
  ]);
383
835
 
384
- return moduleAnswer.modules || [];
836
+ const selected = moduleAnswer.modules || [];
837
+
838
+ return selected;
385
839
  }
386
840
 
387
841
  /**
@@ -421,17 +875,21 @@ class UI {
421
875
  if (stats.isDirectory()) {
422
876
  const files = await fs.readdir(directory);
423
877
  if (files.length > 0) {
878
+ // Check for any bmad installation (any folder with _config/manifest.yaml)
879
+ const { Installer } = require('../installers/lib/core/installer');
880
+ const installer = new Installer();
881
+ const bmadResult = await installer.findBmadDir(directory);
882
+ const hasBmadInstall =
883
+ (await fs.pathExists(bmadResult.bmadDir)) && (await fs.pathExists(path.join(bmadResult.bmadDir, '_config', 'manifest.yaml')));
884
+
424
885
  console.log(
425
886
  chalk.gray(`Directory exists and contains ${files.length} item(s)`) +
426
- (files.includes('bmad') ? chalk.yellow(' including existing bmad installation') : ''),
887
+ (hasBmadInstall ? chalk.yellow(` including existing BMAD installation (${path.basename(bmadResult.bmadDir)})`) : ''),
427
888
  );
428
889
  } else {
429
890
  console.log(chalk.gray('Directory exists and is empty'));
430
891
  }
431
892
  }
432
- } else {
433
- const existingParent = await this.findExistingParent(directory);
434
- console.log(chalk.gray(`Will create in: ${existingParent}`));
435
893
  }
436
894
  }
437
895
 
@@ -586,6 +1044,599 @@ class UI {
586
1044
  // Resolve to the absolute path relative to the current working directory
587
1045
  return path.resolve(expanded);
588
1046
  }
1047
+
1048
+ /**
1049
+ * @function promptAgentVibes
1050
+ * @intent Ask user if they want AgentVibes TTS integration during BMAD installation
1051
+ * @why Enables optional voice features without forcing TTS on users who don't want it
1052
+ * @param {string} projectDir - Absolute path to user's project directory
1053
+ * @returns {Promise<Object>} Configuration object: { enabled: boolean, alreadyInstalled: boolean }
1054
+ * @sideeffects None - pure user input collection, no files written
1055
+ * @edgecases Shows warning if user enables TTS but AgentVibes not detected
1056
+ * @calledby promptInstall() during installation flow, after core config, before IDE selection
1057
+ * @calls checkAgentVibesInstalled(), inquirer.prompt(), chalk.green/yellow/dim()
1058
+ *
1059
+ * AI NOTE: This prompt is strategically positioned in installation flow:
1060
+ * - AFTER core config (user_name, etc)
1061
+ * - BEFORE IDE selection (which can hang on Windows/PowerShell)
1062
+ *
1063
+ * Flow Logic:
1064
+ * 1. Auto-detect if AgentVibes already installed (checks for hook files)
1065
+ * 2. Show detection status to user (green checkmark or gray "not detected")
1066
+ * 3. Prompt: "Enable AgentVibes TTS?" (defaults to true if detected)
1067
+ * 4. If user says YES but AgentVibes NOT installed:
1068
+ * → Show warning with installation link (graceful degradation)
1069
+ * 5. Return config to promptInstall(), which passes to installer.install()
1070
+ *
1071
+ * State Flow:
1072
+ * promptAgentVibes() → { enabled, alreadyInstalled }
1073
+ * ↓
1074
+ * promptInstall() → config.enableAgentVibes
1075
+ * ↓
1076
+ * installer.install() → this.enableAgentVibes
1077
+ * ↓
1078
+ * processTTSInjectionPoints() → injects OR strips markers
1079
+ *
1080
+ * RELATED:
1081
+ * ========
1082
+ * - Detection: checkAgentVibesInstalled() - looks for bmad-speak.sh and play-tts.sh
1083
+ * - Processing: installer.js::processTTSInjectionPoints()
1084
+ * - Markers: src/core/workflows/party-mode/instructions.md:101, src/modules/bmm/agents/*.md
1085
+ * - GitHub Issue: paulpreibisch/AgentVibes#36
1086
+ */
1087
+ async promptAgentVibes(projectDir) {
1088
+ CLIUtils.displaySection('🎤 Voice Features', 'Enable TTS for multi-agent conversations');
1089
+
1090
+ // Check if AgentVibes is already installed
1091
+ const agentVibesInstalled = await this.checkAgentVibesInstalled(projectDir);
1092
+
1093
+ if (agentVibesInstalled) {
1094
+ console.log(chalk.green(' ✓ AgentVibes detected'));
1095
+ } else {
1096
+ console.log(chalk.dim(' AgentVibes not detected'));
1097
+ }
1098
+
1099
+ const answers = await inquirer.prompt([
1100
+ {
1101
+ type: 'confirm',
1102
+ name: 'enableTts',
1103
+ message: 'Enable Agents to Speak Out loud (powered by Agent Vibes? Claude Code only currently)',
1104
+ default: false, // Default to yes - recommended for best experience
1105
+ },
1106
+ ]);
1107
+
1108
+ if (answers.enableTts && !agentVibesInstalled) {
1109
+ console.log(chalk.yellow('\n ⚠️ AgentVibes not installed'));
1110
+ console.log(chalk.dim(' Install AgentVibes separately to enable TTS:'));
1111
+ console.log(chalk.dim(' https://github.com/paulpreibisch/AgentVibes\n'));
1112
+ }
1113
+
1114
+ return {
1115
+ enabled: answers.enableTts,
1116
+ alreadyInstalled: agentVibesInstalled,
1117
+ };
1118
+ }
1119
+
1120
+ /**
1121
+ * @function checkAgentVibesInstalled
1122
+ * @intent Detect if AgentVibes TTS hooks are present in user's project
1123
+ * @why Allows auto-enabling TTS and showing helpful installation guidance
1124
+ * @param {string} projectDir - Absolute path to user's project directory
1125
+ * @returns {Promise<boolean>} true if both required AgentVibes hooks exist, false otherwise
1126
+ * @sideeffects None - read-only file existence checks
1127
+ * @edgecases Returns false if either hook missing (both required for functional TTS)
1128
+ * @calledby promptAgentVibes() to determine default value and show detection status
1129
+ * @calls fs.pathExists() twice (bmad-speak.sh, play-tts.sh)
1130
+ *
1131
+ * AI NOTE: This checks for the MINIMUM viable AgentVibes installation.
1132
+ *
1133
+ * Required Files:
1134
+ * ===============
1135
+ * 1. .claude/hooks/bmad-speak.sh
1136
+ * - Maps agent display names → agent IDs → voice profiles
1137
+ * - Calls play-tts.sh with agent's assigned voice
1138
+ * - Created by AgentVibes installer
1139
+ *
1140
+ * 2. .claude/hooks/play-tts.sh
1141
+ * - Core TTS router (ElevenLabs or Piper)
1142
+ * - Provider-agnostic interface
1143
+ * - Required by bmad-speak.sh
1144
+ *
1145
+ * Why Both Required:
1146
+ * ==================
1147
+ * - bmad-speak.sh alone: No TTS backend
1148
+ * - play-tts.sh alone: No BMAD agent voice mapping
1149
+ * - Both together: Full party mode TTS integration
1150
+ *
1151
+ * Detection Strategy:
1152
+ * ===================
1153
+ * We use simple file existence (not version checks) because:
1154
+ * - Fast and reliable
1155
+ * - Works across all AgentVibes versions
1156
+ * - User will discover version issues when TTS runs (fail-fast)
1157
+ *
1158
+ * PATTERN: Adding New Detection Criteria
1159
+ * =======================================
1160
+ * If future AgentVibes features require additional files:
1161
+ * 1. Add new pathExists check to this function
1162
+ * 2. Update documentation in promptAgentVibes()
1163
+ * 3. Consider: should missing file prevent detection or just log warning?
1164
+ *
1165
+ * RELATED:
1166
+ * ========
1167
+ * - AgentVibes Installer: creates these hooks
1168
+ * - bmad-speak.sh: calls play-tts.sh with agent voices
1169
+ * - Party Mode: uses bmad-speak.sh for agent dialogue
1170
+ */
1171
+ async checkAgentVibesInstalled(projectDir) {
1172
+ const fs = require('fs-extra');
1173
+ const path = require('node:path');
1174
+
1175
+ // Check for AgentVibes hook files
1176
+ const hookPath = path.join(projectDir, '.claude', 'hooks', 'bmad-speak.sh');
1177
+ const playTtsPath = path.join(projectDir, '.claude', 'hooks', 'play-tts.sh');
1178
+
1179
+ return (await fs.pathExists(hookPath)) && (await fs.pathExists(playTtsPath));
1180
+ }
1181
+
1182
+ /**
1183
+ * Load existing configurations to use as defaults
1184
+ * @param {string} directory - Installation directory
1185
+ * @returns {Object} Existing configurations
1186
+ */
1187
+ async loadExistingConfigurations(directory) {
1188
+ const configs = {
1189
+ hasCustomContent: false,
1190
+ coreConfig: {},
1191
+ ideConfig: { ides: [], skipIde: false },
1192
+ agentVibesConfig: { enabled: false, alreadyInstalled: false },
1193
+ };
1194
+
1195
+ try {
1196
+ // Load core config
1197
+ configs.coreConfig = await this.collectCoreConfig(directory);
1198
+
1199
+ // Load IDE configuration
1200
+ const configuredIdes = await this.getConfiguredIdes(directory);
1201
+ if (configuredIdes.length > 0) {
1202
+ configs.ideConfig.ides = configuredIdes;
1203
+ configs.ideConfig.skipIde = false;
1204
+ }
1205
+
1206
+ // Load AgentVibes configuration
1207
+ const agentVibesInstalled = await this.checkAgentVibesInstalled(directory);
1208
+ configs.agentVibesConfig = { enabled: agentVibesInstalled, alreadyInstalled: agentVibesInstalled };
1209
+
1210
+ return configs;
1211
+ } catch {
1212
+ // If loading fails, return empty configs
1213
+ console.warn('Warning: Could not load existing configurations');
1214
+ return configs;
1215
+ }
1216
+ }
1217
+
1218
+ /**
1219
+ * Get configured IDEs from existing installation
1220
+ * @param {string} directory - Installation directory
1221
+ * @returns {Array} List of configured IDEs
1222
+ */
1223
+ async getConfiguredIdes(directory) {
1224
+ const { Detector } = require('../installers/lib/core/detector');
1225
+ const { Installer } = require('../installers/lib/core/installer');
1226
+ const detector = new Detector();
1227
+ const installer = new Installer();
1228
+ const bmadResult = await installer.findBmadDir(directory);
1229
+ const existingInstall = await detector.detect(bmadResult.bmadDir);
1230
+ return existingInstall.ides || [];
1231
+ }
1232
+
1233
+ /**
1234
+ * Prompt user for custom content source location
1235
+ * @returns {Object} Custom content configuration
1236
+ */
1237
+ async promptCustomContentSource() {
1238
+ const customContentConfig = { hasCustomContent: true, sources: [] };
1239
+
1240
+ // Keep asking for more sources until user is done
1241
+ while (true) {
1242
+ // First ask if user wants to add another module or continue
1243
+ if (customContentConfig.sources.length > 0) {
1244
+ const { action } = await inquirer.prompt([
1245
+ {
1246
+ type: 'list',
1247
+ name: 'action',
1248
+ message: 'Would you like to:',
1249
+ choices: [
1250
+ { name: 'Add another custom module', value: 'add' },
1251
+ { name: 'Continue with installation', value: 'continue' },
1252
+ ],
1253
+ default: 'continue',
1254
+ },
1255
+ ]);
1256
+
1257
+ if (action === 'continue') {
1258
+ break;
1259
+ }
1260
+ }
1261
+
1262
+ let sourcePath;
1263
+ let isValid = false;
1264
+
1265
+ while (!isValid) {
1266
+ const { path: inputPath } = await inquirer.prompt([
1267
+ {
1268
+ type: 'input',
1269
+ name: 'path',
1270
+ message: 'Enter the path to your custom content folder (or press Enter to cancel):',
1271
+ validate: async (input) => {
1272
+ // Allow empty input to cancel
1273
+ if (!input || input.trim() === '') {
1274
+ return true; // Allow empty to exit
1275
+ }
1276
+
1277
+ try {
1278
+ // Expand the path
1279
+ const expandedPath = this.expandUserPath(input.trim());
1280
+
1281
+ // Check if path exists
1282
+ if (!(await fs.pathExists(expandedPath))) {
1283
+ return 'Path does not exist';
1284
+ }
1285
+
1286
+ // Check if it's a directory
1287
+ const stat = await fs.stat(expandedPath);
1288
+ if (!stat.isDirectory()) {
1289
+ return 'Path must be a directory';
1290
+ }
1291
+
1292
+ // Check for module.yaml in the root
1293
+ const moduleYamlPath = path.join(expandedPath, 'module.yaml');
1294
+ if (!(await fs.pathExists(moduleYamlPath))) {
1295
+ return 'Directory must contain a module.yaml file in the root';
1296
+ }
1297
+
1298
+ // Try to parse the module.yaml to get the module ID
1299
+ try {
1300
+ const yaml = require('yaml');
1301
+ const content = await fs.readFile(moduleYamlPath, 'utf8');
1302
+ const moduleData = yaml.parse(content);
1303
+ if (!moduleData.code) {
1304
+ return 'module.yaml must contain a "code" field for the module ID';
1305
+ }
1306
+ } catch (error) {
1307
+ return 'Invalid module.yaml file: ' + error.message;
1308
+ }
1309
+
1310
+ return true;
1311
+ } catch (error) {
1312
+ return 'Error validating path: ' + error.message;
1313
+ }
1314
+ },
1315
+ },
1316
+ ]);
1317
+
1318
+ // If user pressed Enter without typing anything, exit the loop
1319
+ if (!inputPath || inputPath.trim() === '') {
1320
+ // If we have no modules yet, return false for no custom content
1321
+ if (customContentConfig.sources.length === 0) {
1322
+ return { hasCustomContent: false };
1323
+ }
1324
+ return customContentConfig;
1325
+ }
1326
+
1327
+ sourcePath = this.expandUserPath(inputPath);
1328
+ isValid = true;
1329
+ }
1330
+
1331
+ // Read module.yaml to get module info
1332
+ const yaml = require('yaml');
1333
+ const moduleYamlPath = path.join(sourcePath, 'module.yaml');
1334
+ const moduleContent = await fs.readFile(moduleYamlPath, 'utf8');
1335
+ const moduleData = yaml.parse(moduleContent);
1336
+
1337
+ // Add to sources
1338
+ customContentConfig.sources.push({
1339
+ path: sourcePath,
1340
+ id: moduleData.code,
1341
+ name: moduleData.name || moduleData.code,
1342
+ });
1343
+
1344
+ console.log(chalk.green(`✓ Confirmed local custom module: ${moduleData.name || moduleData.code}`));
1345
+ }
1346
+
1347
+ // Ask if user wants to add these to the installation
1348
+ const { shouldInstall } = await inquirer.prompt([
1349
+ {
1350
+ type: 'confirm',
1351
+ name: 'shouldInstall',
1352
+ message: `Install ${customContentConfig.sources.length} custom module(s) now?`,
1353
+ default: true,
1354
+ },
1355
+ ]);
1356
+
1357
+ if (shouldInstall) {
1358
+ customContentConfig.selected = true;
1359
+ // Store paths to module.yaml files, not directories
1360
+ customContentConfig.selectedFiles = customContentConfig.sources.map((s) => path.join(s.path, 'module.yaml'));
1361
+ // Also include module IDs for installation
1362
+ customContentConfig.selectedModuleIds = customContentConfig.sources.map((s) => s.id);
1363
+ }
1364
+
1365
+ return customContentConfig;
1366
+ }
1367
+
1368
+ /**
1369
+ * Handle custom modules in the modify flow
1370
+ * @param {string} directory - Installation directory
1371
+ * @param {Array} selectedModules - Currently selected modules
1372
+ * @returns {Object} Result with selected custom modules and custom content config
1373
+ */
1374
+ async handleCustomModulesInModifyFlow(directory, selectedModules) {
1375
+ // Get existing installation to find custom modules
1376
+ const { existingInstall } = await this.getExistingInstallation(directory);
1377
+
1378
+ // Check if there are any custom modules in cache
1379
+ const { Installer } = require('../installers/lib/core/installer');
1380
+ const installer = new Installer();
1381
+ const { bmadDir } = await installer.findBmadDir(directory);
1382
+
1383
+ const cacheDir = path.join(bmadDir, '_config', 'custom');
1384
+ const cachedCustomModules = [];
1385
+
1386
+ if (await fs.pathExists(cacheDir)) {
1387
+ const entries = await fs.readdir(cacheDir, { withFileTypes: true });
1388
+ for (const entry of entries) {
1389
+ if (entry.isDirectory()) {
1390
+ const moduleYamlPath = path.join(cacheDir, entry.name, 'module.yaml');
1391
+ if (await fs.pathExists(moduleYamlPath)) {
1392
+ const yaml = require('yaml');
1393
+ const content = await fs.readFile(moduleYamlPath, 'utf8');
1394
+ const moduleData = yaml.parse(content);
1395
+
1396
+ cachedCustomModules.push({
1397
+ id: entry.name,
1398
+ name: moduleData.name || entry.name,
1399
+ description: moduleData.description || 'Custom module from cache',
1400
+ checked: selectedModules.includes(entry.name),
1401
+ fromCache: true,
1402
+ });
1403
+ }
1404
+ }
1405
+ }
1406
+ }
1407
+
1408
+ const result = {
1409
+ selectedCustomModules: [],
1410
+ customContentConfig: { hasCustomContent: false },
1411
+ };
1412
+
1413
+ // Ask user about custom modules
1414
+ console.log(chalk.cyan('\n⚙️ Custom Modules'));
1415
+ if (cachedCustomModules.length > 0) {
1416
+ console.log(chalk.dim('Found custom modules in your installation:'));
1417
+ } else {
1418
+ console.log(chalk.dim('No custom modules currently installed.'));
1419
+ }
1420
+
1421
+ // Build choices dynamically based on whether we have existing modules
1422
+ const choices = [];
1423
+ if (cachedCustomModules.length > 0) {
1424
+ choices.push(
1425
+ { name: 'Keep all existing custom modules', value: 'keep' },
1426
+ { name: 'Select which custom modules to keep', value: 'select' },
1427
+ { name: 'Add new custom modules', value: 'add' },
1428
+ { name: 'Remove all custom modules', value: 'remove' },
1429
+ );
1430
+ } else {
1431
+ choices.push({ name: 'Add new custom modules', value: 'add' }, { name: 'Cancel (no custom modules)', value: 'cancel' });
1432
+ }
1433
+
1434
+ const { customAction } = await inquirer.prompt([
1435
+ {
1436
+ type: 'list',
1437
+ name: 'customAction',
1438
+ message:
1439
+ cachedCustomModules.length > 0 ? 'What would you like to do with custom modules?' : 'Would you like to add custom modules?',
1440
+ choices: choices,
1441
+ default: cachedCustomModules.length > 0 ? 'keep' : 'add',
1442
+ },
1443
+ ]);
1444
+
1445
+ switch (customAction) {
1446
+ case 'keep': {
1447
+ // Keep all existing custom modules
1448
+ result.selectedCustomModules = cachedCustomModules.map((m) => m.id);
1449
+ console.log(chalk.dim(`Keeping ${result.selectedCustomModules.length} custom module(s)`));
1450
+ break;
1451
+ }
1452
+
1453
+ case 'select': {
1454
+ // Let user choose which to keep
1455
+ const choices = cachedCustomModules.map((m) => ({
1456
+ name: `${m.name} ${chalk.gray(`(${m.id})`)}`,
1457
+ value: m.id,
1458
+ }));
1459
+
1460
+ const { keepModules } = await inquirer.prompt([
1461
+ {
1462
+ type: 'checkbox',
1463
+ name: 'keepModules',
1464
+ message: 'Select custom modules to keep:',
1465
+ choices: choices,
1466
+ default: cachedCustomModules.filter((m) => m.checked).map((m) => m.id),
1467
+ },
1468
+ ]);
1469
+ result.selectedCustomModules = keepModules;
1470
+ break;
1471
+ }
1472
+
1473
+ case 'add': {
1474
+ // By default, keep existing modules when adding new ones
1475
+ // User chose "Add new" not "Replace", so we assume they want to keep existing
1476
+ result.selectedCustomModules = cachedCustomModules.map((m) => m.id);
1477
+
1478
+ // Then prompt for new ones (reuse existing method)
1479
+ const newCustomContent = await this.promptCustomContentSource();
1480
+ if (newCustomContent.hasCustomContent && newCustomContent.selected) {
1481
+ result.selectedCustomModules.push(...newCustomContent.selectedModuleIds);
1482
+ result.customContentConfig = newCustomContent;
1483
+ }
1484
+ break;
1485
+ }
1486
+
1487
+ case 'remove': {
1488
+ // Remove all custom modules
1489
+ console.log(chalk.yellow('All custom modules will be removed from the installation'));
1490
+ break;
1491
+ }
1492
+
1493
+ case 'cancel': {
1494
+ // User cancelled - no custom modules
1495
+ console.log(chalk.dim('No custom modules will be added'));
1496
+ break;
1497
+ }
1498
+ }
1499
+
1500
+ return result;
1501
+ }
1502
+
1503
+ /**
1504
+ * Parse alpha version string (e.g., "6.0.0-Alpha.20")
1505
+ * @param {string} version - Version string
1506
+ * @returns {Object|null} Object with alphaNumber and fullVersion, or null if invalid
1507
+ */
1508
+ parseAlphaVersion(version) {
1509
+ if (!version || version === 'unknown') {
1510
+ return null;
1511
+ }
1512
+
1513
+ // Remove 'v' prefix if present
1514
+ const cleanVersion = version.toString().replace(/^v/i, '');
1515
+
1516
+ // Match alpha version pattern: X.Y.Z-Alpha.N (case-insensitive)
1517
+ const match = cleanVersion.match(/[\d.]+-Alpha\.(\d+)/i);
1518
+
1519
+ if (!match) {
1520
+ return null;
1521
+ }
1522
+
1523
+ return {
1524
+ alphaNumber: parseInt(match[1], 10),
1525
+ fullVersion: cleanVersion,
1526
+ };
1527
+ }
1528
+
1529
+ /**
1530
+ * Check if installed version is more than 2 alpha versions behind current
1531
+ * @param {string} installedVersion - The installed version
1532
+ * @param {string} currentVersion - The current version
1533
+ * @returns {Object} Object with { isOldVersion, versionDiff, shouldWarn, installed, current }
1534
+ */
1535
+ checkAlphaVersionAge(installedVersion, currentVersion) {
1536
+ const installed = this.parseAlphaVersion(installedVersion);
1537
+ const current = this.parseAlphaVersion(currentVersion);
1538
+
1539
+ // If we can't parse either version, don't warn
1540
+ if (!installed || !current) {
1541
+ return { isOldVersion: false, versionDiff: 0, shouldWarn: false };
1542
+ }
1543
+
1544
+ // Calculate alpha version difference
1545
+ const versionDiff = current.alphaNumber - installed.alphaNumber;
1546
+
1547
+ // Consider it old if more than 2 versions behind
1548
+ const isOldVersion = versionDiff > 2;
1549
+
1550
+ return {
1551
+ isOldVersion,
1552
+ versionDiff,
1553
+ shouldWarn: isOldVersion,
1554
+ installed: installed.fullVersion,
1555
+ current: current.fullVersion,
1556
+ installedAlpha: installed.alphaNumber,
1557
+ currentAlpha: current.alphaNumber,
1558
+ };
1559
+ }
1560
+
1561
+ /**
1562
+ * Show warning for old alpha version and ask if user wants to proceed
1563
+ * @param {string} installedVersion - The installed version
1564
+ * @param {string} currentVersion - The current version
1565
+ * @param {string} bmadFolderName - Name of the BMAD folder
1566
+ * @returns {Promise<boolean>} True if user wants to proceed, false if they cancel
1567
+ */
1568
+ async showOldAlphaVersionWarning(installedVersion, currentVersion, bmadFolderName) {
1569
+ const versionInfo = this.checkAlphaVersionAge(installedVersion, currentVersion);
1570
+
1571
+ // Also warn if version is unknown or can't be parsed (legacy/unsupported)
1572
+ const isUnknownVersion = installedVersion === 'unknown' || !versionInfo.installed;
1573
+
1574
+ if (!versionInfo.shouldWarn && !isUnknownVersion) {
1575
+ return true; // Not old, proceed
1576
+ }
1577
+
1578
+ console.log('');
1579
+ console.log(chalk.yellow.bold('⚠️ VERSION WARNING'));
1580
+ console.log(chalk.yellow('─'.repeat(80)));
1581
+
1582
+ if (isUnknownVersion) {
1583
+ console.log(chalk.yellow('Unable to detect your installed BMAD version.'));
1584
+ console.log(chalk.yellow('This appears to be a legacy or unsupported installation.'));
1585
+ console.log('');
1586
+ console.log(chalk.dim('For stability, we only support updates from the previous 2 alpha versions.'));
1587
+ console.log(chalk.dim('Legacy installations may have compatibility issues.'));
1588
+ } else {
1589
+ console.log(chalk.yellow(`You are updating from ${versionInfo.installed} to ${versionInfo.current}.`));
1590
+ console.log(chalk.yellow(`This is ${versionInfo.versionDiff} alpha versions behind.`));
1591
+ console.log('');
1592
+ console.log(chalk.dim(`For stability, we only support updates from the previous 2 alpha versions`));
1593
+ console.log(chalk.dim(`(Alpha.${versionInfo.currentAlpha - 2} through Alpha.${versionInfo.currentAlpha - 1}).`));
1594
+ }
1595
+
1596
+ console.log('');
1597
+ console.log(chalk.dim('For the best experience, we recommend:'));
1598
+ console.log(chalk.dim(' 1. Delete your current BMAD installation folder'));
1599
+ console.log(chalk.dim(` (the "${bmadFolderName}/" folder in your project)`));
1600
+ console.log(chalk.dim(' 2. Run a fresh installation'));
1601
+ console.log('');
1602
+ console.log(chalk.dim('Benefits of a fresh install:'));
1603
+ console.log(chalk.dim(' • Cleaner configuration without legacy artifacts'));
1604
+ console.log(chalk.dim(' • All new features properly configured'));
1605
+ console.log(chalk.dim(' • Fewer potential conflicts'));
1606
+ console.log(chalk.yellow('─'.repeat(80)));
1607
+ console.log('');
1608
+
1609
+ const { proceed } = await inquirer.prompt([
1610
+ {
1611
+ type: 'list',
1612
+ name: 'proceed',
1613
+ message: 'What would you like to do?',
1614
+ choices: [
1615
+ {
1616
+ name: 'Proceed with update anyway (may have issues)',
1617
+ value: 'proceed',
1618
+ short: 'Proceed with update',
1619
+ },
1620
+ {
1621
+ name: 'Cancel (recommended - do a fresh install instead)',
1622
+ value: 'cancel',
1623
+ short: 'Cancel installation',
1624
+ },
1625
+ ],
1626
+ default: 'cancel',
1627
+ },
1628
+ ]);
1629
+
1630
+ if (proceed === 'cancel') {
1631
+ console.log('');
1632
+ console.log(chalk.cyan('To do a fresh install:'));
1633
+ console.log(chalk.dim(` 1. Delete the "${bmadFolderName}/" folder in your project`));
1634
+ console.log(chalk.dim(" 2. Run 'bmad install' again"));
1635
+ console.log('');
1636
+ }
1637
+
1638
+ return proceed === 'proceed';
1639
+ }
589
1640
  }
590
1641
 
591
1642
  module.exports = { UI };