bmad-method 6.0.0-alpha.16 → 6.0.0-alpha.17

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 (499) hide show
  1. package/.coderabbit.yaml +7 -3
  2. package/.github/scripts/discord-helpers.sh +21 -2
  3. package/.github/workflows/discord.yaml +31 -7
  4. package/.github/workflows/manual-release.yaml +12 -42
  5. package/.markdownlint-cli2.yaml +2 -2
  6. package/.prettierignore +2 -2
  7. package/.vscode/settings.json +1 -1
  8. package/CHANGELOG.md +96 -2
  9. package/LICENSE +1 -1
  10. package/README.md +29 -2
  11. package/docs/agent-customization-guide.md +10 -10
  12. package/docs/custom-content-installation.md +100 -196
  13. package/docs/custom-content.md +122 -0
  14. package/docs/ide-info/crush.md +1 -1
  15. package/docs/ide-info/cursor.md +7 -7
  16. package/docs/ide-info/iflow.md +3 -3
  17. package/docs/ide-info/opencode.md +1 -1
  18. package/docs/ide-info/rovo-dev.md +1 -1
  19. package/docs/index.md +2 -2
  20. package/docs/installers-bundlers/ide-injections.md +2 -2
  21. package/docs/installers-bundlers/installers-modules-platforms-reference.md +13 -13
  22. package/docs/sample-custom-modules/README.md +11 -0
  23. package/docs/sample-custom-modules/sample-unitary-module/README.md +8 -0
  24. package/docs/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +129 -0
  25. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
  26. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
  27. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
  28. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
  29. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
  30. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
  31. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
  32. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
  33. package/docs/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith.agent.yaml +109 -0
  34. package/docs/sample-custom-modules/sample-unitary-module/module.yaml +8 -0
  35. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +168 -0
  36. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +155 -0
  37. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +89 -0
  38. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +36 -0
  39. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +36 -0
  40. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +36 -0
  41. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +36 -0
  42. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +36 -0
  43. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +36 -0
  44. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +36 -0
  45. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +36 -0
  46. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +150 -0
  47. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/templates/csv-headers.template +1 -0
  48. package/docs/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +54 -0
  49. package/docs/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md +26 -0
  50. package/docs/sample-custom-modules/sample-wellness-module/README.md +6 -0
  51. package/docs/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +136 -0
  52. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/foo.md +3 -0
  53. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/addition1.md +1 -0
  54. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
  55. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
  56. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
  57. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
  58. package/docs/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion.agent.yaml +120 -0
  59. package/docs/sample-custom-modules/sample-wellness-module/module.yaml +17 -0
  60. package/docs/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/README.md +32 -0
  61. package/docs/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/workflow.md +45 -0
  62. package/docs/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/README.md +31 -0
  63. package/docs/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/workflow.md +45 -0
  64. package/docs/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/README.md +31 -0
  65. package/docs/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/workflow.md +45 -0
  66. package/docs/v4-to-v6-upgrade.md +27 -27
  67. package/docs/web-bundles-gemini-gpt-guide.md +6 -458
  68. package/eslint.config.mjs +2 -2
  69. package/package.json +1 -1
  70. package/src/core/agents/bmad-master.agent.yaml +6 -11
  71. package/src/core/module.yaml +11 -18
  72. package/src/core/resources/excalidraw/README.md +6 -6
  73. package/src/core/tasks/advanced-elicitation.xml +3 -3
  74. package/src/core/tasks/index-docs.xml +1 -1
  75. package/src/core/tasks/validate-workflow.xml +1 -1
  76. package/src/core/tasks/workflow.xml +4 -4
  77. package/src/core/tools/shard-doc.xml +12 -12
  78. package/src/core/workflows/brainstorming/workflow.md +3 -3
  79. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +2 -2
  80. package/src/core/workflows/party-mode/workflow.md +4 -4
  81. package/src/modules/bmb/agents/bmad-builder.agent.yaml +15 -15
  82. package/src/modules/bmb/{README.md → docs/README.md} +15 -27
  83. package/src/modules/bmb/docs/agents/agent-compilation.md +3 -3
  84. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +23 -24
  85. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +20 -21
  86. package/src/modules/bmb/docs/agents/simple-agent-architecture.md +17 -52
  87. package/src/modules/bmb/docs/agents/understanding-agent-types.md +6 -6
  88. package/src/modules/bmb/docs/workflows/architecture.md +1 -1
  89. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +3 -3
  90. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +1 -1
  91. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +1 -1
  92. package/src/modules/bmb/docs/workflows/templates/step-file.md +3 -3
  93. package/src/modules/bmb/docs/workflows/templates/step-template.md +3 -3
  94. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +2 -2
  95. package/src/modules/bmb/docs/workflows/templates/workflow.md +1 -1
  96. package/src/modules/bmb/module.yaml +6 -15
  97. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +7 -7
  98. package/src/modules/bmb/reference/agents/module-examples/README.md +3 -4
  99. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +5 -5
  100. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
  101. package/src/modules/bmb/reference/agents/simple-examples/README.md +1 -1
  102. package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +1 -1
  103. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
  104. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
  105. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
  106. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
  107. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
  108. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
  109. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
  110. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
  111. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +1 -3
  112. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +6 -6
  113. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
  114. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +1 -1
  115. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +1 -1
  116. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
  117. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
  118. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
  119. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
  120. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
  121. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
  122. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
  123. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
  124. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +3 -3
  125. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +4 -4
  126. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +6 -10
  127. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +6 -6
  128. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +9 -9
  129. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +6 -5
  130. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +19 -57
  131. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +5 -5
  132. package/src/modules/bmb/workflows/create-agent/steps/{step-11-celebrate.md → step-08-celebrate.md} +2 -6
  133. package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +3 -0
  134. package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +364 -0
  135. package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +257 -0
  136. package/src/modules/bmb/workflows/create-agent/workflow.md +2 -35
  137. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +4 -4
  138. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +2 -2
  139. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +4 -4
  140. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +4 -4
  141. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +6 -6
  142. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +5 -5
  143. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +8 -8
  144. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +5 -5
  145. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +8 -8
  146. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +7 -7
  147. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +7 -7
  148. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +6 -6
  149. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +15 -19
  150. package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +1 -1
  151. package/src/modules/bmb/workflows/create-module/workflow.md +3 -3
  152. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +4 -4
  153. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +6 -6
  154. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +5 -5
  155. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +4 -4
  156. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +4 -4
  157. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +11 -11
  158. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +14 -14
  159. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +4 -4
  160. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +2 -2
  161. package/src/modules/bmb/workflows/create-workflow/workflow.md +2 -2
  162. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +2 -2
  163. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +12 -12
  164. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +4 -4
  165. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +2 -2
  166. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +4 -4
  167. package/src/modules/bmb/workflows/edit-agent/workflow.md +1 -1
  168. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +4 -4
  169. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +3 -3
  170. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +6 -6
  171. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +3 -3
  172. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +3 -3
  173. package/src/modules/bmb/workflows/edit-workflow/workflow.md +1 -1
  174. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +3 -3
  175. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +5 -5
  176. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +6 -6
  177. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +4 -4
  178. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +4 -4
  179. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +4 -4
  180. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +4 -4
  181. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +3 -3
  182. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +1 -1
  183. package/src/modules/bmb/workflows-legacy/edit-module/README.md +1 -17
  184. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +3 -4
  185. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +4 -5
  186. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +10 -10
  187. package/src/modules/bmb/workflows-legacy/module-brief/README.md +2 -2
  188. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +2 -2
  189. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +4 -4
  190. package/src/modules/bmgd/README.md +1 -1
  191. package/src/modules/bmgd/agents/game-architect.agent.yaml +6 -6
  192. package/src/modules/bmgd/agents/game-designer.agent.yaml +7 -7
  193. package/src/modules/bmgd/agents/game-dev.agent.yaml +10 -10
  194. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +21 -21
  195. package/src/modules/bmgd/module.yaml +2 -7
  196. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
  197. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +9 -9
  198. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
  199. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +8 -8
  200. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +4 -4
  201. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +30 -30
  202. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -1
  203. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +5 -5
  204. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +1 -1
  205. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +2 -2
  206. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +4 -4
  207. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +2 -2
  208. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
  209. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +2 -2
  210. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +2 -2
  211. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +2 -2
  212. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +2 -2
  213. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +2 -2
  214. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +2 -2
  215. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +1 -1
  216. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +2 -2
  217. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +2 -2
  218. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +2 -2
  219. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +3 -3
  220. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +2 -2
  221. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +2 -2
  222. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +1 -1
  223. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +2 -2
  224. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +2 -2
  225. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +2 -2
  226. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +1 -1
  227. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +2 -2
  228. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +1 -1
  229. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +2 -2
  230. package/src/modules/bmm/README.md +1 -1
  231. package/src/modules/bmm/agents/analyst.agent.yaml +9 -9
  232. package/src/modules/bmm/agents/architect.agent.yaml +8 -8
  233. package/src/modules/bmm/agents/dev.agent.yaml +5 -5
  234. package/src/modules/bmm/agents/pm.agent.yaml +8 -8
  235. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +5 -5
  236. package/src/modules/bmm/agents/sm.agent.yaml +11 -11
  237. package/src/modules/bmm/agents/tea.agent.yaml +13 -13
  238. package/src/modules/bmm/agents/tech-writer.agent.yaml +9 -9
  239. package/src/modules/bmm/agents/ux-designer.agent.yaml +6 -6
  240. package/src/modules/bmm/docs/agents-guide.md +16 -14
  241. package/src/modules/bmm/docs/brownfield-guide.md +6 -6
  242. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  243. package/src/modules/bmm/docs/faq.md +5 -18
  244. package/src/modules/bmm/docs/glossary.md +3 -4
  245. package/src/modules/bmm/docs/images/README.md +1 -1
  246. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +8 -8
  247. package/src/modules/bmm/docs/party-mode.md +3 -3
  248. package/src/modules/bmm/docs/quick-flow-solo-dev.md +5 -5
  249. package/src/modules/bmm/docs/quick-spec-flow.md +2 -16
  250. package/src/modules/bmm/docs/quick-start.md +3 -3
  251. package/src/modules/bmm/docs/test-architecture.md +15 -23
  252. package/src/modules/bmm/docs/troubleshooting.md +6 -25
  253. package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
  254. package/src/modules/bmm/docs/workflows-implementation.md +3 -4
  255. package/src/modules/bmm/module.yaml +25 -23
  256. package/src/modules/bmm/testarch/knowledge/overview.md +0 -1
  257. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-01-init.md +1 -1
  258. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-01b-continue.md +1 -1
  259. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-02-vision.md +3 -3
  260. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-03-users.md +3 -3
  261. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-04-metrics.md +3 -3
  262. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-05-scope.md +3 -3
  263. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/steps/step-06-complete.md +1 -1
  264. package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/workflow.md +2 -2
  265. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +2 -2
  266. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +4 -4
  267. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +4 -4
  268. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +4 -4
  269. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +4 -4
  270. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +4 -4
  271. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +4 -4
  272. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +4 -4
  273. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +4 -4
  274. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +4 -4
  275. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +4 -4
  276. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +4 -4
  277. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +4 -4
  278. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +2 -2
  279. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +1 -1
  280. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +1 -1
  281. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +3 -3
  282. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +7 -7
  283. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +8 -8
  284. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +12 -12
  285. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +12 -12
  286. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +10 -10
  287. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +7 -7
  288. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +9 -9
  289. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +9 -9
  290. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +1 -1
  291. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +2 -2
  292. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-01-document-discovery.md +1 -1
  293. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-02-prd-analysis.md +1 -1
  294. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-03-epic-coverage-validation.md +1 -1
  295. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-04-ux-alignment.md +1 -1
  296. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-05-epic-quality-review.md +2 -2
  297. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/steps/step-06-final-assessment.md +1 -1
  298. package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/workflow.md +1 -1
  299. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-01-init.md +1 -1
  300. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-02-context.md +4 -4
  301. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-03-starter.md +4 -4
  302. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-04-decisions.md +4 -4
  303. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-05-patterns.md +4 -4
  304. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-06-structure.md +4 -4
  305. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-07-validation.md +4 -4
  306. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-08-complete.md +3 -3
  307. package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/workflow.md +2 -2
  308. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +3 -3
  309. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +3 -3
  310. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +3 -3
  311. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +3 -3
  312. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +3 -3
  313. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +4 -3
  314. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +2 -2
  315. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  316. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
  317. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
  318. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +2 -2
  319. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +5 -5
  320. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
  321. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +2 -2
  322. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +2 -2
  323. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +11 -8
  324. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +2 -2
  325. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +3 -3
  326. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +3 -3
  327. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +15 -22
  328. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +4 -5
  329. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -2
  330. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +90 -35
  331. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +2 -2
  332. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +5 -5
  333. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +7 -7
  334. package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
  335. package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
  336. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  337. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  338. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-dataflow/instructions.md +1 -1
  339. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-dataflow/workflow.yaml +6 -6
  340. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-diagram/instructions.md +2 -2
  341. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-diagram/workflow.yaml +6 -6
  342. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-flowchart/instructions.md +2 -2
  343. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-flowchart/workflow.yaml +6 -6
  344. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-wireframe/instructions.md +1 -1
  345. package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-wireframe/workflow.yaml +6 -6
  346. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +2 -2
  347. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +3 -3
  348. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +2 -2
  349. package/src/modules/bmm/workflows/generate-project-context/workflow.md +5 -5
  350. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
  351. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
  352. package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
  353. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
  354. package/src/modules/bmm/workflows/testarch/ci/instructions.md +1 -1
  355. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
  356. package/src/modules/bmm/workflows/testarch/framework/instructions.md +3 -3
  357. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
  358. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  359. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  360. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +3 -3
  361. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
  362. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +10 -4
  363. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
  364. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
  365. package/src/modules/bmm/workflows/testarch/trace/instructions.md +6 -6
  366. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
  367. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +1 -1
  368. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
  369. package/src/modules/bmm/workflows/workflow-status/instructions.md +3 -3
  370. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  371. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
  372. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +4 -4
  373. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +4 -4
  374. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +4 -4
  375. package/src/modules/cis/agents/innovation-strategist.agent.yaml +4 -4
  376. package/src/modules/cis/agents/presentation-master.agent.yaml +3 -3
  377. package/src/modules/cis/agents/storyteller/storyteller-sidecar/stories-told.md +7 -0
  378. package/src/modules/cis/agents/storyteller/storyteller-sidecar/story-preferences.md +7 -0
  379. package/src/modules/cis/agents/{storyteller.agent.yaml → storyteller/storyteller.agent.yaml} +9 -4
  380. package/src/modules/cis/module.yaml +3 -7
  381. package/src/modules/cis/{README.md → readme.md} +1 -1
  382. package/src/modules/cis/workflows/README.md +1 -1
  383. package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
  384. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
  385. package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
  386. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
  387. package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
  388. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
  389. package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
  390. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
  391. package/src/utility/agent-components/activation-rules.txt +7 -0
  392. package/src/utility/agent-components/activation-steps.txt +13 -0
  393. package/src/utility/agent-components/agent-command-header.md +1 -0
  394. package/src/utility/{templates → agent-components}/agent.customize.template.yaml +0 -1
  395. package/src/utility/agent-components/handler-action.txt +4 -0
  396. package/src/utility/agent-components/handler-exec.txt +6 -0
  397. package/src/utility/agent-components/handler-multi.txt +14 -0
  398. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  399. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  400. package/src/utility/agent-components/handler-workflow.txt +10 -0
  401. package/src/utility/agent-components/menu-handlers.txt +6 -0
  402. package/test/README.md +1 -1
  403. package/test/test-agent-schema.js +2 -2
  404. package/tools/cli/README.md +1 -607
  405. package/tools/cli/commands/build.js +7 -7
  406. package/tools/cli/commands/install.js +9 -20
  407. package/tools/cli/commands/list.js +13 -1
  408. package/tools/cli/installers/lib/core/config-collector.js +224 -59
  409. package/tools/cli/installers/lib/core/custom-module-cache.js +18 -10
  410. package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
  411. package/tools/cli/installers/lib/core/detector.js +16 -16
  412. package/tools/cli/installers/lib/core/ide-config-manager.js +9 -7
  413. package/tools/cli/installers/lib/core/installer.js +540 -946
  414. package/tools/cli/installers/lib/core/manifest-generator.js +43 -40
  415. package/tools/cli/installers/lib/core/manifest.js +23 -20
  416. package/tools/cli/installers/lib/custom/handler.js +16 -46
  417. package/tools/cli/installers/lib/ide/_base-ide.js +26 -33
  418. package/tools/cli/installers/lib/ide/antigravity.js +3 -3
  419. package/tools/cli/installers/lib/ide/claude-code.js +3 -3
  420. package/tools/cli/installers/lib/ide/codex.js +2 -2
  421. package/tools/cli/installers/lib/ide/gemini.js +6 -6
  422. package/tools/cli/installers/lib/ide/kiro-cli.js +2 -2
  423. package/tools/cli/installers/lib/ide/opencode.js +2 -2
  424. package/tools/cli/installers/lib/ide/roo.js +15 -5
  425. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +2 -2
  426. package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
  427. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +2 -2
  428. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +4 -4
  429. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
  430. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +3 -3
  431. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +3 -3
  432. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +1 -1
  433. package/tools/cli/installers/lib/modules/manager.js +304 -313
  434. package/tools/cli/lib/activation-builder.js +8 -13
  435. package/tools/cli/lib/agent/compiler.js +68 -168
  436. package/tools/cli/lib/agent/installer.js +8 -128
  437. package/tools/cli/lib/agent-analyzer.js +2 -2
  438. package/tools/cli/lib/agent-party-generator.js +5 -17
  439. package/tools/cli/lib/config.js +2 -2
  440. package/tools/cli/lib/platform-codes.js +2 -2
  441. package/tools/cli/lib/ui.js +631 -568
  442. package/tools/cli/lib/xml-handler.js +3 -55
  443. package/tools/cli/lib/yaml-format.js +4 -6
  444. package/tools/cli/lib/yaml-xml-builder.js +14 -26
  445. package/tools/flattener/ignoreRules.js +1 -1
  446. package/tools/flattener/xml.js +1 -7
  447. package/tools/lib/xml-utils.js +13 -0
  448. package/tools/migrate-custom-module-paths.js +2 -2
  449. package/tools/validate-agent-schema.js +2 -2
  450. package/docs/v6-open-items.md +0 -17
  451. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  452. package/src/modules/bmb/_module-installer/installer.js +0 -76
  453. package/src/modules/bmb/docs/agents/module-agent-architecture.md +0 -366
  454. package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +0 -179
  455. package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +0 -197
  456. package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +0 -180
  457. package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +0 -21
  458. package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +0 -25
  459. package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +0 -23
  460. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  461. package/src/modules/cis/agents/README.md +0 -104
  462. package/src/utility/models/action-command-header.md +0 -0
  463. package/src/utility/models/agent-activation-ide.xml +0 -51
  464. package/src/utility/models/agent-activation-web.xml +0 -50
  465. package/src/utility/models/agent-command-header.md +0 -1
  466. package/src/utility/models/agent-config-template.md +0 -23
  467. package/src/utility/models/agent-in-team-activation.xml +0 -3
  468. package/src/utility/models/fragments/activation-rules.xml +0 -7
  469. package/src/utility/models/fragments/activation-steps.xml +0 -16
  470. package/src/utility/models/fragments/handler-action.xml +0 -4
  471. package/src/utility/models/fragments/handler-exec.xml +0 -6
  472. package/src/utility/models/fragments/handler-multi.xml +0 -14
  473. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  474. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  475. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  476. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  477. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  478. package/tools/cli/bundlers/bundle-web.js +0 -179
  479. package/tools/cli/bundlers/test-analyst.js +0 -28
  480. package/tools/cli/bundlers/test-bundler.js +0 -118
  481. package/tools/cli/bundlers/web-bundler.js +0 -1754
  482. package/tools/cli/installers/lib/core/post-install-sidecar-replacement.js +0 -79
  483. package/tools/cli/lib/replace-project-root.js +0 -239
  484. package/tools/cli/regenerate-manifests.js +0 -27
  485. package/tools/cli/test-yaml-builder.js +0 -43
  486. /package/src/modules/bmgd/workflows/4-production/code-review/{backlog_template.md → backlog-template.md} +0 -0
  487. /package/src/modules/bmm/workflows/1-analysis/{product-brief → create-product-brief}/product-brief.template.md +0 -0
  488. /package/src/modules/bmm/workflows/3-solutioning/{implementation-readiness → check-implementation-readiness}/templates/readiness-report-template.md +0 -0
  489. /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/architecture-decision-template.md +0 -0
  490. /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/data/domain-complexity.csv +0 -0
  491. /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/data/project-types.csv +0 -0
  492. /package/src/modules/bmm/workflows/3-solutioning/{architecture → create-architecture}/steps/step-01b-continue.md +0 -0
  493. /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/_shared/excalidraw-library.json +0 -0
  494. /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/_shared/excalidraw-templates.yaml +0 -0
  495. /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-dataflow/checklist.md +0 -0
  496. /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-diagram/checklist.md +0 -0
  497. /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-flowchart/checklist.md +0 -0
  498. /package/src/modules/bmm/workflows/{diagrams → excalidraw-diagrams}/create-wireframe/checklist.md +0 -0
  499. /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
@@ -1,6 +1,6 @@
1
1
  const path = require('node:path');
2
2
  const fs = require('fs-extra');
3
- const yaml = require('js-yaml');
3
+ const yaml = require('yaml');
4
4
  const crypto = require('node:crypto');
5
5
  const { getSourcePath, getModulePath } = require('../../../lib/project-root');
6
6
 
@@ -23,13 +23,13 @@ class ManifestGenerator {
23
23
 
24
24
  /**
25
25
  * Generate all manifests for the installation
26
- * @param {string} bmadDir - .bmad
26
+ * @param {string} bmadDir - _bmad
27
27
  * @param {Array} selectedModules - Selected modules for installation
28
28
  * @param {Array} installedFiles - All installed files (optional, for hash tracking)
29
29
  */
30
30
  async generateManifests(bmadDir, selectedModules, installedFiles = [], options = {}) {
31
- // Create _cfg directory if it doesn't exist
32
- const cfgDir = path.join(bmadDir, '_cfg');
31
+ // Create _config directory if it doesn't exist
32
+ const cfgDir = path.join(bmadDir, '_config');
33
33
  await fs.ensureDir(cfgDir);
34
34
 
35
35
  // Store modules list (all modules including preserved ones)
@@ -38,16 +38,19 @@ class ManifestGenerator {
38
38
  // Scan the bmad directory to find all actually installed modules
39
39
  const installedModules = await this.scanInstalledModules(bmadDir);
40
40
 
41
- // Deduplicate modules list to prevent duplicates
42
- this.modules = [...new Set(['core', ...selectedModules, ...preservedModules, ...installedModules])];
43
- this.updatedModules = [...new Set(['core', ...selectedModules, ...installedModules])]; // All installed modules get rescanned
41
+ // Since custom modules are now installed the same way as regular modules,
42
+ // we don't need to exclude them from manifest generation
43
+ const allModules = [...new Set(['core', ...selectedModules, ...preservedModules, ...installedModules])];
44
+
45
+ this.modules = allModules;
46
+ this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
44
47
 
45
48
  // For CSV manifests, we need to include ALL modules that are installed
46
49
  // preservedModules controls which modules stay as-is in the CSV (don't get rescanned)
47
50
  // But all modules should be included in the final manifest
48
- this.preservedModules = [...new Set([...preservedModules, ...selectedModules, ...installedModules])]; // Include all installed modules
51
+ this.preservedModules = allModules; // Include ALL modules (including custom)
49
52
  this.bmadDir = bmadDir;
50
- this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '.bmad' or 'bmad')
53
+ this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '_bmad' or 'bmad')
51
54
  this.allInstalledFiles = installedFiles;
52
55
 
53
56
  if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
@@ -142,14 +145,14 @@ class ManifestGenerator {
142
145
  let workflow;
143
146
  if (entry.name === 'workflow.yaml') {
144
147
  // Parse YAML workflow
145
- workflow = yaml.load(content);
148
+ workflow = yaml.parse(content);
146
149
  } else {
147
150
  // Parse MD workflow with YAML frontmatter
148
151
  const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
149
152
  if (!frontmatterMatch) {
150
153
  continue; // Skip MD files without frontmatter
151
154
  }
152
- workflow = yaml.load(frontmatterMatch[1]);
155
+ workflow = yaml.parse(frontmatterMatch[1]);
153
156
  }
154
157
 
155
158
  // Skip template workflows (those with placeholder values)
@@ -454,36 +457,22 @@ class ManifestGenerator {
454
457
  async writeMainManifest(cfgDir) {
455
458
  const manifestPath = path.join(cfgDir, 'manifest.yaml');
456
459
 
457
- // Read existing manifest to preserve custom modules
458
- let existingCustomModules = [];
459
- if (await fs.pathExists(manifestPath)) {
460
- try {
461
- const existingContent = await fs.readFile(manifestPath, 'utf8');
462
- const existingManifest = yaml.load(existingContent);
463
- if (existingManifest && existingManifest.customModules) {
464
- existingCustomModules = existingManifest.customModules;
465
- }
466
- } catch {
467
- // If we can't read the existing manifest, continue without preserving custom modules
468
- console.warn('Warning: Could not read existing manifest to preserve custom modules');
469
- }
470
- }
471
-
472
460
  const manifest = {
473
461
  installation: {
474
462
  version: packageJson.version,
475
463
  installDate: new Date().toISOString(),
476
464
  lastUpdated: new Date().toISOString(),
477
465
  },
478
- modules: this.modules,
479
- customModules: existingCustomModules, // Preserve custom modules
466
+ modules: this.modules, // Include ALL modules (standard and custom)
480
467
  ides: this.selectedIdes,
481
468
  };
482
469
 
483
- const yamlStr = yaml.dump(manifest, {
470
+ // Clean the manifest to remove any non-serializable values
471
+ const cleanManifest = structuredClone(manifest);
472
+
473
+ const yamlStr = yaml.stringify(cleanManifest, {
484
474
  indent: 2,
485
- lineWidth: -1,
486
- noRefs: true,
475
+ lineWidth: 0,
487
476
  sortKeys: false,
488
477
  });
489
478
 
@@ -581,6 +570,11 @@ class ManifestGenerator {
581
570
  */
582
571
  async writeWorkflowManifest(cfgDir) {
583
572
  const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
573
+ const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
574
+ const parseCsvLine = (line) => {
575
+ const columns = line.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
576
+ return columns.map((c) => c.replaceAll(/^"|"$/g, ''));
577
+ };
584
578
 
585
579
  // Read existing manifest to preserve entries
586
580
  const existingEntries = new Map();
@@ -592,18 +586,21 @@ class ManifestGenerator {
592
586
  for (let i = 1; i < lines.length; i++) {
593
587
  const line = lines[i];
594
588
  if (line) {
595
- // Parse CSV (simple parsing assuming no commas in quoted fields)
596
- const parts = line.split('","');
589
+ const parts = parseCsvLine(line);
597
590
  if (parts.length >= 4) {
598
- const name = parts[0].replace(/^"/, '');
599
- const module = parts[2];
600
- existingEntries.set(`${module}:${name}`, line);
591
+ const [name, description, module, workflowPath] = parts;
592
+ existingEntries.set(`${module}:${name}`, {
593
+ name,
594
+ description,
595
+ module,
596
+ path: workflowPath,
597
+ });
601
598
  }
602
599
  }
603
600
  }
604
601
  }
605
602
 
606
- // Create CSV header - removed standalone column as ALL workflows now generate commands
603
+ // Create CSV header - standalone column removed, everything is canonicalized to 4 columns
607
604
  let csv = 'name,description,module,path\n';
608
605
 
609
606
  // Combine existing and new workflows
@@ -617,12 +614,18 @@ class ManifestGenerator {
617
614
  // Add/update new workflows
618
615
  for (const workflow of this.workflows) {
619
616
  const key = `${workflow.module}:${workflow.name}`;
620
- allWorkflows.set(key, `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}"`);
617
+ allWorkflows.set(key, {
618
+ name: workflow.name,
619
+ description: workflow.description,
620
+ module: workflow.module,
621
+ path: workflow.path,
622
+ });
621
623
  }
622
624
 
623
625
  // Write all workflows
624
626
  for (const [, value] of allWorkflows) {
625
- csv += value + '\n';
627
+ const row = [escapeCsv(value.name), escapeCsv(value.description), escapeCsv(value.module), escapeCsv(value.path)].join(',');
628
+ csv += row + '\n';
626
629
  }
627
630
 
628
631
  await fs.writeFile(csvPath, csv);
@@ -889,7 +892,7 @@ class ManifestGenerator {
889
892
 
890
893
  for (const entry of entries) {
891
894
  // Skip if not a directory or is a special directory
892
- if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_cfg') {
895
+ if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_config') {
893
896
  continue;
894
897
  }
895
898
 
@@ -10,10 +10,10 @@ class Manifest {
10
10
  * @param {Array} installedFiles - List of installed files (no longer used, files tracked in files-manifest.csv)
11
11
  */
12
12
  async create(bmadDir, data, installedFiles = []) {
13
- const manifestPath = path.join(bmadDir, '_cfg', 'manifest.yaml');
14
- const yaml = require('js-yaml');
13
+ const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
14
+ const yaml = require('yaml');
15
15
 
16
- // Ensure _cfg directory exists
16
+ // Ensure _config directory exists
17
17
  await fs.ensureDir(path.dirname(manifestPath));
18
18
 
19
19
  // Structure the manifest data
@@ -28,10 +28,12 @@ class Manifest {
28
28
  };
29
29
 
30
30
  // Write YAML manifest
31
- const yamlContent = yaml.dump(manifestData, {
31
+ // Clean the manifest data to remove any non-serializable values
32
+ const cleanManifestData = structuredClone(manifestData);
33
+
34
+ const yamlContent = yaml.stringify(cleanManifestData, {
32
35
  indent: 2,
33
- lineWidth: -1,
34
- noRefs: true,
36
+ lineWidth: 0,
35
37
  sortKeys: false,
36
38
  });
37
39
 
@@ -47,21 +49,21 @@ class Manifest {
47
49
  * @returns {Object|null} Manifest data or null if not found
48
50
  */
49
51
  async read(bmadDir) {
50
- const yamlPath = path.join(bmadDir, '_cfg', 'manifest.yaml');
51
- const yaml = require('js-yaml');
52
+ const yamlPath = path.join(bmadDir, '_config', 'manifest.yaml');
53
+ const yaml = require('yaml');
52
54
 
53
55
  if (await fs.pathExists(yamlPath)) {
54
56
  try {
55
57
  const content = await fs.readFile(yamlPath, 'utf8');
56
- const manifestData = yaml.load(content);
58
+ const manifestData = yaml.parse(content);
57
59
 
58
60
  // Flatten the structure for compatibility with existing code
59
61
  return {
60
62
  version: manifestData.installation?.version,
61
63
  installDate: manifestData.installation?.installDate,
62
64
  lastUpdated: manifestData.installation?.lastUpdated,
63
- modules: manifestData.modules || [],
64
- customModules: manifestData.customModules || [],
65
+ modules: manifestData.modules || [], // All modules (standard and custom)
66
+ customModules: manifestData.customModules || [], // Keep for backward compatibility
65
67
  ides: manifestData.ides || [],
66
68
  };
67
69
  } catch (error) {
@@ -79,7 +81,7 @@ class Manifest {
79
81
  * @param {Array} installedFiles - Updated list of installed files
80
82
  */
81
83
  async update(bmadDir, updates, installedFiles = null) {
82
- const yaml = require('js-yaml');
84
+ const yaml = require('yaml');
83
85
  const manifest = (await this.read(bmadDir)) || {};
84
86
 
85
87
  // Merge updates
@@ -93,18 +95,19 @@ class Manifest {
93
95
  installDate: manifest.installDate,
94
96
  lastUpdated: manifest.lastUpdated,
95
97
  },
96
- modules: manifest.modules || [],
97
- customModules: manifest.customModules || [],
98
+ modules: manifest.modules || [], // All modules (standard and custom)
98
99
  ides: manifest.ides || [],
99
100
  };
100
101
 
101
- const manifestPath = path.join(bmadDir, '_cfg', 'manifest.yaml');
102
+ const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
102
103
  await fs.ensureDir(path.dirname(manifestPath));
103
104
 
104
- const yamlContent = yaml.dump(manifestData, {
105
+ // Clean the manifest data to remove any non-serializable values
106
+ const cleanManifestData = structuredClone(manifestData);
107
+
108
+ const yamlContent = yaml.stringify(cleanManifestData, {
105
109
  indent: 2,
106
- lineWidth: -1,
107
- noRefs: true,
110
+ lineWidth: 0,
108
111
  sortKeys: false,
109
112
  });
110
113
 
@@ -526,9 +529,9 @@ class Manifest {
526
529
 
527
530
  try {
528
531
  if (await fs.pathExists(configPath)) {
529
- const yaml = require('js-yaml');
532
+ const yaml = require('yaml');
530
533
  const content = await fs.readFile(configPath, 'utf8');
531
- configs[moduleName] = yaml.load(content);
534
+ configs[moduleName] = yaml.parse(content);
532
535
  }
533
536
  } catch (error) {
534
537
  console.warn(`Could not load config for module ${moduleName}:`, error.message);
@@ -1,7 +1,7 @@
1
1
  const path = require('node:path');
2
2
  const fs = require('fs-extra');
3
3
  const chalk = require('chalk');
4
- const yaml = require('js-yaml');
4
+ const yaml = require('yaml');
5
5
  const { FileOps } = require('../../../lib/file-ops');
6
6
  const { XmlHandler } = require('../../../lib/xml-handler');
7
7
 
@@ -86,7 +86,7 @@ class CustomHandler {
86
86
  // Try to parse YAML with error handling
87
87
  let config;
88
88
  try {
89
- config = yaml.load(configContent);
89
+ config = yaml.parse(configContent);
90
90
  } catch (parseError) {
91
91
  console.warn(chalk.yellow(`Warning: YAML parse error in ${configPath}:`, parseError.message));
92
92
  return null;
@@ -306,7 +306,7 @@ class CustomHandler {
306
306
  const targetMdPath = path.join(targetDir, `${agentName}.md`);
307
307
  // Use the actual bmadDir if available (for when installing to temp dir)
308
308
  const actualBmadDir = config._bmadDir || bmadDir;
309
- const customizePath = path.join(actualBmadDir, '_cfg', 'agents', `custom-${agentName}.customize.yaml`);
309
+ const customizePath = path.join(actualBmadDir, '_config', 'agents', `custom-${agentName}.customize.yaml`);
310
310
 
311
311
  // Read and compile the YAML
312
312
  try {
@@ -316,12 +316,14 @@ class CustomHandler {
316
316
  // Create customize template if it doesn't exist
317
317
  if (!(await fs.pathExists(customizePath))) {
318
318
  const { getSourcePath } = require('../../../lib/project-root');
319
- const genericTemplatePath = getSourcePath('utility', 'templates', 'agent.customize.template.yaml');
319
+ const genericTemplatePath = getSourcePath('utility', 'agent-components', 'agent.customize.template.yaml');
320
320
  if (await fs.pathExists(genericTemplatePath)) {
321
- // Copy with placeholder replacement
322
321
  let templateContent = await fs.readFile(genericTemplatePath, 'utf8');
323
322
  await fs.writeFile(customizePath, templateContent, 'utf8');
324
- console.log(chalk.dim(` Created customize: custom-${agentName}.customize.yaml`));
323
+ // Only show customize creation in verbose mode
324
+ if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
325
+ console.log(chalk.dim(` Created customize: custom-${agentName}.customize.yaml`));
326
+ }
325
327
  }
326
328
  }
327
329
 
@@ -337,51 +339,19 @@ class CustomHandler {
337
339
  // Write the compiled MD file
338
340
  await fs.writeFile(targetMdPath, processedXml, 'utf8');
339
341
 
340
- // Check if agent has sidecar
341
- let hasSidecar = false;
342
- try {
343
- const yamlLib = require('yaml');
344
- const agentYaml = yamlLib.parse(yamlContent);
345
- hasSidecar = agentYaml?.agent?.metadata?.hasSidecar === true;
346
- } catch {
347
- // Continue without sidecar processing
348
- }
349
-
350
- // Copy sidecar files if agent has hasSidecar flag
351
- if (hasSidecar && config.agent_sidecar_folder) {
352
- const { copyAgentSidecarFiles } = require('../../../lib/agent/installer');
353
-
354
- // Resolve agent sidecar folder path
355
- const projectDir = path.dirname(bmadDir);
356
- const resolvedSidecarFolder = config.agent_sidecar_folder
357
- .replaceAll('{project-root}', projectDir)
358
- .replaceAll('.bmad', path.basename(bmadDir));
359
-
360
- // Create sidecar directory for this agent
361
- const agentSidecarDir = path.join(resolvedSidecarFolder, agentName);
362
- await fs.ensureDir(agentSidecarDir);
363
-
364
- // Copy sidecar files
365
- const sidecarResult = copyAgentSidecarFiles(path.dirname(agentFile), agentSidecarDir, agentFile);
366
-
367
- if (sidecarResult.copied.length > 0) {
368
- console.log(chalk.dim(` Copied ${sidecarResult.copied.length} sidecar file(s) to: ${agentSidecarDir}`));
369
- }
370
- if (sidecarResult.preserved.length > 0) {
371
- console.log(chalk.dim(` Preserved ${sidecarResult.preserved.length} existing sidecar file(s)`));
372
- }
373
- }
374
-
375
342
  // Track the file
376
343
  if (fileTrackingCallback) {
377
344
  fileTrackingCallback(targetMdPath);
378
345
  }
379
346
 
380
- console.log(
381
- chalk.dim(
382
- ` Compiled agent: ${agentName} -> ${path.relative(targetAgentsPath, targetMdPath)}${hasSidecar ? ' (with sidecar)' : ''}`,
383
- ),
384
- );
347
+ // Only show compilation details in verbose mode
348
+ if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
349
+ console.log(
350
+ chalk.dim(
351
+ ` Compiled agent: ${agentName} -> ${path.relative(targetAgentsPath, targetMdPath)}${hasSidecar ? ' (with sidecar)' : ''}`,
352
+ ),
353
+ );
354
+ }
385
355
  } catch (error) {
386
356
  console.warn(chalk.yellow(` Failed to compile agent ${agentName}:`, error.message));
387
357
  results.errors.push(`Failed to compile agent ${agentName}: ${error.message}`);
@@ -31,18 +31,11 @@ class BaseIdeSetup {
31
31
 
32
32
  /**
33
33
  * Get the agent command activation header from the central template
34
- * @returns {string} The activation header text (without XML tags)
34
+ * @returns {string} The activation header text
35
35
  */
36
36
  async getAgentCommandHeader() {
37
- const headerPath = path.join(getSourcePath(), 'src', 'utility', 'models', 'agent-command-header.md');
38
- try {
39
- const content = await fs.readFile(headerPath, 'utf8');
40
- // Strip the <critical> tags to get plain text
41
- return content.replaceAll(/<critical>|<\/critical>/g, '').trim();
42
- } catch {
43
- // Fallback if file doesn't exist
44
- return "You must fully embody this agent's persona and follow all activation instructions, steps and rules exactly as specified. NEVER break character until given an exit command.";
45
- }
37
+ const headerPath = getSourcePath('utility', 'agent-components', 'agent-command-header.md');
38
+ return await fs.readFile(headerPath, 'utf8');
46
39
  }
47
40
 
48
41
  /**
@@ -143,7 +136,7 @@ class BaseIdeSetup {
143
136
  // Get module agents
144
137
  const entries = await fs.readdir(bmadDir, { withFileTypes: true });
145
138
  for (const entry of entries) {
146
- if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_cfg' && entry.name !== 'agents') {
139
+ if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
147
140
  const moduleAgentsPath = path.join(bmadDir, entry.name, 'agents');
148
141
  if (await fs.pathExists(moduleAgentsPath)) {
149
142
  const moduleAgents = await this.scanDirectory(moduleAgentsPath, '.md');
@@ -215,7 +208,7 @@ class BaseIdeSetup {
215
208
  // Get module tasks
216
209
  const entries = await fs.readdir(bmadDir, { withFileTypes: true });
217
210
  for (const entry of entries) {
218
- if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_cfg' && entry.name !== 'agents') {
211
+ if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
219
212
  const moduleTasksPath = path.join(bmadDir, entry.name, 'tasks');
220
213
  if (await fs.pathExists(moduleTasksPath)) {
221
214
  const moduleTasks = await this.scanDirectoryWithStandalone(moduleTasksPath, ['.md', '.xml']);
@@ -261,7 +254,7 @@ class BaseIdeSetup {
261
254
  // Get module tools
262
255
  const entries = await fs.readdir(bmadDir, { withFileTypes: true });
263
256
  for (const entry of entries) {
264
- if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_cfg' && entry.name !== 'agents') {
257
+ if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
265
258
  const moduleToolsPath = path.join(bmadDir, entry.name, 'tools');
266
259
  if (await fs.pathExists(moduleToolsPath)) {
267
260
  const moduleTools = await this.scanDirectoryWithStandalone(moduleToolsPath, ['.md', '.xml']);
@@ -307,7 +300,7 @@ class BaseIdeSetup {
307
300
  // Get module workflows
308
301
  const entries = await fs.readdir(bmadDir, { withFileTypes: true });
309
302
  for (const entry of entries) {
310
- if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_cfg' && entry.name !== 'agents') {
303
+ if (entry.isDirectory() && entry.name !== 'core' && entry.name !== '_config' && entry.name !== 'agents') {
311
304
  const moduleWorkflowsPath = path.join(bmadDir, entry.name, 'workflows');
312
305
  if (await fs.pathExists(moduleWorkflowsPath)) {
313
306
  const moduleWorkflows = await this.findWorkflowYamlFiles(moduleWorkflowsPath);
@@ -353,9 +346,9 @@ class BaseIdeSetup {
353
346
  } else if (entry.isFile() && entry.name === 'workflow.yaml') {
354
347
  // Read workflow.yaml to get name and standalone property
355
348
  try {
356
- const yaml = require('js-yaml');
349
+ const yaml = require('yaml');
357
350
  const content = await fs.readFile(fullPath, 'utf8');
358
- const workflowData = yaml.load(content);
351
+ const workflowData = yaml.parse(content);
359
352
 
360
353
  if (workflowData && workflowData.name) {
361
354
  workflows.push({
@@ -461,9 +454,9 @@ class BaseIdeSetup {
461
454
  // Check for standalone: true in YAML frontmatter
462
455
  const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
463
456
  if (frontmatterMatch) {
464
- const yaml = require('js-yaml');
457
+ const yaml = require('yaml');
465
458
  try {
466
- const frontmatter = yaml.load(frontmatterMatch[1]);
459
+ const frontmatter = yaml.parse(frontmatterMatch[1]);
467
460
  standalone = frontmatter.standalone === true;
468
461
  } catch {
469
462
  // Ignore YAML parse errors
@@ -527,26 +520,26 @@ class BaseIdeSetup {
527
520
  }
528
521
 
529
522
  /**
530
- * Write file with content (replaces .bmad placeholder)
523
+ * Write file with content (replaces _bmad placeholder)
531
524
  * @param {string} filePath - File path
532
525
  * @param {string} content - File content
533
526
  */
534
527
  async writeFile(filePath, content) {
535
- // Replace .bmad placeholder if present
536
- if (typeof content === 'string' && content.includes('.bmad')) {
537
- content = content.replaceAll('.bmad', this.bmadFolderName);
528
+ // Replace _bmad placeholder if present
529
+ if (typeof content === 'string' && content.includes('_bmad')) {
530
+ content = content.replaceAll('_bmad', this.bmadFolderName);
538
531
  }
539
532
 
540
- // Replace escape sequence .bmad with literal .bmad
541
- if (typeof content === 'string' && content.includes('.bmad')) {
542
- content = content.replaceAll('.bmad', '.bmad');
533
+ // Replace escape sequence _bmad with literal _bmad
534
+ if (typeof content === 'string' && content.includes('_bmad')) {
535
+ content = content.replaceAll('_bmad', '_bmad');
543
536
  }
544
537
  await this.ensureDir(path.dirname(filePath));
545
538
  await fs.writeFile(filePath, content, 'utf8');
546
539
  }
547
540
 
548
541
  /**
549
- * Copy file from source to destination (replaces .bmad placeholder in text files)
542
+ * Copy file from source to destination (replaces _bmad placeholder in text files)
550
543
  * @param {string} source - Source file path
551
544
  * @param {string} dest - Destination file path
552
545
  */
@@ -563,14 +556,14 @@ class BaseIdeSetup {
563
556
  // Read the file content
564
557
  let content = await fs.readFile(source, 'utf8');
565
558
 
566
- // Replace .bmad placeholder with actual folder name
567
- if (content.includes('.bmad')) {
568
- content = content.replaceAll('.bmad', this.bmadFolderName);
559
+ // Replace _bmad placeholder with actual folder name
560
+ if (content.includes('_bmad')) {
561
+ content = content.replaceAll('_bmad', this.bmadFolderName);
569
562
  }
570
563
 
571
- // Replace escape sequence .bmad with literal .bmad
572
- if (content.includes('.bmad')) {
573
- content = content.replaceAll('.bmad', '.bmad');
564
+ // Replace escape sequence _bmad with literal _bmad
565
+ if (content.includes('_bmad')) {
566
+ content = content.replaceAll('_bmad', '_bmad');
574
567
  }
575
568
 
576
569
  // Write to dest with replaced content
@@ -642,7 +635,7 @@ class BaseIdeSetup {
642
635
  * @param {Object} agent - Agent information
643
636
  */
644
637
  async createAgentConfig(bmadDir, agent) {
645
- const agentConfigDir = path.join(bmadDir, '_cfg', 'agents');
638
+ const agentConfigDir = path.join(bmadDir, '_config', 'agents');
646
639
  await this.ensureDir(agentConfigDir);
647
640
 
648
641
  // Load agent config template
@@ -45,12 +45,12 @@ class AntigravitySetup extends BaseIdeSetup {
45
45
  const injectionConfigPath = path.join(sourceModulesPath, moduleName, 'sub-modules', 'antigravity', 'injections.yaml');
46
46
 
47
47
  if (await this.exists(injectionConfigPath)) {
48
- const yaml = require('js-yaml');
48
+ const yaml = require('yaml');
49
49
 
50
50
  try {
51
51
  // Load injection configuration
52
52
  const configContent = await fs.readFile(injectionConfigPath, 'utf8');
53
- const injectionConfig = yaml.load(configContent);
53
+ const injectionConfig = yaml.parse(configContent);
54
54
 
55
55
  // Ask about subagents if they exist and we haven't asked yet
56
56
  if (injectionConfig.subagents && !config.subagentChoices) {
@@ -119,7 +119,7 @@ class AntigravitySetup extends BaseIdeSetup {
119
119
  await this.ensureDir(bmadWorkflowsDir);
120
120
 
121
121
  // Generate agent launchers using AgentCommandGenerator
122
- // This creates small launcher files that reference the actual agents in .bmad/
122
+ // This creates small launcher files that reference the actual agents in _bmad/
123
123
  const agentGen = new AgentCommandGenerator(this.bmadFolderName);
124
124
  const { artifacts: agentArtifacts, counts: agentCounts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
125
125
 
@@ -44,12 +44,12 @@ class ClaudeCodeSetup extends BaseIdeSetup {
44
44
  const injectionConfigPath = path.join(sourceModulesPath, moduleName, 'sub-modules', 'claude-code', 'injections.yaml');
45
45
 
46
46
  if (await this.exists(injectionConfigPath)) {
47
- const yaml = require('js-yaml');
47
+ const yaml = require('yaml');
48
48
 
49
49
  try {
50
50
  // Load injection configuration
51
51
  const configContent = await fs.readFile(injectionConfigPath, 'utf8');
52
- const injectionConfig = yaml.load(configContent);
52
+ const injectionConfig = yaml.parse(configContent);
53
53
 
54
54
  // Ask about subagents if they exist and we haven't asked yet
55
55
  if (injectionConfig.subagents && !config.subagentChoices) {
@@ -118,7 +118,7 @@ class ClaudeCodeSetup extends BaseIdeSetup {
118
118
  await this.ensureDir(bmadCommandsDir);
119
119
 
120
120
  // Generate agent launchers using AgentCommandGenerator
121
- // This creates small launcher files that reference the actual agents in .bmad/
121
+ // This creates small launcher files that reference the actual agents in _bmad/
122
122
  const agentGen = new AgentCommandGenerator(this.bmadFolderName);
123
123
  const { artifacts: agentArtifacts, counts: agentCounts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
124
124
 
@@ -265,8 +265,8 @@ class CodexSetup extends BaseIdeSetup {
265
265
  '',
266
266
  chalk.white(' /prompts installed globally to your HOME DIRECTORY.'),
267
267
  '',
268
- chalk.yellow(' ⚠️ These prompts reference a specific .bmad path'),
269
- chalk.dim(" To use with other projects, you'd need to copy the .bmad dir"),
268
+ chalk.yellow(' ⚠️ These prompts reference a specific _bmad path'),
269
+ chalk.dim(" To use with other projects, you'd need to copy the _bmad dir"),
270
270
  '',
271
271
  chalk.green(' ✓ You can now use /commands in Codex CLI'),
272
272
  chalk.dim(' Example: /bmad-bmm-agents-pm'),
@@ -1,6 +1,6 @@
1
1
  const path = require('node:path');
2
2
  const fs = require('fs-extra');
3
- const yaml = require('js-yaml');
3
+ const yaml = require('yaml');
4
4
  const { BaseIdeSetup } = require('./_base-ide');
5
5
  const chalk = require('chalk');
6
6
  const { AgentCommandGenerator } = require('./shared/agent-command-generator');
@@ -34,7 +34,7 @@ class GeminiSetup extends BaseIdeSetup {
34
34
  if (await fs.pathExists(coreConfigPath)) {
35
35
  try {
36
36
  const configContent = await fs.readFile(coreConfigPath, 'utf8');
37
- const config = yaml.load(configContent);
37
+ const config = yaml.parse(configContent);
38
38
 
39
39
  if (config.user_name) {
40
40
  configValues.user_name = config.user_name;
@@ -174,8 +174,8 @@ ${contentWithoutFrontmatter}
174
174
  // Note: {user_name} and other {config_values} are left as-is for runtime substitution by Gemini
175
175
  const tomlContent = template
176
176
  .replaceAll('{{title}}', title)
177
- .replaceAll('{.bmad}', '.bmad')
178
- .replaceAll('{.bmad}', this.bmadFolderName)
177
+ .replaceAll('{_bmad}', '_bmad')
178
+ .replaceAll('{_bmad}', this.bmadFolderName)
179
179
  .replaceAll('{{module}}', agent.module)
180
180
  .replaceAll('{{name}}', agent.name);
181
181
 
@@ -196,8 +196,8 @@ ${contentWithoutFrontmatter}
196
196
  // Replace template variables
197
197
  const tomlContent = template
198
198
  .replaceAll('{{taskName}}', taskName)
199
- .replaceAll('{.bmad}', '.bmad')
200
- .replaceAll('{.bmad}', this.bmadFolderName)
199
+ .replaceAll('{_bmad}', '_bmad')
200
+ .replaceAll('{_bmad}', this.bmadFolderName)
201
201
  .replaceAll('{{module}}', task.module)
202
202
  .replaceAll('{{filename}}', task.filename);
203
203
 
@@ -2,7 +2,7 @@ const path = require('node:path');
2
2
  const { BaseIdeSetup } = require('./_base-ide');
3
3
  const chalk = require('chalk');
4
4
  const fs = require('fs-extra');
5
- const yaml = require('js-yaml');
5
+ const yaml = require('yaml');
6
6
 
7
7
  /**
8
8
  * Kiro CLI setup handler for BMad Method
@@ -150,7 +150,7 @@ class KiroCliSetup extends BaseIdeSetup {
150
150
  */
151
151
  async processAgentFile(agentFile, agentsDir, projectDir) {
152
152
  const yamlContent = await fs.readFile(agentFile, 'utf8');
153
- const agentData = yaml.load(yamlContent);
153
+ const agentData = yaml.parse(yamlContent);
154
154
 
155
155
  if (!this.validateBmadCompliance(agentData)) {
156
156
  return;