bmad-method 6.0.0-alpha.6 → 6.0.0-alpha.8

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 (716) hide show
  1. package/.bmad/_cfg/agent-manifest.csv +11 -0
  2. package/{bmad → .bmad}/_cfg/files-manifest.csv +170 -157
  3. package/{bmad → .bmad}/_cfg/ides/claude-code.yaml +2 -2
  4. package/.bmad/_cfg/manifest.yaml +10 -0
  5. package/{bmad → .bmad}/_cfg/task-manifest.csv +1 -1
  6. package/{bmad → .bmad}/_cfg/workflow-manifest.csv +1 -1
  7. package/{bmad → .bmad}/bmb/agents/bmad-builder.md +12 -12
  8. package/.bmad/bmb/config.yaml +16 -0
  9. package/{bmad → .bmad}/bmb/workflows/audit-workflow/checklist.md +2 -2
  10. package/{bmad → .bmad}/bmb/workflows/audit-workflow/instructions.md +5 -5
  11. package/{bmad → .bmad}/bmb/workflows/audit-workflow/workflow.yaml +2 -2
  12. package/{bmad → .bmad}/bmb/workflows/convert-legacy/README.md +5 -5
  13. package/{bmad → .bmad}/bmb/workflows/convert-legacy/checklist.md +2 -2
  14. package/{bmad → .bmad}/bmb/workflows/convert-legacy/instructions.md +17 -17
  15. package/{bmad → .bmad}/bmb/workflows/convert-legacy/workflow.yaml +6 -6
  16. package/{bmad → .bmad}/bmb/workflows/create-agent/README.md +5 -5
  17. package/{bmad → .bmad}/bmb/workflows/create-agent/agent-architecture.md +15 -15
  18. package/{bmad → .bmad}/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
  19. package/{bmad → .bmad}/bmb/workflows/create-agent/agent-types.md +15 -15
  20. package/{bmad → .bmad}/bmb/workflows/create-agent/checklist.md +3 -3
  21. package/{bmad → .bmad}/bmb/workflows/create-agent/instructions.md +34 -18
  22. package/{bmad → .bmad}/bmb/workflows/create-agent/workflow.yaml +6 -6
  23. package/{bmad → .bmad}/bmb/workflows/create-module/README.md +1 -1
  24. package/{bmad → .bmad}/bmb/workflows/create-module/checklist.md +1 -1
  25. package/{bmad → .bmad}/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
  26. package/{bmad → .bmad}/bmb/workflows/create-module/instructions.md +7 -7
  27. package/{bmad → .bmad}/bmb/workflows/create-module/module-structure.md +36 -2
  28. package/{bmad → .bmad}/bmb/workflows/create-module/workflow.yaml +9 -9
  29. package/{bmad → .bmad}/bmb/workflows/create-workflow/README.md +4 -4
  30. package/{bmad → .bmad}/bmb/workflows/create-workflow/checklist.md +1 -1
  31. package/{bmad → .bmad}/bmb/workflows/create-workflow/instructions.md +29 -29
  32. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-creation-guide.md +36 -36
  33. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
  34. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/workflow.yaml +1 -1
  35. package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow.yaml +5 -5
  36. package/{bmad → .bmad}/bmb/workflows/edit-agent/checklist.md +1 -1
  37. package/{bmad → .bmad}/bmb/workflows/edit-agent/instructions.md +2 -2
  38. package/{bmad → .bmad}/bmb/workflows/edit-agent/workflow.yaml +8 -8
  39. package/{bmad → .bmad}/bmb/workflows/edit-module/README.md +2 -2
  40. package/{bmad → .bmad}/bmb/workflows/edit-module/checklist.md +2 -2
  41. package/{bmad → .bmad}/bmb/workflows/edit-module/instructions.md +4 -4
  42. package/{bmad → .bmad}/bmb/workflows/edit-module/workflow.yaml +10 -10
  43. package/{bmad → .bmad}/bmb/workflows/edit-workflow/instructions.md +4 -4
  44. package/{bmad → .bmad}/bmb/workflows/edit-workflow/workflow.yaml +5 -5
  45. package/{bmad → .bmad}/bmb/workflows/module-brief/README.md +2 -2
  46. package/{bmad → .bmad}/bmb/workflows/module-brief/instructions.md +2 -2
  47. package/{bmad → .bmad}/bmb/workflows/module-brief/workflow.yaml +4 -4
  48. package/{bmad → .bmad}/bmb/workflows/redoc/README.md +5 -5
  49. package/{bmad → .bmad}/bmb/workflows/redoc/instructions.md +1 -1
  50. package/{bmad → .bmad}/bmb/workflows/redoc/workflow.yaml +1 -1
  51. package/{bmad → .bmad}/bmm/agents/analyst.md +20 -12
  52. package/{bmad → .bmad}/bmm/agents/architect.md +19 -11
  53. package/{bmad → .bmad}/bmm/agents/dev.md +10 -10
  54. package/{bmad → .bmad}/bmm/agents/pm.md +23 -15
  55. package/{bmad → .bmad}/bmm/agents/sm.md +26 -18
  56. package/{bmad → .bmad}/bmm/agents/tea.md +25 -17
  57. package/{bmad → .bmad}/bmm/agents/tech-writer.md +16 -8
  58. package/{bmad → .bmad}/bmm/agents/ux-designer.md +18 -10
  59. package/{bmad → .bmad}/bmm/config.yaml +7 -7
  60. package/.bmad/bmm/docs/README.md +235 -0
  61. package/.bmad/bmm/docs/agents-guide.md +1056 -0
  62. package/.bmad/bmm/docs/brownfield-guide.md +754 -0
  63. package/.bmad/bmm/docs/enterprise-agentic-development.md +680 -0
  64. package/.bmad/bmm/docs/faq.md +587 -0
  65. package/.bmad/bmm/docs/glossary.md +320 -0
  66. package/.bmad/bmm/docs/party-mode.md +224 -0
  67. package/.bmad/bmm/docs/quick-spec-flow.md +652 -0
  68. package/.bmad/bmm/docs/quick-start.md +366 -0
  69. package/.bmad/bmm/docs/scale-adaptive-system.md +599 -0
  70. package/.bmad/bmm/docs/test-architecture.md +394 -0
  71. package/.bmad/bmm/docs/workflow-architecture-reference.md +371 -0
  72. package/.bmad/bmm/docs/workflow-document-project-reference.md +487 -0
  73. package/.bmad/bmm/docs/workflows-analysis.md +370 -0
  74. package/.bmad/bmm/docs/workflows-implementation.md +284 -0
  75. package/.bmad/bmm/docs/workflows-planning.md +601 -0
  76. package/.bmad/bmm/docs/workflows-solutioning.md +501 -0
  77. package/{bmad → .bmad}/bmm/tasks/daily-standup.xml +2 -2
  78. package/.bmad/bmm/teams/default-party.csv +19 -0
  79. package/{bmad → .bmad}/bmm/teams/team-fullstack.yaml +1 -0
  80. package/{bmad → .bmad}/bmm/workflows/1-analysis/brainstorm-project/instructions.md +1 -1
  81. package/{bmad → .bmad}/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +3 -3
  82. package/{bmad → .bmad}/bmm/workflows/1-analysis/domain-research/instructions.md +1 -1
  83. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +40 -0
  84. package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/instructions.md +1 -1
  85. package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/workflow.yaml +2 -2
  86. package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +2 -2
  87. package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-market.md +6 -6
  88. package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-router.md +1 -1
  89. package/{bmad → .bmad}/bmm/workflows/1-analysis/research/instructions-technical.md +4 -4
  90. package/{bmad → .bmad}/bmm/workflows/1-analysis/research/workflow.yaml +2 -2
  91. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -1
  92. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +3 -7
  93. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +3 -3
  94. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +2 -2
  95. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/instructions.md +6 -6
  96. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/workflow.yaml +2 -2
  97. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +1 -1
  98. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +5 -5
  99. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +6 -6
  100. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +2 -2
  101. package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +2 -2
  102. package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/instructions.md +6 -6
  103. package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/workflow.yaml +3 -2
  104. package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +2 -2
  105. package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +4 -4
  106. package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/instructions.md +2 -2
  107. package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -13
  108. package/{bmad → .bmad}/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  109. package/{bmad → .bmad}/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
  110. package/{bmad → .bmad}/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
  111. package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/instructions.md +3 -3
  112. package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/workflow.yaml +3 -3
  113. package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +3 -3
  114. package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/instructions.md +2 -2
  115. package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/workflow.yaml +3 -3
  116. package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
  117. package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/instructions.md +2 -2
  118. package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +2 -2
  119. package/{bmad → .bmad}/bmm/workflows/4-implementation/retrospective/instructions.md +2 -2
  120. package/{bmad → .bmad}/bmm/workflows/4-implementation/retrospective/workflow.yaml +4 -4
  121. package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/instructions.md +2 -2
  122. package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +3 -3
  123. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
  124. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
  125. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/instructions.md +2 -2
  126. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-context/workflow.yaml +4 -4
  127. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
  128. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-done/workflow.yaml +3 -3
  129. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-ready/instructions.md +1 -1
  130. package/{bmad → .bmad}/bmm/workflows/4-implementation/story-ready/workflow.yaml +3 -3
  131. package/{bmad → .bmad}/bmm/workflows/document-project/instructions.md +5 -5
  132. package/{bmad → .bmad}/bmm/workflows/document-project/workflow.yaml +2 -2
  133. package/{bmad → .bmad}/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  134. package/{bmad → .bmad}/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  135. package/{bmad → .bmad}/bmm/workflows/testarch/atdd/instructions.md +2 -2
  136. package/{bmad → .bmad}/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
  137. package/{bmad → .bmad}/bmm/workflows/testarch/automate/instructions.md +2 -2
  138. package/{bmad → .bmad}/bmm/workflows/testarch/automate/workflow.yaml +2 -2
  139. package/{bmad → .bmad}/bmm/workflows/testarch/ci/instructions.md +2 -2
  140. package/{bmad → .bmad}/bmm/workflows/testarch/ci/workflow.yaml +2 -2
  141. package/{bmad → .bmad}/bmm/workflows/testarch/framework/instructions.md +2 -2
  142. package/{bmad → .bmad}/bmm/workflows/testarch/framework/workflow.yaml +2 -2
  143. package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  144. package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  145. package/{bmad → .bmad}/bmm/workflows/testarch/test-design/instructions.md +2 -2
  146. package/{bmad → .bmad}/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
  147. package/{bmad → .bmad}/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
  148. package/{bmad → .bmad}/bmm/workflows/testarch/test-review/instructions.md +1 -1
  149. package/{bmad → .bmad}/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
  150. package/{bmad → .bmad}/bmm/workflows/testarch/trace/instructions.md +9 -9
  151. package/{bmad → .bmad}/bmm/workflows/testarch/trace/workflow.yaml +2 -2
  152. package/{bmad → .bmad}/bmm/workflows/workflow-status/init/instructions.md +74 -23
  153. package/{bmad → .bmad}/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
  154. package/{bmad → .bmad}/bmm/workflows/workflow-status/instructions.md +5 -4
  155. package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +18 -11
  156. package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +18 -11
  157. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +52 -0
  158. package/{bmad → .bmad}/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  159. package/{bmad → .bmad}/bmm/workflows/workflow-status/workflow.yaml +2 -2
  160. package/{bmad → .bmad}/core/agents/bmad-master.md +7 -7
  161. package/{bmad → .bmad}/core/agents/bmad-web-orchestrator.agent.xml +8 -17
  162. package/{bmad → .bmad}/core/config.yaml +4 -2
  163. package/{bmad → .bmad}/core/tasks/adv-elicit.xml +5 -3
  164. package/{bmad → .bmad}/core/tasks/index-docs.xml +1 -1
  165. package/{bmad → .bmad}/core/tasks/validate-workflow.xml +1 -1
  166. package/{bmad → .bmad}/core/tasks/workflow.xml +1 -1
  167. package/{bmad → .bmad}/core/tools/shard-doc.xml +1 -1
  168. package/{bmad → .bmad}/core/workflows/brainstorming/README.md +2 -2
  169. package/{bmad → .bmad}/core/workflows/brainstorming/instructions.md +3 -3
  170. package/{bmad → .bmad}/core/workflows/brainstorming/workflow.yaml +8 -8
  171. package/{bmad → .bmad}/core/workflows/party-mode/instructions.md +2 -7
  172. package/.bmad/core/workflows/party-mode/workflow.yaml +27 -0
  173. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +12 -12
  174. package/.claude/commands/bmad/bmm/agents/analyst.md +20 -12
  175. package/.claude/commands/bmad/bmm/agents/architect.md +19 -11
  176. package/.claude/commands/bmad/bmm/agents/dev.md +10 -10
  177. package/.claude/commands/bmad/bmm/agents/pm.md +23 -15
  178. package/.claude/commands/bmad/bmm/agents/sm.md +26 -18
  179. package/.claude/commands/bmad/bmm/agents/tea.md +25 -17
  180. package/.claude/commands/bmad/bmm/agents/tech-writer.md +16 -8
  181. package/.claude/commands/bmad/bmm/agents/ux-designer.md +18 -10
  182. package/.claude/commands/bmad/bmm/workflows/domain-research.md +15 -0
  183. package/.claude/commands/bmad/core/agents/bmad-master.md +7 -7
  184. package/.claude/commands/bmad/core/tasks/adv-elicit.md +9 -0
  185. package/.claude/settings.local.json +6 -5
  186. package/.github/workflows/{lint.yaml → quality.yaml} +19 -2
  187. package/.husky/pre-commit +4 -0
  188. package/.vscode/settings.json +2 -1
  189. package/README.md +59 -1
  190. package/docs/installers-bundlers/installers-modules-platforms-reference.md +61 -0
  191. package/package.json +5 -3
  192. package/src/core/_module-installer/install-config.yaml +15 -9
  193. package/src/core/_module-installer/installer.js +0 -8
  194. package/src/core/agents/bmad-master.agent.yaml +5 -5
  195. package/src/core/agents/bmad-web-orchestrator.agent.xml +8 -17
  196. package/src/core/tasks/adv-elicit.xml +5 -3
  197. package/src/core/tasks/index-docs.xml +1 -1
  198. package/src/core/tasks/validate-workflow.xml +1 -1
  199. package/src/core/tasks/workflow.xml +1 -1
  200. package/src/core/tools/shard-doc.xml +1 -1
  201. package/src/core/workflows/brainstorming/README.md +2 -2
  202. package/src/core/workflows/brainstorming/instructions.md +3 -3
  203. package/src/core/workflows/brainstorming/workflow.yaml +8 -8
  204. package/src/core/workflows/party-mode/instructions.md +2 -7
  205. package/src/core/workflows/party-mode/workflow.yaml +10 -6
  206. package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
  207. package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -10
  208. package/src/modules/bmb/workflows/audit-workflow/checklist.md +2 -2
  209. package/src/modules/bmb/workflows/audit-workflow/instructions.md +5 -5
  210. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +2 -2
  211. package/src/modules/bmb/workflows/convert-legacy/README.md +5 -5
  212. package/src/modules/bmb/workflows/convert-legacy/checklist.md +2 -2
  213. package/src/modules/bmb/workflows/convert-legacy/instructions.md +17 -17
  214. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +6 -6
  215. package/src/modules/bmb/workflows/create-agent/README.md +5 -5
  216. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +15 -15
  217. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +28 -28
  218. package/src/modules/bmb/workflows/create-agent/agent-types.md +15 -15
  219. package/src/modules/bmb/workflows/create-agent/checklist.md +3 -3
  220. package/src/modules/bmb/workflows/create-agent/instructions.md +34 -18
  221. package/src/modules/bmb/workflows/create-agent/workflow.yaml +12 -12
  222. package/src/modules/bmb/workflows/create-module/README.md +1 -1
  223. package/src/modules/bmb/workflows/create-module/checklist.md +1 -1
  224. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
  225. package/src/modules/bmb/workflows/create-module/instructions.md +7 -7
  226. package/src/modules/bmb/workflows/create-module/module-structure.md +36 -2
  227. package/src/modules/bmb/workflows/create-module/workflow.yaml +9 -9
  228. package/src/modules/bmb/workflows/create-workflow/README.md +4 -4
  229. package/src/modules/bmb/workflows/create-workflow/checklist.md +1 -1
  230. package/src/modules/bmb/workflows/create-workflow/instructions.md +29 -29
  231. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +42 -42
  232. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +2 -2
  233. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -12
  234. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +5 -5
  235. package/src/modules/bmb/workflows/edit-agent/checklist.md +1 -1
  236. package/src/modules/bmb/workflows/edit-agent/instructions.md +2 -2
  237. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +8 -8
  238. package/src/modules/bmb/workflows/edit-module/README.md +2 -2
  239. package/src/modules/bmb/workflows/edit-module/checklist.md +2 -2
  240. package/src/modules/bmb/workflows/edit-module/instructions.md +4 -4
  241. package/src/modules/bmb/workflows/edit-module/workflow.yaml +10 -10
  242. package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
  243. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +5 -5
  244. package/src/modules/bmb/workflows/module-brief/README.md +2 -2
  245. package/src/modules/bmb/workflows/module-brief/instructions.md +2 -2
  246. package/src/modules/bmb/workflows/module-brief/workflow.yaml +4 -4
  247. package/src/modules/bmb/workflows/redoc/README.md +5 -5
  248. package/src/modules/bmb/workflows/redoc/instructions.md +1 -1
  249. package/src/modules/bmb/workflows/redoc/workflow.yaml +1 -1
  250. package/src/modules/bmgd/README.md +208 -0
  251. package/src/modules/bmgd/_module-installer/install-config.yaml +67 -0
  252. package/src/modules/bmgd/agents/game-architect.agent.yaml +33 -0
  253. package/src/modules/bmgd/agents/game-designer.agent.yaml +40 -0
  254. package/src/modules/bmgd/agents/game-dev.agent.yaml +40 -0
  255. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +75 -0
  256. package/src/modules/bmgd/teams/default-party.csv +10 -0
  257. package/src/modules/{bmm → bmgd}/teams/team-gamedev.yaml +5 -1
  258. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/instructions.md +1 -1
  259. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/workflow.yaml +10 -10
  260. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/instructions.md +1 -1
  261. package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/workflow.yaml +9 -9
  262. package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/instructions-gdd.md +8 -8
  263. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +81 -0
  264. package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/instructions-narrative.md +6 -6
  265. package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/workflow.yaml +6 -6
  266. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +347 -0
  267. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +103 -0
  268. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +244 -0
  269. package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +222 -0
  270. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +704 -0
  271. package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
  272. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +67 -0
  273. package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +12 -0
  274. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +22 -0
  275. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +420 -0
  276. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +67 -0
  277. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
  278. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +201 -0
  279. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +45 -0
  280. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +240 -0
  281. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +283 -0
  282. package/src/modules/bmgd/workflows/4-production/create-story/template.md +51 -0
  283. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +76 -0
  284. package/src/modules/bmgd/workflows/4-production/dev-story/AUDIT-REPORT.md +367 -0
  285. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +38 -0
  286. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +262 -0
  287. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +28 -0
  288. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +17 -0
  289. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +189 -0
  290. package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +76 -0
  291. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +60 -0
  292. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1460 -0
  293. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +73 -0
  294. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
  295. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +238 -0
  296. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  297. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +49 -0
  298. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +16 -0
  299. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +34 -0
  300. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +234 -0
  301. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +59 -0
  302. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +111 -0
  303. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +27 -0
  304. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +117 -0
  305. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +27 -0
  306. package/src/modules/bmm/_module-installer/install-config.yaml +10 -24
  307. package/src/modules/bmm/_module-installer/installer.js +2 -2
  308. package/src/modules/bmm/agents/analyst.agent.yaml +20 -15
  309. package/src/modules/bmm/agents/architect.agent.yaml +17 -12
  310. package/src/modules/bmm/agents/dev.agent.yaml +9 -12
  311. package/src/modules/bmm/agents/pm.agent.yaml +24 -23
  312. package/src/modules/bmm/agents/sm.agent.yaml +24 -19
  313. package/src/modules/bmm/agents/tea.agent.yaml +23 -17
  314. package/src/modules/bmm/agents/tech-writer.agent.yaml +14 -10
  315. package/src/modules/bmm/agents/ux-designer.agent.yaml +16 -11
  316. package/src/modules/bmm/docs/README.md +8 -9
  317. package/src/modules/bmm/docs/agents-guide.md +4 -5
  318. package/src/modules/bmm/docs/brownfield-guide.md +9 -13
  319. package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
  320. package/src/modules/bmm/docs/faq.md +5 -7
  321. package/src/modules/bmm/docs/glossary.md +0 -1
  322. package/src/modules/bmm/docs/party-mode.md +3 -3
  323. package/src/modules/bmm/docs/quick-spec-flow.md +4 -4
  324. package/src/modules/bmm/docs/quick-start.md +5 -5
  325. package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
  326. package/src/modules/bmm/docs/test-architecture.md +184 -119
  327. package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
  328. package/src/modules/bmm/docs/workflows-analysis.md +203 -539
  329. package/src/modules/bmm/docs/workflows-planning.md +326 -850
  330. package/src/modules/bmm/docs/workflows-solutioning.md +250 -505
  331. package/src/modules/bmm/sub-modules/claude-code/README.md +1 -1
  332. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +22 -22
  333. package/src/modules/bmm/tasks/daily-standup.xml +2 -2
  334. package/src/modules/bmm/teams/default-party.csv +19 -0
  335. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  336. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +1 -1
  337. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
  338. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +1 -1
  339. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +65 -32
  340. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +1 -1
  341. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +12 -8
  342. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +2 -2
  343. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +6 -6
  344. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +1 -1
  345. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +4 -4
  346. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +14 -14
  347. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +1 -1
  348. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +36 -7
  349. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +3 -3
  350. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +6 -6
  351. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +6 -6
  352. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +21 -13
  353. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +1 -1
  354. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +5 -5
  355. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +6 -6
  356. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +2 -2
  357. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +15 -9
  358. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +6 -6
  359. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +49 -2
  360. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +2 -2
  361. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +4 -4
  362. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +38 -38
  363. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +6 -23
  364. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  365. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
  366. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
  367. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +38 -40
  368. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +6 -19
  369. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +3 -3
  370. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +2 -2
  371. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +3 -3
  372. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
  373. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +26 -28
  374. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +6 -18
  375. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +11 -11
  376. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +8 -11
  377. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +6 -15
  378. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +5 -4
  379. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
  380. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
  381. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +8 -9
  382. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +6 -14
  383. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
  384. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +4 -4
  385. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +1 -1
  386. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +4 -4
  387. package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
  388. package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
  389. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  390. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  391. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
  392. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
  393. package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
  394. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
  395. package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
  396. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
  397. package/src/modules/bmm/workflows/testarch/framework/instructions.md +2 -2
  398. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
  399. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  400. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  401. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +2 -2
  402. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
  403. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
  404. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
  405. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
  406. package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
  407. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
  408. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +78 -26
  409. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +5 -4
  410. package/src/modules/bmm/workflows/workflow-status/instructions.md +5 -4
  411. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +18 -11
  412. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +18 -11
  413. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +42 -65
  414. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  415. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
  416. package/src/modules/cis/README.md +1 -1
  417. package/src/modules/cis/_module-installer/install-config.yaml +6 -4
  418. package/src/modules/cis/agents/README.md +1 -1
  419. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +13 -8
  420. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +13 -8
  421. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +13 -8
  422. package/src/modules/cis/agents/innovation-strategist.agent.yaml +13 -8
  423. package/src/modules/cis/agents/storyteller.agent.yaml +13 -8
  424. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  425. package/src/modules/cis/teams/default-party.csv +11 -0
  426. package/src/modules/cis/workflows/README.md +1 -1
  427. package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
  428. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
  429. package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
  430. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
  431. package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
  432. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
  433. package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
  434. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
  435. package/src/utility/models/action-command-header.md +0 -0
  436. package/src/utility/models/agent-activation-ide.xml +3 -3
  437. package/src/utility/models/agent-activation-web.xml +4 -4
  438. package/src/utility/models/agent-command-header.md +1 -0
  439. package/src/utility/models/fragments/activation-steps.xml +3 -2
  440. package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
  441. package/src/utility/models/fragments/handler-workflow.xml +1 -1
  442. package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
  443. package/test/test-installation-components.js +214 -0
  444. package/tools/cli/bundlers/web-bundler.js +208 -20
  445. package/tools/cli/commands/install.js +1 -4
  446. package/tools/cli/installers/lib/core/config-collector.js +201 -28
  447. package/tools/cli/installers/lib/core/detector.js +62 -7
  448. package/tools/cli/installers/lib/core/installer.js +158 -23
  449. package/tools/cli/installers/lib/core/manifest-generator.js +26 -115
  450. package/tools/cli/installers/lib/ide/_base-ide.js +57 -3
  451. package/tools/cli/installers/lib/ide/auggie.js +81 -238
  452. package/tools/cli/installers/lib/ide/claude-code.js +47 -25
  453. package/tools/cli/installers/lib/ide/cline.js +15 -18
  454. package/tools/cli/installers/lib/ide/codex.js +17 -48
  455. package/tools/cli/installers/lib/ide/crush.js +14 -50
  456. package/tools/cli/installers/lib/ide/cursor.js +68 -8
  457. package/tools/cli/installers/lib/ide/gemini.js +87 -37
  458. package/tools/cli/installers/lib/ide/github-copilot.js +47 -35
  459. package/tools/cli/installers/lib/ide/iflow.js +13 -30
  460. package/tools/cli/installers/lib/ide/kilo.js +20 -16
  461. package/tools/cli/installers/lib/ide/manager.js +15 -0
  462. package/tools/cli/installers/lib/ide/opencode.js +16 -17
  463. package/tools/cli/installers/lib/ide/qwen.js +39 -11
  464. package/tools/cli/installers/lib/ide/roo.js +27 -62
  465. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
  466. package/tools/cli/installers/lib/ide/{task-tool-command-generator.js → shared/task-tool-command-generator.js} +1 -1
  467. package/tools/cli/installers/lib/ide/{workflow-command-generator.js → shared/workflow-command-generator.js} +11 -9
  468. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  469. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  470. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  471. package/tools/cli/installers/lib/ide/{workflow-command-template.md → templates/workflow-command-template.md} +3 -5
  472. package/tools/cli/installers/lib/ide/trae.js +20 -32
  473. package/tools/cli/installers/lib/ide/windsurf.js +18 -8
  474. package/tools/cli/installers/lib/modules/manager.js +207 -7
  475. package/tools/cli/lib/cli-utils.js +52 -50
  476. package/tools/cli/lib/ui.js +15 -8
  477. package/tools/cli/lib/yaml-xml-builder.js +9 -1
  478. package/tools/schema/agent.js +8 -3
  479. package/v6-open-items.md +3 -9
  480. package/web-bundles/bmgd/agents/game-architect.xml +664 -0
  481. package/web-bundles/bmgd/agents/game-designer.xml +5489 -0
  482. package/web-bundles/bmgd/agents/game-dev.xml +595 -0
  483. package/web-bundles/bmgd/agents/game-scrum-master.xml +699 -0
  484. package/web-bundles/bmgd/teams/team-gamedev.xml +6588 -0
  485. package/web-bundles/bmm/agents/analyst.xml +5263 -0
  486. package/web-bundles/bmm/agents/architect.xml +2378 -0
  487. package/web-bundles/bmm/agents/dev.xml +248 -0
  488. package/web-bundles/bmm/agents/pm.xml +4137 -0
  489. package/web-bundles/bmm/agents/sm.xml +708 -0
  490. package/web-bundles/bmm/agents/tea.xml +759 -0
  491. package/web-bundles/bmm/agents/tech-writer.xml +624 -0
  492. package/web-bundles/bmm/agents/ux-designer.xml +2492 -0
  493. package/web-bundles/bmm/teams/team-fullstack.xml +12369 -0
  494. package/web-bundles/cis/agents/brainstorming-coach.xml +1069 -0
  495. package/web-bundles/cis/agents/creative-problem-solver.xml +1060 -0
  496. package/web-bundles/cis/agents/design-thinking-coach.xml +955 -0
  497. package/web-bundles/cis/agents/innovation-strategist.xml +1108 -0
  498. package/web-bundles/cis/agents/storyteller.xml +598 -0
  499. package/web-bundles/cis/teams/creative-squad.xml +3449 -0
  500. package/.claude/agents/bmad-analysis/api-documenter.md +0 -102
  501. package/.claude/agents/bmad-analysis/codebase-analyzer.md +0 -82
  502. package/.claude/agents/bmad-analysis/data-analyst.md +0 -101
  503. package/.claude/agents/bmad-analysis/pattern-detector.md +0 -84
  504. package/.claude/agents/bmad-planning/dependency-mapper.md +0 -83
  505. package/.claude/agents/bmad-planning/epic-optimizer.md +0 -81
  506. package/.claude/agents/bmad-planning/requirements-analyst.md +0 -61
  507. package/.claude/agents/bmad-planning/technical-decisions-curator.md +0 -168
  508. package/.claude/agents/bmad-planning/trend-spotter.md +0 -115
  509. package/.claude/agents/bmad-planning/user-journey-mapper.md +0 -123
  510. package/.claude/agents/bmad-planning/user-researcher.md +0 -72
  511. package/.claude/agents/bmad-research/market-researcher.md +0 -51
  512. package/.claude/agents/bmad-research/tech-debt-auditor.md +0 -106
  513. package/.claude/agents/bmad-review/document-reviewer.md +0 -102
  514. package/.claude/agents/bmad-review/technical-evaluator.md +0 -68
  515. package/.claude/agents/bmad-review/test-coverage-analyzer.md +0 -108
  516. package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
  517. package/.claude/commands/bmad/bmm/workflows/README.md +0 -132
  518. package/.claude/commands/bmad/bmm/workflows/narrative.md +0 -15
  519. package/.claude/commands/bmad/cis/agents/README.md +0 -104
  520. package/.claude/commands/bmad/cis/agents/brainstorming-coach.md +0 -62
  521. package/.claude/commands/bmad/cis/agents/creative-problem-solver.md +0 -62
  522. package/.claude/commands/bmad/cis/agents/design-thinking-coach.md +0 -62
  523. package/.claude/commands/bmad/cis/agents/innovation-strategist.md +0 -62
  524. package/.claude/commands/bmad/cis/agents/storyteller.md +0 -59
  525. package/.claude/commands/bmad/cis/workflows/README.md +0 -37
  526. package/.claude/commands/bmad/cis/workflows/design-thinking.md +0 -15
  527. package/.claude/commands/bmad/cis/workflows/innovation-strategy.md +0 -15
  528. package/.claude/commands/bmad/cis/workflows/problem-solving.md +0 -15
  529. package/.claude/commands/bmad/cis/workflows/storytelling.md +0 -15
  530. package/.claude/commands/bmad/core/workflows/README.md +0 -27
  531. package/bmad/_cfg/agent-manifest.csv +0 -11
  532. package/bmad/_cfg/manifest.yaml +0 -10
  533. package/bmad/bmb/config.yaml +0 -14
  534. package/bmad/bmm/teams/team-gamedev.yaml +0 -14
  535. package/bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -36
  536. package/bmad/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -608
  537. package/bmad/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -29
  538. package/bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
  539. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  540. package/bmd/README.md +0 -193
  541. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  542. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  543. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  544. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  545. package/bmd/agents/cli-chief.agent.yaml +0 -126
  546. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  547. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  548. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  549. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  550. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  551. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  552. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  553. package/bmd/agents/release-chief.agent.yaml +0 -127
  554. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  555. package/bmd/config.yaml +0 -12
  556. package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
  557. package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
  558. package/src/modules/bmm/agents/game-dev.agent.yaml +0 -35
  559. package/src/modules/bmm/docs/troubleshooting.md +0 -680
  560. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -81
  561. package/src/modules/bmm/workflows/2-plan-workflows/narrative/checklist.md +0 -139
  562. package/src/modules/bmm/workflows/2-plan-workflows/narrative/narrative-template.md +0 -195
  563. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  564. /package/{bmad → .bmad}/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -0
  565. /package/{bmad → .bmad}/_cfg/agents/bmm-analyst.customize.yaml +0 -0
  566. /package/{bmad → .bmad}/_cfg/agents/bmm-architect.customize.yaml +0 -0
  567. /package/{bmad → .bmad}/_cfg/agents/bmm-dev.customize.yaml +0 -0
  568. /package/{bmad → .bmad}/_cfg/agents/bmm-pm.customize.yaml +0 -0
  569. /package/{bmad → .bmad}/_cfg/agents/bmm-sm.customize.yaml +0 -0
  570. /package/{bmad → .bmad}/_cfg/agents/bmm-tea.customize.yaml +0 -0
  571. /package/{bmad → .bmad}/_cfg/agents/bmm-tech-writer.customize.yaml +0 -0
  572. /package/{bmad → .bmad}/_cfg/agents/bmm-ux-designer.customize.yaml +0 -0
  573. /package/{bmad → .bmad}/_cfg/agents/core-bmad-master.customize.yaml +0 -0
  574. /package/{bmad → .bmad}/_cfg/tool-manifest.csv +0 -0
  575. /package/{bmad → .bmad}/bmb/README.md +0 -0
  576. /package/{bmad → .bmad}/bmb/workflows/audit-workflow/template.md +0 -0
  577. /package/{bmad → .bmad}/bmb/workflows/create-agent/brainstorm-context.md +0 -0
  578. /package/{bmad → .bmad}/bmb/workflows/create-agent/communication-styles.md +0 -0
  579. /package/{bmad → .bmad}/bmb/workflows/create-module/brainstorm-context.md +0 -0
  580. /package/{bmad → .bmad}/bmb/workflows/create-module/installer-templates/installer.js +0 -0
  581. /package/{bmad → .bmad}/bmb/workflows/create-workflow/brainstorm-context.md +0 -0
  582. /package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -0
  583. /package/{bmad → .bmad}/bmb/workflows/create-workflow/workflow-template/template.md +0 -0
  584. /package/{bmad → .bmad}/bmb/workflows/edit-agent/README.md +0 -0
  585. /package/{bmad → .bmad}/bmb/workflows/edit-workflow/README.md +0 -0
  586. /package/{bmad → .bmad}/bmb/workflows/edit-workflow/checklist.md +0 -0
  587. /package/{bmad → .bmad}/bmb/workflows/module-brief/checklist.md +0 -0
  588. /package/{bmad → .bmad}/bmb/workflows/module-brief/template.md +0 -0
  589. /package/{bmad → .bmad}/bmb/workflows/redoc/checklist.md +0 -0
  590. /package/{bmad → .bmad}/bmm/README.md +0 -0
  591. /package/{bmad → .bmad}/bmm/testarch/knowledge/ci-burn-in.md +0 -0
  592. /package/{bmad → .bmad}/bmm/testarch/knowledge/component-tdd.md +0 -0
  593. /package/{bmad → .bmad}/bmm/testarch/knowledge/contract-testing.md +0 -0
  594. /package/{bmad → .bmad}/bmm/testarch/knowledge/data-factories.md +0 -0
  595. /package/{bmad → .bmad}/bmm/testarch/knowledge/email-auth.md +0 -0
  596. /package/{bmad → .bmad}/bmm/testarch/knowledge/error-handling.md +0 -0
  597. /package/{bmad → .bmad}/bmm/testarch/knowledge/feature-flags.md +0 -0
  598. /package/{bmad → .bmad}/bmm/testarch/knowledge/fixture-architecture.md +0 -0
  599. /package/{bmad → .bmad}/bmm/testarch/knowledge/network-first.md +0 -0
  600. /package/{bmad → .bmad}/bmm/testarch/knowledge/nfr-criteria.md +0 -0
  601. /package/{bmad → .bmad}/bmm/testarch/knowledge/playwright-config.md +0 -0
  602. /package/{bmad → .bmad}/bmm/testarch/knowledge/probability-impact.md +0 -0
  603. /package/{bmad → .bmad}/bmm/testarch/knowledge/risk-governance.md +0 -0
  604. /package/{bmad → .bmad}/bmm/testarch/knowledge/selective-testing.md +0 -0
  605. /package/{bmad → .bmad}/bmm/testarch/knowledge/selector-resilience.md +0 -0
  606. /package/{bmad → .bmad}/bmm/testarch/knowledge/test-healing-patterns.md +0 -0
  607. /package/{bmad → .bmad}/bmm/testarch/knowledge/test-levels-framework.md +0 -0
  608. /package/{bmad → .bmad}/bmm/testarch/knowledge/test-priorities-matrix.md +0 -0
  609. /package/{bmad → .bmad}/bmm/testarch/knowledge/test-quality.md +0 -0
  610. /package/{bmad → .bmad}/bmm/testarch/knowledge/timing-debugging.md +0 -0
  611. /package/{bmad → .bmad}/bmm/testarch/knowledge/visual-debugging.md +0 -0
  612. /package/{bmad → .bmad}/bmm/testarch/tea-index.csv +0 -0
  613. /package/{bmad → .bmad}/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -0
  614. /package/{bmad → .bmad}/bmm/workflows/1-analysis/domain-research/template.md +0 -0
  615. /package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/checklist.md +0 -0
  616. /package/{bmad → .bmad}/bmm/workflows/1-analysis/product-brief/template.md +0 -0
  617. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -0
  618. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/checklist-technical.md +0 -0
  619. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/checklist.md +0 -0
  620. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -0
  621. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -0
  622. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/template-market.md +0 -0
  623. /package/{bmad → .bmad}/bmm/workflows/1-analysis/research/template-technical.md +0 -0
  624. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -0
  625. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -0
  626. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -0
  627. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +0 -0
  628. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -0
  629. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -0
  630. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -0
  631. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -0
  632. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -0
  633. /package/{bmad → .bmad}/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -0
  634. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -0
  635. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -0
  636. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/checklist.md +0 -0
  637. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -0
  638. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -0
  639. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -0
  640. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -0
  641. /package/{bmad → .bmad}/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -0
  642. /package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -0
  643. /package/{bmad → .bmad}/bmm/workflows/4-implementation/code-review/checklist.md +0 -0
  644. /package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/checklist.md +0 -0
  645. /package/{bmad → .bmad}/bmm/workflows/4-implementation/create-story/template.md +0 -0
  646. /package/{bmad → .bmad}/bmm/workflows/4-implementation/dev-story/checklist.md +0 -0
  647. /package/{bmad → .bmad}/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -0
  648. /package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -0
  649. /package/{bmad → .bmad}/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -0
  650. /package/{bmad → .bmad}/bmm/workflows/document-project/checklist.md +0 -0
  651. /package/{bmad → .bmad}/bmm/workflows/document-project/documentation-requirements.csv +0 -0
  652. /package/{bmad → .bmad}/bmm/workflows/document-project/templates/deep-dive-template.md +0 -0
  653. /package/{bmad → .bmad}/bmm/workflows/document-project/templates/index-template.md +0 -0
  654. /package/{bmad → .bmad}/bmm/workflows/document-project/templates/project-overview-template.md +0 -0
  655. /package/{bmad → .bmad}/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -0
  656. /package/{bmad → .bmad}/bmm/workflows/document-project/templates/source-tree-template.md +0 -0
  657. /package/{bmad → .bmad}/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -0
  658. /package/{bmad → .bmad}/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -0
  659. /package/{bmad → .bmad}/bmm/workflows/techdoc/documentation-standards.md +0 -0
  660. /package/{bmad → .bmad}/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -0
  661. /package/{bmad → .bmad}/bmm/workflows/testarch/atdd/checklist.md +0 -0
  662. /package/{bmad → .bmad}/bmm/workflows/testarch/automate/checklist.md +0 -0
  663. /package/{bmad → .bmad}/bmm/workflows/testarch/ci/checklist.md +0 -0
  664. /package/{bmad → .bmad}/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -0
  665. /package/{bmad → .bmad}/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -0
  666. /package/{bmad → .bmad}/bmm/workflows/testarch/framework/checklist.md +0 -0
  667. /package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/checklist.md +0 -0
  668. /package/{bmad → .bmad}/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -0
  669. /package/{bmad → .bmad}/bmm/workflows/testarch/test-design/checklist.md +0 -0
  670. /package/{bmad → .bmad}/bmm/workflows/testarch/test-review/checklist.md +0 -0
  671. /package/{bmad → .bmad}/bmm/workflows/testarch/test-review/test-review-template.md +0 -0
  672. /package/{bmad → .bmad}/bmm/workflows/testarch/trace/checklist.md +0 -0
  673. /package/{bmad → .bmad}/bmm/workflows/testarch/trace/trace-template.md +0 -0
  674. /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -0
  675. /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -0
  676. /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -0
  677. /package/{bmad → .bmad}/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -0
  678. /package/{bmad → .bmad}/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +0 -0
  679. /package/{bmad → .bmad}/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -0
  680. /package/{bmad → .bmad}/core/tasks/adv-elicit-methods.csv +0 -0
  681. /package/{bmad → .bmad}/core/workflows/brainstorming/brain-methods.csv +0 -0
  682. /package/{bmad → .bmad}/core/workflows/brainstorming/template.md +0 -0
  683. /package/{bmad → .bmad}/docs/claude-code-instructions.md +0 -0
  684. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
  685. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
  686. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
  687. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/template.md +0 -0
  688. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
  689. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
  690. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
  691. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
  692. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
  693. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
  694. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
  695. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
  696. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
  697. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
  698. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
  699. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
  700. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
  701. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
  702. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
  703. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
  704. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
  705. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
  706. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
  707. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
  708. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
  709. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
  710. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
  711. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
  712. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
  713. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
  714. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/gdd-template.md +0 -0
  715. /package/{bmad/bmm/workflows/2-plan-workflows → src/modules/bmgd/workflows/2-design}/narrative/checklist.md +0 -0
  716. /package/{bmad/bmm/workflows/2-plan-workflows → src/modules/bmgd/workflows/2-design}/narrative/narrative-template.md +0 -0
@@ -33,6 +33,76 @@ class Installer {
33
33
  this.installedFiles = []; // Track all installed files
34
34
  }
35
35
 
36
+ /**
37
+ * Find the bmad installation directory in a project
38
+ * V6+ installations can use ANY folder name but ALWAYS have _cfg/manifest.yaml
39
+ * @param {string} projectDir - Project directory
40
+ * @returns {Promise<string>} Path to bmad directory
41
+ */
42
+ async findBmadDir(projectDir) {
43
+ // Check if project directory exists
44
+ if (!(await fs.pathExists(projectDir))) {
45
+ // Project doesn't exist yet, return default
46
+ return path.join(projectDir, 'bmad');
47
+ }
48
+
49
+ // V6+ strategy: Look for ANY directory with _cfg/manifest.yaml
50
+ // This is the definitive marker of a V6+ installation
51
+ try {
52
+ const entries = await fs.readdir(projectDir, { withFileTypes: true });
53
+ for (const entry of entries) {
54
+ if (entry.isDirectory()) {
55
+ const manifestPath = path.join(projectDir, entry.name, '_cfg', 'manifest.yaml');
56
+ if (await fs.pathExists(manifestPath)) {
57
+ // Found a V6+ installation
58
+ return path.join(projectDir, entry.name);
59
+ }
60
+ }
61
+ }
62
+ } catch {
63
+ // Ignore errors, fall through to default
64
+ }
65
+
66
+ // No V6+ installation found, return default
67
+ // This will be used for new installations
68
+ return path.join(projectDir, 'bmad');
69
+ }
70
+
71
+ /**
72
+ * Copy a file and replace {bmad_folder} placeholder with actual folder name
73
+ * @param {string} sourcePath - Source file path
74
+ * @param {string} targetPath - Target file path
75
+ * @param {string} bmadFolderName - The bmad folder name to use for replacement
76
+ */
77
+ async copyFileWithPlaceholderReplacement(sourcePath, targetPath, bmadFolderName) {
78
+ // List of text file extensions that should have placeholder replacement
79
+ const textExtensions = ['.md', '.yaml', '.yml', '.txt', '.json', '.js', '.ts', '.html', '.css', '.sh', '.bat', '.csv'];
80
+ const ext = path.extname(sourcePath).toLowerCase();
81
+
82
+ // Check if this is a text file that might contain placeholders
83
+ if (textExtensions.includes(ext)) {
84
+ try {
85
+ // Read the file content
86
+ let content = await fs.readFile(sourcePath, 'utf8');
87
+
88
+ // Replace {bmad_folder} placeholder with actual folder name
89
+ if (content.includes('{bmad_folder}')) {
90
+ content = content.replaceAll('{bmad_folder}', bmadFolderName);
91
+ }
92
+
93
+ // Write to target with replaced content
94
+ await fs.ensureDir(path.dirname(targetPath));
95
+ await fs.writeFile(targetPath, content, 'utf8');
96
+ } catch {
97
+ // If reading as text fails (might be binary despite extension), fall back to regular copy
98
+ await fs.copy(sourcePath, targetPath, { overwrite: true });
99
+ }
100
+ } else {
101
+ // Binary file or other file type - just copy directly
102
+ await fs.copy(sourcePath, targetPath, { overwrite: true });
103
+ }
104
+ }
105
+
36
106
  /**
37
107
  * Collect Tool/IDE configurations after module configuration
38
108
  * @param {string} projectDir - Project directory
@@ -61,7 +131,7 @@ class Installer {
61
131
  // Check for already configured IDEs
62
132
  const { Detector } = require('./detector');
63
133
  const detector = new Detector();
64
- const bmadDir = path.join(projectDir, 'bmad');
134
+ const bmadDir = path.join(projectDir, this.bmadFolderName || 'bmad');
65
135
 
66
136
  // During full reinstall, use the saved previous IDEs since bmad dir was deleted
67
137
  // Otherwise detect from existing installation
@@ -170,12 +240,10 @@ class Installer {
170
240
  // Display welcome message
171
241
  CLIUtils.displaySection('BMAD™ Installation', 'Version ' + require(path.join(getProjectRoot(), 'package.json')).version);
172
242
 
173
- // Preflight: Handle legacy BMAD v4 footprints before any prompts/writes
243
+ // Note: Legacy V4 detection now happens earlier in UI.promptInstall()
244
+ // before any config collection, so we don't need to check again here
245
+
174
246
  const projectDir = path.resolve(config.directory);
175
- const legacyV4 = await this.detector.detectLegacyV4(projectDir);
176
- if (legacyV4.hasLegacyV4) {
177
- await this.handleLegacyV4Migration(projectDir, legacyV4);
178
- }
179
247
 
180
248
  // If core config was pre-collected (from interactive mode), use it
181
249
  if (config.coreConfig) {
@@ -197,6 +265,14 @@ class Installer {
197
265
  moduleConfigs = await this.configCollector.collectAllConfigurations(config.modules || [], path.resolve(config.directory));
198
266
  }
199
267
 
268
+ // Get bmad_folder from config (default to 'bmad' for backwards compatibility)
269
+ const bmadFolderName = moduleConfigs.core && moduleConfigs.core.bmad_folder ? moduleConfigs.core.bmad_folder : 'bmad';
270
+ this.bmadFolderName = bmadFolderName; // Store for use in other methods
271
+
272
+ // Set bmad folder name on module manager and IDE manager for placeholder replacement
273
+ this.moduleManager.setBmadFolderName(bmadFolderName);
274
+ this.ideManager.setBmadFolderName(bmadFolderName);
275
+
200
276
  // Tool selection will be collected after we determine if it's a reinstall/update/new install
201
277
 
202
278
  const spinner = ora('Preparing installation...').start();
@@ -205,6 +281,63 @@ class Installer {
205
281
  // Resolve target directory (path.resolve handles platform differences)
206
282
  const projectDir = path.resolve(config.directory);
207
283
 
284
+ // Check if bmad_folder has changed from existing installation (only if project dir exists)
285
+ let existingBmadDir = null;
286
+ let existingBmadFolderName = null;
287
+
288
+ if (await fs.pathExists(projectDir)) {
289
+ existingBmadDir = await this.findBmadDir(projectDir);
290
+ existingBmadFolderName = path.basename(existingBmadDir);
291
+ }
292
+
293
+ const targetBmadDir = path.join(projectDir, bmadFolderName);
294
+
295
+ // If bmad_folder changed during update/upgrade, back up old folder and do fresh install
296
+ if (existingBmadDir && (await fs.pathExists(existingBmadDir)) && existingBmadFolderName !== bmadFolderName) {
297
+ spinner.stop();
298
+ console.log(chalk.yellow(`\n⚠️ bmad_folder has changed: ${existingBmadFolderName} → ${bmadFolderName}`));
299
+ console.log(chalk.yellow('This will result in a fresh installation to the new folder.'));
300
+
301
+ const inquirer = require('inquirer');
302
+ const { confirmFreshInstall } = await inquirer.prompt([
303
+ {
304
+ type: 'confirm',
305
+ name: 'confirmFreshInstall',
306
+ message: chalk.cyan('Proceed with fresh install? (Your old folder will be backed up)'),
307
+ default: true,
308
+ },
309
+ ]);
310
+
311
+ if (!confirmFreshInstall) {
312
+ console.log(chalk.yellow('Installation cancelled.'));
313
+ return { success: false, cancelled: true };
314
+ }
315
+
316
+ spinner.start('Backing up existing installation...');
317
+
318
+ // Find a unique backup name
319
+ let backupDir = `${existingBmadDir}-bak`;
320
+ let counter = 1;
321
+ while (await fs.pathExists(backupDir)) {
322
+ backupDir = `${existingBmadDir}-bak-${counter}`;
323
+ counter++;
324
+ }
325
+
326
+ // Rename the old folder to backup
327
+ await fs.move(existingBmadDir, backupDir);
328
+
329
+ spinner.succeed(`Backed up ${existingBmadFolderName} → ${path.basename(backupDir)}`);
330
+ console.log(chalk.cyan('\n📋 Important:'));
331
+ console.log(chalk.dim(` - Your old installation has been backed up to: ${path.basename(backupDir)}`));
332
+ console.log(chalk.dim(` - If you had custom agents or configurations, copy them from:`));
333
+ console.log(chalk.dim(` ${path.basename(backupDir)}/_cfg/`));
334
+ console.log(chalk.dim(` - To the new location:`));
335
+ console.log(chalk.dim(` ${bmadFolderName}/_cfg/`));
336
+ console.log('');
337
+
338
+ spinner.start('Starting fresh installation...');
339
+ }
340
+
208
341
  // Create a project directory if it doesn't exist (user already confirmed)
209
342
  if (!(await fs.pathExists(projectDir))) {
210
343
  spinner.text = 'Creating installation directory...';
@@ -225,7 +358,7 @@ class Installer {
225
358
  }
226
359
  }
227
360
 
228
- const bmadDir = path.join(projectDir, 'bmad');
361
+ const bmadDir = path.join(projectDir, bmadFolderName);
229
362
 
230
363
  // Check existing installation
231
364
  spinner.text = 'Checking for existing installation...';
@@ -726,7 +859,8 @@ class Installer {
726
859
  const spinner = ora('Checking installation...').start();
727
860
 
728
861
  try {
729
- const bmadDir = path.join(path.resolve(config.directory), 'bmad');
862
+ const projectDir = path.resolve(config.directory);
863
+ const bmadDir = await this.findBmadDir(projectDir);
730
864
  const existingInstall = await this.detector.detect(bmadDir);
731
865
 
732
866
  if (!existingInstall.installed) {
@@ -786,7 +920,8 @@ class Installer {
786
920
  * Get installation status
787
921
  */
788
922
  async getStatus(directory) {
789
- const bmadDir = path.join(path.resolve(directory), 'bmad');
923
+ const projectDir = path.resolve(directory);
924
+ const bmadDir = await this.findBmadDir(projectDir);
790
925
  return await this.detector.detect(bmadDir);
791
926
  }
792
927
 
@@ -801,14 +936,15 @@ class Installer {
801
936
  * Uninstall BMAD
802
937
  */
803
938
  async uninstall(directory) {
804
- const bmadDir = path.join(path.resolve(directory), 'bmad');
939
+ const projectDir = path.resolve(directory);
940
+ const bmadDir = await this.findBmadDir(projectDir);
805
941
 
806
942
  if (await fs.pathExists(bmadDir)) {
807
943
  await fs.remove(bmadDir);
808
944
  }
809
945
 
810
946
  // Clean up IDE configurations
811
- await this.ideManager.cleanup(path.resolve(directory));
947
+ await this.ideManager.cleanup(projectDir);
812
948
 
813
949
  return { success: true };
814
950
  }
@@ -986,7 +1122,7 @@ class Installer {
986
1122
  const targetPath = path.join(agentsDir, fileName);
987
1123
 
988
1124
  if (await fs.pathExists(sourcePath)) {
989
- await fs.copy(sourcePath, targetPath);
1125
+ await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
990
1126
  this.installedFiles.push(targetPath);
991
1127
  }
992
1128
  }
@@ -1002,7 +1138,7 @@ class Installer {
1002
1138
  const targetPath = path.join(tasksDir, fileName);
1003
1139
 
1004
1140
  if (await fs.pathExists(sourcePath)) {
1005
- await fs.copy(sourcePath, targetPath);
1141
+ await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
1006
1142
  this.installedFiles.push(targetPath);
1007
1143
  }
1008
1144
  }
@@ -1018,7 +1154,7 @@ class Installer {
1018
1154
  const targetPath = path.join(toolsDir, fileName);
1019
1155
 
1020
1156
  if (await fs.pathExists(sourcePath)) {
1021
- await fs.copy(sourcePath, targetPath);
1157
+ await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
1022
1158
  this.installedFiles.push(targetPath);
1023
1159
  }
1024
1160
  }
@@ -1034,7 +1170,7 @@ class Installer {
1034
1170
  const targetPath = path.join(templatesDir, fileName);
1035
1171
 
1036
1172
  if (await fs.pathExists(sourcePath)) {
1037
- await fs.copy(sourcePath, targetPath);
1173
+ await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath, this.bmadFolderName || 'bmad');
1038
1174
  this.installedFiles.push(targetPath);
1039
1175
  }
1040
1176
  }
@@ -1049,7 +1185,7 @@ class Installer {
1049
1185
  await fs.ensureDir(path.dirname(targetPath));
1050
1186
 
1051
1187
  if (await fs.pathExists(dataPath)) {
1052
- await fs.copy(dataPath, targetPath);
1188
+ await this.copyFileWithPlaceholderReplacement(dataPath, targetPath, this.bmadFolderName || 'bmad');
1053
1189
  this.installedFiles.push(targetPath);
1054
1190
  }
1055
1191
  }
@@ -1109,9 +1245,8 @@ class Installer {
1109
1245
  }
1110
1246
  }
1111
1247
 
1112
- // Copy the file
1113
- await fs.ensureDir(path.dirname(targetFile));
1114
- await fs.copy(sourceFile, targetFile, { overwrite: true });
1248
+ // Copy the file with placeholder replacement
1249
+ await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile, this.bmadFolderName || 'bmad');
1115
1250
 
1116
1251
  // Track the installed file
1117
1252
  this.installedFiles.push(targetFile);
@@ -1182,7 +1317,7 @@ class Installer {
1182
1317
  if (!(await fs.pathExists(customizePath))) {
1183
1318
  const genericTemplatePath = getSourcePath('utility', 'templates', 'agent.customize.template.yaml');
1184
1319
  if (await fs.pathExists(genericTemplatePath)) {
1185
- await fs.copy(genericTemplatePath, customizePath);
1320
+ await this.copyFileWithPlaceholderReplacement(genericTemplatePath, customizePath, this.bmadFolderName || 'bmad');
1186
1321
  console.log(chalk.dim(` Created customize: ${moduleName}-${agentName}.customize.yaml`));
1187
1322
  }
1188
1323
  }
@@ -1417,7 +1552,7 @@ class Installer {
1417
1552
 
1418
1553
  try {
1419
1554
  const projectDir = path.resolve(config.directory);
1420
- const bmadDir = path.join(projectDir, 'bmad');
1555
+ const bmadDir = await this.findBmadDir(projectDir);
1421
1556
 
1422
1557
  // Check if bmad directory exists
1423
1558
  if (!(await fs.pathExists(bmadDir))) {
@@ -1548,7 +1683,7 @@ class Installer {
1548
1683
 
1549
1684
  try {
1550
1685
  const projectDir = path.resolve(config.directory);
1551
- const bmadDir = path.join(projectDir, 'bmad');
1686
+ const bmadDir = await this.findBmadDir(projectDir);
1552
1687
 
1553
1688
  // Check if bmad directory exists
1554
1689
  if (!(await fs.pathExists(bmadDir))) {
@@ -2097,7 +2232,7 @@ class Installer {
2097
2232
  const targetDocPath = path.join(docsDir, `${ide}-instructions.md`);
2098
2233
 
2099
2234
  if (await fs.pathExists(sourceDocPath)) {
2100
- await fs.copy(sourceDocPath, targetDocPath, { overwrite: true });
2235
+ await this.copyFileWithPlaceholderReplacement(sourceDocPath, targetDocPath, this.bmadFolderName || 'bmad');
2101
2236
  }
2102
2237
  }
2103
2238
  }
@@ -34,10 +34,12 @@ class ManifestGenerator {
34
34
 
35
35
  // Store modules list (all modules including preserved ones)
36
36
  const preservedModules = options.preservedModules || [];
37
- this.modules = ['core', ...selectedModules, ...preservedModules];
38
- this.updatedModules = ['core', ...selectedModules]; // Only these get rescanned
37
+ // Deduplicate modules list to prevent duplicates
38
+ this.modules = [...new Set(['core', ...selectedModules, ...preservedModules])];
39
+ this.updatedModules = [...new Set(['core', ...selectedModules])]; // Only these get rescanned
39
40
  this.preservedModules = preservedModules; // These stay as-is in CSVs
40
41
  this.bmadDir = bmadDir;
42
+ this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '.bmad' or 'bmad')
41
43
  this.allInstalledFiles = installedFiles;
42
44
 
43
45
  if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
@@ -91,15 +93,8 @@ class ManifestGenerator {
91
93
  async collectWorkflows(selectedModules) {
92
94
  this.workflows = [];
93
95
 
94
- // Get core workflows from installed bmad directory
95
- const corePath = path.join(this.bmadDir, 'core');
96
- if (await fs.pathExists(corePath)) {
97
- const coreWorkflows = await this.getWorkflowsFromPath(corePath, 'core');
98
- this.workflows.push(...coreWorkflows);
99
- }
100
-
101
- // Get module workflows from installed bmad directory
102
- for (const moduleName of selectedModules) {
96
+ // Use updatedModules which already includes deduplicated 'core' + selectedModules
97
+ for (const moduleName of this.updatedModules) {
103
98
  const modulePath = path.join(this.bmadDir, moduleName);
104
99
 
105
100
  if (await fs.pathExists(modulePath)) {
@@ -146,8 +141,8 @@ class ManifestGenerator {
146
141
  // Build relative path for installation
147
142
  const installPath =
148
143
  moduleName === 'core'
149
- ? `bmad/core/workflows/${relativePath}/workflow.yaml`
150
- : `bmad/${moduleName}/workflows/${relativePath}/workflow.yaml`;
144
+ ? `${this.bmadFolderName}/core/workflows/${relativePath}/workflow.yaml`
145
+ : `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/workflow.yaml`;
151
146
 
152
147
  // Check for standalone property (default: false)
153
148
  const standalone = workflow.standalone === true;
@@ -186,15 +181,8 @@ class ManifestGenerator {
186
181
  async collectAgents(selectedModules) {
187
182
  this.agents = [];
188
183
 
189
- // Get core agents from installed bmad directory
190
- const coreAgentsPath = path.join(this.bmadDir, 'core', 'agents');
191
- if (await fs.pathExists(coreAgentsPath)) {
192
- const coreAgents = await this.getAgentsFromDir(coreAgentsPath, 'core');
193
- this.agents.push(...coreAgents);
194
- }
195
-
196
- // Get module agents from installed bmad directory
197
- for (const moduleName of selectedModules) {
184
+ // Use updatedModules which already includes deduplicated 'core' + selectedModules
185
+ for (const moduleName of this.updatedModules) {
198
186
  const agentsPath = path.join(this.bmadDir, moduleName, 'agents');
199
187
 
200
188
  if (await fs.pathExists(agentsPath)) {
@@ -254,7 +242,8 @@ class ManifestGenerator {
254
242
  const principlesMatch = content.match(/<principles>([\s\S]*?)<\/principles>/);
255
243
 
256
244
  // Build relative path for installation
257
- const installPath = moduleName === 'core' ? `bmad/core/agents/${file}` : `bmad/${moduleName}/agents/${file}`;
245
+ const installPath =
246
+ moduleName === 'core' ? `${this.bmadFolderName}/core/agents/${file}` : `${this.bmadFolderName}/${moduleName}/agents/${file}`;
258
247
 
259
248
  const agentName = file.replace('.md', '');
260
249
 
@@ -300,15 +289,8 @@ class ManifestGenerator {
300
289
  async collectTasks(selectedModules) {
301
290
  this.tasks = [];
302
291
 
303
- // Get core tasks from installed bmad directory
304
- const coreTasksPath = path.join(this.bmadDir, 'core', 'tasks');
305
- if (await fs.pathExists(coreTasksPath)) {
306
- const coreTasks = await this.getTasksFromDir(coreTasksPath, 'core');
307
- this.tasks.push(...coreTasks);
308
- }
309
-
310
- // Get module tasks from installed bmad directory
311
- for (const moduleName of selectedModules) {
292
+ // Use updatedModules which already includes deduplicated 'core' + selectedModules
293
+ for (const moduleName of this.updatedModules) {
312
294
  const tasksPath = path.join(this.bmadDir, moduleName, 'tasks');
313
295
 
314
296
  if (await fs.pathExists(tasksPath)) {
@@ -344,7 +326,8 @@ class ManifestGenerator {
344
326
  const standalone = !!standaloneMatch;
345
327
 
346
328
  // Build relative path for installation
347
- const installPath = moduleName === 'core' ? `bmad/core/tasks/${file}` : `bmad/${moduleName}/tasks/${file}`;
329
+ const installPath =
330
+ moduleName === 'core' ? `${this.bmadFolderName}/core/tasks/${file}` : `${this.bmadFolderName}/${moduleName}/tasks/${file}`;
348
331
 
349
332
  const taskName = file.replace(/\.(xml|md)$/, '');
350
333
  tasks.push({
@@ -376,15 +359,8 @@ class ManifestGenerator {
376
359
  async collectTools(selectedModules) {
377
360
  this.tools = [];
378
361
 
379
- // Get core tools from installed bmad directory
380
- const coreToolsPath = path.join(this.bmadDir, 'core', 'tools');
381
- if (await fs.pathExists(coreToolsPath)) {
382
- const coreTools = await this.getToolsFromDir(coreToolsPath, 'core');
383
- this.tools.push(...coreTools);
384
- }
385
-
386
- // Get module tools from installed bmad directory
387
- for (const moduleName of selectedModules) {
362
+ // Use updatedModules which already includes deduplicated 'core' + selectedModules
363
+ for (const moduleName of this.updatedModules) {
388
364
  const toolsPath = path.join(this.bmadDir, moduleName, 'tools');
389
365
 
390
366
  if (await fs.pathExists(toolsPath)) {
@@ -420,7 +396,8 @@ class ManifestGenerator {
420
396
  const standalone = !!standaloneMatch;
421
397
 
422
398
  // Build relative path for installation
423
- const installPath = moduleName === 'core' ? `bmad/core/tools/${file}` : `bmad/${moduleName}/tools/${file}`;
399
+ const installPath =
400
+ moduleName === 'core' ? `${this.bmadFolderName}/core/tools/${file}` : `${this.bmadFolderName}/${moduleName}/tools/${file}`;
424
401
 
425
402
  const toolName = file.replace(/\.(xml|md)$/, '');
426
403
  tools.push({
@@ -564,26 +541,14 @@ class ManifestGenerator {
564
541
  async writeWorkflowManifest(cfgDir) {
565
542
  const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
566
543
 
567
- // Define expected columns and defaults for schema upgrade
568
- const expectedColumns = ['name', 'description', 'module', 'path', 'standalone'];
569
- const defaultValues = { standalone: 'false' };
570
-
571
- // Get preserved rows from existing CSV (module is column 2, 0-indexed)
572
- const preservedRows = await this.getPreservedCsvRows(csvPath, 2, expectedColumns, defaultValues);
573
-
574
544
  // Create CSV header with standalone column
575
545
  let csv = 'name,description,module,path,standalone\n';
576
546
 
577
- // Add new rows for updated modules
547
+ // Add all workflows
578
548
  for (const workflow of this.workflows) {
579
549
  csv += `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}","${workflow.standalone}"\n`;
580
550
  }
581
551
 
582
- // Add preserved rows for modules we didn't update
583
- for (const row of preservedRows) {
584
- csv += row + '\n';
585
- }
586
-
587
552
  await fs.writeFile(csvPath, csv);
588
553
  return csvPath;
589
554
  }
@@ -595,36 +560,14 @@ class ManifestGenerator {
595
560
  async writeAgentManifest(cfgDir) {
596
561
  const csvPath = path.join(cfgDir, 'agent-manifest.csv');
597
562
 
598
- // Define expected columns (no schema changes for agents currently)
599
- const expectedColumns = [
600
- 'name',
601
- 'displayName',
602
- 'title',
603
- 'icon',
604
- 'role',
605
- 'identity',
606
- 'communicationStyle',
607
- 'principles',
608
- 'module',
609
- 'path',
610
- ];
611
-
612
- // Get preserved rows from existing CSV (module is column 8, 0-indexed)
613
- const preservedRows = await this.getPreservedCsvRows(csvPath, 8, expectedColumns);
614
-
615
563
  // Create CSV header with persona fields
616
564
  let csv = 'name,displayName,title,icon,role,identity,communicationStyle,principles,module,path\n';
617
565
 
618
- // Add new rows for updated modules
566
+ // Add all agents
619
567
  for (const agent of this.agents) {
620
568
  csv += `"${agent.name}","${agent.displayName}","${agent.title}","${agent.icon}","${agent.role}","${agent.identity}","${agent.communicationStyle}","${agent.principles}","${agent.module}","${agent.path}"\n`;
621
569
  }
622
570
 
623
- // Add preserved rows for modules we didn't update
624
- for (const row of preservedRows) {
625
- csv += row + '\n';
626
- }
627
-
628
571
  await fs.writeFile(csvPath, csv);
629
572
  return csvPath;
630
573
  }
@@ -636,26 +579,14 @@ class ManifestGenerator {
636
579
  async writeTaskManifest(cfgDir) {
637
580
  const csvPath = path.join(cfgDir, 'task-manifest.csv');
638
581
 
639
- // Define expected columns and defaults for schema upgrade
640
- const expectedColumns = ['name', 'displayName', 'description', 'module', 'path', 'standalone'];
641
- const defaultValues = { standalone: 'false' };
642
-
643
- // Get preserved rows from existing CSV (module is column 3, 0-indexed)
644
- const preservedRows = await this.getPreservedCsvRows(csvPath, 3, expectedColumns, defaultValues);
645
-
646
582
  // Create CSV header with standalone column
647
583
  let csv = 'name,displayName,description,module,path,standalone\n';
648
584
 
649
- // Add new rows for updated modules
585
+ // Add all tasks
650
586
  for (const task of this.tasks) {
651
587
  csv += `"${task.name}","${task.displayName}","${task.description}","${task.module}","${task.path}","${task.standalone}"\n`;
652
588
  }
653
589
 
654
- // Add preserved rows for modules we didn't update
655
- for (const row of preservedRows) {
656
- csv += row + '\n';
657
- }
658
-
659
590
  await fs.writeFile(csvPath, csv);
660
591
  return csvPath;
661
592
  }
@@ -667,26 +598,14 @@ class ManifestGenerator {
667
598
  async writeToolManifest(cfgDir) {
668
599
  const csvPath = path.join(cfgDir, 'tool-manifest.csv');
669
600
 
670
- // Define expected columns and defaults for schema upgrade
671
- const expectedColumns = ['name', 'displayName', 'description', 'module', 'path', 'standalone'];
672
- const defaultValues = { standalone: 'false' };
673
-
674
- // Get preserved rows from existing CSV (module is column 3, 0-indexed)
675
- const preservedRows = await this.getPreservedCsvRows(csvPath, 3, expectedColumns, defaultValues);
676
-
677
601
  // Create CSV header with standalone column
678
602
  let csv = 'name,displayName,description,module,path,standalone\n';
679
603
 
680
- // Add new rows for updated modules
604
+ // Add all tools
681
605
  for (const tool of this.tools) {
682
606
  csv += `"${tool.name}","${tool.displayName}","${tool.description}","${tool.module}","${tool.path}","${tool.standalone}"\n`;
683
607
  }
684
608
 
685
- // Add preserved rows for modules we didn't update
686
- for (const row of preservedRows) {
687
- csv += row + '\n';
688
- }
689
-
690
609
  await fs.writeFile(csvPath, csv);
691
610
  return csvPath;
692
611
  }
@@ -714,9 +633,6 @@ class ManifestGenerator {
714
633
  async writeFilesManifest(cfgDir) {
715
634
  const csvPath = path.join(cfgDir, 'files-manifest.csv');
716
635
 
717
- // Get preserved rows from existing CSV (module is column 2, 0-indexed)
718
- const preservedRows = await this.getPreservedCsvRows(csvPath, 2);
719
-
720
636
  // Create CSV header with hash column
721
637
  let csv = 'type,name,module,path,hash\n';
722
638
 
@@ -747,7 +663,7 @@ class ManifestGenerator {
747
663
  } else {
748
664
  // Fallback: use the collected workflows/agents/tasks
749
665
  for (const file of this.files) {
750
- const filePath = path.join(this.bmadDir, file.path.replace('bmad/', ''));
666
+ const filePath = path.join(this.bmadDir, file.path.replace(this.bmadFolderName + '/', ''));
751
667
  const hash = await this.calculateFileHash(filePath);
752
668
  allFiles.push({
753
669
  ...file,
@@ -763,16 +679,11 @@ class ManifestGenerator {
763
679
  return a.name.localeCompare(b.name);
764
680
  });
765
681
 
766
- // Add rows for updated modules
682
+ // Add all files
767
683
  for (const file of allFiles) {
768
684
  csv += `"${file.type}","${file.name}","${file.module}","${file.path}","${file.hash}"\n`;
769
685
  }
770
686
 
771
- // Add preserved rows for modules we didn't update
772
- for (const row of preservedRows) {
773
- csv += row + '\n';
774
- }
775
-
776
687
  await fs.writeFile(csvPath, csv);
777
688
  return csvPath;
778
689
  }