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

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 (412) hide show
  1. package/.coderabbit.yaml +36 -0
  2. package/{CODE_OF_CONDUCT.md → .github/CODE_OF_CONDUCT.md} +4 -4
  3. package/CHANGELOG.md +168 -409
  4. package/README.md +4 -1
  5. package/docs/agent-customization-guide.md +7 -7
  6. package/docs/custom-content-installation.md +245 -0
  7. package/docs/ide-info/crush.md +1 -1
  8. package/docs/ide-info/cursor.md +7 -7
  9. package/docs/ide-info/iflow.md +3 -3
  10. package/docs/ide-info/opencode.md +1 -1
  11. package/docs/index.md +2 -2
  12. package/docs/installers-bundlers/ide-injections.md +2 -2
  13. package/docs/installers-bundlers/installers-modules-platforms-reference.md +29 -28
  14. package/docs/v4-to-v6-upgrade.md +10 -10
  15. package/docs/web-bundles-gemini-gpt-guide.md +2 -2
  16. package/package.json +1 -1
  17. package/src/core/_module-installer/installer.js +1 -1
  18. package/src/core/agents/bmad-master.agent.yaml +5 -5
  19. package/src/core/agents/bmad-web-orchestrator.agent.xml +6 -6
  20. package/src/core/{_module-installer/install-config.yaml → module.yaml} +0 -7
  21. package/src/core/resources/excalidraw/README.md +4 -4
  22. package/src/core/tasks/advanced-elicitation.xml +3 -3
  23. package/src/core/tasks/index-docs.xml +1 -1
  24. package/src/core/tasks/validate-workflow.xml +1 -1
  25. package/src/core/tasks/workflow.xml +4 -4
  26. package/src/core/tools/shard-doc.xml +1 -1
  27. package/src/core/workflows/brainstorming/workflow.md +2 -2
  28. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +2 -2
  29. package/src/core/workflows/party-mode/workflow.md +4 -4
  30. package/src/modules/bmb/README.md +2 -2
  31. package/src/modules/bmb/_module-installer/installer.js +1 -1
  32. package/src/modules/bmb/agents/bmad-builder.agent.yaml +15 -15
  33. package/src/modules/bmb/docs/agents/agent-compilation.md +2 -2
  34. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +22 -22
  35. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +1 -1
  36. package/src/modules/bmb/docs/agents/index.md +2 -2
  37. package/src/modules/bmb/docs/agents/module-agent-architecture.md +50 -51
  38. package/src/modules/bmb/docs/agents/understanding-agent-types.md +3 -3
  39. package/src/modules/bmb/docs/workflows/architecture.md +1 -1
  40. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +3 -3
  41. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +1 -1
  42. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +1 -1
  43. package/src/modules/bmb/docs/workflows/templates/step-file.md +3 -3
  44. package/src/modules/bmb/docs/workflows/templates/step-template.md +3 -3
  45. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +2 -2
  46. package/src/modules/bmb/docs/workflows/templates/workflow.md +1 -1
  47. package/src/modules/bmb/{_module-installer/install-config.yaml → module.yaml} +0 -1
  48. package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
  49. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +5 -5
  50. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
  51. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
  52. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
  53. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
  54. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
  55. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
  56. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
  57. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
  58. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
  59. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +1 -1
  60. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +6 -6
  61. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
  62. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
  63. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
  64. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
  65. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
  66. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
  67. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
  68. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
  69. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
  70. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +5 -5
  71. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +4 -4
  72. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +4 -4
  73. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +4 -4
  74. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +7 -7
  75. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +3 -3
  76. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +4 -4
  77. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +4 -4
  78. package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +3 -3
  79. package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +4 -4
  80. package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +3 -3
  81. package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +3 -3
  82. package/src/modules/bmb/workflows/create-agent/workflow.md +13 -13
  83. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +2 -2
  84. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +4 -4
  85. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +4 -4
  86. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +6 -6
  87. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +5 -5
  88. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +6 -6
  89. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +3 -3
  90. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +12 -12
  91. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +6 -5
  92. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +6 -5
  93. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +7 -7
  94. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +7 -7
  95. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +1 -1
  96. package/src/modules/bmb/workflows/create-module/templates/{install-config.template.yaml → module.template.yaml} +1 -1
  97. package/src/modules/bmb/workflows/create-module/validation.md +3 -3
  98. package/src/modules/bmb/workflows/create-module/workflow.md +2 -2
  99. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +3 -3
  100. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +5 -5
  101. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +4 -4
  102. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +3 -3
  103. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +3 -3
  104. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +10 -10
  105. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +13 -13
  106. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +3 -3
  107. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +1 -1
  108. package/src/modules/bmb/workflows/create-workflow/workflow.md +1 -1
  109. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +3 -3
  110. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +13 -13
  111. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +5 -5
  112. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +3 -3
  113. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +5 -5
  114. package/src/modules/bmb/workflows/edit-agent/workflow.md +1 -1
  115. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +4 -4
  116. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +3 -3
  117. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +6 -6
  118. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +3 -3
  119. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +3 -3
  120. package/src/modules/bmb/workflows/edit-workflow/workflow.md +1 -1
  121. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +3 -3
  122. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +5 -5
  123. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +6 -6
  124. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +4 -4
  125. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +4 -4
  126. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +4 -4
  127. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +4 -4
  128. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +3 -3
  129. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +1 -1
  130. package/src/modules/bmb/workflows-legacy/edit-module/README.md +2 -2
  131. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +2 -2
  132. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +4 -4
  133. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +10 -10
  134. package/src/modules/bmb/workflows-legacy/module-brief/README.md +2 -2
  135. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +2 -2
  136. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +4 -4
  137. package/src/modules/bmgd/README.md +3 -2
  138. package/src/modules/bmgd/agents/game-architect.agent.yaml +6 -6
  139. package/src/modules/bmgd/agents/game-designer.agent.yaml +7 -7
  140. package/src/modules/bmgd/agents/game-dev.agent.yaml +9 -9
  141. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +21 -21
  142. package/src/modules/bmgd/{_module-installer/install-config.yaml → module.yaml} +0 -1
  143. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
  144. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +9 -9
  145. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
  146. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +8 -8
  147. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +4 -4
  148. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +30 -30
  149. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -1
  150. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +5 -5
  151. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +1 -1
  152. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +2 -2
  153. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +2 -2
  154. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +2 -2
  155. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
  156. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +2 -2
  157. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +2 -2
  158. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +2 -2
  159. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +2 -2
  160. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +2 -2
  161. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +2 -2
  162. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +1 -1
  163. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +2 -2
  164. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +2 -2
  165. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +2 -2
  166. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +3 -3
  167. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +2 -2
  168. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +2 -2
  169. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +1 -1
  170. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +1 -1
  171. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +2 -2
  172. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +2 -2
  173. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +1 -1
  174. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +2 -2
  175. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +1 -1
  176. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +2 -2
  177. package/src/modules/bmm/_module-installer/installer.js +1 -1
  178. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
  179. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
  180. package/src/modules/bmm/agents/analyst.agent.yaml +8 -8
  181. package/src/modules/bmm/agents/architect.agent.yaml +8 -8
  182. package/src/modules/bmm/agents/dev.agent.yaml +3 -3
  183. package/src/modules/bmm/agents/pm.agent.yaml +8 -8
  184. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +5 -5
  185. package/src/modules/bmm/agents/sm.agent.yaml +9 -9
  186. package/src/modules/bmm/agents/tea.agent.yaml +13 -13
  187. package/src/modules/bmm/agents/tech-writer.agent.yaml +9 -9
  188. package/src/modules/bmm/agents/ux-designer.agent.yaml +6 -6
  189. package/src/modules/bmm/docs/README.md +0 -25
  190. package/src/modules/bmm/docs/agents-guide.md +4 -4
  191. package/src/modules/bmm/docs/brownfield-guide.md +4 -4
  192. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  193. package/src/modules/bmm/docs/faq.md +1 -1
  194. package/src/modules/bmm/docs/party-mode.md +3 -3
  195. package/src/modules/bmm/docs/quick-start.md +1 -1
  196. package/src/modules/bmm/docs/test-architecture.md +3 -3
  197. package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
  198. package/src/modules/bmm/docs/workflows-implementation.md +0 -100
  199. package/src/modules/bmm/{_module-installer/install-config.yaml → module.yaml} +1 -2
  200. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +1 -1
  201. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +1 -1
  202. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +3 -3
  203. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +3 -3
  204. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +3 -3
  205. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +3 -3
  206. package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +5 -3
  207. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +2 -2
  208. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +2 -2
  209. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +4 -4
  210. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +4 -4
  211. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +4 -4
  212. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +4 -4
  213. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +4 -4
  214. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +4 -4
  215. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +4 -4
  216. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +4 -4
  217. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +4 -4
  218. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +4 -4
  219. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +4 -4
  220. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +4 -4
  221. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +2 -2
  222. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +1 -1
  223. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +1 -1
  224. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +3 -3
  225. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +7 -7
  226. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +8 -8
  227. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +12 -12
  228. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +12 -12
  229. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +10 -10
  230. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +7 -7
  231. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +9 -9
  232. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +9 -9
  233. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +1 -1
  234. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +1 -1
  235. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +4 -4
  236. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +4 -4
  237. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +4 -4
  238. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +4 -4
  239. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +4 -4
  240. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +4 -4
  241. package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +1 -1
  242. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +2 -2
  243. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +1 -1
  244. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +1 -1
  245. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +1 -1
  246. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
  247. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +2 -2
  248. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-01-document-discovery.md +1 -1
  249. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-02-prd-analysis.md +1 -1
  250. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-03-epic-coverage-validation.md +6 -6
  251. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-04-ux-alignment.md +1 -1
  252. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-05-epic-quality-review.md +2 -2
  253. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-06-final-assessment.md +1 -1
  254. package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.md +1 -1
  255. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +1 -1
  256. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +2 -2
  257. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  258. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
  259. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
  260. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +2 -2
  261. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +2 -2
  262. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +2 -2
  263. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +1 -1
  264. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +2 -2
  265. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +2 -2
  266. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +3 -3
  267. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +2 -2
  268. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -2
  269. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +2 -2
  270. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +2 -2
  271. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +5 -5
  272. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +7 -7
  273. package/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md +1 -1
  274. package/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml +5 -5
  275. package/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md +2 -2
  276. package/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml +5 -5
  277. package/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md +2 -2
  278. package/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml +5 -5
  279. package/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md +1 -1
  280. package/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml +5 -5
  281. package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
  282. package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
  283. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  284. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  285. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +2 -2
  286. package/src/modules/bmm/workflows/generate-project-context/workflow.md +2 -2
  287. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
  288. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
  289. package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
  290. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
  291. package/src/modules/bmm/workflows/testarch/ci/instructions.md +1 -1
  292. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
  293. package/src/modules/bmm/workflows/testarch/framework/instructions.md +3 -3
  294. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
  295. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  296. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  297. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +3 -3
  298. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
  299. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
  300. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
  301. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
  302. package/src/modules/bmm/workflows/testarch/trace/instructions.md +6 -6
  303. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
  304. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +1 -1
  305. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
  306. package/src/modules/bmm/workflows/workflow-status/instructions.md +3 -3
  307. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  308. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
  309. package/src/modules/cis/README.md +1 -1
  310. package/src/modules/cis/_module-installer/installer.js +1 -1
  311. package/src/modules/cis/agents/README.md +1 -1
  312. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +4 -4
  313. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +4 -4
  314. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +4 -4
  315. package/src/modules/cis/agents/innovation-strategist.agent.yaml +4 -4
  316. package/src/modules/cis/agents/presentation-master.agent.yaml +3 -3
  317. package/src/modules/cis/agents/storyteller.agent.yaml +4 -4
  318. package/src/modules/cis/{_module-installer/install-config.yaml → module.yaml} +0 -1
  319. package/src/modules/cis/workflows/README.md +1 -1
  320. package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
  321. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
  322. package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
  323. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
  324. package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
  325. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
  326. package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
  327. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
  328. package/src/utility/models/agent-activation-ide.xml +3 -3
  329. package/src/utility/models/agent-activation-web.xml +3 -3
  330. package/src/utility/models/fragments/activation-steps.xml +1 -1
  331. package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
  332. package/src/utility/models/fragments/handler-workflow.xml +1 -1
  333. package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
  334. package/tools/cli/README.md +23 -23
  335. package/tools/cli/bundlers/web-bundler.js +23 -33
  336. package/tools/cli/commands/build.js +5 -5
  337. package/tools/cli/installers/lib/core/config-collector.js +33 -20
  338. package/tools/cli/installers/lib/core/custom-module-cache.js +251 -0
  339. package/tools/cli/installers/lib/core/detector.js +8 -4
  340. package/tools/cli/installers/lib/core/installer.js +885 -98
  341. package/tools/cli/installers/lib/core/manifest-generator.js +177 -14
  342. package/tools/cli/installers/lib/core/manifest.js +47 -0
  343. package/tools/cli/installers/lib/custom/handler.js +147 -20
  344. package/tools/cli/installers/lib/ide/_base-ide.js +14 -14
  345. package/tools/cli/installers/lib/ide/gemini.js +4 -4
  346. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +2 -2
  347. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +3 -3
  348. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
  349. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +3 -3
  350. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +3 -3
  351. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +1 -1
  352. package/tools/cli/installers/lib/modules/manager.js +99 -53
  353. package/tools/cli/lib/agent/compiler.js +6 -14
  354. package/tools/cli/lib/agent/installer.js +4 -3
  355. package/tools/cli/lib/cli-utils.js +21 -4
  356. package/tools/cli/lib/ui.js +496 -12
  357. package/tools/cli/regenerate-manifests.js +3 -4
  358. package/tools/maintainer/review-pr-README.md +55 -0
  359. package/tools/maintainer/review-pr.md +242 -0
  360. package/tools/migrate-custom-module-paths.js +124 -0
  361. package/bmad-method-6.0.0-alpha.14.tgz +0 -0
  362. package/docs/custom-agent-installation.md +0 -137
  363. package/example-custom-content/README.md +0 -4
  364. package/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +0 -129
  365. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/instructions.md +0 -70
  366. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +0 -111
  367. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +0 -70
  368. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +0 -114
  369. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +0 -134
  370. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +0 -161
  371. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +0 -103
  372. package/example-custom-content/agents/toolsmith/toolsmith-sidecar/memories.md +0 -17
  373. package/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +0 -109
  374. package/example-custom-content/custom.yaml +0 -3
  375. package/example-custom-content/workflows/quiz-master/steps/step-01-init.md +0 -168
  376. package/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +0 -155
  377. package/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +0 -89
  378. package/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +0 -36
  379. package/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +0 -36
  380. package/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +0 -36
  381. package/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +0 -36
  382. package/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +0 -36
  383. package/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +0 -36
  384. package/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +0 -36
  385. package/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +0 -36
  386. package/example-custom-content/workflows/quiz-master/steps/step-12-results.md +0 -150
  387. package/example-custom-content/workflows/quiz-master/templates/csv-headers.template +0 -1
  388. package/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md +0 -269
  389. package/example-custom-content/workflows/quiz-master/workflow.md +0 -54
  390. package/example-custom-content/workflows/wassup/workflow.md +0 -26
  391. package/example-custom-module/mwm/README.md +0 -4
  392. package/example-custom-module/mwm/_module-installer/install-config.yaml +0 -27
  393. package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/cognitive-distortions.md +0 -47
  394. package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/thought-records.md +0 -17
  395. package/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +0 -150
  396. package/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +0 -137
  397. package/example-custom-module/mwm/agents/meditation-guide.agent.yaml +0 -137
  398. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/insights.md +0 -13
  399. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/instructions.md +0 -30
  400. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/memories.md +0 -13
  401. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/patterns.md +0 -17
  402. package/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +0 -124
  403. package/example-custom-module/mwm/workflows/cbt-thought-record/README.md +0 -31
  404. package/example-custom-module/mwm/workflows/cbt-thought-record/workflow.md +0 -45
  405. package/example-custom-module/mwm/workflows/crisis-support/README.md +0 -31
  406. package/example-custom-module/mwm/workflows/crisis-support/workflow.md +0 -45
  407. package/example-custom-module/mwm/workflows/daily-checkin/README.md +0 -32
  408. package/example-custom-module/mwm/workflows/daily-checkin/workflow.md +0 -45
  409. package/example-custom-module/mwm/workflows/guided-meditation/README.md +0 -31
  410. package/example-custom-module/mwm/workflows/guided-meditation/workflow.md +0 -45
  411. package/example-custom-module/mwm/workflows/wellness-journal/README.md +0 -31
  412. package/example-custom-module/mwm/workflows/wellness-journal/workflow.md +0 -45
@@ -4,7 +4,7 @@ description: "Craft compelling narratives using proven story frameworks and tech
4
4
  author: "BMad"
5
5
 
6
6
  # Critical variables load from config_source
7
- config_source: "{project-root}/{bmad_folder}/cis/config.yaml"
7
+ config_source: "{project-root}/.bmad/cis/config.yaml"
8
8
  output_folder: "{config_source}:output_folder"
9
9
  user_name: "{config_source}:user_name"
10
10
  communication_language: "{config_source}:communication_language"
@@ -14,7 +14,7 @@ date: system-generated
14
14
  # Example: data="{path}/brand-info.md" provides brand context
15
15
 
16
16
  # Module path and component files
17
- installed_path: "{project-root}/{bmad_folder}/cis/workflows/storytelling"
17
+ installed_path: "{project-root}/.bmad/cis/workflows/storytelling"
18
18
  template: "{installed_path}/template.md"
19
19
  instructions: "{installed_path}/instructions.md"
20
20
 
@@ -30,9 +30,9 @@ web_bundle:
30
30
  name: "storytelling"
31
31
  description: "Craft compelling narratives using proven story frameworks and techniques. This workflow guides users through structured narrative development, applying appropriate story frameworks to create emotionally resonant and engaging stories for any purpose."
32
32
  author: "BMad"
33
- instructions: "{bmad_folder}/cis/workflows/storytelling/instructions.md"
34
- template: "{bmad_folder}/cis/workflows/storytelling/template.md"
33
+ instructions: ".bmad/cis/workflows/storytelling/instructions.md"
34
+ template: ".bmad/cis/workflows/storytelling/template.md"
35
35
  web_bundle_files:
36
- - "{bmad_folder}/cis/workflows/storytelling/instructions.md"
37
- - "{bmad_folder}/cis/workflows/storytelling/template.md"
38
- - "{bmad_folder}/cis/workflows/storytelling/story-types.csv"
36
+ - ".bmad/cis/workflows/storytelling/instructions.md"
37
+ - ".bmad/cis/workflows/storytelling/template.md"
38
+ - ".bmad/cis/workflows/storytelling/story-types.csv"
@@ -1,7 +1,7 @@
1
1
  <activation critical="MANDATORY">
2
2
  <init>
3
3
  <step n="1">Load persona from this current file containing this activation you are reading now</step>
4
- <step n="2">Override with {project-root}/{bmad_folder}/_cfg/agents/{agent-filename} if exists (replace, not merge)</step>
4
+ <step n="2">Override with {project-root}/.bmad/_cfg/agents/{agent-filename} if exists (replace, not merge)</step>
5
5
  <step n="3">Execute critical-actions section if present in current agent XML</step>
6
6
  <step n="4">Show greeting + numbered list of ALL commands IN ORDER from current agent's cmds section</step>
7
7
  <step n="5">CRITICAL HALT. AWAIT user input. NEVER continue without it.</step>
@@ -12,7 +12,7 @@
12
12
  <handlers>
13
13
  <handler type="progressive-workflow">
14
14
  When command has: run-progressive-workflow="path/to/x.yaml" You MUST:
15
- 1. CRITICAL: Always LOAD {project-root}/{bmad_folder}/core/tasks/workflow.xml
15
+ 1. CRITICAL: Always LOAD {project-root}/.bmad/core/tasks/workflow.xml
16
16
  2. READ its entire contents - the is the CORE OS for EXECUTING workflows
17
17
  3. Pass the yaml path as 'workflow-config' parameter to those instructions
18
18
  4. Follow workflow.xml instructions EXACTLY as written
@@ -20,7 +20,7 @@
20
20
  </handler>
21
21
  <handler type="validate-workflow">
22
22
  When command has: validate-workflow="path/to/workflow.yaml" You MUST:
23
- 1. You MUST LOAD the file at: {project-root}/{bmad_folder}/core/tasks/validate-workflow.xml
23
+ 1. You MUST LOAD the file at: {project-root}/.bmad/core/tasks/validate-workflow.xml
24
24
  2. READ its entire contents and EXECUTE all instructions in that file
25
25
  3. Pass the workflow, and also check the workflow location for a checklist.md to pass as the checklist
26
26
  4. The workflow should try to identify the file to validate based on checklist context or else you will ask the user to specify
@@ -7,14 +7,14 @@
7
7
  <bundled-files critical="MANDATORY">
8
8
  <access-method>
9
9
  All dependencies are bundled within this XML file as &lt;file&gt; elements with CDATA content.
10
- When you need to access a file path like "{bmad_folder}/core/tasks/workflow.xml":
11
- 1. Find the &lt;file id="{bmad_folder}/core/tasks/workflow.xml"&gt; element in this document
10
+ When you need to access a file path like ".bmad/core/tasks/workflow.xml":
11
+ 1. Find the &lt;file id=".bmad/core/tasks/workflow.xml"&gt; element in this document
12
12
  2. Extract the content from within the CDATA section
13
13
  3. Use that content as if you read it from the filesystem
14
14
  </access-method>
15
15
  <rules>
16
16
  <rule>NEVER attempt to read files from filesystem - all files are bundled in this XML</rule>
17
- <rule>File paths starting with "{bmad_folder}/" or "{project-root}/{bmad_folder}/" refer to &lt;file id="..."&gt; elements</rule>
17
+ <rule>File paths starting with ".bmad/" or "{project-root}/.bmad/" refer to &lt;file id="..."&gt; elements</rule>
18
18
  <rule>When instructions reference a file path, locate the corresponding &lt;file&gt; element by matching the id attribute</rule>
19
19
  <rule>YAML files are bundled with only their web_bundle section content (flattened to root level)</rule>
20
20
  </rules>
@@ -1,6 +1,6 @@
1
1
  <step n="1">Load persona from this current agent file (already in context)</step>
2
2
  <step n="2">🚨 IMMEDIATE ACTION REQUIRED - BEFORE ANY OUTPUT:
3
- - Load and read {project-root}/{bmad_folder}/{{module}}/config.yaml NOW
3
+ - Load and read {project-root}/.bmad/{{module}}/config.yaml NOW
4
4
  - Store ALL fields as session variables: {user_name}, {communication_language}, {output_folder}
5
5
  - VERIFY: If config not loaded, STOP and report error to user
6
6
  - DO NOT PROCEED to step 3 until config is successfully loaded and variables stored</step>
@@ -1,6 +1,6 @@
1
1
  <handler type="validate-workflow">
2
2
  When command has: validate-workflow="path/to/workflow.yaml"
3
- 1. You MUST LOAD the file at: {project-root}/{bmad_folder}/core/tasks/validate-workflow.xml
3
+ 1. You MUST LOAD the file at: {project-root}/.bmad/core/tasks/validate-workflow.xml
4
4
  2. READ its entire contents and EXECUTE all instructions in that file
5
5
  3. Pass the workflow, and also check the workflow yaml validation property to find and load the validation schema to pass as the checklist
6
6
  4. The workflow should try to identify the file to validate based on checklist context or else you will ask the user to specify
@@ -1,6 +1,6 @@
1
1
  <handler type="workflow">
2
2
  When menu item has: workflow="path/to/workflow.yaml"
3
- 1. CRITICAL: Always LOAD {project-root}/{bmad_folder}/core/tasks/workflow.xml
3
+ 1. CRITICAL: Always LOAD {project-root}/.bmad/core/tasks/workflow.xml
4
4
  2. Read the complete file - this is the CORE OS for executing BMAD workflows
5
5
  3. Pass the yaml path as 'workflow-config' parameter to those instructions
6
6
  4. Execute workflow.xml instructions precisely following all steps
@@ -10,14 +10,14 @@
10
10
  <bundled-files critical="MANDATORY">
11
11
  <access-method>
12
12
  All dependencies are bundled within this XML file as &lt;file&gt; elements with CDATA content.
13
- When you need to access a file path like "{bmad_folder}/core/tasks/workflow.xml":
14
- 1. Find the &lt;file id="{bmad_folder}/core/tasks/workflow.xml"&gt; element in this document
13
+ When you need to access a file path like ".bmad/core/tasks/workflow.xml":
14
+ 1. Find the &lt;file id=".bmad/core/tasks/workflow.xml"&gt; element in this document
15
15
  2. Extract the content from within the CDATA section
16
16
  3. Use that content as if you read it from the filesystem
17
17
  </access-method>
18
18
  <rules>
19
19
  <rule>NEVER attempt to read files from filesystem - all files are bundled in this XML</rule>
20
- <rule>File paths starting with "{bmad_folder}/" refer to &lt;file id="..."&gt; elements</rule>
20
+ <rule>File paths starting with ".bmad/" refer to &lt;file id="..."&gt; elements</rule>
21
21
  <rule>When instructions reference a file path, locate the corresponding &lt;file&gt; element by matching the id attribute</rule>
22
22
  <rule>YAML files are bundled with only their web_bundle section content (flattened to root level)</rule>
23
23
  </rules>
@@ -98,14 +98,14 @@ The installer is a multi-stage system that handles agent compilation, IDE integr
98
98
  ```
99
99
  1. Collect User Input
100
100
  - Target directory, modules, IDEs
101
- - Custom module configuration (via install-config.yaml)
101
+ - Custom module configuration (via module.yaml)
102
102
 
103
103
  2. Pre-Installation
104
104
  - Validate target, check conflicts, backup existing installations
105
105
  - Resolve module dependencies (4-pass system)
106
106
 
107
107
  3. Install Core + Modules
108
- - Copy files to {target}/{bmad_folder}/
108
+ - Copy files to {target}/.bmad/
109
109
  - Compile agents: YAML → Markdown/XML (forWebBundle: false)
110
110
  - Merge customize.yaml files if they exist
111
111
  - Inject activation blocks based on agent capabilities
@@ -131,7 +131,7 @@ The installer is a multi-stage system that handles agent compilation, IDE integr
131
131
 
132
132
  ```
133
133
  {target}/
134
- ├── {bmad_folder}/
134
+ ├── .bmad/
135
135
  │ ├── core/ # Always installed
136
136
  │ ├── {module}/ # Selected modules
137
137
  │ │ ├── agents/ # Compiled .md files
@@ -183,12 +183,12 @@ The installer supports **15 IDE environments** through a base-derived architectu
183
183
 
184
184
  ### Custom Module Configuration
185
185
 
186
- Modules define interactive configuration menus via `install-config.yaml` files in their `_module-installer/` directories.
186
+ Modules define interactive configuration menus via `module.yaml` files in their `_module-installer/` directories.
187
187
 
188
188
  **Config File Location**:
189
189
 
190
- - Core: `src/core/_module-installer/install-config.yaml`
191
- - Modules: `src/modules/{module}/_module-installer/install-config.yaml`
190
+ - Core: `src/core/module.yaml`
191
+ - Modules: `src/modules/{module}/module.yaml`
192
192
 
193
193
  **Configuration Types**:
194
194
 
@@ -239,7 +239,7 @@ Platform specifics are **IDE+module combination hooks** that execute custom logi
239
239
 
240
240
  ### Manifest System
241
241
 
242
- The installer generates **5 manifest files** in `{target}/{bmad_folder}/_cfg/`:
242
+ The installer generates **5 manifest files** in `{target}/.bmad/_cfg/`:
243
243
 
244
244
  **1. Installation Manifest** (`manifest.yaml`)
245
245
 
@@ -428,7 +428,7 @@ agent:
428
428
  identity: 'You are an experienced PM...'
429
429
  menu:
430
430
  - trigger: '*create-brief'
431
- workflow: '{project-root}/{bmad_folder}/bmm/workflows/.../workflow.yaml'
431
+ workflow: '{project-root}/.bmad/bmm/workflows/.../workflow.yaml'
432
432
  ```
433
433
 
434
434
  ### Output: IDE (Markdown with XML)
@@ -441,7 +441,7 @@ agent:
441
441
  ```xml
442
442
  <agent id="..." name="PM">
443
443
  <activation critical="MANDATORY">
444
- <step n="2">Load {project-root}/{bmad_folder}/bmm/config.yaml at runtime</step>
444
+ <step n="2">Load {project-root}/.bmad/bmm/config.yaml at runtime</step>
445
445
  ...
446
446
  </activation>
447
447
  <persona>...</persona>
@@ -533,20 +533,20 @@ src/utility/models/fragments/
533
533
 
534
534
  ## Key Differences: Installation vs Bundling
535
535
 
536
- | Aspect | Installation (IDE) | Bundling (Web) |
537
- | ----------------------- | ------------------------------------ | --------------------------------- |
538
- | **Trigger** | `npm run install:bmad` | `npm run bundle` |
539
- | **Entry Point** | `commands/install.js` | `bundlers/bundle-web.js` |
540
- | **Compiler Flag** | `forWebBundle: false` | `forWebBundle: true` |
541
- | **Output Format** | Markdown `.md` | Standalone XML `.xml` |
542
- | **Output Location** | `{target}/{bmad_folder}/` + IDE dirs | `web-bundles/` |
543
- | **Customization** | Merges `customize.yaml` | Base agents only |
544
- | **Dependencies** | Referenced by path | Bundled inline (CDATA) |
545
- | **Activation Fragment** | `activation-steps.xml` | `web-bundle-activation-steps.xml` |
546
- | **Filesystem Access** | Required | Not needed |
547
- | **Build Metadata** | Included (hash) | Excluded |
548
- | **Path Format** | `{project-root}` placeholders | Stripped, wrapped as `<file>` |
549
- | **Use Case** | Local IDE development | Web deployment |
536
+ | Aspect | Installation (IDE) | Bundling (Web) |
537
+ | ----------------------- | ----------------------------- | --------------------------------- |
538
+ | **Trigger** | `npm run install:bmad` | `npm run bundle` |
539
+ | **Entry Point** | `commands/install.js` | `bundlers/bundle-web.js` |
540
+ | **Compiler Flag** | `forWebBundle: false` | `forWebBundle: true` |
541
+ | **Output Format** | Markdown `.md` | Standalone XML `.xml` |
542
+ | **Output Location** | `{target}/.bmad/` + IDE dirs | `web-bundles/` |
543
+ | **Customization** | Merges `customize.yaml` | Base agents only |
544
+ | **Dependencies** | Referenced by path | Bundled inline (CDATA) |
545
+ | **Activation Fragment** | `activation-steps.xml` | `web-bundle-activation-steps.xml` |
546
+ | **Filesystem Access** | Required | Not needed |
547
+ | **Build Metadata** | Included (hash) | Excluded |
548
+ | **Path Format** | `{project-root}` placeholders | Stripped, wrapped as `<file>` |
549
+ | **Use Case** | Local IDE development | Web deployment |
550
550
 
551
551
  **Activation Differences**:
552
552
 
@@ -29,7 +29,7 @@ class WebBundler {
29
29
 
30
30
  // Temporary directory for generated manifests
31
31
  this.tempDir = path.join(process.cwd(), '.bundler-temp');
32
- this.tempManifestDir = path.join(this.tempDir, 'bmad', '_cfg');
32
+ this.tempManifestDir = path.join(this.tempDir, '.bmad', '_cfg');
33
33
 
34
34
  // Bundle statistics
35
35
  this.stats = {
@@ -531,9 +531,9 @@ class WebBundler {
531
531
  }
532
532
 
533
533
  // Parse paths to extract module and workflow location
534
- // Support both {project-root}/bmad/... and {project-root}/{bmad_folder}/... patterns
535
- const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
536
- const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
534
+ // Support both {project-root}/bmad/... and {project-root}/.bmad/... patterns
535
+ const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\.?bmad)\/([^/]+)\/workflows\/(.+)/);
536
+ const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\.?bmad)\/([^/]+)\/workflows\/(.+)/);
537
537
 
538
538
  if (!sourceMatch || !installMatch) {
539
539
  continue;
@@ -584,9 +584,9 @@ class WebBundler {
584
584
  let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
585
585
 
586
586
  // Replace config_source with new module reference
587
- // Support both old format (bmad) and new format ({bmad_folder})
588
- const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(?:\{bmad_folder\}|bmad)\/[^/]+\/config\.yaml["']?/g;
589
- const newConfigSource = `config_source: "{project-root}/{bmad_folder}/${newModuleName}/config.yaml"`;
587
+ // Support both old format (bmad) and new format (.bmad)
588
+ const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(?:\.?bmad)\/[^/]+\/config\.yaml["']?/g;
589
+ const newConfigSource = `config_source: "{project-root}/.bmad/${newModuleName}/config.yaml"`;
590
590
 
591
591
  const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
592
592
  await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
@@ -723,7 +723,7 @@ class WebBundler {
723
723
  /tools="([^"]+)"/g,
724
724
  /knowledge="([^"]+)"/g,
725
725
  /{project-root}\/([^"'\s<>]+)/g, // Legacy {project-root} paths
726
- /\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after {bmad_folder} replacement)
726
+ /\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after .bmad replacement)
727
727
  ];
728
728
 
729
729
  for (const pattern of patterns) {
@@ -733,8 +733,8 @@ class WebBundler {
733
733
  let filePath = match[1];
734
734
  // Remove {project-root} prefix if present
735
735
  filePath = filePath.replace(/^{project-root}\//, '');
736
- // Remove {bmad_folder} prefix if present (should be rare, mostly replaced already)
737
- filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
736
+ // Remove .bmad prefix if present (should be rare, mostly replaced already)
737
+ filePath = filePath.replace(/^.bmad\//, 'bmad/');
738
738
 
739
739
  // For bmad/ pattern, prepend 'bmad/' since it was captured without it
740
740
  if (pattern.source.includes(String.raw`\bbmad\/`)) {
@@ -760,8 +760,8 @@ class WebBundler {
760
760
  while ((match = pattern.exec(xml)) !== null) {
761
761
  let workflowPath = match[1];
762
762
  workflowPath = workflowPath.replace(/^{project-root}\//, '');
763
- // Remove {bmad_folder} prefix if present and replace with bmad
764
- workflowPath = workflowPath.replace(/^{bmad_folder}\//, 'bmad/');
763
+ // Remove .bmad prefix if present and replace with bmad
764
+ workflowPath = workflowPath.replace(/^.bmad\//, 'bmad/');
765
765
 
766
766
  // Skip obvious placeholder/example paths
767
767
  if (workflowPath && workflowPath.endsWith('.yaml') && !workflowPath.includes('path/to/') && !workflowPath.includes('example')) {
@@ -851,7 +851,7 @@ class WebBundler {
851
851
  if (deps) {
852
852
  for (const dep of deps) {
853
853
  let depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
854
- depPath = depPath.replace(/^{bmad_folder}\//, 'bmad/');
854
+ depPath = depPath.replace(/^.bmad\//, 'bmad/');
855
855
  if (depPath && !processed.has(depPath)) {
856
856
  await this.processFileDependency(depPath, dependencies, processed, moduleName, warnings);
857
857
  }
@@ -865,7 +865,7 @@ class WebBundler {
865
865
  if (templates) {
866
866
  for (const template of templates) {
867
867
  let templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
868
- templatePath = templatePath.replace(/^{bmad_folder}\//, 'bmad/');
868
+ templatePath = templatePath.replace(/^.bmad\//, 'bmad/');
869
869
  if (templatePath && !processed.has(templatePath)) {
870
870
  await this.processFileDependency(templatePath, dependencies, processed, moduleName, warnings);
871
871
  }
@@ -1053,13 +1053,13 @@ class WebBundler {
1053
1053
  bundleYamlContent = yamlContent;
1054
1054
  }
1055
1055
 
1056
- // Process {project-root} and {bmad_folder} references in the YAML content
1056
+ // Process {project-root} and .bmad references in the YAML content
1057
1057
  bundleYamlContent = this.processProjectRootReferences(bundleYamlContent);
1058
1058
 
1059
1059
  // Include the YAML file with only web_bundle content, wrapped in XML
1060
1060
  // Process the workflow path to create a clean ID
1061
1061
  let yamlId = workflowPath.replace(/^{project-root}\//, '');
1062
- yamlId = yamlId.replace(/^{bmad_folder}\//, 'bmad/');
1062
+ yamlId = yamlId.replace(/^.bmad\//, 'bmad/');
1063
1063
  const wrappedYaml = this.wrapContentInXml(bundleYamlContent, yamlId, 'yaml');
1064
1064
  dependencies.set(yamlId, wrappedYaml);
1065
1065
 
@@ -1078,7 +1078,7 @@ class WebBundler {
1078
1078
  for (const bundleFilePath of bundleFiles) {
1079
1079
  // Process the file path to create a clean ID for checking if already processed
1080
1080
  let cleanFilePath = bundleFilePath.replace(/^{project-root}\//, '');
1081
- cleanFilePath = cleanFilePath.replace(/^{bmad_folder}\//, 'bmad/');
1081
+ cleanFilePath = cleanFilePath.replace(/^.bmad\//, 'bmad/');
1082
1082
 
1083
1083
  if (processed.has(cleanFilePath)) {
1084
1084
  continue;
@@ -1087,7 +1087,7 @@ class WebBundler {
1087
1087
  const bundleActualPath = this.resolveFilePath(bundleFilePath, moduleName);
1088
1088
 
1089
1089
  if (!bundleActualPath || !(await fs.pathExists(bundleActualPath))) {
1090
- // Use the cleaned path in warnings (with {bmad_folder} replaced)
1090
+ // Use the cleaned path in warnings (with .bmad replaced)
1091
1091
  warnings.push(cleanFilePath);
1092
1092
  continue;
1093
1093
  }
@@ -1136,7 +1136,7 @@ class WebBundler {
1136
1136
  }
1137
1137
 
1138
1138
  let fileContent = await fs.readFile(actualPath, 'utf8');
1139
- // Process {project-root} and {bmad_folder} references
1139
+ // Process {project-root} and .bmad references
1140
1140
  fileContent = this.processProjectRootReferences(fileContent);
1141
1141
  const wrappedContent = this.wrapContentInXml(fileContent, coreWorkflowPath, 'xml');
1142
1142
  dependencies.set(coreWorkflowPath, wrappedContent);
@@ -1162,7 +1162,7 @@ class WebBundler {
1162
1162
  }
1163
1163
 
1164
1164
  let fileContent = await fs.readFile(actualPath, 'utf8');
1165
- // Process {project-root} and {bmad_folder} references
1165
+ // Process {project-root} and .bmad references
1166
1166
  fileContent = this.processProjectRootReferences(fileContent);
1167
1167
  const fileExt = path.extname(actualPath).toLowerCase().replace('.', '');
1168
1168
  const wrappedContent = this.wrapContentInXml(fileContent, filePath, fileExt);
@@ -1196,8 +1196,8 @@ class WebBundler {
1196
1196
  async processWildcardDependency(pattern, dependencies, processed, moduleName, warnings = []) {
1197
1197
  // Remove {project-root} prefix
1198
1198
  pattern = pattern.replace(/^{project-root}\//, '');
1199
- // Replace {bmad_folder} with bmad
1200
- pattern = pattern.replace(/^{bmad_folder}\//, 'bmad/');
1199
+ // Replace .bmad with bmad
1200
+ pattern = pattern.replace(/^.bmad\//, 'bmad/');
1201
1201
 
1202
1202
  // Get directory and file pattern
1203
1203
  const lastSlash = pattern.lastIndexOf('/');
@@ -1265,9 +1265,6 @@ class WebBundler {
1265
1265
  resolveFilePath(filePath, moduleName) {
1266
1266
  // Remove {project-root} prefix
1267
1267
  filePath = filePath.replace(/^{project-root}\//, '');
1268
- // Replace {bmad_folder} with bmad
1269
- filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
1270
- filePath = filePath.replace(/^{bmad_folder}$/, 'bmad');
1271
1268
 
1272
1269
  // Check temp directory first for _cfg files
1273
1270
  if (filePath.startsWith('bmad/_cfg/')) {
@@ -1278,11 +1275,6 @@ class WebBundler {
1278
1275
  }
1279
1276
  }
1280
1277
 
1281
- // Handle different path patterns for bmad files
1282
- // bmad/cis/tasks/brain-session.md -> src/modules/cis/tasks/brain-session.md
1283
- // bmad/core/tasks/create-doc.md -> src/core/tasks/create-doc.md
1284
- // bmad/bmm/templates/brief.md -> src/modules/bmm/templates/brief.md
1285
-
1286
1278
  let actualPath = filePath;
1287
1279
 
1288
1280
  if (filePath.startsWith('bmad/')) {
@@ -1334,15 +1326,13 @@ class WebBundler {
1334
1326
  }
1335
1327
 
1336
1328
  /**
1337
- * Process and remove {project-root} references and replace {bmad_folder} with bmad
1329
+ * Process and remove {project-root} references
1338
1330
  */
1339
1331
  processProjectRootReferences(content) {
1340
1332
  // Remove {project-root}/ prefix (with slash)
1341
1333
  content = content.replaceAll('{project-root}/', '');
1342
1334
  // Also remove {project-root} without slash
1343
1335
  content = content.replaceAll('{project-root}', '');
1344
- // Replace {bmad_folder} with bmad
1345
- content = content.replaceAll('{bmad_folder}', 'bmad');
1346
1336
  return content;
1347
1337
  }
1348
1338
 
@@ -80,7 +80,7 @@ module.exports = {
80
80
  */
81
81
  async function buildAgent(projectDir, agentName) {
82
82
  // First check standalone agents in bmad/agents/{agentname}/
83
- const standaloneAgentDir = path.join(projectDir, 'bmad', 'agents', agentName);
83
+ const standaloneAgentDir = path.join(projectDir, '.bmad', 'agents', agentName);
84
84
  let standaloneYamlPath = path.join(standaloneAgentDir, `${agentName}.agent.yaml`);
85
85
 
86
86
  // If exact match doesn't exist, look for any .agent.yaml file in the directory
@@ -99,7 +99,7 @@ async function buildAgent(projectDir, agentName) {
99
99
  // Build the standalone agent
100
100
  console.log(chalk.cyan(` Building standalone agent ${agentName}...`));
101
101
 
102
- const customizePath = path.join(projectDir, 'bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
102
+ const customizePath = path.join(projectDir, '.bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
103
103
  const customizeExists = await fs.pathExists(customizePath);
104
104
 
105
105
  await builder.buildAgent(standaloneYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
@@ -109,7 +109,7 @@ async function buildAgent(projectDir, agentName) {
109
109
  }
110
110
 
111
111
  // Find the agent YAML file in .claude/commands/bmad/
112
- const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad');
112
+ const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', '.bmad');
113
113
 
114
114
  // Search all module directories for the agent
115
115
  const modules = await fs.readdir(bmadCommandsDir);
@@ -149,7 +149,7 @@ async function buildAllAgents(projectDir) {
149
149
  let builtCount = 0;
150
150
 
151
151
  // First, build standalone agents in bmad/agents/
152
- const standaloneAgentsDir = path.join(projectDir, 'bmad', 'agents');
152
+ const standaloneAgentsDir = path.join(projectDir, '.bmad', 'agents');
153
153
  if (await fs.pathExists(standaloneAgentsDir)) {
154
154
  console.log(chalk.cyan('\nBuilding standalone agents...'));
155
155
  const agentDirs = await fs.readdir(standaloneAgentsDir);
@@ -177,7 +177,7 @@ async function buildAllAgents(projectDir) {
177
177
 
178
178
  console.log(chalk.cyan(` Building standalone agent ${agentName}...`));
179
179
 
180
- const customizePath = path.join(projectDir, 'bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
180
+ const customizePath = path.join(projectDir, '.bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
181
181
  const customizeExists = await fs.pathExists(customizePath);
182
182
 
183
183
  await builder.buildAgent(agentYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
@@ -132,8 +132,12 @@ class ConfigCollector {
132
132
  * Collect configuration for all modules
133
133
  * @param {Array} modules - List of modules to configure (including 'core')
134
134
  * @param {string} projectDir - Target project directory
135
+ * @param {Object} options - Additional options
136
+ * @param {Map} options.customModulePaths - Map of module ID to source path for custom modules
135
137
  */
136
- async collectAllConfigurations(modules, projectDir) {
138
+ async collectAllConfigurations(modules, projectDir, options = {}) {
139
+ // Store custom module paths for use in collectModuleConfig
140
+ this.customModulePaths = options.customModulePaths || new Map();
137
141
  await this.loadExistingConfig(projectDir);
138
142
 
139
143
  // Check if core was already collected (e.g., in early collection phase)
@@ -183,24 +187,28 @@ class ConfigCollector {
183
187
 
184
188
  // Load module's install config schema
185
189
  // First, try the standard src/modules location
186
- let installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', 'install-config.yaml');
190
+ let installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', 'module.yaml');
191
+ let moduleConfigPath = path.join(getModulePath(moduleName), 'module.yaml');
187
192
 
188
193
  // If not found in src/modules, we need to find it by searching the project
189
- if (!(await fs.pathExists(installerConfigPath))) {
194
+ if (!(await fs.pathExists(installerConfigPath)) && !(await fs.pathExists(moduleConfigPath))) {
190
195
  // Use the module manager to find the module source
191
196
  const { ModuleManager } = require('../modules/manager');
192
197
  const moduleManager = new ModuleManager();
193
198
  const moduleSourcePath = await moduleManager.findModuleSource(moduleName);
194
199
 
195
200
  if (moduleSourcePath) {
196
- installerConfigPath = path.join(moduleSourcePath, '_module-installer', 'install-config.yaml');
201
+ installerConfigPath = path.join(moduleSourcePath, '_module-installer', 'module.yaml');
202
+ moduleConfigPath = path.join(moduleSourcePath, 'module.yaml');
197
203
  }
198
204
  }
199
205
 
200
206
  let configPath = null;
201
207
  let isCustomModule = false;
202
208
 
203
- if (await fs.pathExists(installerConfigPath)) {
209
+ if (await fs.pathExists(moduleConfigPath)) {
210
+ configPath = moduleConfigPath;
211
+ } else if (await fs.pathExists(installerConfigPath)) {
204
212
  configPath = installerConfigPath;
205
213
  } else {
206
214
  // Check if this is a custom module with custom.yaml
@@ -447,23 +455,37 @@ class ConfigCollector {
447
455
  this.allAnswers = {};
448
456
  }
449
457
  // Load module's config
450
- // First, try the standard src/modules location
451
- let installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', 'install-config.yaml');
458
+ // First, check if we have a custom module path for this module
459
+ let installerConfigPath = null;
460
+ let moduleConfigPath = null;
461
+
462
+ if (this.customModulePaths && this.customModulePaths.has(moduleName)) {
463
+ const customPath = this.customModulePaths.get(moduleName);
464
+ installerConfigPath = path.join(customPath, '_module-installer', 'module.yaml');
465
+ moduleConfigPath = path.join(customPath, 'module.yaml');
466
+ } else {
467
+ // Try the standard src/modules location
468
+ installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', 'module.yaml');
469
+ moduleConfigPath = path.join(getModulePath(moduleName), 'module.yaml');
470
+ }
452
471
 
453
- // If not found in src/modules, we need to find it by searching the project
454
- if (!(await fs.pathExists(installerConfigPath))) {
472
+ // If not found in src/modules or custom paths, search the project
473
+ if (!(await fs.pathExists(installerConfigPath)) && !(await fs.pathExists(moduleConfigPath))) {
455
474
  // Use the module manager to find the module source
456
475
  const { ModuleManager } = require('../modules/manager');
457
476
  const moduleManager = new ModuleManager();
458
477
  const moduleSourcePath = await moduleManager.findModuleSource(moduleName);
459
478
 
460
479
  if (moduleSourcePath) {
461
- installerConfigPath = path.join(moduleSourcePath, '_module-installer', 'install-config.yaml');
480
+ installerConfigPath = path.join(moduleSourcePath, '_module-installer', 'module.yaml');
481
+ moduleConfigPath = path.join(moduleSourcePath, 'module.yaml');
462
482
  }
463
483
  }
464
484
 
465
485
  let configPath = null;
466
- if (await fs.pathExists(installerConfigPath)) {
486
+ if (await fs.pathExists(moduleConfigPath)) {
487
+ configPath = moduleConfigPath;
488
+ } else if (await fs.pathExists(installerConfigPath)) {
467
489
  configPath = installerConfigPath;
468
490
  } else {
469
491
  // No config for this module
@@ -674,15 +696,6 @@ class ConfigCollector {
674
696
  }
675
697
  }
676
698
 
677
- // Special handling for bmad_folder: detect existing folder name
678
- if (moduleName === 'core' && key === 'bmad_folder' && !existingValue && this.currentProjectDir) {
679
- // Try to detect the existing BMAD folder name
680
- const detectedFolder = await this.detectExistingBmadFolder(this.currentProjectDir);
681
- if (detectedFolder) {
682
- existingValue = detectedFolder;
683
- }
684
- }
685
-
686
699
  // Special handling for user_name: default to system user
687
700
  if (moduleName === 'core' && key === 'user_name' && !existingValue) {
688
701
  item.default = this.getDefaultUsername();