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

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 (1278) 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 +772 -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 +25 -10
  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 +9 -18
  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/agent-builder.agent.yaml +36 -0
  110. package/src/modules/bmb/agents/module-builder.agent.yaml +48 -0
  111. package/src/modules/bmb/agents/workflow-builder.agent.yaml +40 -0
  112. package/src/modules/bmb/docs/agents/agent-compilation.md +340 -0
  113. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +523 -0
  114. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +363 -0
  115. package/src/modules/bmb/docs/agents/index.md +55 -0
  116. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  117. package/src/modules/bmb/docs/agents/simple-agent-architecture.md +257 -0
  118. package/src/modules/bmb/docs/agents/understanding-agent-types.md +184 -0
  119. package/src/modules/bmb/docs/index.md +247 -0
  120. package/src/modules/bmb/docs/workflows/architecture.md +220 -0
  121. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
  122. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
  123. package/src/modules/bmb/docs/workflows/index.md +45 -0
  124. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
  125. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  126. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
  127. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
  128. package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
  129. package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
  130. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
  131. package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
  132. package/src/modules/bmb/docs/workflows/terms.md +97 -0
  133. package/src/modules/bmb/module.yaml +16 -0
  134. package/src/modules/bmb/reference/README.md +3 -0
  135. package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
  136. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  137. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  138. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  139. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
  140. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
  141. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  142. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
  143. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  144. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  145. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  146. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  147. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  148. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  149. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  150. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  151. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  152. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  153. package/src/modules/bmb/workflows/create-agent/data/agent-validation-checklist.md +174 -0
  154. package/src/modules/bmb/workflows/create-agent/data/brainstorm-context.md +153 -0
  155. package/src/modules/bmb/workflows/create-agent/data/communication-presets.csv +61 -0
  156. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
  157. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
  158. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  159. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  160. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  161. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  162. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  163. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +153 -0
  164. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +48 -0
  165. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +48 -0
  166. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +53 -0
  167. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
  168. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  169. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  170. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  171. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  172. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  173. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  174. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  175. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  176. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  177. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  178. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  179. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  180. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  181. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  182. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  183. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  184. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  185. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  186. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
  187. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
  188. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +206 -0
  189. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
  190. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
  191. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +232 -0
  192. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +186 -0
  193. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
  194. package/src/modules/bmb/workflows/create-agent/steps/step-08-celebrate.md +218 -0
  195. package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +3 -0
  196. package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +364 -0
  197. package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +257 -0
  198. package/src/modules/bmb/workflows/create-agent/workflow.md +58 -0
  199. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
  200. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
  201. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
  202. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
  203. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
  204. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
  205. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
  206. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
  207. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
  208. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +309 -0
  209. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +337 -0
  210. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
  211. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +313 -0
  212. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
  213. package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
  214. package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +53 -0
  215. package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
  216. package/src/modules/bmb/workflows/create-module/validation.md +126 -0
  217. package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
  218. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
  219. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
  220. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
  221. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
  222. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
  223. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
  224. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
  225. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
  226. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
  227. package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
  228. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
  229. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
  230. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
  231. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
  232. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
  233. package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
  234. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
  235. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
  236. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
  237. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
  238. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
  239. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
  240. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
  241. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
  242. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
  243. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
  244. package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
  245. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
  246. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
  247. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
  248. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
  249. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
  250. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
  251. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
  252. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
  253. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
  254. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
  255. package/src/modules/bmb/workflows-legacy/edit-module/README.md +171 -0
  256. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +163 -0
  257. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +340 -0
  258. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +34 -0
  259. package/src/modules/bmb/workflows-legacy/module-brief/README.md +264 -0
  260. package/src/modules/bmb/workflows-legacy/module-brief/checklist.md +116 -0
  261. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +268 -0
  262. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +36 -0
  263. package/src/modules/bmgd/_module-installer/installer.js +160 -0
  264. package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
  265. package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
  266. package/src/modules/bmgd/agents/game-architect.agent.yaml +43 -0
  267. package/src/modules/bmgd/agents/game-designer.agent.yaml +48 -0
  268. package/src/modules/bmgd/agents/game-dev.agent.yaml +52 -0
  269. package/src/modules/bmgd/agents/game-qa.agent.yaml +60 -0
  270. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +59 -0
  271. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +52 -0
  272. package/src/modules/bmgd/docs/agents-guide.md +407 -0
  273. package/src/modules/bmgd/docs/game-types-guide.md +503 -0
  274. package/src/modules/bmgd/docs/glossary.md +294 -0
  275. package/src/modules/bmgd/docs/index.md +180 -0
  276. package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
  277. package/src/modules/bmgd/docs/quick-start.md +250 -0
  278. package/src/modules/bmgd/docs/troubleshooting.md +259 -0
  279. package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
  280. package/src/modules/bmgd/docs/workflows-guide.md +463 -0
  281. package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
  282. package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
  283. package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
  284. package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
  285. package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
  286. package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
  287. package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
  288. package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
  289. package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
  290. package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
  291. package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
  292. package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
  293. package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
  294. package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
  295. package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
  296. package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
  297. package/src/modules/bmgd/gametest/qa-index.csv +17 -0
  298. package/src/modules/bmgd/module.yaml +64 -0
  299. package/src/modules/bmgd/teams/default-party.csv +12 -0
  300. package/src/modules/bmgd/teams/team-gamedev.yaml +29 -0
  301. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
  302. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
  303. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
  304. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
  305. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
  306. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
  307. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
  308. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +373 -0
  309. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
  310. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
  311. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
  312. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
  313. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
  314. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
  315. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
  316. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
  317. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
  318. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
  319. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
  320. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
  321. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
  322. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
  323. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
  324. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
  325. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
  326. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
  327. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
  328. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
  329. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
  330. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
  331. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
  332. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
  333. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
  334. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
  335. package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
  336. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +101 -0
  337. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +604 -0
  338. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
  339. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
  340. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
  341. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
  342. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
  343. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
  344. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
  345. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
  346. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
  347. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
  348. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
  349. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
  350. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
  351. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +77 -0
  352. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
  353. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
  354. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
  355. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
  356. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
  357. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
  358. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
  359. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
  360. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
  361. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
  362. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
  363. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
  364. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +356 -0
  365. package/src/modules/bmgd/workflows/3-technical/game-architecture/templates/architecture-template.md +103 -0
  366. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
  367. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +98 -0
  368. package/src/modules/bmgd/workflows/3-technical/generate-project-context/project-context-template.md +20 -0
  369. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +201 -0
  370. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +373 -0
  371. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +279 -0
  372. package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +48 -0
  373. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
  374. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
  375. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +64 -0
  376. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
  377. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
  378. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +63 -0
  379. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +358 -0
  380. package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
  381. package/src/modules/bmgd/workflows/4-production/create-story/template.md +49 -0
  382. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +79 -0
  383. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +80 -0
  384. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
  385. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +68 -0
  386. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
  387. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +62 -0
  388. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
  389. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
  390. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  391. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +56 -0
  392. package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
  393. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
  394. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
  395. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
  396. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
  397. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
  398. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
  399. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
  400. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
  401. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
  402. package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
  403. package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
  404. package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
  405. package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
  406. package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
  407. package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
  408. package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
  409. package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
  410. package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
  411. package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
  412. package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  413. package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
  414. package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
  415. package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
  416. package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
  417. package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
  418. package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
  419. package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
  420. package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
  421. package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
  422. package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
  423. package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
  424. package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
  425. package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
  426. package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
  427. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
  428. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
  429. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
  430. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
  431. package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
  432. package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
  433. package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
  434. package/src/modules/bmm/README.md +78 -92
  435. package/src/modules/bmm/_module-installer/installer.js +3 -37
  436. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
  437. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
  438. package/src/modules/bmm/agents/analyst.agent.yaml +27 -30
  439. package/src/modules/bmm/agents/architect.agent.yaml +16 -26
  440. package/src/modules/bmm/agents/dev.agent.yaml +29 -28
  441. package/src/modules/bmm/agents/pm.agent.yaml +27 -36
  442. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +31 -0
  443. package/src/modules/bmm/agents/sm.agent.yaml +31 -52
  444. package/src/modules/bmm/agents/tea.agent.yaml +41 -35
  445. package/src/modules/bmm/agents/tech-writer.agent.yaml +54 -0
  446. package/src/modules/bmm/agents/ux-designer.agent.yaml +21 -18
  447. package/src/modules/bmm/data/README.md +29 -0
  448. package/src/modules/bmm/data/documentation-standards.md +262 -0
  449. package/src/modules/bmm/data/project-context-template.md +40 -0
  450. package/src/modules/bmm/docs/agents-guide.md +144 -0
  451. package/src/modules/bmm/docs/bmad-quick-flow.md +506 -0
  452. package/src/modules/bmm/docs/brownfield-guide.md +748 -0
  453. package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
  454. package/src/modules/bmm/docs/faq.md +542 -0
  455. package/src/modules/bmm/docs/glossary.md +306 -0
  456. package/src/modules/bmm/docs/images/README.md +37 -0
  457. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5034 -0
  458. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -0
  459. package/src/modules/bmm/docs/index.md +168 -0
  460. package/src/modules/bmm/docs/party-mode.md +224 -0
  461. package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
  462. package/src/modules/bmm/docs/quick-spec-flow.md +638 -0
  463. package/src/modules/bmm/docs/quick-start.md +366 -0
  464. package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
  465. package/src/modules/bmm/docs/test-architecture.md +455 -0
  466. package/src/modules/bmm/docs/troubleshooting.md +661 -0
  467. package/src/modules/bmm/docs/workflow-architecture-reference.md +366 -0
  468. package/src/modules/bmm/docs/workflow-document-project-reference.md +489 -0
  469. package/src/modules/bmm/docs/workflows-analysis.md +266 -0
  470. package/src/modules/bmm/docs/workflows-implementation.md +210 -0
  471. package/src/modules/bmm/docs/workflows-planning.md +451 -0
  472. package/src/modules/bmm/docs/workflows-solutioning.md +509 -0
  473. package/src/modules/bmm/module.yaml +56 -0
  474. package/src/modules/bmm/teams/default-party.csv +21 -0
  475. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  476. package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
  477. package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
  478. package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
  479. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
  480. package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
  481. package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  482. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
  483. package/src/modules/bmm/testarch/knowledge/log.md +294 -0
  484. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
  485. package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
  486. package/src/modules/bmm/testarch/knowledge/overview.md +283 -0
  487. package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
  488. package/src/modules/bmm/testarch/tea-index.csv +11 -0
  489. package/src/modules/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  490. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +181 -0
  491. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +165 -0
  492. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +203 -0
  493. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +206 -0
  494. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +209 -0
  495. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +223 -0
  496. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +198 -0
  497. package/src/modules/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  498. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
  499. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
  500. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
  501. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
  502. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
  503. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
  504. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
  505. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
  506. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
  507. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
  508. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
  509. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
  510. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
  511. package/src/modules/bmm/workflows/1-analysis/research/research.template.md +29 -0
  512. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
  513. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
  514. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
  515. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
  516. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
  517. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
  518. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +173 -0
  519. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +134 -0
  520. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
  521. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +189 -0
  522. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
  523. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
  524. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
  525. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
  526. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
  527. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
  528. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
  529. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
  530. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
  531. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
  532. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
  533. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +227 -0
  534. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
  535. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
  536. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  537. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +7 -58
  538. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  539. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +196 -0
  540. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
  541. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
  542. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
  543. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
  544. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
  545. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
  546. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
  547. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
  548. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
  549. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
  550. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +185 -0
  551. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
  552. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +189 -0
  553. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +177 -0
  554. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
  555. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +138 -0
  556. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
  557. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
  558. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  559. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  560. package/src/modules/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  561. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  562. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  563. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  564. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +163 -0
  565. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +223 -0
  566. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +330 -0
  567. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +317 -0
  568. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +358 -0
  569. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +378 -0
  570. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +358 -0
  571. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +351 -0
  572. package/src/modules/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  573. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
  574. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
  575. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
  576. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
  577. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  578. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  579. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
  580. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
  581. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +34 -36
  582. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  583. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
  584. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +42 -27
  585. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
  586. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +344 -0
  587. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
  588. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -27
  589. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
  590. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
  591. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +9 -10
  592. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1208 -244
  593. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
  594. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +59 -55
  595. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +14 -14
  596. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +21 -8
  597. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  598. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  599. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
  600. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +28 -0
  601. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
  602. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  603. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  604. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  605. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  606. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
  607. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +51 -0
  608. package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
  609. package/src/modules/bmm/workflows/document-project/instructions.md +31 -32
  610. package/src/modules/bmm/workflows/document-project/workflow.yaml +4 -10
  611. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +6 -6
  612. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  613. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
  614. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  615. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  616. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  617. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  618. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  619. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  620. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  621. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  622. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  623. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  624. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  625. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  626. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  627. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  628. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  629. package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  630. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +183 -0
  631. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
  632. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
  633. package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
  634. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +10 -9
  635. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +1 -0
  636. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +26 -5
  637. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
  638. package/src/modules/bmm/workflows/testarch/automate/checklist.md +2 -0
  639. package/src/modules/bmm/workflows/testarch/automate/instructions.md +25 -4
  640. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
  641. package/src/modules/bmm/workflows/testarch/ci/checklist.md +7 -5
  642. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
  643. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
  644. package/src/modules/bmm/workflows/testarch/ci/instructions.md +23 -4
  645. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
  646. package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
  647. package/src/modules/bmm/workflows/testarch/framework/instructions.md +28 -2
  648. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
  649. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +2 -0
  650. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  651. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +2 -0
  652. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
  653. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +7 -6
  654. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +182 -15
  655. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +13 -4
  656. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +13 -11
  657. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +2 -0
  658. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
  659. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +2 -0
  660. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
  661. package/src/modules/bmm/workflows/testarch/trace/checklist.md +1 -0
  662. package/src/modules/bmm/workflows/testarch/trace/instructions.md +11 -9
  663. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +2 -0
  664. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
  665. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +259 -210
  666. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
  667. package/src/modules/bmm/workflows/workflow-status/instructions.md +188 -117
  668. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +122 -0
  669. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +110 -0
  670. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +106 -0
  671. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +96 -0
  672. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  673. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  674. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +7 -5
  675. package/src/modules/cis/_module-installer/installer.js +1 -1
  676. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +7 -10
  677. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +7 -10
  678. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +7 -10
  679. package/src/modules/cis/agents/innovation-strategist.agent.yaml +7 -10
  680. package/src/modules/cis/agents/presentation-master.agent.yaml +52 -0
  681. package/src/modules/cis/agents/storyteller/storyteller-sidecar/stories-told.md +7 -0
  682. package/src/modules/cis/agents/storyteller/storyteller-sidecar/story-preferences.md +7 -0
  683. package/src/modules/cis/agents/storyteller/storyteller.agent.yaml +25 -0
  684. package/src/modules/cis/docs/index.md +149 -0
  685. package/src/modules/cis/module.yaml +11 -0
  686. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  687. package/src/modules/cis/teams/default-party.csv +12 -0
  688. package/src/modules/cis/workflows/README.md +102 -30
  689. package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
  690. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
  691. package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
  692. package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
  693. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
  694. package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
  695. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
  696. package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
  697. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
  698. package/src/utility/agent-components/activation-rules.txt +7 -0
  699. package/src/utility/agent-components/activation-steps.txt +13 -0
  700. package/src/utility/agent-components/agent-command-header.md +1 -0
  701. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  702. package/src/utility/agent-components/handler-action.txt +4 -0
  703. package/src/utility/agent-components/handler-exec.txt +6 -0
  704. package/src/utility/agent-components/handler-multi.txt +14 -0
  705. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  706. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  707. package/src/utility/agent-components/handler-workflow.txt +10 -0
  708. package/src/utility/agent-components/menu-handlers.txt +6 -0
  709. package/test/README.md +2 -2
  710. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +24 -0
  711. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +24 -0
  712. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
  713. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +30 -0
  714. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +23 -0
  715. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +22 -0
  716. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +23 -0
  717. package/test/test-agent-schema.js +2 -2
  718. package/test/test-installation-components.js +214 -0
  719. package/tools/build-docs.js +630 -0
  720. package/tools/cli/README.md +1 -588
  721. package/tools/cli/commands/install.js +61 -20
  722. package/tools/cli/installers/install-messages.yaml +52 -0
  723. package/tools/cli/installers/lib/core/config-collector.js +596 -99
  724. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  725. package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
  726. package/tools/cli/installers/lib/core/detector.js +75 -16
  727. package/tools/cli/installers/lib/core/ide-config-manager.js +12 -8
  728. package/tools/cli/installers/lib/core/installer.js +1279 -724
  729. package/tools/cli/installers/lib/core/manifest-generator.js +285 -142
  730. package/tools/cli/installers/lib/core/manifest.js +74 -20
  731. package/tools/cli/installers/lib/custom/handler.js +363 -0
  732. package/tools/cli/installers/lib/ide/_base-ide.js +94 -12
  733. package/tools/cli/installers/lib/ide/antigravity.js +507 -0
  734. package/tools/cli/installers/lib/ide/auggie.js +148 -240
  735. package/tools/cli/installers/lib/ide/claude-code.js +95 -35
  736. package/tools/cli/installers/lib/ide/cline.js +64 -18
  737. package/tools/cli/installers/lib/ide/codex.js +226 -72
  738. package/tools/cli/installers/lib/ide/crush.js +79 -55
  739. package/tools/cli/installers/lib/ide/cursor.js +144 -20
  740. package/tools/cli/installers/lib/ide/gemini.js +180 -35
  741. package/tools/cli/installers/lib/ide/github-copilot.js +155 -58
  742. package/tools/cli/installers/lib/ide/iflow.js +79 -30
  743. package/tools/cli/installers/lib/ide/kilo.js +94 -16
  744. package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
  745. package/tools/cli/installers/lib/ide/manager.js +50 -0
  746. package/tools/cli/installers/lib/ide/opencode.js +66 -22
  747. package/tools/cli/installers/lib/ide/qwen.js +93 -11
  748. package/tools/cli/installers/lib/ide/roo.js +158 -176
  749. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  750. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
  751. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
  752. package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
  753. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
  754. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +241 -0
  755. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  756. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  757. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  758. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  759. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  760. package/tools/cli/installers/lib/ide/trae.js +67 -32
  761. package/tools/cli/installers/lib/ide/windsurf.js +65 -8
  762. package/tools/cli/installers/lib/message-loader.js +85 -0
  763. package/tools/cli/installers/lib/modules/manager.js +785 -97
  764. package/tools/cli/lib/activation-builder.js +8 -13
  765. package/tools/cli/lib/agent/compiler.js +565 -0
  766. package/tools/cli/lib/agent/installer.js +716 -0
  767. package/tools/cli/lib/agent/template-engine.js +152 -0
  768. package/tools/cli/lib/agent-analyzer.js +48 -20
  769. package/tools/cli/lib/agent-party-generator.js +5 -17
  770. package/tools/cli/lib/cli-utils.js +65 -46
  771. package/tools/cli/lib/config.js +7 -4
  772. package/tools/cli/lib/platform-codes.js +2 -2
  773. package/tools/cli/lib/ui.js +1133 -82
  774. package/tools/cli/lib/xml-handler.js +4 -55
  775. package/tools/cli/lib/yaml-format.js +6 -7
  776. package/tools/cli/lib/yaml-xml-builder.js +196 -56
  777. package/tools/flattener/ignoreRules.js +1 -1
  778. package/tools/flattener/xml.js +1 -7
  779. package/tools/lib/xml-utils.js +13 -0
  780. package/tools/maintainer/review-pr-README.md +55 -0
  781. package/tools/maintainer/review-pr.md +242 -0
  782. package/tools/migrate-custom-module-paths.js +124 -0
  783. package/tools/platform-codes.yaml +24 -0
  784. package/tools/schema/agent.js +312 -53
  785. package/tools/validate-agent-schema.js +2 -2
  786. package/tools/validate-svg-changes.sh +356 -0
  787. package/website/css/custom.css +52 -0
  788. package/website/docusaurus.config.js +179 -0
  789. package/website/sidebars.js +157 -0
  790. package/website/src/pages/downloads.md +81 -0
  791. package/website/src/pages/index.js +50 -0
  792. package/website/static/favicon.ico +0 -0
  793. package/website/static/img/logo.svg +4 -0
  794. package/website/static/robots.txt +37 -0
  795. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  796. package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
  797. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  798. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  799. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  800. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  801. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  802. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  803. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  804. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  805. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  806. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  807. package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
  808. package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
  809. package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
  810. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  811. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  812. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  813. package/.claude/commands/bmad/core/workflows/README.md +0 -27
  814. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  815. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  816. package/.claude/hooks/bmad-tts-injector.sh +0 -415
  817. package/.claude/hooks/bmad-voice-manager.sh +0 -511
  818. package/.claude/hooks/check-output-style.sh +0 -112
  819. package/.claude/hooks/download-extra-voices.sh +0 -244
  820. package/.claude/hooks/github-star-reminder.sh +0 -154
  821. package/.claude/hooks/language-manager.sh +0 -392
  822. package/.claude/hooks/learn-manager.sh +0 -475
  823. package/.claude/hooks/personality-manager.sh +0 -438
  824. package/.claude/hooks/piper-download-voices.sh +0 -165
  825. package/.claude/hooks/piper-installer.sh +0 -178
  826. package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
  827. package/.claude/hooks/piper-voice-manager.sh +0 -293
  828. package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
  829. package/.claude/hooks/play-tts-piper.sh +0 -338
  830. package/.claude/hooks/play-tts.sh +0 -100
  831. package/.claude/hooks/provider-commands.sh +0 -540
  832. package/.claude/hooks/provider-manager.sh +0 -298
  833. package/.claude/hooks/replay-target-audio.sh +0 -95
  834. package/.claude/hooks/sentiment-manager.sh +0 -201
  835. package/.claude/hooks/speed-manager.sh +0 -291
  836. package/.claude/hooks/voice-manager.sh +0 -594
  837. package/.claude/hooks/voices-config.sh +0 -70
  838. package/.claude/settings.local.json +0 -41
  839. package/.github/workflows/lint.yaml +0 -61
  840. package/bmad/_cfg/agent-manifest.csv +0 -7
  841. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  842. package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
  843. package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
  844. package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
  845. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  846. package/bmad/_cfg/files-manifest.csv +0 -83
  847. package/bmad/_cfg/manifest.yaml +0 -12
  848. package/bmad/_cfg/task-manifest.csv +0 -5
  849. package/bmad/_cfg/tool-manifest.csv +0 -2
  850. package/bmad/_cfg/workflow-manifest.csv +0 -15
  851. package/bmad/bmb/README.md +0 -132
  852. package/bmad/bmb/agents/bmad-builder.md +0 -70
  853. package/bmad/bmb/config.yaml +0 -14
  854. package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  855. package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  856. package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
  857. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  858. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
  859. package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
  860. package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  861. package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  862. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  863. package/bmad/bmb/workflows/create-agent/README.md +0 -320
  864. package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  865. package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
  866. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  867. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
  868. package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  869. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  870. package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
  871. package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  872. package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
  873. package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  874. package/bmad/bmb/workflows/create-module/README.md +0 -220
  875. package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
  876. package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  877. package/bmad/bmb/workflows/create-module/checklist.md +0 -244
  878. package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
  879. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  880. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  881. package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
  882. package/bmad/bmb/workflows/create-module/instructions.md +0 -581
  883. package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
  884. package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
  885. package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
  886. package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  887. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
  888. package/bmad/bmb/workflows/create-workflow/README.md +0 -277
  889. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  890. package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  891. package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
  892. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  893. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  894. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  895. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  896. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  897. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
  898. package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  899. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
  900. package/bmad/bmb/workflows/edit-agent/README.md +0 -112
  901. package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  902. package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  903. package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  904. package/bmad/bmb/workflows/edit-module/README.md +0 -187
  905. package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
  906. package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
  907. package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  908. package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
  909. package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  910. package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  911. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  912. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
  913. package/bmad/bmb/workflows/module-brief/README.md +0 -264
  914. package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
  915. package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
  916. package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  917. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
  918. package/bmad/bmb/workflows/redoc/README.md +0 -87
  919. package/bmad/bmb/workflows/redoc/checklist.md +0 -99
  920. package/bmad/bmb/workflows/redoc/instructions.md +0 -265
  921. package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  922. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
  923. package/bmad/bmd/README.md +0 -193
  924. package/bmad/bmd/README.md.bak +0 -193
  925. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  926. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
  927. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  928. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
  929. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  930. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
  931. package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  932. package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
  933. package/bmad/bmd/agents/cli-chief.md +0 -108
  934. package/bmad/bmd/agents/cli-chief.md.bak +0 -108
  935. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  936. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
  937. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  938. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
  939. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  940. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
  941. package/bmad/bmd/agents/doc-keeper.md +0 -115
  942. package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
  943. package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  944. package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
  945. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  946. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
  947. package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
  948. package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
  949. package/bmad/bmd/agents/release-chief.md +0 -109
  950. package/bmad/bmd/agents/release-chief.md.bak +0 -109
  951. package/bmad/bmd/config.yaml +0 -10
  952. package/bmad/core/agents/bmad-master.md +0 -71
  953. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  954. package/bmad/core/config.yaml +0 -9
  955. package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
  956. package/bmad/core/tasks/adv-elicit.xml +0 -104
  957. package/bmad/core/tasks/index-docs.xml +0 -65
  958. package/bmad/core/tasks/validate-workflow.xml +0 -89
  959. package/bmad/core/tasks/workflow.xml +0 -174
  960. package/bmad/core/tools/shard-doc.xml +0 -100
  961. package/bmad/core/workflows/brainstorming/README.md +0 -271
  962. package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  963. package/bmad/core/workflows/brainstorming/instructions.md +0 -314
  964. package/bmad/core/workflows/brainstorming/template.md +0 -102
  965. package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  966. package/bmad/core/workflows/party-mode/instructions.md +0 -188
  967. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  968. package/bmad/docs/claude-code-instructions.md +0 -25
  969. package/bmad/docs/codex-instructions.md +0 -21
  970. package/bmd/README.md +0 -193
  971. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  972. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  973. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  974. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  975. package/bmd/agents/cli-chief.agent.yaml +0 -126
  976. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  977. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  978. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  979. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  980. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  981. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  982. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  983. package/bmd/agents/release-chief.agent.yaml +0 -127
  984. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  985. package/bmd/config.yaml +0 -12
  986. package/docs/bmad-brownfield-guide.md +0 -1260
  987. package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
  988. package/docs/installers-bundlers/ide-injections.md +0 -186
  989. package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -327
  990. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  991. package/src/core/_module-installer/install-config.yaml +0 -28
  992. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  993. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  994. package/src/core/tasks/adv-elicit.xml +0 -104
  995. package/src/core/workflows/brainstorming/README.md +0 -271
  996. package/src/core/workflows/brainstorming/instructions.md +0 -314
  997. package/src/core/workflows/brainstorming/workflow.yaml +0 -43
  998. package/src/core/workflows/party-mode/instructions.md +0 -188
  999. package/src/core/workflows/party-mode/workflow.yaml +0 -23
  1000. package/src/modules/bmb/_module-installer/install-config.yaml +0 -26
  1001. package/src/modules/bmb/agents/bmad-builder.agent.yaml +0 -58
  1002. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -143
  1003. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  1004. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  1005. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  1006. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  1007. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  1008. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  1009. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
  1010. package/src/modules/bmb/workflows/create-agent/README.md +0 -320
  1011. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
  1012. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  1013. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  1014. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  1015. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  1016. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  1017. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -430
  1018. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
  1019. package/src/modules/bmb/workflows/create-module/README.md +0 -220
  1020. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  1021. package/src/modules/bmb/workflows/create-module/checklist.md +0 -244
  1022. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  1023. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  1024. package/src/modules/bmb/workflows/create-module/instructions.md +0 -581
  1025. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -366
  1026. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
  1027. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  1028. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  1029. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  1030. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -716
  1031. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  1032. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  1033. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  1034. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  1035. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
  1036. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
  1037. package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
  1038. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  1039. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
  1040. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
  1041. package/src/modules/bmb/workflows/edit-module/README.md +0 -187
  1042. package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
  1043. package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
  1044. package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
  1045. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  1046. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  1047. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  1048. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
  1049. package/src/modules/bmb/workflows/module-brief/README.md +0 -264
  1050. package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
  1051. package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
  1052. package/src/modules/bmb/workflows/module-brief/template.md +0 -275
  1053. package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
  1054. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  1055. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  1056. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  1057. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  1058. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  1059. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  1060. package/src/modules/bmm/_module-installer/install-config.yaml +0 -74
  1061. package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
  1062. package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
  1063. package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
  1064. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  1065. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  1066. package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
  1067. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  1068. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  1069. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  1070. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  1071. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  1072. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  1073. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  1074. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  1075. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  1076. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  1077. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  1078. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  1079. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  1080. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  1081. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  1082. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  1083. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  1084. package/src/modules/bmm/tasks/retrospective.xml +0 -104
  1085. package/src/modules/bmm/teams/team-gamedev.yaml +0 -14
  1086. package/src/modules/bmm/testarch/README.md +0 -311
  1087. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
  1088. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
  1089. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +0 -41
  1090. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
  1091. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -91
  1092. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  1093. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  1094. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
  1095. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +0 -357
  1096. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +0 -44
  1097. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
  1098. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  1099. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -321
  1100. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -165
  1101. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -43
  1102. package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
  1103. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -202
  1104. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  1105. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
  1106. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
  1107. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
  1108. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
  1109. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
  1110. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -433
  1111. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -613
  1112. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -125
  1113. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -501
  1114. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  1115. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -311
  1116. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -210
  1117. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -49
  1118. package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
  1119. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  1120. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1283
  1121. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -42
  1122. package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
  1123. package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +0 -475
  1124. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
  1125. package/src/modules/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -557
  1126. package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -38
  1127. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -117
  1128. package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
  1129. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -449
  1130. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -46
  1131. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -107
  1132. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -11
  1133. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
  1134. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
  1135. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -269
  1136. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -55
  1137. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -56
  1138. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -52
  1139. package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
  1140. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
  1141. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  1142. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
  1143. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -703
  1144. package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +0 -318
  1145. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -54
  1146. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
  1147. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
  1148. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
  1149. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  1150. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  1151. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
  1152. package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
  1153. package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
  1154. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -391
  1155. package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
  1156. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
  1157. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -252
  1158. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  1159. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
  1160. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
  1161. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
  1162. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  1163. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -160
  1164. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  1165. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -34
  1166. package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
  1167. package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
  1168. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
  1169. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  1170. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  1171. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -201
  1172. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -32
  1173. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  1174. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -27
  1175. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  1176. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -27
  1177. package/src/modules/bmm/workflows/README.md +0 -577
  1178. package/src/modules/bmm/workflows/document-project/README.md +0 -444
  1179. package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
  1180. package/src/modules/bmm/workflows/testarch/README.md +0 -26
  1181. package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
  1182. package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
  1183. package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
  1184. package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
  1185. package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
  1186. package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
  1187. package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
  1188. package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
  1189. package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
  1190. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
  1191. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +0 -58
  1192. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
  1193. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +0 -95
  1194. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
  1195. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
  1196. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
  1197. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +0 -49
  1198. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
  1199. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
  1200. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
  1201. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
  1202. package/src/modules/cis/_module-installer/install-config.yaml +0 -14
  1203. package/src/modules/cis/agents/README.md +0 -104
  1204. package/src/modules/cis/agents/storyteller.agent.yaml +0 -23
  1205. package/src/modules/cis/readme.md +0 -86
  1206. package/src/utility/models/agent-activation-ide.xml +0 -51
  1207. package/src/utility/models/agent-activation-web.xml +0 -60
  1208. package/src/utility/models/agent-config-template.md +0 -23
  1209. package/src/utility/models/agent-in-team-activation.xml +0 -3
  1210. package/src/utility/models/fragments/activation-rules.xml +0 -8
  1211. package/src/utility/models/fragments/activation-steps.xml +0 -15
  1212. package/src/utility/models/fragments/handler-action.xml +0 -4
  1213. package/src/utility/models/fragments/handler-exec.xml +0 -5
  1214. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  1215. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  1216. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  1217. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  1218. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  1219. package/src/utility/templates/agent.customize.template.yaml +0 -42
  1220. package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +0 -26
  1221. package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +0 -25
  1222. package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +0 -26
  1223. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  1224. package/tools/cli/bundlers/bundle-web.js +0 -179
  1225. package/tools/cli/bundlers/test-analyst.js +0 -28
  1226. package/tools/cli/bundlers/test-bundler.js +0 -118
  1227. package/tools/cli/bundlers/web-bundler.js +0 -1479
  1228. package/tools/cli/commands/build.js +0 -458
  1229. package/tools/cli/commands/list.js +0 -28
  1230. package/tools/cli/commands/status.js +0 -47
  1231. package/tools/cli/commands/uninstall.js +0 -44
  1232. package/tools/cli/commands/update.js +0 -28
  1233. package/tools/cli/installers/lib/ide/task-tool-command-generator.js +0 -119
  1234. package/tools/cli/installers/lib/ide/workflow-command-generator.js +0 -235
  1235. package/tools/cli/installers/lib/ide/workflow-command-template.md +0 -15
  1236. package/tools/cli/lib/replace-project-root.js +0 -239
  1237. package/tools/cli/regenerate-manifests.js +0 -28
  1238. package/tools/cli/test-yaml-builder.js +0 -43
  1239. package/tools/validate-bundles.js +0 -87
  1240. package/v6-open-items.md +0 -23
  1241. /package/{bmad/bmb/workflows → src/modules/bmb/workflows-legacy}/module-brief/template.md +0 -0
  1242. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
  1243. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
  1244. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
  1245. /package/src/modules/{bmm/workflows/1-analysis/game-brief/template.md → bmgd/workflows/1-preproduction/game-brief/templates/game-brief-template.md} +0 -0
  1246. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
  1247. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
  1248. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
  1249. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
  1250. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
  1251. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
  1252. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
  1253. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
  1254. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
  1255. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
  1256. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
  1257. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
  1258. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
  1259. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
  1260. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
  1261. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
  1262. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
  1263. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
  1264. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
  1265. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
  1266. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
  1267. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
  1268. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
  1269. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
  1270. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
  1271. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
  1272. /package/src/modules/{bmm/workflows/2-plan-workflows/gdd → bmgd/workflows/2-design/gdd/templates}/gdd-template.md +0 -0
  1273. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
  1274. /package/src/modules/{bmm/workflows/2-plan-workflows/narrative → bmgd/workflows/2-design/narrative/templates}/narrative-template.md +0 -0
  1275. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/decision-catalog.yaml +0 -0
  1276. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/pattern-categories.csv +0 -0
  1277. /package/src/modules/{bmm/workflows/4-implementation/code-review/backlog_template.md → bmgd/workflows/4-production/code-review/backlog-template.md} +0 -0
  1278. /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
@@ -1,50 +1,253 @@
1
1
  const chalk = require('chalk');
2
- const inquirer = require('inquirer');
2
+ const inquirer = require('inquirer').default || require('inquirer');
3
3
  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 };