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

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 (457) hide show
  1. package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
  2. package/.github/workflows/bundle-latest.yaml +277 -0
  3. package/.github/workflows/manual-release.yaml +55 -16
  4. package/.vscode/settings.json +2 -1
  5. package/CHANGELOG.md +439 -1
  6. package/README.md +12 -4
  7. package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  8. package/docs/agent-customization-guide.md +208 -0
  9. package/docs/ide-info/crush.md +1 -1
  10. package/docs/ide-info/cursor.md +7 -7
  11. package/docs/ide-info/iflow.md +3 -3
  12. package/docs/ide-info/opencode.md +1 -1
  13. package/docs/index.md +3 -1
  14. package/docs/installers-bundlers/ide-injections.md +2 -2
  15. package/docs/installers-bundlers/installers-modules-platforms-reference.md +23 -23
  16. package/docs/v4-to-v6-upgrade.md +12 -12
  17. package/docs/web-bundles-gemini-gpt-guide.md +473 -0
  18. package/package.json +1 -1
  19. package/src/core/_module-installer/install-config.yaml +17 -10
  20. package/src/core/_module-installer/installer.js +0 -8
  21. package/src/core/agents/bmad-master.agent.yaml +5 -5
  22. package/src/core/agents/bmad-web-orchestrator.agent.xml +8 -17
  23. package/src/core/tasks/{adv-elicit.xml → advanced-elicitation.xml} +6 -4
  24. package/src/core/tasks/index-docs.xml +1 -1
  25. package/src/core/tasks/validate-workflow.xml +1 -1
  26. package/src/core/tasks/workflow.xml +125 -11
  27. package/src/core/tools/shard-doc.xml +45 -1
  28. package/src/core/workflows/brainstorming/README.md +6 -16
  29. package/src/core/workflows/brainstorming/instructions.md +6 -5
  30. package/src/core/workflows/brainstorming/template.md +4 -0
  31. package/src/core/workflows/brainstorming/workflow.yaml +8 -8
  32. package/src/core/workflows/party-mode/instructions.md +2 -7
  33. package/src/core/workflows/party-mode/workflow.yaml +10 -6
  34. package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
  35. package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -10
  36. package/src/modules/bmb/workflows/audit-workflow/checklist.md +5 -6
  37. package/src/modules/bmb/workflows/audit-workflow/instructions.md +5 -5
  38. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +2 -2
  39. package/src/modules/bmb/workflows/convert-legacy/README.md +5 -5
  40. package/src/modules/bmb/workflows/convert-legacy/checklist.md +2 -2
  41. package/src/modules/bmb/workflows/convert-legacy/instructions.md +17 -17
  42. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +6 -6
  43. package/src/modules/bmb/workflows/create-agent/README.md +5 -5
  44. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +15 -19
  45. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
  46. package/src/modules/bmb/workflows/create-agent/agent-types.md +15 -15
  47. package/src/modules/bmb/workflows/create-agent/checklist.md +3 -3
  48. package/src/modules/bmb/workflows/create-agent/instructions.md +24 -27
  49. package/src/modules/bmb/workflows/create-agent/workflow.yaml +12 -12
  50. package/src/modules/bmb/workflows/create-module/README.md +1 -1
  51. package/src/modules/bmb/workflows/create-module/checklist.md +1 -10
  52. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
  53. package/src/modules/bmb/workflows/create-module/instructions.md +12 -17
  54. package/src/modules/bmb/workflows/create-module/module-structure.md +7 -7
  55. package/src/modules/bmb/workflows/create-module/workflow.yaml +9 -9
  56. package/src/modules/bmb/workflows/create-workflow/README.md +4 -4
  57. package/src/modules/bmb/workflows/create-workflow/checklist.md +1 -1
  58. package/src/modules/bmb/workflows/create-workflow/instructions.md +29 -29
  59. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +40 -42
  60. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
  61. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -12
  62. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +5 -5
  63. package/src/modules/bmb/workflows/edit-agent/checklist.md +1 -1
  64. package/src/modules/bmb/workflows/edit-agent/instructions.md +2 -2
  65. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +8 -8
  66. package/src/modules/bmb/workflows/edit-module/README.md +2 -2
  67. package/src/modules/bmb/workflows/edit-module/checklist.md +2 -2
  68. package/src/modules/bmb/workflows/edit-module/instructions.md +4 -4
  69. package/src/modules/bmb/workflows/edit-module/workflow.yaml +10 -10
  70. package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
  71. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +5 -5
  72. package/src/modules/bmb/workflows/module-brief/README.md +2 -2
  73. package/src/modules/bmb/workflows/module-brief/checklist.md +2 -2
  74. package/src/modules/bmb/workflows/module-brief/instructions.md +2 -2
  75. package/src/modules/bmb/workflows/module-brief/workflow.yaml +4 -4
  76. package/src/modules/bmb/workflows/redoc/README.md +5 -5
  77. package/src/modules/bmb/workflows/redoc/instructions.md +1 -1
  78. package/src/modules/bmb/workflows/redoc/workflow.yaml +1 -1
  79. package/src/modules/bmgd/README.md +1 -1
  80. package/src/modules/bmgd/_module-installer/install-config.yaml +12 -24
  81. package/src/modules/bmgd/agents/game-architect.agent.yaml +15 -10
  82. package/src/modules/bmgd/agents/game-designer.agent.yaml +16 -11
  83. package/src/modules/bmgd/agents/game-dev.agent.yaml +18 -12
  84. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +30 -25
  85. package/src/modules/bmgd/teams/default-party.csv +10 -0
  86. package/src/modules/bmgd/teams/team-gamedev.yaml +2 -0
  87. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
  88. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +9 -9
  89. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
  90. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +8 -8
  91. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +5 -10
  92. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +30 -30
  93. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -6
  94. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +5 -5
  95. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +0 -26
  96. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +2 -6
  97. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +2 -7
  98. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +2 -2
  99. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +25 -47
  100. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +13 -32
  101. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
  102. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +7 -2
  103. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +32 -25
  104. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +20 -47
  105. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +16 -24
  106. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +8 -3
  107. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +30 -5
  108. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +1 -1
  109. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +10 -35
  110. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +16 -24
  111. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +18 -36
  112. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +16 -37
  113. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +11 -15
  114. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +1 -1
  115. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +8 -7
  116. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +1 -1
  117. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +1 -1
  118. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +20 -45
  119. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +15 -17
  120. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +1 -1
  121. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +5 -4
  122. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +6 -6
  123. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +5 -7
  124. package/src/modules/bmm/_module-installer/install-config.yaml +9 -28
  125. package/src/modules/bmm/_module-installer/installer.js +2 -2
  126. package/src/modules/bmm/agents/analyst.agent.yaml +20 -15
  127. package/src/modules/bmm/agents/architect.agent.yaml +17 -12
  128. package/src/modules/bmm/agents/dev.agent.yaml +9 -12
  129. package/src/modules/bmm/agents/pm.agent.yaml +24 -23
  130. package/src/modules/bmm/agents/sm.agent.yaml +24 -19
  131. package/src/modules/bmm/agents/tea.agent.yaml +23 -17
  132. package/src/modules/bmm/agents/tech-writer.agent.yaml +15 -11
  133. package/src/modules/bmm/agents/ux-designer.agent.yaml +16 -11
  134. package/src/modules/bmm/docs/agents-guide.md +4 -4
  135. package/src/modules/bmm/docs/brownfield-guide.md +4 -4
  136. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  137. package/src/modules/bmm/docs/faq.md +1 -1
  138. package/src/modules/bmm/docs/party-mode.md +3 -3
  139. package/src/modules/bmm/docs/quick-start.md +1 -1
  140. package/src/modules/bmm/docs/test-architecture.md +1 -1
  141. package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
  142. package/src/modules/bmm/teams/default-party.csv +19 -0
  143. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  144. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +1 -1
  145. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
  146. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +1 -1
  147. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +8 -21
  148. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +10 -12
  149. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +13 -9
  150. package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +2 -2
  151. package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +2 -2
  152. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +2 -2
  153. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +1 -3
  154. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +2 -7
  155. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +1 -1
  156. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +1 -6
  157. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +14 -14
  158. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +7 -2
  159. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +16 -10
  160. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +8 -12
  161. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +28 -0
  162. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +146 -23
  163. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +7 -9
  164. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +152 -35
  165. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +2 -2
  166. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +20 -16
  167. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +12 -9
  168. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -6
  169. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +434 -0
  170. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +129 -266
  171. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +15 -37
  172. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -26
  173. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +3 -7
  174. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +30 -38
  175. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +25 -43
  176. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +7 -13
  177. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +57 -60
  178. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +12 -12
  179. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +25 -47
  180. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +13 -32
  181. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  182. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
  183. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +32 -25
  184. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +20 -47
  185. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +16 -24
  186. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +8 -3
  187. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +30 -5
  188. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
  189. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +10 -35
  190. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +16 -24
  191. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +18 -36
  192. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +16 -37
  193. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +11 -15
  194. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +1 -1
  195. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +8 -7
  196. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
  197. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
  198. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +20 -45
  199. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +15 -17
  200. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
  201. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +5 -4
  202. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +6 -6
  203. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +5 -7
  204. package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
  205. package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
  206. package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
  207. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +4 -4
  208. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  209. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
  210. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  211. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
  212. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
  213. package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
  214. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
  215. package/src/modules/bmm/workflows/testarch/ci/checklist.md +4 -4
  216. package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
  217. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
  218. package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
  219. package/src/modules/bmm/workflows/testarch/framework/instructions.md +2 -2
  220. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
  221. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  222. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  223. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +4 -4
  224. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +175 -14
  225. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +4 -4
  226. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +7 -3
  227. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
  228. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
  229. package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
  230. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
  231. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +33 -31
  232. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +5 -4
  233. package/src/modules/bmm/workflows/workflow-status/instructions.md +5 -4
  234. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +9 -16
  235. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +11 -18
  236. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +8 -1
  237. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +9 -2
  238. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  239. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +2 -9
  240. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
  241. package/src/modules/cis/README.md +1 -1
  242. package/src/modules/cis/_module-installer/install-config.yaml +6 -4
  243. package/src/modules/cis/agents/README.md +1 -1
  244. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +13 -8
  245. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +13 -8
  246. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +13 -8
  247. package/src/modules/cis/agents/innovation-strategist.agent.yaml +13 -8
  248. package/src/modules/cis/agents/storyteller.agent.yaml +13 -8
  249. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  250. package/src/modules/cis/teams/default-party.csv +11 -0
  251. package/src/modules/cis/workflows/README.md +1 -1
  252. package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
  253. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
  254. package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
  255. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
  256. package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
  257. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
  258. package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
  259. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
  260. package/src/utility/models/action-command-header.md +0 -0
  261. package/src/utility/models/agent-activation-ide.xml +3 -3
  262. package/src/utility/models/agent-activation-web.xml +4 -4
  263. package/src/utility/models/agent-command-header.md +1 -0
  264. package/src/utility/models/fragments/activation-steps.xml +3 -2
  265. package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
  266. package/src/utility/models/fragments/handler-workflow.xml +1 -1
  267. package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
  268. package/tools/cli/README.md +50 -32
  269. package/tools/cli/bundlers/web-bundler.js +86 -17
  270. package/tools/cli/commands/install.js +1 -4
  271. package/tools/cli/installers/lib/core/config-collector.js +201 -28
  272. package/tools/cli/installers/lib/core/detector.js +62 -7
  273. package/tools/cli/installers/lib/core/installer.js +175 -33
  274. package/tools/cli/installers/lib/core/manifest-generator.js +26 -115
  275. package/tools/cli/installers/lib/ide/_base-ide.js +57 -3
  276. package/tools/cli/installers/lib/ide/auggie.js +78 -224
  277. package/tools/cli/installers/lib/ide/claude-code.js +14 -22
  278. package/tools/cli/installers/lib/ide/cline.js +15 -18
  279. package/tools/cli/installers/lib/ide/codex.js +17 -48
  280. package/tools/cli/installers/lib/ide/crush.js +14 -50
  281. package/tools/cli/installers/lib/ide/cursor.js +51 -8
  282. package/tools/cli/installers/lib/ide/gemini.js +87 -37
  283. package/tools/cli/installers/lib/ide/github-copilot.js +47 -35
  284. package/tools/cli/installers/lib/ide/iflow.js +13 -30
  285. package/tools/cli/installers/lib/ide/kilo.js +20 -16
  286. package/tools/cli/installers/lib/ide/manager.js +15 -0
  287. package/tools/cli/installers/lib/ide/opencode.js +16 -17
  288. package/tools/cli/installers/lib/ide/qwen.js +39 -11
  289. package/tools/cli/installers/lib/ide/roo.js +27 -62
  290. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
  291. package/tools/cli/installers/lib/ide/{task-tool-command-generator.js → shared/task-tool-command-generator.js} +1 -1
  292. package/tools/cli/installers/lib/ide/{workflow-command-generator.js → shared/workflow-command-generator.js} +11 -9
  293. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  294. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  295. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  296. package/tools/cli/installers/lib/ide/{workflow-command-template.md → templates/workflow-command-template.md} +3 -5
  297. package/tools/cli/installers/lib/ide/trae.js +20 -32
  298. package/tools/cli/installers/lib/ide/windsurf.js +18 -8
  299. package/tools/cli/installers/lib/modules/manager.js +89 -17
  300. package/tools/cli/lib/cli-utils.js +52 -50
  301. package/tools/cli/lib/ui.js +29 -12
  302. package/tools/cli/lib/yaml-xml-builder.js +20 -2
  303. package/tools/schema/agent.js +7 -3
  304. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  305. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  306. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  307. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  308. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  309. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  310. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  311. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  312. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  313. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  314. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  315. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  316. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  317. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  318. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  319. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  320. package/.claude/settings.local.json +0 -22
  321. package/bmad/_cfg/agent-manifest.csv +0 -5
  322. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  323. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  324. package/bmad/_cfg/files-manifest.csv +0 -82
  325. package/bmad/_cfg/ides/claude-code.yaml +0 -6
  326. package/bmad/_cfg/manifest.yaml +0 -11
  327. package/bmad/_cfg/task-manifest.csv +0 -13
  328. package/bmad/_cfg/tool-manifest.csv +0 -4
  329. package/bmad/_cfg/workflow-manifest.csv +0 -17
  330. package/bmad/bmb/README.md +0 -194
  331. package/bmad/bmb/agents/bmad-builder.md +0 -70
  332. package/bmad/bmb/config.yaml +0 -14
  333. package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  334. package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  335. package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
  336. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  337. package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
  338. package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  339. package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  340. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  341. package/bmad/bmb/workflows/create-agent/README.md +0 -203
  342. package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  343. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  344. package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  345. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  346. package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
  347. package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  348. package/bmad/bmb/workflows/create-agent/instructions.md +0 -459
  349. package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  350. package/bmad/bmb/workflows/create-module/README.md +0 -229
  351. package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  352. package/bmad/bmb/workflows/create-module/checklist.md +0 -244
  353. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  354. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  355. package/bmad/bmb/workflows/create-module/instructions.md +0 -581
  356. package/bmad/bmb/workflows/create-module/module-structure.md +0 -400
  357. package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  358. package/bmad/bmb/workflows/create-workflow/README.md +0 -277
  359. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  360. package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  361. package/bmad/bmb/workflows/create-workflow/instructions.md +0 -724
  362. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1308
  363. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  364. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  365. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  366. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  367. package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  368. package/bmad/bmb/workflows/edit-agent/README.md +0 -112
  369. package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  370. package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  371. package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  372. package/bmad/bmb/workflows/edit-module/README.md +0 -187
  373. package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
  374. package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
  375. package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  376. package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
  377. package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  378. package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  379. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  380. package/bmad/bmb/workflows/module-brief/README.md +0 -264
  381. package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
  382. package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
  383. package/bmad/bmb/workflows/module-brief/template.md +0 -275
  384. package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  385. package/bmad/bmb/workflows/redoc/README.md +0 -87
  386. package/bmad/bmb/workflows/redoc/checklist.md +0 -99
  387. package/bmad/bmb/workflows/redoc/instructions.md +0 -265
  388. package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  389. package/bmad/core/agents/bmad-master.md +0 -71
  390. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  391. package/bmad/core/config.yaml +0 -9
  392. package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
  393. package/bmad/core/tasks/adv-elicit.xml +0 -104
  394. package/bmad/core/tasks/index-docs.xml +0 -65
  395. package/bmad/core/tasks/validate-workflow.xml +0 -89
  396. package/bmad/core/tasks/workflow.xml +0 -156
  397. package/bmad/core/tools/shard-doc.xml +0 -65
  398. package/bmad/core/workflows/brainstorming/README.md +0 -271
  399. package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  400. package/bmad/core/workflows/brainstorming/instructions.md +0 -314
  401. package/bmad/core/workflows/brainstorming/template.md +0 -102
  402. package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  403. package/bmad/core/workflows/party-mode/instructions.md +0 -188
  404. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  405. package/bmad/docs/claude-code-instructions.md +0 -25
  406. package/bmd/README.md +0 -193
  407. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  408. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  409. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  410. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  411. package/bmd/agents/cli-chief.agent.yaml +0 -126
  412. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  413. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  414. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  415. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  416. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  417. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  418. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  419. package/bmd/agents/release-chief.agent.yaml +0 -127
  420. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  421. package/bmd/config.yaml +0 -12
  422. package/src/modules/bmgd/workflows/4-production/dev-story/AUDIT-REPORT.md +0 -367
  423. package/src/modules/bmm/sub-modules/claude-code/README.md +0 -87
  424. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  425. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  426. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  427. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  428. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  429. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  430. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  431. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  432. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  433. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  434. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  435. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  436. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  437. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  438. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  439. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  440. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  441. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  442. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  443. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -200
  444. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -451
  445. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  446. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  447. package/src/modules/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +0 -49
  448. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  449. package/web-bundles/bmm/agents/analyst.xml +0 -5028
  450. package/web-bundles/bmm/agents/architect.xml +0 -2047
  451. package/web-bundles/bmm/agents/dev.xml +0 -68
  452. package/web-bundles/bmm/agents/pm.xml +0 -3808
  453. package/web-bundles/bmm/agents/sm.xml +0 -77
  454. package/web-bundles/bmm/agents/tea.xml +0 -66
  455. package/web-bundles/bmm/agents/tech-writer.xml +0 -84
  456. package/web-bundles/bmm/agents/ux-designer.xml +0 -2018
  457. package/web-bundles/bmm/teams/team-fullstack.xml +0 -12039
@@ -1,6 +1,7 @@
1
1
  const path = require('node:path');
2
2
  const { BaseIdeSetup } = require('./_base-ide');
3
3
  const chalk = require('chalk');
4
+ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
4
5
 
5
6
  /**
6
7
  * iFlow CLI setup handler
@@ -31,21 +32,23 @@ class IFlowSetup extends BaseIdeSetup {
31
32
  await this.ensureDir(agentsDir);
32
33
  await this.ensureDir(tasksDir);
33
34
 
34
- // Get agents and tasks
35
- const agents = await this.getAgents(bmadDir);
36
- const tasks = await this.getTasks(bmadDir);
35
+ // Generate agent launchers
36
+ const agentGen = new AgentCommandGenerator(this.bmadFolderName);
37
+ const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
37
38
 
38
39
  // Setup agents as commands
39
40
  let agentCount = 0;
40
- for (const agent of agents) {
41
- const content = await this.readFile(agent.path);
42
- const commandContent = this.createAgentCommand(agent, content);
41
+ for (const artifact of agentArtifacts) {
42
+ const commandContent = await this.createAgentCommand(artifact);
43
43
 
44
- const targetPath = path.join(agentsDir, `${agent.module}-${agent.name}.md`);
44
+ const targetPath = path.join(agentsDir, `${artifact.module}-${artifact.name}.md`);
45
45
  await this.writeFile(targetPath, commandContent);
46
46
  agentCount++;
47
47
  }
48
48
 
49
+ // Get tasks
50
+ const tasks = await this.getTasks(bmadDir);
51
+
49
52
  // Setup tasks as commands
50
53
  let taskCount = 0;
51
54
  for (const task of tasks) {
@@ -72,29 +75,9 @@ class IFlowSetup extends BaseIdeSetup {
72
75
  /**
73
76
  * Create agent command content
74
77
  */
75
- createAgentCommand(agent, content) {
76
- // Extract metadata
77
- const titleMatch = content.match(/title="([^"]+)"/);
78
- const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
79
-
80
- let commandContent = `# /${agent.name} Command
81
-
82
- When this command is used, adopt the following agent persona:
83
-
84
- ## ${title} Agent
85
-
86
- ${content}
87
-
88
- ## Usage
89
-
90
- This command activates the ${title} agent from the BMAD ${agent.module.toUpperCase()} module.
91
-
92
- ## Module
93
-
94
- Part of the BMAD ${agent.module.toUpperCase()} module.
95
- `;
96
-
97
- return commandContent;
78
+ async createAgentCommand(artifact) {
79
+ // The launcher content is already complete - just return it as-is
80
+ return artifact.content;
98
81
  }
99
82
 
100
83
  /**
@@ -1,6 +1,7 @@
1
1
  const path = require('node:path');
2
2
  const { BaseIdeSetup } = require('./_base-ide');
3
3
  const chalk = require('chalk');
4
+ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
4
5
 
5
6
  /**
6
7
  * KiloCode IDE setup handler
@@ -36,16 +37,17 @@ class KiloSetup extends BaseIdeSetup {
36
37
  console.log(chalk.yellow(`Found existing .kilocodemodes file with ${existingModes.length} modes`));
37
38
  }
38
39
 
39
- // Get agents
40
- const agents = await this.getAgents(bmadDir);
40
+ // Generate agent launchers
41
+ const agentGen = new AgentCommandGenerator(this.bmadFolderName);
42
+ const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
41
43
 
42
44
  // Create modes content
43
45
  let newModesContent = '';
44
46
  let addedCount = 0;
45
47
  let skippedCount = 0;
46
48
 
47
- for (const agent of agents) {
48
- const slug = `bmad-${agent.module}-${agent.name}`;
49
+ for (const artifact of agentArtifacts) {
50
+ const slug = `bmad-${artifact.module}-${artifact.name}`;
49
51
 
50
52
  // Skip if already exists
51
53
  if (existingModes.includes(slug)) {
@@ -54,8 +56,7 @@ class KiloSetup extends BaseIdeSetup {
54
56
  continue;
55
57
  }
56
58
 
57
- const content = await this.readFile(agent.path);
58
- const modeEntry = this.createModeEntry(agent, content, projectDir);
59
+ const modeEntry = await this.createModeEntry(artifact, projectDir);
59
60
 
60
61
  newModesContent += modeEntry;
61
62
  addedCount++;
@@ -90,32 +91,35 @@ class KiloSetup extends BaseIdeSetup {
90
91
  /**
91
92
  * Create a mode entry for an agent
92
93
  */
93
- createModeEntry(agent, content, projectDir) {
94
- // Extract metadata
95
- const titleMatch = content.match(/title="([^"]+)"/);
96
- const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
94
+ async createModeEntry(artifact, projectDir) {
95
+ // Extract metadata from launcher content
96
+ const titleMatch = artifact.content.match(/title="([^"]+)"/);
97
+ const title = titleMatch ? titleMatch[1] : this.formatTitle(artifact.name);
97
98
 
98
- const iconMatch = content.match(/icon="([^"]+)"/);
99
+ const iconMatch = artifact.content.match(/icon="([^"]+)"/);
99
100
  const icon = iconMatch ? iconMatch[1] : '🤖';
100
101
 
101
- const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
102
+ const whenToUseMatch = artifact.content.match(/whenToUse="([^"]+)"/);
102
103
  const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
103
104
 
104
- const roleDefinitionMatch = content.match(/roleDefinition="([^"]+)"/);
105
+ // Get the activation header from central template
106
+ const activationHeader = await this.getAgentCommandHeader();
107
+
108
+ const roleDefinitionMatch = artifact.content.match(/roleDefinition="([^"]+)"/);
105
109
  const roleDefinition = roleDefinitionMatch
106
110
  ? roleDefinitionMatch[1]
107
111
  : `You are a ${title} specializing in ${title.toLowerCase()} tasks.`;
108
112
 
109
113
  // Get relative path
110
- const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
114
+ const relativePath = path.relative(projectDir, artifact.sourcePath).replaceAll('\\', '/');
111
115
 
112
116
  // Build mode entry (KiloCode uses same schema as Roo)
113
- const slug = `bmad-${agent.module}-${agent.name}`;
117
+ const slug = `bmad-${artifact.module}-${artifact.name}`;
114
118
  let modeEntry = ` - slug: ${slug}\n`;
115
119
  modeEntry += ` name: '${icon} ${title}'\n`;
116
120
  modeEntry += ` roleDefinition: ${roleDefinition}\n`;
117
121
  modeEntry += ` whenToUse: ${whenToUse}\n`;
118
- modeEntry += ` customInstructions: CRITICAL Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
122
+ modeEntry += ` customInstructions: ${activationHeader} Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
119
123
  modeEntry += ` groups:\n`;
120
124
  modeEntry += ` - read\n`;
121
125
  modeEntry += ` - edit\n`;
@@ -10,6 +10,21 @@ class IdeManager {
10
10
  constructor() {
11
11
  this.handlers = new Map();
12
12
  this.loadHandlers();
13
+ this.bmadFolderName = 'bmad'; // Default, can be overridden
14
+ }
15
+
16
+ /**
17
+ * Set the bmad folder name for all IDE handlers
18
+ * @param {string} bmadFolderName - The bmad folder name
19
+ */
20
+ setBmadFolderName(bmadFolderName) {
21
+ this.bmadFolderName = bmadFolderName;
22
+ // Update all loaded handlers
23
+ for (const handler of this.handlers.values()) {
24
+ if (typeof handler.setBmadFolderName === 'function') {
25
+ handler.setBmadFolderName(bmadFolderName);
26
+ }
27
+ }
13
28
  }
14
29
 
15
30
  /**
@@ -4,10 +4,9 @@ const os = require('node:os');
4
4
  const chalk = require('chalk');
5
5
  const yaml = require('js-yaml');
6
6
  const { BaseIdeSetup } = require('./_base-ide');
7
- const { WorkflowCommandGenerator } = require('./workflow-command-generator');
8
- const { TaskToolCommandGenerator } = require('./task-tool-command-generator');
9
-
10
- const { getAgentsFromBmad } = require('./shared/bmad-artifacts');
7
+ const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
8
+ const { TaskToolCommandGenerator } = require('./shared/task-tool-command-generator');
9
+ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
11
10
 
12
11
  /**
13
12
  * OpenCode IDE setup handler
@@ -33,26 +32,23 @@ class OpenCodeSetup extends BaseIdeSetup {
33
32
  // Clean up any existing BMAD files before reinstalling
34
33
  await this.cleanup(projectDir);
35
34
 
35
+ // Generate agent launchers
36
+ const agentGen = new AgentCommandGenerator(this.bmadFolderName);
37
+ const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
38
+
36
39
  // Install primary agents with flat naming: bmad-agent-{module}-{name}.md
37
40
  // OpenCode agents go in the agent folder (not command folder)
38
- const agents = await getAgentsFromBmad(bmadDir, options.selectedModules || []);
39
-
40
41
  let agentCount = 0;
41
- for (const agent of agents) {
42
- const processed = await this.readAndProcess(agent.path, {
43
- module: agent.module,
44
- name: agent.name,
45
- });
46
-
47
- const agentContent = this.createAgentContent(processed, agent);
42
+ for (const artifact of agentArtifacts) {
43
+ const agentContent = artifact.content;
48
44
  // Flat structure in agent folder: bmad-agent-{module}-{name}.md
49
- const targetPath = path.join(agentsBaseDir, `bmad-agent-${agent.module}-${agent.name}.md`);
45
+ const targetPath = path.join(agentsBaseDir, `bmad-agent-${artifact.module}-${artifact.name}.md`);
50
46
  await this.writeFile(targetPath, agentContent);
51
47
  agentCount++;
52
48
  }
53
49
 
54
50
  // Install workflow commands with flat naming: bmad-workflow-{module}-{name}.md
55
- const workflowGenerator = new WorkflowCommandGenerator();
51
+ const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
56
52
  const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
57
53
 
58
54
  let workflowCommandCount = 0;
@@ -127,7 +123,7 @@ class OpenCodeSetup extends BaseIdeSetup {
127
123
  return this.processContent(content, metadata);
128
124
  }
129
125
 
130
- createAgentContent(content, metadata) {
126
+ async createAgentContent(content, metadata) {
131
127
  const { frontmatter = {}, body } = this.parseFrontmatter(content);
132
128
 
133
129
  frontmatter.description =
@@ -140,7 +136,10 @@ class OpenCodeSetup extends BaseIdeSetup {
140
136
 
141
137
  const frontmatterString = this.stringifyFrontmatter(frontmatter);
142
138
 
143
- return `${frontmatterString}\n${body}`;
139
+ // Get the activation header from central template
140
+ const activationHeader = await this.getAgentCommandHeader();
141
+
142
+ return `${frontmatterString}\n\n${activationHeader}\n\n${body}`;
144
143
  }
145
144
 
146
145
  parseFrontmatter(content) {
@@ -2,6 +2,7 @@ const path = require('node:path');
2
2
  const { BaseIdeSetup } = require('./_base-ide');
3
3
  const chalk = require('chalk');
4
4
  const { getAgentsFromBmad, getTasksFromBmad } = require('./shared/bmad-artifacts');
5
+ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
5
6
 
6
7
  /**
7
8
  * Qwen Code setup handler
@@ -37,15 +38,18 @@ class QwenSetup extends BaseIdeSetup {
37
38
  // Clean up old configuration if exists
38
39
  await this.cleanupOldConfig(qwenDir);
39
40
 
40
- // Get agents, tasks, tools, and workflows (standalone only for tools/workflows)
41
- const agents = await getAgentsFromBmad(bmadDir, options.selectedModules || []);
41
+ // Generate agent launchers
42
+ const agentGen = new AgentCommandGenerator(this.bmadFolderName);
43
+ const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
44
+
45
+ // Get tasks, tools, and workflows (standalone only for tools/workflows)
42
46
  const tasks = await getTasksFromBmad(bmadDir, options.selectedModules || []);
43
47
  const tools = await this.getTools(bmadDir, true);
44
48
  const workflows = await this.getWorkflows(bmadDir, true);
45
49
 
46
50
  // Create directories for each module (including standalone)
47
51
  const modules = new Set();
48
- for (const item of [...agents, ...tasks, ...tools, ...workflows]) modules.add(item.module);
52
+ for (const item of [...agentArtifacts, ...tasks, ...tools, ...workflows]) modules.add(item.module);
49
53
 
50
54
  for (const module of modules) {
51
55
  await this.ensureDir(path.join(bmadCommandsDir, module));
@@ -55,20 +59,21 @@ class QwenSetup extends BaseIdeSetup {
55
59
  await this.ensureDir(path.join(bmadCommandsDir, module, 'workflows'));
56
60
  }
57
61
 
58
- // Create TOML files for each agent
62
+ // Create TOML files for each agent launcher
59
63
  let agentCount = 0;
60
- for (const agent of agents) {
61
- const content = await this.readAndProcess(agent.path, {
62
- module: agent.module,
63
- name: agent.name,
64
+ for (const artifact of agentArtifacts) {
65
+ // Convert markdown launcher content to TOML format
66
+ const tomlContent = this.processAgentLauncherContent(artifact.content, {
67
+ module: artifact.module,
68
+ name: artifact.name,
64
69
  });
65
70
 
66
- const targetPath = path.join(bmadCommandsDir, agent.module, 'agents', `${agent.name}.toml`);
71
+ const targetPath = path.join(bmadCommandsDir, artifact.module, 'agents', `${artifact.name}.toml`);
67
72
 
68
- await this.writeFile(targetPath, content);
73
+ await this.writeFile(targetPath, tomlContent);
69
74
 
70
75
  agentCount++;
71
- console.log(chalk.green(` ✓ Added agent: /bmad:${agent.module}:agents:${agent.name}`));
76
+ console.log(chalk.green(` ✓ Added agent: /bmad:${artifact.module}:agents:${artifact.name}`));
72
77
  }
73
78
 
74
79
  // Create TOML files for each task
@@ -204,6 +209,29 @@ class QwenSetup extends BaseIdeSetup {
204
209
  return this.processContent(content, metadata);
205
210
  }
206
211
 
212
+ /**
213
+ * Process agent launcher content and convert to TOML format
214
+ * @param {string} launcherContent - Launcher markdown content
215
+ * @param {Object} metadata - File metadata
216
+ * @returns {string} TOML formatted content
217
+ */
218
+ processAgentLauncherContent(launcherContent, metadata = {}) {
219
+ // Strip frontmatter from launcher content
220
+ const frontmatterRegex = /^---\s*\n[\s\S]*?\n---\s*\n/;
221
+ const contentWithoutFrontmatter = launcherContent.replace(frontmatterRegex, '');
222
+
223
+ // Extract title for TOML description
224
+ const titleMatch = launcherContent.match(/description:\s*"([^"]+)"/);
225
+ const title = titleMatch ? titleMatch[1] : metadata.name;
226
+
227
+ // Create TOML with launcher content (without frontmatter)
228
+ return `description = "BMAD ${metadata.module.toUpperCase()} Agent: ${title}"
229
+ prompt = """
230
+ ${contentWithoutFrontmatter.trim()}
231
+ """
232
+ `;
233
+ }
234
+
207
235
  /**
208
236
  * Override processContent to add TOML metadata header for Qwen
209
237
  * @param {string} content - File content
@@ -1,7 +1,7 @@
1
1
  const path = require('node:path');
2
2
  const { BaseIdeSetup } = require('./_base-ide');
3
3
  const chalk = require('chalk');
4
- const inquirer = require('inquirer');
4
+ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
5
5
 
6
6
  /**
7
7
  * Roo IDE setup handler
@@ -35,31 +35,6 @@ class RooSetup extends BaseIdeSetup {
35
35
  };
36
36
  }
37
37
 
38
- /**
39
- * Collect configuration choices before installation
40
- * @param {Object} options - Configuration options
41
- * @returns {Object} Collected configuration
42
- */
43
- async collectConfiguration(options = {}) {
44
- const response = await inquirer.prompt([
45
- {
46
- type: 'list',
47
- name: 'permissions',
48
- message: 'Select default file edit permissions for BMAD agents:',
49
- choices: [
50
- { name: 'Development files only (js, ts, py, etc.)', value: 'dev' },
51
- { name: 'Configuration files only (json, yaml, xml, etc.)', value: 'config' },
52
- { name: 'Documentation files only (md, txt, doc, etc.)', value: 'docs' },
53
- { name: 'All files (unrestricted access)', value: 'all' },
54
- { name: 'Custom per agent (will be configured individually)', value: 'custom' },
55
- ],
56
- default: 'dev',
57
- },
58
- ]);
59
-
60
- return { permissions: response.permissions };
61
- }
62
-
63
38
  /**
64
39
  * Setup Roo IDE configuration
65
40
  * @param {string} projectDir - Project directory
@@ -84,20 +59,20 @@ class RooSetup extends BaseIdeSetup {
84
59
  console.log(chalk.yellow(`Found existing .roomodes file with ${existingModes.length} modes`));
85
60
  }
86
61
 
87
- // Get agents
88
- const agents = await this.getAgents(bmadDir);
62
+ // Generate agent launchers (though Roo will reference the actual .bmad agents)
63
+ const agentGen = new AgentCommandGenerator(this.bmadFolderName);
64
+ const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
89
65
 
90
- // Use pre-collected configuration if available
91
- const config = options.preCollectedConfig || {};
92
- let permissionChoice = config.permissions || options.permissions || 'dev';
66
+ // Always use 'all' permissions - users can customize in .roomodes file
67
+ const permissionChoice = 'all';
93
68
 
94
69
  // Create modes content
95
70
  let newModesContent = '';
96
71
  let addedCount = 0;
97
72
  let skippedCount = 0;
98
73
 
99
- for (const agent of agents) {
100
- const slug = `bmad-${agent.module}-${agent.name}`;
74
+ for (const artifact of agentArtifacts) {
75
+ const slug = `bmad-${artifact.module}-${artifact.name}`;
101
76
 
102
77
  // Skip if already exists
103
78
  if (existingModes.includes(slug)) {
@@ -106,8 +81,17 @@ class RooSetup extends BaseIdeSetup {
106
81
  continue;
107
82
  }
108
83
 
109
- const content = await this.readFile(agent.path);
110
- const modeEntry = this.createModeEntry(agent, content, permissionChoice, projectDir);
84
+ // Read the actual agent file from .bmad for metadata extraction
85
+ const agentPath = path.join(bmadDir, artifact.module, 'agents', `${artifact.name}.md`);
86
+ const content = await this.readFile(agentPath);
87
+
88
+ // Create mode entry that references the actual .bmad agent
89
+ const modeEntry = await this.createModeEntry(
90
+ { module: artifact.module, name: artifact.name, path: agentPath },
91
+ content,
92
+ permissionChoice,
93
+ projectDir,
94
+ );
111
95
 
112
96
  newModesContent += modeEntry;
113
97
  addedCount++;
@@ -133,8 +117,9 @@ class RooSetup extends BaseIdeSetup {
133
117
  console.log(chalk.dim(` - ${skippedCount} modes skipped (already exist)`));
134
118
  }
135
119
  console.log(chalk.dim(` - Configuration file: ${this.configFile}`));
136
- console.log(chalk.dim(` - Permission level: ${permissionChoice}`));
137
- console.log(chalk.dim('\n Modes will be available when you open this project in Roo Code'));
120
+ console.log(chalk.dim(` - Permission level: all (unrestricted)`));
121
+ console.log(chalk.yellow(`\n 💡 Tip: Edit ${this.configFile} to customize file permissions per agent`));
122
+ console.log(chalk.dim(` Modes will be available when you open this project in Roo Code`));
138
123
 
139
124
  return {
140
125
  success: true,
@@ -143,33 +128,10 @@ class RooSetup extends BaseIdeSetup {
143
128
  };
144
129
  }
145
130
 
146
- /**
147
- * Ask user about permission configuration
148
- */
149
- async askPermissions() {
150
- const response = await inquirer.prompt([
151
- {
152
- type: 'list',
153
- name: 'permissions',
154
- message: 'Select default file edit permissions for BMAD agents:',
155
- choices: [
156
- { name: 'Development files only (js, ts, py, etc.)', value: 'dev' },
157
- { name: 'Configuration files only (json, yaml, xml, etc.)', value: 'config' },
158
- { name: 'Documentation files only (md, txt, doc, etc.)', value: 'docs' },
159
- { name: 'All files (unrestricted access)', value: 'all' },
160
- { name: 'Custom per agent (will be configured individually)', value: 'custom' },
161
- ],
162
- default: 'dev',
163
- },
164
- ]);
165
-
166
- return response.permissions;
167
- }
168
-
169
131
  /**
170
132
  * Create a mode entry for an agent
171
133
  */
172
- createModeEntry(agent, content, permissionChoice, projectDir) {
134
+ async createModeEntry(agent, content, permissionChoice, projectDir) {
173
135
  // Extract metadata from agent content
174
136
  const titleMatch = content.match(/title="([^"]+)"/);
175
137
  const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
@@ -180,6 +142,9 @@ class RooSetup extends BaseIdeSetup {
180
142
  const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
181
143
  const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
182
144
 
145
+ // Get the activation header from central template
146
+ const activationHeader = await this.getAgentCommandHeader();
147
+
183
148
  const roleDefinitionMatch = content.match(/roleDefinition="([^"]+)"/);
184
149
  const roleDefinition = roleDefinitionMatch
185
150
  ? roleDefinitionMatch[1]
@@ -202,7 +167,7 @@ class RooSetup extends BaseIdeSetup {
202
167
 
203
168
  modeEntry += ` roleDefinition: ${roleDefinition}\n`;
204
169
  modeEntry += ` whenToUse: ${whenToUse}\n`;
205
- modeEntry += ` customInstructions: CRITICAL Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
170
+ modeEntry += ` customInstructions: ${activationHeader} Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
206
171
  modeEntry += ` groups:\n`;
207
172
  modeEntry += ` - read\n`;
208
173
 
@@ -0,0 +1,90 @@
1
+ const path = require('node:path');
2
+ const fs = require('fs-extra');
3
+ const chalk = require('chalk');
4
+
5
+ /**
6
+ * Generates launcher command files for each agent
7
+ * Similar to WorkflowCommandGenerator but for agents
8
+ */
9
+ class AgentCommandGenerator {
10
+ constructor(bmadFolderName = 'bmad') {
11
+ this.templatePath = path.join(__dirname, '../templates/agent-command-template.md');
12
+ this.bmadFolderName = bmadFolderName;
13
+ }
14
+
15
+ /**
16
+ * Collect agent artifacts for IDE installation
17
+ * @param {string} bmadDir - BMAD installation directory
18
+ * @param {Array} selectedModules - Modules to include
19
+ * @returns {Object} Artifacts array with metadata
20
+ */
21
+ async collectAgentArtifacts(bmadDir, selectedModules = []) {
22
+ const { getAgentsFromBmad } = require('./bmad-artifacts');
23
+
24
+ // Get agents from INSTALLED bmad/ directory
25
+ const agents = await getAgentsFromBmad(bmadDir, selectedModules);
26
+
27
+ const artifacts = [];
28
+
29
+ for (const agent of agents) {
30
+ const launcherContent = await this.generateLauncherContent(agent);
31
+ artifacts.push({
32
+ type: 'agent-launcher',
33
+ module: agent.module,
34
+ name: agent.name,
35
+ relativePath: path.join(agent.module, 'agents', `${agent.name}.md`),
36
+ content: launcherContent,
37
+ sourcePath: agent.path,
38
+ });
39
+ }
40
+
41
+ return {
42
+ artifacts,
43
+ counts: {
44
+ agents: agents.length,
45
+ },
46
+ };
47
+ }
48
+
49
+ /**
50
+ * Generate launcher content for an agent
51
+ * @param {Object} agent - Agent metadata
52
+ * @returns {string} Launcher file content
53
+ */
54
+ async generateLauncherContent(agent) {
55
+ // Load the template
56
+ const template = await fs.readFile(this.templatePath, 'utf8');
57
+
58
+ // Replace template variables
59
+ return template
60
+ .replaceAll('{{name}}', agent.name)
61
+ .replaceAll('{{module}}', agent.module)
62
+ .replaceAll('{{description}}', agent.description || `${agent.name} agent`)
63
+ .replaceAll('{bmad_folder}', this.bmadFolderName);
64
+ }
65
+
66
+ /**
67
+ * Write agent launcher artifacts to IDE commands directory
68
+ * @param {string} baseCommandsDir - Base commands directory for the IDE
69
+ * @param {Array} artifacts - Agent launcher artifacts
70
+ * @returns {number} Count of launchers written
71
+ */
72
+ async writeAgentLaunchers(baseCommandsDir, artifacts) {
73
+ let writtenCount = 0;
74
+
75
+ for (const artifact of artifacts) {
76
+ if (artifact.type === 'agent-launcher') {
77
+ const moduleAgentsDir = path.join(baseCommandsDir, artifact.module, 'agents');
78
+ await fs.ensureDir(moduleAgentsDir);
79
+
80
+ const launcherPath = path.join(moduleAgentsDir, `${artifact.name}.md`);
81
+ await fs.writeFile(launcherPath, artifact.content);
82
+ writtenCount++;
83
+ }
84
+ }
85
+
86
+ return writtenCount;
87
+ }
88
+ }
89
+
90
+ module.exports = { AgentCommandGenerator };
@@ -4,7 +4,7 @@ const csv = require('csv-parse/sync');
4
4
  const chalk = require('chalk');
5
5
 
6
6
  /**
7
- * Generates Claude Code command files for standalone tasks and tools
7
+ * Generates command files for standalone tasks and tools
8
8
  */
9
9
  class TaskToolCommandGenerator {
10
10
  /**
@@ -4,11 +4,12 @@ const csv = require('csv-parse/sync');
4
4
  const chalk = require('chalk');
5
5
 
6
6
  /**
7
- * Generates Claude Code command files for each workflow in the manifest
7
+ * Generates command files for each workflow in the manifest
8
8
  */
9
9
  class WorkflowCommandGenerator {
10
- constructor() {
11
- this.templatePath = path.join(__dirname, 'workflow-command-template.md');
10
+ constructor(bmadFolderName = 'bmad') {
11
+ this.templatePath = path.join(__dirname, '../templates/workflow-command-template.md');
12
+ this.bmadFolderName = bmadFolderName;
12
13
  }
13
14
 
14
15
  /**
@@ -103,19 +104,19 @@ class WorkflowCommandGenerator {
103
104
 
104
105
  // Convert source path to installed path
105
106
  // From: /Users/.../src/modules/bmm/workflows/.../workflow.yaml
106
- // To: {project-root}/bmad/bmm/workflows/.../workflow.yaml
107
+ // To: {project-root}/{bmad_folder}/bmm/workflows/.../workflow.yaml
107
108
  let workflowPath = workflow.path;
108
109
 
109
110
  // Extract the relative path from source
110
111
  if (workflowPath.includes('/src/modules/')) {
111
112
  const match = workflowPath.match(/\/src\/modules\/(.+)/);
112
113
  if (match) {
113
- workflowPath = `{project-root}/bmad/${match[1]}`;
114
+ workflowPath = `${this.bmadFolderName}/${match[1]}`;
114
115
  }
115
116
  } else if (workflowPath.includes('/src/core/')) {
116
117
  const match = workflowPath.match(/\/src\/core\/(.+)/);
117
118
  if (match) {
118
- workflowPath = `{project-root}/bmad/core/${match[1]}`;
119
+ workflowPath = `${this.bmadFolderName}/core/${match[1]}`;
119
120
  }
120
121
  }
121
122
 
@@ -125,6 +126,7 @@ class WorkflowCommandGenerator {
125
126
  .replaceAll('{{module}}', workflow.module)
126
127
  .replaceAll('{{description}}', workflow.description)
127
128
  .replaceAll('{{workflow_path}}', workflowPath)
129
+ .replaceAll('{bmad_folder}', this.bmadFolderName)
128
130
  .replaceAll('{{interactive}}', workflow.interactive)
129
131
  .replaceAll('{{author}}', workflow.author || 'BMAD');
130
132
  }
@@ -186,7 +188,7 @@ class WorkflowCommandGenerator {
186
188
  ## Execution
187
189
 
188
190
  When running any workflow:
189
- 1. LOAD {project-root}/bmad/core/tasks/workflow.xml
191
+ 1. LOAD {project-root}/${this.bmadFolderName}/core/tasks/workflow.xml
190
192
  2. Pass the workflow path as 'workflow-config' parameter
191
193
  3. Follow workflow.xml instructions EXACTLY
192
194
  4. Save outputs after EACH section
@@ -205,12 +207,12 @@ When running any workflow:
205
207
  if (workflowPath.includes('/src/modules/')) {
206
208
  const match = workflowPath.match(/\/src\/modules\/(.+)/);
207
209
  if (match) {
208
- transformed = `{project-root}/bmad/${match[1]}`;
210
+ transformed = `{project-root}/${this.bmadFolderName}/${match[1]}`;
209
211
  }
210
212
  } else if (workflowPath.includes('/src/core/')) {
211
213
  const match = workflowPath.match(/\/src\/core\/(.+)/);
212
214
  if (match) {
213
- transformed = `{project-root}/bmad/core/${match[1]}`;
215
+ transformed = `{project-root}/${this.bmadFolderName}/core/${match[1]}`;
214
216
  }
215
217
  }
216
218