bmad-method 6.0.0-alpha.12 → 6.0.0-alpha.14

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 (608) hide show
  1. package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
  2. package/.github/scripts/discord-helpers.sh +15 -0
  3. package/.github/workflows/bundle-latest.yaml +79 -27
  4. package/.github/workflows/discord.yaml +278 -8
  5. package/.github/workflows/quality.yaml +19 -0
  6. package/.markdownlint-cli2.yaml +42 -0
  7. package/.prettierignore +3 -0
  8. package/CHANGELOG.md +254 -1
  9. package/CODE_OF_CONDUCT.md +128 -0
  10. package/README.md +3 -1
  11. package/bmad-method-6.0.0-alpha.14.tgz +0 -0
  12. package/docs/agent-customization-guide.md +2 -2
  13. package/docs/custom-agent-installation.md +58 -90
  14. package/docs/document-sharding-guide.md +1 -1
  15. package/docs/ide-info/rovo-dev.md +388 -0
  16. package/docs/index.md +6 -81
  17. package/docs/installers-bundlers/installers-modules-platforms-reference.md +1 -1
  18. package/eslint.config.mjs +14 -0
  19. package/example-custom-content/README.md +4 -0
  20. package/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +129 -0
  21. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
  22. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
  23. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
  24. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
  25. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
  26. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
  27. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
  28. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
  29. package/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +109 -0
  30. package/example-custom-content/custom.yaml +3 -0
  31. package/example-custom-content/workflows/quiz-master/steps/step-01-init.md +168 -0
  32. package/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +155 -0
  33. package/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +89 -0
  34. package/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +36 -0
  35. package/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +36 -0
  36. package/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +36 -0
  37. package/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +36 -0
  38. package/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +36 -0
  39. package/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +36 -0
  40. package/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +36 -0
  41. package/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +36 -0
  42. package/example-custom-content/workflows/quiz-master/steps/step-12-results.md +150 -0
  43. package/example-custom-content/workflows/quiz-master/templates/csv-headers.template +1 -0
  44. package/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md +269 -0
  45. package/example-custom-content/workflows/quiz-master/workflow.md +54 -0
  46. package/example-custom-content/workflows/wassup/workflow.md +26 -0
  47. package/example-custom-module/mwm/README.md +4 -0
  48. package/example-custom-module/mwm/_module-installer/install-config.yaml +27 -0
  49. package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/cognitive-distortions.md +47 -0
  50. package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/thought-records.md +17 -0
  51. package/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +150 -0
  52. package/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +137 -0
  53. package/example-custom-module/mwm/agents/meditation-guide.agent.yaml +137 -0
  54. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
  55. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
  56. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
  57. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
  58. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +124 -0
  59. package/example-custom-module/mwm/workflows/cbt-thought-record/README.md +31 -0
  60. package/example-custom-module/mwm/workflows/cbt-thought-record/workflow.md +45 -0
  61. package/example-custom-module/mwm/workflows/crisis-support/README.md +31 -0
  62. package/example-custom-module/mwm/workflows/crisis-support/workflow.md +45 -0
  63. package/example-custom-module/mwm/workflows/daily-checkin/README.md +32 -0
  64. package/example-custom-module/mwm/workflows/daily-checkin/workflow.md +45 -0
  65. package/example-custom-module/mwm/workflows/guided-meditation/README.md +31 -0
  66. package/example-custom-module/mwm/workflows/guided-meditation/workflow.md +45 -0
  67. package/example-custom-module/mwm/workflows/wellness-journal/README.md +31 -0
  68. package/example-custom-module/mwm/workflows/wellness-journal/workflow.md +45 -0
  69. package/package.json +9 -4
  70. package/src/core/_module-installer/install-config.yaml +5 -1
  71. package/src/core/agents/bmad-master.agent.yaml +1 -1
  72. package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
  73. package/src/core/resources/excalidraw/library-loader.md +2 -2
  74. package/src/core/tasks/advanced-elicitation-methods.csv +51 -21
  75. package/src/core/tasks/advanced-elicitation.xml +18 -8
  76. package/src/core/tasks/workflow.xml +36 -71
  77. package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
  78. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
  79. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
  80. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
  81. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
  82. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
  83. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
  84. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
  85. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
  86. package/src/core/workflows/brainstorming/template.md +13 -104
  87. package/src/core/workflows/brainstorming/workflow.md +51 -0
  88. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  89. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
  90. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +158 -0
  91. package/src/core/workflows/party-mode/workflow.md +206 -0
  92. package/src/modules/bmb/README.md +153 -86
  93. package/src/modules/bmb/_module-installer/install-config.yaml +4 -9
  94. package/src/modules/bmb/_module-installer/installer.js +76 -0
  95. package/src/modules/bmb/agents/bmad-builder.agent.yaml +75 -38
  96. package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +6 -6
  97. package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.md} +20 -20
  98. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  99. package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +46 -46
  100. package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +7 -3
  101. package/src/modules/bmb/docs/workflows/architecture.md +220 -0
  102. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
  103. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
  104. package/src/modules/bmb/docs/workflows/index.md +45 -0
  105. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
  106. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  107. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
  108. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
  109. package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
  110. package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
  111. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
  112. package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
  113. package/src/modules/bmb/docs/workflows/terms.md +97 -0
  114. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +4 -4
  115. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +8 -8
  116. package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
  117. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +7 -7
  118. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
  119. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  120. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  121. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  122. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
  123. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
  124. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  125. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
  126. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  127. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  128. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  129. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  130. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  131. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  132. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  133. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  134. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  135. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  136. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
  137. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
  138. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  139. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  140. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  141. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  142. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  143. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  144. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
  145. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  146. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  147. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
  148. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  149. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  150. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  151. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  152. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  153. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  154. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  155. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  156. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  157. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  158. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  159. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  160. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  161. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  162. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  163. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  164. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  165. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  166. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
  167. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
  168. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +210 -0
  169. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
  170. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
  171. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +231 -0
  172. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +224 -0
  173. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
  174. package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +179 -0
  175. package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +197 -0
  176. package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
  177. package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
  178. package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +21 -0
  179. package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +25 -0
  180. package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
  181. package/src/modules/bmb/workflows/create-agent/workflow.md +91 -0
  182. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
  183. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
  184. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
  185. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
  186. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
  187. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
  188. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
  189. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
  190. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
  191. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +308 -0
  192. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +336 -0
  193. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
  194. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +317 -0
  195. package/src/modules/bmb/workflows/create-module/templates/install-config.template.yaml +53 -0
  196. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
  197. package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
  198. package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
  199. package/src/modules/bmb/workflows/create-module/validation.md +126 -0
  200. package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
  201. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
  202. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
  203. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
  204. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
  205. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
  206. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
  207. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
  208. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
  209. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
  210. package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
  211. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
  212. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
  213. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
  214. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
  215. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
  216. package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
  217. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
  218. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
  219. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
  220. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
  221. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
  222. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
  223. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
  224. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
  225. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
  226. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
  227. package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
  228. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
  229. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
  230. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
  231. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
  232. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
  233. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
  234. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
  235. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
  236. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
  237. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
  238. package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.md +0 -1
  239. package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -1
  240. package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -1
  241. package/src/modules/bmgd/agents/game-dev.agent.yaml +1 -1
  242. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +1 -1
  243. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +8 -8
  244. package/src/modules/bmm/_module-installer/install-config.yaml +10 -16
  245. package/src/modules/bmm/agents/analyst.agent.yaml +25 -22
  246. package/src/modules/bmm/agents/architect.agent.yaml +12 -14
  247. package/src/modules/bmm/agents/dev.agent.yaml +20 -16
  248. package/src/modules/bmm/agents/pm.agent.yaml +14 -32
  249. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +36 -0
  250. package/src/modules/bmm/agents/sm.agent.yaml +13 -31
  251. package/src/modules/bmm/agents/tea.agent.yaml +10 -7
  252. package/src/modules/bmm/agents/tech-writer.agent.yaml +7 -20
  253. package/src/modules/bmm/agents/ux-designer.agent.yaml +12 -10
  254. package/src/modules/bmm/data/README.md +29 -0
  255. package/src/modules/bmm/data/project-context-template.md +40 -0
  256. package/src/modules/bmm/docs/README.md +44 -10
  257. package/src/modules/bmm/docs/agents-guide.md +80 -53
  258. package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
  259. package/src/modules/bmm/docs/brownfield-guide.md +25 -39
  260. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  261. package/src/modules/bmm/docs/faq.md +6 -39
  262. package/src/modules/bmm/docs/glossary.md +12 -25
  263. package/src/modules/bmm/docs/images/README.md +37 -0
  264. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +960 -1845
  265. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -2
  266. package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
  267. package/src/modules/bmm/docs/quick-spec-flow.md +5 -5
  268. package/src/modules/bmm/docs/quick-start.md +9 -25
  269. package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
  270. package/src/modules/bmm/docs/test-architecture.md +90 -24
  271. package/src/modules/bmm/docs/troubleshooting.md +680 -0
  272. package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
  273. package/src/modules/bmm/docs/workflows-analysis.md +36 -140
  274. package/src/modules/bmm/docs/workflows-implementation.md +175 -160
  275. package/src/modules/bmm/docs/workflows-planning.md +51 -212
  276. package/src/modules/bmm/docs/workflows-solutioning.md +26 -71
  277. package/src/modules/bmm/tasks/daily-standup.xml +85 -0
  278. package/src/modules/bmm/teams/default-party.csv +15 -14
  279. package/src/modules/bmm/teams/team-fullstack.yaml +0 -1
  280. package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
  281. package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
  282. package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
  283. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
  284. package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
  285. package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  286. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
  287. package/src/modules/bmm/testarch/knowledge/log.md +294 -0
  288. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
  289. package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
  290. package/src/modules/bmm/testarch/knowledge/overview.md +284 -0
  291. package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
  292. package/src/modules/bmm/testarch/tea-index.csv +11 -0
  293. package/src/modules/bmm/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
  294. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
  295. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
  296. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
  297. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
  298. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
  299. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
  300. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
  301. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +58 -0
  302. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
  303. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
  304. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
  305. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
  306. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
  307. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
  308. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
  309. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
  310. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
  311. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
  312. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
  313. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
  314. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
  315. package/src/modules/bmm/workflows/1-analysis/research/research.template.md +15 -0
  316. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
  317. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
  318. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
  319. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
  320. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
  321. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
  322. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +204 -0
  323. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
  324. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
  325. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
  326. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
  327. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
  328. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
  329. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
  330. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
  331. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
  332. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
  333. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
  334. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
  335. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
  336. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
  337. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
  338. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
  339. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +59 -0
  340. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +12 -200
  341. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +243 -0
  342. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
  343. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
  344. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
  345. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
  346. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
  347. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
  348. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
  349. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
  350. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
  351. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
  352. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +223 -0
  353. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
  354. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
  355. package/src/modules/bmm/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
  356. package/src/modules/bmm/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
  357. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
  358. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
  359. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
  360. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
  361. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
  362. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
  363. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
  364. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
  365. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
  366. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +49 -0
  367. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
  368. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
  369. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
  370. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
  371. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  372. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  373. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-01-document-discovery.md +189 -0
  374. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-02-prd-analysis.md +177 -0
  375. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
  376. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-04-ux-alignment.md +138 -0
  377. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
  378. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-06-final-assessment.md +132 -0
  379. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/templates/readiness-report-template.md +4 -0
  380. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.md +54 -0
  381. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
  382. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +224 -0
  383. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -11
  384. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
  385. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +354 -0
  386. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +21 -34
  387. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
  388. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +406 -0
  389. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +6 -37
  390. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +3 -3
  391. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +19 -21
  392. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +11 -10
  393. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
  394. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +174 -0
  395. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
  396. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
  397. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
  398. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
  399. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +202 -0
  400. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +33 -0
  401. package/src/modules/bmm/workflows/document-project/instructions.md +1 -1
  402. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +2 -2
  403. package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +20 -0
  404. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +193 -0
  405. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
  406. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
  407. package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
  408. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +1 -1
  409. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +23 -3
  410. package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
  411. package/src/modules/bmm/workflows/testarch/ci/checklist.md +1 -1
  412. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
  413. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
  414. package/src/modules/bmm/workflows/testarch/ci/instructions.md +20 -3
  415. package/src/modules/bmm/workflows/testarch/framework/instructions.md +27 -1
  416. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +8 -2
  417. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
  418. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +66 -54
  419. package/src/modules/bmm/workflows/workflow-status/instructions.md +11 -4
  420. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +4 -8
  421. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +4 -8
  422. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +4 -8
  423. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +4 -9
  424. package/src/modules/cis/agents/README.md +1 -1
  425. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +3 -2
  426. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +2 -1
  427. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +2 -1
  428. package/src/modules/cis/agents/innovation-strategist.agent.yaml +2 -1
  429. package/src/modules/cis/agents/presentation-master.agent.yaml +3 -2
  430. package/src/modules/cis/agents/storyteller.agent.yaml +2 -1
  431. package/src/modules/cis/teams/default-party.csv +6 -5
  432. package/src/utility/models/agent-activation-ide.xml +4 -4
  433. package/src/utility/models/agent-activation-web.xml +1 -11
  434. package/src/utility/models/fragments/activation-rules.xml +5 -6
  435. package/src/utility/models/fragments/handler-exec.xml +6 -5
  436. package/src/utility/models/fragments/handler-multi.xml +14 -0
  437. package/test/README.md +1 -1
  438. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
  439. package/tools/cli/README.md +4 -3
  440. package/tools/cli/bundlers/web-bundler.js +3 -14
  441. package/tools/cli/commands/build.js +9 -184
  442. package/tools/cli/commands/install.js +42 -2
  443. package/tools/cli/installers/lib/core/config-collector.js +94 -10
  444. package/tools/cli/installers/lib/core/installer.js +389 -55
  445. package/tools/cli/installers/lib/core/manifest-generator.js +91 -30
  446. package/tools/cli/installers/lib/core/post-install-sidecar-replacement.js +79 -0
  447. package/tools/cli/installers/lib/custom/handler.js +266 -0
  448. package/tools/cli/installers/lib/ide/_base-ide.js +10 -0
  449. package/tools/cli/installers/lib/ide/antigravity.js +51 -7
  450. package/tools/cli/installers/lib/ide/auggie.js +72 -7
  451. package/tools/cli/installers/lib/ide/claude-code.js +1 -6
  452. package/tools/cli/installers/lib/ide/cline.js +49 -0
  453. package/tools/cli/installers/lib/ide/codex.js +2 -2
  454. package/tools/cli/installers/lib/ide/crush.js +66 -6
  455. package/tools/cli/installers/lib/ide/cursor.js +29 -13
  456. package/tools/cli/installers/lib/ide/gemini.js +96 -1
  457. package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
  458. package/tools/cli/installers/lib/ide/iflow.js +67 -1
  459. package/tools/cli/installers/lib/ide/kilo.js +74 -0
  460. package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
  461. package/tools/cli/installers/lib/ide/opencode.js +3 -3
  462. package/tools/cli/installers/lib/ide/qwen.js +54 -0
  463. package/tools/cli/installers/lib/ide/roo.js +145 -138
  464. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  465. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +8 -2
  466. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
  467. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +18 -14
  468. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
  469. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  470. package/tools/cli/installers/lib/ide/trae.js +47 -0
  471. package/tools/cli/installers/lib/modules/manager.js +486 -53
  472. package/tools/cli/lib/agent/compiler.js +210 -27
  473. package/tools/cli/lib/agent/installer.js +140 -30
  474. package/tools/cli/lib/agent-analyzer.js +46 -18
  475. package/tools/cli/lib/config.js +2 -1
  476. package/tools/cli/lib/ui.js +269 -13
  477. package/tools/cli/lib/yaml-xml-builder.js +123 -39
  478. package/tools/platform-codes.yaml +12 -0
  479. package/tools/schema/agent.js +229 -20
  480. package/tools/validate-svg-changes.sh +356 -0
  481. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  482. package/src/core/workflows/brainstorming/README.md +0 -261
  483. package/src/core/workflows/brainstorming/instructions.md +0 -315
  484. package/src/core/workflows/brainstorming/workflow.yaml +0 -38
  485. package/src/core/workflows/party-mode/instructions.md +0 -183
  486. package/src/core/workflows/party-mode/workflow.yaml +0 -28
  487. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
  488. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  489. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  490. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  491. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  492. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  493. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  494. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -30
  495. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -519
  496. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -55
  497. package/src/modules/bmb/workflows/create-module/README.md +0 -229
  498. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  499. package/src/modules/bmb/workflows/create-module/checklist.md +0 -235
  500. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  501. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  502. package/src/modules/bmb/workflows/create-module/instructions.md +0 -577
  503. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -400
  504. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -52
  505. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  506. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  507. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  508. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -725
  509. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1327
  510. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  511. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -15
  512. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  513. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -61
  514. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -41
  515. package/src/modules/bmb/workflows/edit-agent/README.md +0 -239
  516. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -654
  517. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -49
  518. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  519. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  520. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  521. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  522. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +0 -22
  523. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  524. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  525. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
  526. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  527. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  528. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
  529. package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  530. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
  531. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  532. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  533. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  534. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
  535. package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  536. package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  537. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
  538. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  539. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
  540. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
  541. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
  542. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
  543. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  544. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
  545. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  546. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
  547. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  548. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
  549. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
  550. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  551. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
  552. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -78
  553. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  554. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  555. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
  556. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
  557. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  558. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  559. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
  560. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  561. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  562. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  563. package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  564. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
  565. package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  566. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -100
  567. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md +0 -80
  568. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +0 -616
  569. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +0 -63
  570. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/checklist.md +0 -169
  571. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +0 -332
  572. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/template.md +0 -146
  573. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +0 -64
  574. package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  575. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  576. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  577. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  578. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  579. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  580. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  581. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
  582. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  583. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  584. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  585. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -63
  586. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  587. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
  588. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  589. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
  590. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  591. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  592. package/tools/cli/commands/agent-install.js +0 -409
  593. /package/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
  594. /package/src/modules/bmb/docs/{index.md → agents/index.md} +0 -0
  595. /package/src/modules/bmb/docs/{understanding-agent-types.md → agents/understanding-agent-types.md} +0 -0
  596. /package/src/modules/bmb/reference/{readme.md → README.md} +0 -0
  597. /package/src/modules/bmb/workflows/create-agent/{agent-validation-checklist.md → data/agent-validation-checklist.md} +0 -0
  598. /package/src/modules/bmb/workflows/create-agent/{brainstorm-context.md → data/brainstorm-context.md} +0 -0
  599. /package/src/modules/bmb/workflows/create-agent/{communication-presets.csv → data/communication-presets.csv} +0 -0
  600. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
  601. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/instructions.md +0 -0
  602. /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/workflow.yaml +0 -0
  603. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/README.md +0 -0
  604. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/checklist.md +0 -0
  605. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/instructions.md +0 -0
  606. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/template.md +0 -0
  607. /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/workflow.yaml +0 -0
  608. /package/src/modules/bmm/{workflows/techdoc → data}/documentation-standards.md +0 -0
@@ -1,3 +1,23 @@
1
+ /**
2
+ * File: tools/cli/installers/lib/core/installer.js
3
+ *
4
+ * BMAD Method - Business Model Agile Development Method
5
+ * Repository: https://github.com/paulpreibisch/BMAD-METHOD
6
+ *
7
+ * Copyright (c) 2025 Paul Preibisch
8
+ * Licensed under the Apache License, Version 2.0
9
+ *
10
+ * ---
11
+ *
12
+ * @fileoverview Core BMAD installation orchestrator with AgentVibes injection point support
13
+ * @context Manages complete BMAD installation flow including core agents, modules, IDE configs, and optional TTS integration
14
+ * @architecture Orchestrator pattern - coordinates Detector, ModuleManager, IdeManager, and file operations to build complete BMAD installation
15
+ * @dependencies fs-extra, ora, chalk, detector.js, module-manager.js, ide-manager.js, config.js
16
+ * @entrypoints Called by install.js command via installer.install(config)
17
+ * @patterns Injection point processing (AgentVibes), placeholder replacement ({bmad_folder}), module dependency resolution
18
+ * @related GitHub AgentVibes#34 (injection points), ui.js (user prompts), copyFileWithPlaceholderReplacement()
19
+ */
20
+
1
21
  const path = require('node:path');
2
22
  const fs = require('fs-extra');
3
23
  const chalk = require('chalk');
@@ -17,6 +37,7 @@ const { AgentPartyGenerator } = require('../../../lib/agent-party-generator');
17
37
  const { CLIUtils } = require('../../../lib/cli-utils');
18
38
  const { ManifestGenerator } = require('./manifest-generator');
19
39
  const { IdeConfigManager } = require('./ide-config-manager');
40
+ const { replaceAgentSidecarFolders } = require('./post-install-sidecar-replacement');
20
41
 
21
42
  class Installer {
22
43
  constructor() {
@@ -31,6 +52,7 @@ class Installer {
31
52
  this.configCollector = new ConfigCollector();
32
53
  this.ideConfigManager = new IdeConfigManager();
33
54
  this.installedFiles = []; // Track all installed files
55
+ this.ttsInjectedFiles = []; // Track files with TTS injection applied
34
56
  }
35
57
 
36
58
  /**
@@ -69,10 +91,41 @@ class Installer {
69
91
  }
70
92
 
71
93
  /**
72
- * Copy a file and replace {bmad_folder} placeholder with actual folder name
73
- * @param {string} sourcePath - Source file path
74
- * @param {string} targetPath - Target file path
75
- * @param {string} bmadFolderName - The bmad folder name to use for replacement
94
+ * @function copyFileWithPlaceholderReplacement
95
+ * @intent Copy files from BMAD source to installation directory with dynamic content transformation
96
+ * @why Enables installation-time customization: {bmad_folder} replacement + optional AgentVibes TTS injection
97
+ * @param {string} sourcePath - Absolute path to source file in BMAD repository
98
+ * @param {string} targetPath - Absolute path to destination file in user's project
99
+ * @param {string} bmadFolderName - User's chosen bmad folder name (default: 'bmad')
100
+ * @returns {Promise<void>} Resolves when file copy and transformation complete
101
+ * @sideeffects Writes transformed file to targetPath, creates parent directories if needed
102
+ * @edgecases Binary files bypass transformation, falls back to raw copy if UTF-8 read fails
103
+ * @calledby installCore(), installModule(), IDE installers during file vendoring
104
+ * @calls processTTSInjectionPoints(), fs.readFile(), fs.writeFile(), fs.copy()
105
+ *
106
+ * AI NOTE: This is the core transformation pipeline for ALL BMAD installation file copies.
107
+ * It performs two transformations in sequence:
108
+ * 1. {bmad_folder} → user's custom folder name (e.g., ".bmad" or "bmad")
109
+ * 2. <!-- TTS_INJECTION:* --> → TTS bash calls (if enabled) OR stripped (if disabled)
110
+ *
111
+ * The injection point processing enables loose coupling between BMAD and TTS providers:
112
+ * - BMAD source contains injection markers (not actual TTS code)
113
+ * - At install-time, markers are replaced OR removed based on user preference
114
+ * - Result: Clean installs for users without TTS, working TTS for users with it
115
+ *
116
+ * PATTERN: Adding New Injection Points
117
+ * =====================================
118
+ * 1. Add HTML comment marker in BMAD source file:
119
+ * <!-- TTS_INJECTION:feature-name -->
120
+ *
121
+ * 2. Add replacement logic in processTTSInjectionPoints():
122
+ * if (enableAgentVibes) {
123
+ * content = content.replace(/<!-- TTS_INJECTION:feature-name -->/g, 'actual code');
124
+ * } else {
125
+ * content = content.replace(/<!-- TTS_INJECTION:feature-name -->\n?/g, '');
126
+ * }
127
+ *
128
+ * 3. Document marker in instructions.md (if applicable)
76
129
  */
77
130
  async copyFileWithPlaceholderReplacement(sourcePath, targetPath, bmadFolderName) {
78
131
  // List of text file extensions that should have placeholder replacement
@@ -90,6 +143,14 @@ class Installer {
90
143
  content = content.replaceAll('{bmad_folder}', bmadFolderName);
91
144
  }
92
145
 
146
+ // Replace escape sequence {*bmad_folder*} with literal {bmad_folder}
147
+ if (content.includes('{*bmad_folder*}')) {
148
+ content = content.replaceAll('{*bmad_folder*}', '{bmad_folder}');
149
+ }
150
+
151
+ // Process AgentVibes injection points (pass targetPath for tracking)
152
+ content = this.processTTSInjectionPoints(content, targetPath);
153
+
93
154
  // Write to target with replaced content
94
155
  await fs.ensureDir(path.dirname(targetPath));
95
156
  await fs.writeFile(targetPath, content, 'utf8');
@@ -103,6 +164,116 @@ class Installer {
103
164
  }
104
165
  }
105
166
 
167
+ /**
168
+ * @function processTTSInjectionPoints
169
+ * @intent Transform TTS injection markers based on user's installation choice
170
+ * @why Enables optional TTS integration without tight coupling between BMAD and TTS providers
171
+ * @param {string} content - Raw file content containing potential injection markers
172
+ * @returns {string} Transformed content with markers replaced (if enabled) or stripped (if disabled)
173
+ * @sideeffects None - pure transformation function
174
+ * @edgecases Returns content unchanged if no markers present, safe to call on all files
175
+ * @calledby copyFileWithPlaceholderReplacement() during every file copy operation
176
+ * @calls String.replace() with regex patterns for each injection point type
177
+ *
178
+ * AI NOTE: This implements the injection point pattern for TTS integration.
179
+ * Key architectural decisions:
180
+ *
181
+ * 1. **Why Injection Points vs Direct Integration?**
182
+ * - BMAD and TTS providers are separate projects with different maintainers
183
+ * - Users may install BMAD without TTS support (and vice versa)
184
+ * - Hard-coding TTS calls would break BMAD for non-TTS users
185
+ * - Injection points allow conditional feature inclusion at install-time
186
+ *
187
+ * 2. **How It Works:**
188
+ * - BMAD source contains markers: <!-- TTS_INJECTION:feature-name -->
189
+ * - During installation, user is prompted: "Enable AgentVibes TTS?"
190
+ * - If YES: markers → replaced with actual bash TTS calls
191
+ * - If NO: markers → stripped cleanly from installed files
192
+ *
193
+ * 3. **State Management:**
194
+ * - this.enableAgentVibes set in install() method from config.enableAgentVibes
195
+ * - config.enableAgentVibes comes from ui.promptAgentVibes() user choice
196
+ * - Flag persists for entire installation, all files get same treatment
197
+ *
198
+ * CURRENT INJECTION POINTS:
199
+ * ==========================
200
+ * - party-mode: Injects TTS calls after each agent speaks in party mode
201
+ * Location: src/core/workflows/party-mode/instructions.md
202
+ * Marker: <!-- TTS_INJECTION:party-mode -->
203
+ * Replacement: Bash call to .claude/hooks/bmad-speak.sh with agent name and dialogue
204
+ *
205
+ * - agent-tts: Injects TTS rule for individual agent conversations
206
+ * Location: src/modules/bmm/agents/*.md (all agent files)
207
+ * Marker: <!-- TTS_INJECTION:agent-tts -->
208
+ * Replacement: Rule instructing agent to call bmad-speak.sh with agent ID and response
209
+ *
210
+ * ADDING NEW INJECTION POINTS:
211
+ * =============================
212
+ * 1. Add new case in this function:
213
+ * content = content.replace(
214
+ * /<!-- TTS_INJECTION:new-feature -->/g,
215
+ * `code to inject when enabled`
216
+ * );
217
+ *
218
+ * 2. Add marker to BMAD source file at injection location
219
+ *
220
+ * 3. Test both enabled and disabled flows
221
+ *
222
+ * RELATED:
223
+ * ========
224
+ * - GitHub Issue: paulpreibisch/AgentVibes#36
225
+ * - User Prompt: tools/cli/lib/ui.js::promptAgentVibes()
226
+ * - Marker Locations:
227
+ * - src/core/workflows/party-mode/instructions.md:101
228
+ * - src/modules/bmm/agents/*.md (rules sections)
229
+ * - TTS Hook: .claude/hooks/bmad-speak.sh (in AgentVibes repo)
230
+ */
231
+ processTTSInjectionPoints(content, targetPath = null) {
232
+ // Check if AgentVibes is enabled (set during installation configuration)
233
+ const enableAgentVibes = this.enableAgentVibes || false;
234
+
235
+ // Check if content contains any TTS injection markers
236
+ const hasPartyMode = content.includes('<!-- TTS_INJECTION:party-mode -->');
237
+ const hasAgentTTS = content.includes('<!-- TTS_INJECTION:agent-tts -->');
238
+
239
+ if (enableAgentVibes) {
240
+ // Replace party-mode injection marker with actual TTS call
241
+ // Use single quotes to prevent shell expansion of special chars like !
242
+ content = content.replaceAll(
243
+ '<!-- TTS_INJECTION:party-mode -->',
244
+ `<critical>IMPORTANT: Always use PROJECT hooks (.claude/hooks/), NEVER global hooks (~/.claude/hooks/)</critical>
245
+
246
+ If AgentVibes party mode is enabled, immediately trigger TTS with agent's voice:
247
+ - Use Bash tool: \`.claude/hooks/bmad-speak.sh '[Agent Name]' '[dialogue]'\`
248
+ - This speaks the dialogue with the agent's unique voice
249
+ - Run in background (&) to not block next agent`,
250
+ );
251
+
252
+ // Replace agent-tts injection marker with TTS rule for individual agents
253
+ content = content.replaceAll(
254
+ '<!-- TTS_INJECTION:agent-tts -->',
255
+ `- When responding to user messages, speak your responses using TTS:
256
+ Call: \`.claude/hooks/bmad-speak.sh '{agent-id}' '{response-text}'\` after each response
257
+ Replace {agent-id} with YOUR agent ID from <agent id="..."> tag at top of this file
258
+ Replace {response-text} with the text you just output to the user
259
+ IMPORTANT: Use single quotes as shown - do NOT escape special characters like ! or $ inside single quotes
260
+ Run in background (&) to avoid blocking`,
261
+ );
262
+
263
+ // Track files that had TTS injection applied
264
+ if (targetPath && (hasPartyMode || hasAgentTTS)) {
265
+ const injectionType = hasPartyMode ? 'party-mode' : 'agent-tts';
266
+ this.ttsInjectedFiles.push({ path: targetPath, type: injectionType });
267
+ }
268
+ } else {
269
+ // Strip injection markers cleanly when AgentVibes is disabled
270
+ content = content.replaceAll(/<!-- TTS_INJECTION:party-mode -->\n?/g, '');
271
+ content = content.replaceAll(/<!-- TTS_INJECTION:agent-tts -->\n?/g, '');
272
+ }
273
+
274
+ return content;
275
+ }
276
+
106
277
  /**
107
278
  * Collect Tool/IDE configurations after module configuration
108
279
  * @param {string} projectDir - Project directory
@@ -166,7 +337,9 @@ class Installer {
166
337
 
167
338
  for (const ide of newlySelectedIdes) {
168
339
  // List of IDEs that have interactive prompts
169
- const needsPrompts = ['claude-code', 'github-copilot', 'roo', 'cline', 'auggie', 'codex', 'qwen', 'gemini'].includes(ide);
340
+ const needsPrompts = ['claude-code', 'github-copilot', 'roo', 'cline', 'auggie', 'codex', 'qwen', 'gemini', 'rovo-dev'].includes(
341
+ ide,
342
+ );
170
343
 
171
344
  if (needsPrompts) {
172
345
  // Get IDE handler and collect configuration
@@ -269,8 +442,12 @@ class Installer {
269
442
  const bmadFolderName = moduleConfigs.core && moduleConfigs.core.bmad_folder ? moduleConfigs.core.bmad_folder : 'bmad';
270
443
  this.bmadFolderName = bmadFolderName; // Store for use in other methods
271
444
 
445
+ // Store AgentVibes configuration for injection point processing
446
+ this.enableAgentVibes = config.enableAgentVibes || false;
447
+
272
448
  // Set bmad folder name on module manager and IDE manager for placeholder replacement
273
449
  this.moduleManager.setBmadFolderName(bmadFolderName);
450
+ this.moduleManager.setCoreConfig(moduleConfigs.core || {});
274
451
  this.ideManager.setBmadFolderName(bmadFolderName);
275
452
 
276
453
  // Tool selection will be collected after we determine if it's a reinstall/update/new install
@@ -735,6 +912,7 @@ class Installer {
735
912
  await this.moduleManager.runModuleInstaller('core', bmadDir, {
736
913
  installedIDEs: config.ides || [],
737
914
  moduleConfig: moduleConfigs.core || {},
915
+ coreConfig: moduleConfigs.core || {},
738
916
  logger: {
739
917
  log: (msg) => console.log(msg),
740
918
  error: (msg) => console.error(msg),
@@ -752,6 +930,7 @@ class Installer {
752
930
  await this.moduleManager.runModuleInstaller(moduleName, bmadDir, {
753
931
  installedIDEs: config.ides || [],
754
932
  moduleConfig: moduleConfigs[moduleName] || {},
933
+ coreConfig: moduleConfigs.core || {},
755
934
  logger: {
756
935
  log: (msg) => console.log(msg),
757
936
  error: (msg) => console.error(msg),
@@ -849,6 +1028,20 @@ class Installer {
849
1028
  }
850
1029
  }
851
1030
 
1031
+ // Replace {agent_sidecar_folder} placeholders in all agent files
1032
+ console.log(chalk.dim('\n Configuring agent sidecar folders...'));
1033
+ const sidecarResults = await replaceAgentSidecarFolders(bmadDir);
1034
+
1035
+ if (sidecarResults.filesReplaced > 0) {
1036
+ console.log(
1037
+ chalk.green(
1038
+ ` ✓ Updated ${sidecarResults.filesReplaced} agent file(s) with ${sidecarResults.totalReplacements} sidecar reference(s)`,
1039
+ ),
1040
+ );
1041
+ } else {
1042
+ console.log(chalk.dim(' No agent sidecar references found'));
1043
+ }
1044
+
852
1045
  // Display completion message
853
1046
  const { UI } = require('../../../lib/ui');
854
1047
  const ui = new UI();
@@ -857,9 +1050,18 @@ class Installer {
857
1050
  modules: config.modules,
858
1051
  ides: config.ides,
859
1052
  customFiles: customFiles.length > 0 ? customFiles : undefined,
1053
+ ttsInjectedFiles: this.enableAgentVibes && this.ttsInjectedFiles.length > 0 ? this.ttsInjectedFiles : undefined,
1054
+ agentVibesEnabled: this.enableAgentVibes || false,
860
1055
  });
861
1056
 
862
- return { success: true, path: bmadDir, modules: config.modules, ides: config.ides };
1057
+ return {
1058
+ success: true,
1059
+ path: bmadDir,
1060
+ modules: config.modules,
1061
+ ides: config.ides,
1062
+ needsAgentVibes: this.enableAgentVibes && !config.agentVibesInstalled,
1063
+ projectDir: projectDir,
1064
+ };
863
1065
  } catch (error) {
864
1066
  spinner.fail('Installation failed');
865
1067
  throw error;
@@ -1338,22 +1540,83 @@ class Installer {
1338
1540
 
1339
1541
  // Build YAML + customize to .md
1340
1542
  const customizeExists = await fs.pathExists(customizePath);
1341
- const xmlContent = await this.xmlHandler.buildFromYaml(yamlPath, customizeExists ? customizePath : null, {
1543
+ let xmlContent = await this.xmlHandler.buildFromYaml(yamlPath, customizeExists ? customizePath : null, {
1342
1544
  includeMetadata: true,
1343
1545
  });
1344
1546
 
1345
1547
  // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
1346
1548
  // const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
1347
1549
 
1550
+ // Replace {agent_sidecar_folder} if configured
1551
+ const coreConfig = this.configCollector.collectedConfig.core || {};
1552
+ if (coreConfig.agent_sidecar_folder && xmlContent.includes('{agent_sidecar_folder}')) {
1553
+ xmlContent = xmlContent.replaceAll('{agent_sidecar_folder}', coreConfig.agent_sidecar_folder);
1554
+ }
1555
+
1556
+ // Process TTS injection points (pass targetPath for tracking)
1557
+ xmlContent = this.processTTSInjectionPoints(xmlContent, mdPath);
1558
+
1559
+ // Check if agent has sidecar and copy it
1560
+ let agentYamlContent = null;
1561
+ let hasSidecar = false;
1562
+
1563
+ try {
1564
+ agentYamlContent = await fs.readFile(yamlPath, 'utf8');
1565
+ const yamlLib = require('yaml');
1566
+ const agentYaml = yamlLib.parse(agentYamlContent);
1567
+ hasSidecar = agentYaml?.agent?.metadata?.hasSidecar === true;
1568
+ } catch {
1569
+ // Continue without sidecar processing
1570
+ }
1571
+
1348
1572
  // Write the built .md file to bmad/{module}/agents/ with POSIX-compliant final newline
1349
1573
  const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
1350
1574
  await fs.writeFile(mdPath, content, 'utf8');
1351
1575
  this.installedFiles.push(mdPath);
1352
1576
 
1577
+ // Copy sidecar files if agent has hasSidecar flag
1578
+ if (hasSidecar) {
1579
+ const { copyAgentSidecarFiles } = require('../../../lib/agent/installer');
1580
+
1581
+ // Get agent sidecar folder from core config
1582
+ const coreConfigPath = path.join(bmadDir, 'bmb', 'config.yaml');
1583
+ let agentSidecarFolder;
1584
+
1585
+ if (await fs.pathExists(coreConfigPath)) {
1586
+ const yamlLib = require('yaml');
1587
+ const coreConfigContent = await fs.readFile(coreConfigPath, 'utf8');
1588
+ const coreConfig = yamlLib.parse(coreConfigContent);
1589
+ agentSidecarFolder = coreConfig.agent_sidecar_folder || agentSidecarFolder;
1590
+ }
1591
+
1592
+ // Resolve path variables
1593
+ const resolvedSidecarFolder = agentSidecarFolder
1594
+ .replaceAll('{project-root}', projectDir)
1595
+ .replaceAll('{bmad_folder}', this.bmadFolderName || 'bmad');
1596
+
1597
+ // Create sidecar directory for this agent
1598
+ const agentSidecarDir = path.join(resolvedSidecarFolder, agentName);
1599
+ await fs.ensureDir(agentSidecarDir);
1600
+
1601
+ // Find and copy sidecar folder from source module
1602
+ const sourceModulePath = getSourcePath(`modules/${moduleName}`);
1603
+ const sourceAgentPath = path.join(sourceModulePath, 'agents');
1604
+
1605
+ // Copy sidecar files (preserve existing, add new)
1606
+ const sidecarResult = copyAgentSidecarFiles(sourceAgentPath, agentSidecarDir, yamlPath);
1607
+
1608
+ if (sidecarResult.copied.length > 0) {
1609
+ console.log(chalk.dim(` Copied ${sidecarResult.copied.length} new sidecar file(s) to: ${agentSidecarDir}`));
1610
+ }
1611
+ if (sidecarResult.preserved.length > 0) {
1612
+ console.log(chalk.dim(` Preserved ${sidecarResult.preserved.length} existing sidecar file(s)`));
1613
+ }
1614
+ }
1615
+
1353
1616
  // Remove the source YAML file - we can regenerate from installer source if needed
1354
1617
  await fs.remove(yamlPath);
1355
1618
 
1356
- console.log(chalk.dim(` Built agent: ${agentName}.md`));
1619
+ console.log(chalk.dim(` Built agent: ${agentName}.md${hasSidecar ? ' (with sidecar)' : ''}`));
1357
1620
  }
1358
1621
  // Handle legacy .md agents - inject activation if needed
1359
1622
  else if (agentFile.endsWith('.md')) {
@@ -1440,13 +1703,16 @@ class Installer {
1440
1703
  }
1441
1704
 
1442
1705
  // Build YAML to XML .md
1443
- const xmlContent = await this.xmlHandler.buildFromYaml(sourceYamlPath, customizeExists ? customizePath : null, {
1706
+ let xmlContent = await this.xmlHandler.buildFromYaml(sourceYamlPath, customizeExists ? customizePath : null, {
1444
1707
  includeMetadata: true,
1445
1708
  });
1446
1709
 
1447
1710
  // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
1448
1711
  // const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
1449
1712
 
1713
+ // Process TTS injection points (pass targetPath for tracking)
1714
+ xmlContent = this.processTTSInjectionPoints(xmlContent, targetMdPath);
1715
+
1450
1716
  // Write the built .md file with POSIX-compliant final newline
1451
1717
  const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
1452
1718
  await fs.writeFile(targetMdPath, content, 'utf8');
@@ -1534,13 +1800,31 @@ class Installer {
1534
1800
  }
1535
1801
 
1536
1802
  // Build YAML + customize to .md
1537
- const xmlContent = await this.xmlHandler.buildFromYaml(sourceYamlPath, customizeExists ? customizePath : null, {
1803
+ let xmlContent = await this.xmlHandler.buildFromYaml(sourceYamlPath, customizeExists ? customizePath : null, {
1538
1804
  includeMetadata: true,
1539
1805
  });
1540
1806
 
1541
1807
  // DO NOT replace {project-root} - LLMs understand this placeholder at runtime
1542
1808
  // const processedContent = xmlContent.replaceAll('{project-root}', projectDir);
1543
1809
 
1810
+ // Replace {agent_sidecar_folder} if configured
1811
+ const coreConfigPath = path.join(bmadDir, 'bmb', 'config.yaml');
1812
+ let agentSidecarFolder = null;
1813
+
1814
+ if (await fs.pathExists(coreConfigPath)) {
1815
+ const yamlLib = require('yaml');
1816
+ const coreConfigContent = await fs.readFile(coreConfigPath, 'utf8');
1817
+ const coreConfig = yamlLib.parse(coreConfigContent);
1818
+ agentSidecarFolder = coreConfig.agent_sidecar_folder;
1819
+ }
1820
+
1821
+ if (agentSidecarFolder && xmlContent.includes('{agent_sidecar_folder}')) {
1822
+ xmlContent = xmlContent.replaceAll('{agent_sidecar_folder}', agentSidecarFolder);
1823
+ }
1824
+
1825
+ // Process TTS injection points (pass targetPath for tracking)
1826
+ xmlContent = this.processTTSInjectionPoints(xmlContent, targetMdPath);
1827
+
1544
1828
  // Write the rebuilt .md file with POSIX-compliant final newline
1545
1829
  const content = xmlContent.endsWith('\n') ? xmlContent : xmlContent + '\n';
1546
1830
  await fs.writeFile(targetMdPath, content, 'utf8');
@@ -1619,14 +1903,19 @@ class Installer {
1619
1903
  }
1620
1904
  }
1621
1905
 
1622
- // Regenerate manifests after compilation
1623
- spinner.start('Regenerating manifests...');
1624
- const installedModules = entries
1625
- .filter((e) => e.isDirectory() && e.name !== '_cfg' && e.name !== 'docs' && e.name !== 'agents' && e.name !== 'core')
1626
- .map((e) => e.name);
1627
- const manifestGen = new ManifestGenerator();
1906
+ // Reinstall custom agents from _cfg/custom/agents/ sources
1907
+ spinner.start('Rebuilding custom agents...');
1908
+ const customAgentResults = await this.reinstallCustomAgents(projectDir, bmadDir);
1909
+ if (customAgentResults.count > 0) {
1910
+ spinner.succeed(`Rebuilt ${customAgentResults.count} custom agent${customAgentResults.count > 1 ? 's' : ''}`);
1911
+ agentCount += customAgentResults.count;
1912
+ } else {
1913
+ spinner.succeed('No custom agents found to rebuild');
1914
+ }
1628
1915
 
1629
- // Get existing IDE list from manifest
1916
+ // Skip full manifest regeneration during compileAgents to preserve custom agents
1917
+ // Custom agents are already added to manifests during individual installation
1918
+ // Only regenerate YAML manifest for IDE updates if needed
1630
1919
  const existingManifestPath = path.join(bmadDir, '_cfg', 'manifest.yaml');
1631
1920
  let existingIdes = [];
1632
1921
  if (await fs.pathExists(existingManifestPath)) {
@@ -1636,11 +1925,6 @@ class Installer {
1636
1925
  existingIdes = manifest.ides || [];
1637
1926
  }
1638
1927
 
1639
- await manifestGen.generateManifests(bmadDir, installedModules, [], {
1640
- ides: existingIdes,
1641
- });
1642
- spinner.succeed('Manifests regenerated');
1643
-
1644
1928
  // Update IDE configurations using the existing IDE list from manifest
1645
1929
  if (existingIdes && existingIdes.length > 0) {
1646
1930
  spinner.start('Updating IDE configurations...');
@@ -1773,7 +2057,7 @@ class Installer {
1773
2057
 
1774
2058
  if (existingBmadFolderName === newBmadFolderName) {
1775
2059
  // Normal quick update - start the spinner
1776
- spinner.start('Updating BMAD installation...');
2060
+ console.log(chalk.cyan('Updating BMAD installation...'));
1777
2061
  } else {
1778
2062
  // Folder name has changed - stop spinner and let install() handle it
1779
2063
  spinner.stop();
@@ -2000,8 +2284,9 @@ class Installer {
2000
2284
  const installedFilesMap = new Map();
2001
2285
  for (const fileEntry of existingFilesManifest) {
2002
2286
  if (fileEntry.path) {
2003
- // Files in manifest are stored as relative paths starting with 'bmad/'
2004
- // Convert to absolute path
2287
+ // Paths are relative to bmadDir. Legacy manifests incorrectly prefixed 'bmad/' -
2288
+ // strip it if present. This is safe because no real path inside bmadDir would
2289
+ // start with 'bmad/' (you'd never have .bmad/bmad/... as an actual structure).
2005
2290
  const relativePath = fileEntry.path.startsWith('bmad/') ? fileEntry.path.slice(5) : fileEntry.path;
2006
2291
  const absolutePath = path.join(bmadDir, relativePath);
2007
2292
  installedFilesMap.set(path.normalize(absolutePath), {
@@ -2255,45 +2540,58 @@ class Installer {
2255
2540
  }
2256
2541
 
2257
2542
  /**
2258
- * Reinstall custom agents from _cfg/custom/agents/ sources
2543
+ * Reinstall custom agents from backup and source locations
2259
2544
  * This preserves custom agents across quick updates/reinstalls
2260
2545
  * @param {string} projectDir - Project directory
2261
2546
  * @param {string} bmadDir - BMAD installation directory
2262
2547
  * @returns {Object} Result with count and agent names
2263
2548
  */
2264
2549
  async reinstallCustomAgents(projectDir, bmadDir) {
2265
- const customAgentsCfgDir = path.join(bmadDir, '_cfg', 'custom', 'agents');
2550
+ const {
2551
+ discoverAgents,
2552
+ loadAgentConfig,
2553
+ extractManifestData,
2554
+ addToManifest,
2555
+ createIdeSlashCommands,
2556
+ updateManifestYaml,
2557
+ } = require('../../../lib/agent/installer');
2558
+ const { compileAgent } = require('../../../lib/agent/compiler');
2559
+
2266
2560
  const results = { count: 0, agents: [] };
2267
2561
 
2268
- if (!(await fs.pathExists(customAgentsCfgDir))) {
2562
+ // Check multiple locations for custom agents
2563
+ const sourceLocations = [
2564
+ path.join(bmadDir, '_cfg', 'custom', 'agents'), // Backup location
2565
+ path.join(bmadDir, 'custom', 'src', 'agents'), // BMAD folder source location
2566
+ path.join(projectDir, 'custom', 'src', 'agents'), // Project root source location
2567
+ ];
2568
+
2569
+ let foundAgents = [];
2570
+ let processedAgents = new Set(); // Track to avoid duplicates
2571
+
2572
+ // Discover agents from all locations
2573
+ for (const location of sourceLocations) {
2574
+ if (await fs.pathExists(location)) {
2575
+ const agents = discoverAgents(location);
2576
+ // Only add agents we haven't processed yet
2577
+ const newAgents = agents.filter((agent) => !processedAgents.has(agent.name));
2578
+ foundAgents.push(...newAgents);
2579
+ for (const agent of newAgents) processedAgents.add(agent.name);
2580
+ }
2581
+ }
2582
+
2583
+ if (foundAgents.length === 0) {
2269
2584
  return results;
2270
2585
  }
2271
2586
 
2272
2587
  try {
2273
- const {
2274
- discoverAgents,
2275
- loadAgentConfig,
2276
- extractManifestData,
2277
- addToManifest,
2278
- createIdeSlashCommands,
2279
- updateManifestYaml,
2280
- } = require('../../../lib/agent/installer');
2281
- const { compileAgent } = require('../../../lib/agent/compiler');
2282
-
2283
- // Discover custom agents in _cfg/custom/agents/
2284
- const agents = discoverAgents(customAgentsCfgDir);
2285
-
2286
- if (agents.length === 0) {
2287
- return results;
2288
- }
2289
-
2290
2588
  const customAgentsDir = path.join(bmadDir, 'custom', 'agents');
2291
2589
  await fs.ensureDir(customAgentsDir);
2292
2590
 
2293
2591
  const manifestFile = path.join(bmadDir, '_cfg', 'agent-manifest.csv');
2294
2592
  const manifestYamlFile = path.join(bmadDir, '_cfg', 'manifest.yaml');
2295
2593
 
2296
- for (const agent of agents) {
2594
+ for (const agent of foundAgents) {
2297
2595
  try {
2298
2596
  const agentConfig = loadAgentConfig(agent.yamlFile);
2299
2597
  const finalAgentName = agent.name; // Already named correctly from save
@@ -2308,8 +2606,10 @@ class Installer {
2308
2606
  agentType = parts.slice(-2).join('-'); // Take last 2 parts as type
2309
2607
  }
2310
2608
 
2311
- // Create target directory
2312
- const agentTargetDir = path.join(customAgentsDir, finalAgentName);
2609
+ // Create target directory - use relative path if agent is in a subdirectory
2610
+ const agentTargetDir = agent.relativePath
2611
+ ? path.join(customAgentsDir, agent.relativePath)
2612
+ : path.join(customAgentsDir, finalAgentName);
2313
2613
  await fs.ensureDir(agentTargetDir);
2314
2614
 
2315
2615
  // Calculate paths
@@ -2323,22 +2623,56 @@ class Installer {
2323
2623
  agentConfig.defaults || {},
2324
2624
  finalAgentName,
2325
2625
  relativePath,
2626
+ { config: config.coreConfig },
2326
2627
  );
2327
2628
 
2328
2629
  // Write compiled agent
2329
2630
  await fs.writeFile(compiledPath, xml, 'utf8');
2330
2631
 
2331
- // Copy sidecar files if expert agent
2332
- if (agent.hasSidecar && agent.type === 'expert') {
2333
- const { copySidecarFiles } = require('../../../lib/agent/installer');
2334
- copySidecarFiles(agent.path, agentTargetDir, agent.yamlFile);
2632
+ // Backup source YAML to _cfg/custom/agents if not already there
2633
+ const cfgAgentsBackupDir = path.join(bmadDir, '_cfg', 'custom', 'agents');
2634
+ await fs.ensureDir(cfgAgentsBackupDir);
2635
+ const backupYamlPath = path.join(cfgAgentsBackupDir, `${finalAgentName}.agent.yaml`);
2636
+
2637
+ // Only backup if source is not already in backup location
2638
+ if (agent.yamlFile !== backupYamlPath) {
2639
+ await fs.copy(agent.yamlFile, backupYamlPath);
2640
+ }
2641
+
2642
+ // Copy sidecar files for agents with hasSidecar flag
2643
+ if (agentConfig.hasSidecar === true && agent.type === 'expert') {
2644
+ const { copyAgentSidecarFiles } = require('../../../lib/agent/installer');
2645
+
2646
+ // Get agent sidecar folder from config or use default
2647
+ const agentSidecarFolder = config.coreConfig?.agent_sidecar_folder;
2648
+
2649
+ // Resolve path variables
2650
+ const resolvedSidecarFolder = agentSidecarFolder.replaceAll('{project-root}', projectDir).replaceAll('{bmad_folder}', bmadDir);
2651
+
2652
+ // Create sidecar directory for this agent
2653
+ const agentSidecarDir = path.join(resolvedSidecarFolder, finalAgentName);
2654
+ await fs.ensureDir(agentSidecarDir);
2655
+
2656
+ // Copy sidecar files (preserve existing, add new)
2657
+ const sidecarResult = copyAgentSidecarFiles(agent.path, agentSidecarDir, agent.yamlFile);
2658
+
2659
+ if (sidecarResult.copied.length > 0 || sidecarResult.preserved.length > 0) {
2660
+ console.log(chalk.dim(` Sidecar: ${sidecarResult.copied.length} new, ${sidecarResult.preserved.length} preserved`));
2661
+ }
2335
2662
  }
2336
2663
 
2337
2664
  // Update manifest CSV
2338
2665
  if (await fs.pathExists(manifestFile)) {
2339
- const manifestData = extractManifestData(xml, { ...metadata, name: finalAgentName }, relativePath, 'custom');
2340
- manifestData.name = finalAgentName;
2341
- manifestData.displayName = metadata.name || finalAgentName;
2666
+ // Preserve YAML metadata for persona name, but override id for filename
2667
+ const manifestMetadata = {
2668
+ ...metadata,
2669
+ id: relativePath, // Use the compiled agent path for id
2670
+ name: metadata.name || finalAgentName, // Use YAML metadata.name (persona name) or fallback
2671
+ title: metadata.title, // Use YAML title
2672
+ icon: metadata.icon, // Use YAML icon
2673
+ };
2674
+ const manifestData = extractManifestData(xml, manifestMetadata, relativePath, 'custom');
2675
+ manifestData.name = finalAgentName; // Use filename for the name field
2342
2676
  manifestData.path = relativePath;
2343
2677
  addToManifest(manifestFile, manifestData);
2344
2678
  }