bmad-method 5.1.2 → 6.0.0-alpha.0

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 (579) hide show
  1. package/.github/FUNDING.yaml +2 -2
  2. package/.github/ISSUE_TEMPLATE/config.yaml +1 -0
  3. package/.github/ISSUE_TEMPLATE/idea_submission.md +109 -0
  4. package/.github/workflows/discord.yaml +1 -10
  5. package/.github/workflows/format-check.yaml +3 -2
  6. package/.github/workflows/manual-release.yaml +2 -2
  7. package/.nvmrc +1 -0
  8. package/.vscode/settings.json +34 -9
  9. package/CHANGELOG.md +211 -577
  10. package/CONTRIBUTING.md +130 -60
  11. package/LICENSE +6 -1
  12. package/docs/codebase-flattener.md +19 -0
  13. package/docs/ide-info/auggie.md +31 -0
  14. package/docs/ide-info/claude-code.md +25 -0
  15. package/docs/ide-info/cline.md +31 -0
  16. package/docs/ide-info/codex.md +32 -0
  17. package/docs/ide-info/crush.md +30 -0
  18. package/docs/ide-info/cursor.md +25 -0
  19. package/docs/ide-info/gemini.md +25 -0
  20. package/docs/ide-info/github-copilot.md +26 -0
  21. package/docs/ide-info/iflow.md +33 -0
  22. package/docs/ide-info/kilo.md +24 -0
  23. package/docs/ide-info/qwen.md +25 -0
  24. package/docs/ide-info/roo.md +27 -0
  25. package/docs/ide-info/trae.md +25 -0
  26. package/docs/ide-info/windsurf.md +22 -0
  27. package/docs/installers-bundlers/ide-injections.md +196 -0
  28. package/docs/installers-bundlers/installers-modules-platforms-reference.md +355 -0
  29. package/docs/installers-bundlers/web-bundler-usage.md +54 -0
  30. package/eslint.config.mjs +17 -7
  31. package/package.json +26 -35
  32. package/prettier.config.mjs +1 -1
  33. package/readme.md +216 -0
  34. package/src/core/_module-installer/install-menu-config.yaml +24 -0
  35. package/src/core/_module-installer/installer.js +68 -0
  36. package/src/core/agents/bmad-master.md +27 -0
  37. package/src/core/agents/bmad-web-orchestrator.md +71 -0
  38. package/src/core/tasks/adv-elicit-methods.csv +39 -0
  39. package/src/core/tasks/adv-elicit.md +109 -0
  40. package/src/core/tasks/index-docs.md +69 -0
  41. package/src/core/tasks/shard-doc.md +57 -0
  42. package/src/core/tasks/validate-workflow.md +92 -0
  43. package/src/core/tasks/workflow.md +141 -0
  44. package/src/core/workflows/bmad-init/instructions.md +79 -0
  45. package/src/core/workflows/bmad-init/workflow.yaml +24 -0
  46. package/src/core/workflows/party-mode/instructions.md +181 -0
  47. package/src/core/workflows/party-mode/workflow.yaml +24 -0
  48. package/src/modules/bmb/_module-installer/install-menu-config.yaml +16 -0
  49. package/src/modules/bmb/agents/bmad-builder.md +30 -0
  50. package/src/modules/bmb/workflows/convert-legacy/README.md +262 -0
  51. package/src/modules/bmb/workflows/convert-legacy/checklist.md +204 -0
  52. package/src/modules/bmb/workflows/convert-legacy/instructions.md +328 -0
  53. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +35 -0
  54. package/src/modules/bmb/workflows/create-agent/README.md +268 -0
  55. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +412 -0
  56. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +757 -0
  57. package/src/modules/bmb/workflows/create-agent/agent-types.md +177 -0
  58. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +174 -0
  59. package/src/modules/bmb/workflows/create-agent/checklist.md +134 -0
  60. package/src/modules/bmb/workflows/create-agent/communication-styles.md +240 -0
  61. package/src/modules/bmb/workflows/create-agent/instructions.md +340 -0
  62. package/src/modules/bmb/workflows/create-agent/workflow.yaml +39 -0
  63. package/src/modules/bmb/workflows/create-module/README.md +218 -0
  64. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +137 -0
  65. package/src/modules/bmb/workflows/create-module/checklist.md +245 -0
  66. package/src/modules/bmb/workflows/create-module/installer-templates/install-module-config.yaml +132 -0
  67. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +231 -0
  68. package/src/modules/bmb/workflows/create-module/instructions.md +509 -0
  69. package/src/modules/bmb/workflows/create-module/module-structure.md +310 -0
  70. package/src/modules/bmb/workflows/create-module/workflow.yaml +47 -0
  71. package/src/modules/bmb/workflows/create-workflow/README.md +216 -0
  72. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
  73. package/src/modules/bmb/workflows/create-workflow/checklist.md +72 -0
  74. package/src/modules/bmb/workflows/create-workflow/instructions.md +267 -0
  75. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +456 -0
  76. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +24 -0
  77. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +12 -0
  78. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +9 -0
  79. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +35 -0
  80. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +42 -0
  81. package/src/modules/bmb/workflows/edit-workflow/README.md +63 -0
  82. package/src/modules/bmb/workflows/edit-workflow/checklist.md +70 -0
  83. package/src/modules/bmb/workflows/edit-workflow/instructions.md +170 -0
  84. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +34 -0
  85. package/src/modules/bmb/workflows/module-brief/README.md +264 -0
  86. package/src/modules/bmb/workflows/module-brief/checklist.md +116 -0
  87. package/src/modules/bmb/workflows/module-brief/instructions.md +265 -0
  88. package/src/modules/bmb/workflows/module-brief/template.md +275 -0
  89. package/src/modules/bmb/workflows/module-brief/workflow.yaml +30 -0
  90. package/src/modules/bmb/workflows/redoc/README.md +87 -0
  91. package/src/modules/bmb/workflows/redoc/checklist.md +99 -0
  92. package/src/modules/bmb/workflows/redoc/instructions.md +255 -0
  93. package/src/modules/bmb/workflows/redoc/workflow.yaml +33 -0
  94. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +1 -0
  95. package/src/modules/bmm/_module-installer/assets/technical-decisions-template.md +30 -0
  96. package/src/modules/bmm/_module-installer/install-menu-config.yaml +49 -0
  97. package/src/modules/bmm/_module-installer/installer.js +131 -0
  98. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +35 -0
  99. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +32 -0
  100. package/src/modules/bmm/agents/analyst.md +26 -0
  101. package/src/modules/bmm/agents/architect.md +29 -0
  102. package/src/modules/bmm/agents/dev.md +61 -0
  103. package/src/modules/bmm/agents/game-architect.md +26 -0
  104. package/src/modules/bmm/agents/game-designer.md +27 -0
  105. package/src/modules/bmm/agents/game-dev.md +28 -0
  106. package/src/modules/bmm/agents/pm.md +26 -0
  107. package/src/modules/bmm/agents/po.md +25 -0
  108. package/src/modules/bmm/agents/sm.md +29 -0
  109. package/src/modules/bmm/agents/tea.md +32 -0
  110. package/src/modules/bmm/agents/ux-expert.md +24 -0
  111. package/src/modules/bmm/sub-modules/claude-code/config.yaml +5 -0
  112. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +242 -0
  113. package/src/modules/bmm/sub-modules/claude-code/readme.md +87 -0
  114. package/src/modules/bmm/sub-modules/claude-code/sub-agents/api-documenter.md +85 -0
  115. package/src/modules/bmm/sub-modules/claude-code/sub-agents/codebase-analyzer.md +64 -0
  116. package/src/modules/bmm/sub-modules/claude-code/sub-agents/data-analyst.md +84 -0
  117. package/src/modules/bmm/sub-modules/claude-code/sub-agents/dependency-mapper.md +67 -0
  118. package/src/modules/bmm/sub-modules/claude-code/sub-agents/document-reviewer.md +85 -0
  119. package/src/modules/bmm/sub-modules/claude-code/sub-agents/epic-optimizer.md +66 -0
  120. package/src/modules/bmm/sub-modules/claude-code/sub-agents/market-researcher.md +34 -0
  121. package/src/modules/bmm/sub-modules/claude-code/sub-agents/pattern-detector.md +67 -0
  122. package/src/modules/bmm/sub-modules/claude-code/sub-agents/requirements-analyst.md +61 -0
  123. package/src/modules/bmm/sub-modules/claude-code/sub-agents/tech-debt-auditor.md +89 -0
  124. package/src/modules/bmm/sub-modules/claude-code/sub-agents/technical-decisions-curator.md +146 -0
  125. package/src/modules/bmm/sub-modules/claude-code/sub-agents/technical-evaluator.md +51 -0
  126. package/src/modules/bmm/sub-modules/claude-code/sub-agents/test-coverage-analyzer.md +91 -0
  127. package/src/modules/bmm/sub-modules/claude-code/sub-agents/trend-spotter.md +99 -0
  128. package/src/modules/bmm/sub-modules/claude-code/sub-agents/user-journey-mapper.md +101 -0
  129. package/src/modules/bmm/sub-modules/claude-code/sub-agents/user-researcher.md +56 -0
  130. package/src/modules/bmm/tasks/daily-standup.md +91 -0
  131. package/src/modules/bmm/tasks/retrospective.md +110 -0
  132. package/src/modules/bmm/teams/team-all.yaml +7 -0
  133. package/src/modules/bmm/teams/team-dev.yaml +14 -0
  134. package/src/modules/bmm/teams/team-gamedev.yaml +9 -0
  135. package/src/modules/bmm/testarch/atdd.md +40 -0
  136. package/src/modules/bmm/testarch/automate.md +38 -0
  137. package/src/modules/bmm/testarch/ci.md +39 -0
  138. package/src/modules/bmm/testarch/framework.md +41 -0
  139. package/src/modules/bmm/testarch/nfr-assess.md +38 -0
  140. package/src/modules/bmm/testarch/risk-profile.md +38 -0
  141. package/src/modules/bmm/testarch/tea-commands.csv +11 -0
  142. package/src/modules/bmm/testarch/tea-gate.md +38 -0
  143. package/src/modules/bmm/testarch/tea-knowledge.md +275 -0
  144. package/src/modules/bmm/testarch/test-design.md +39 -0
  145. package/{bmad-core/data → src/modules/bmm/testarch}/test-levels-framework.md +2 -0
  146. package/{bmad-core/data → src/modules/bmm/testarch}/test-priorities-matrix.md +2 -0
  147. package/src/modules/bmm/testarch/trace-requirements.md +38 -0
  148. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-brain-methods.csv +26 -0
  149. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-context.md +115 -0
  150. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +47 -0
  151. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +22 -0
  152. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +38 -0
  153. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +25 -0
  154. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +21 -0
  155. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +221 -0
  156. package/src/modules/bmm/workflows/1-analysis/game-brief/checklist.md +128 -0
  157. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +517 -0
  158. package/src/modules/bmm/workflows/1-analysis/game-brief/template.md +205 -0
  159. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +34 -0
  160. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +180 -0
  161. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +115 -0
  162. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +353 -0
  163. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +165 -0
  164. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +33 -0
  165. package/src/modules/bmm/workflows/1-analysis/research/README.md +454 -0
  166. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +202 -0
  167. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +114 -0
  168. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +259 -0
  169. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +190 -0
  170. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +337 -0
  171. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +107 -0
  172. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +329 -0
  173. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +370 -0
  174. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +553 -0
  175. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +91 -0
  176. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +442 -0
  177. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +94 -0
  178. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +311 -0
  179. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +210 -0
  180. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +149 -0
  181. package/src/modules/bmm/workflows/2-plan/README.md +203 -0
  182. package/src/modules/bmm/workflows/2-plan/checklist.md +369 -0
  183. package/src/modules/bmm/workflows/2-plan/gdd/README.md +222 -0
  184. package/src/modules/bmm/workflows/2-plan/gdd/game-types/action-platformer.md +45 -0
  185. package/src/modules/bmm/workflows/2-plan/gdd/game-types/adventure.md +84 -0
  186. package/src/modules/bmm/workflows/2-plan/gdd/game-types/card-game.md +76 -0
  187. package/src/modules/bmm/workflows/2-plan/gdd/game-types/fighting.md +89 -0
  188. package/src/modules/bmm/workflows/2-plan/gdd/game-types/horror.md +86 -0
  189. package/src/modules/bmm/workflows/2-plan/gdd/game-types/idle-incremental.md +78 -0
  190. package/src/modules/bmm/workflows/2-plan/gdd/game-types/metroidvania.md +87 -0
  191. package/src/modules/bmm/workflows/2-plan/gdd/game-types/moba.md +74 -0
  192. package/src/modules/bmm/workflows/2-plan/gdd/game-types/party-game.md +79 -0
  193. package/src/modules/bmm/workflows/2-plan/gdd/game-types/puzzle.md +58 -0
  194. package/src/modules/bmm/workflows/2-plan/gdd/game-types/racing.md +88 -0
  195. package/src/modules/bmm/workflows/2-plan/gdd/game-types/rhythm.md +79 -0
  196. package/src/modules/bmm/workflows/2-plan/gdd/game-types/roguelike.md +69 -0
  197. package/src/modules/bmm/workflows/2-plan/gdd/game-types/rpg.md +70 -0
  198. package/src/modules/bmm/workflows/2-plan/gdd/game-types/sandbox.md +79 -0
  199. package/src/modules/bmm/workflows/2-plan/gdd/game-types/shooter.md +62 -0
  200. package/src/modules/bmm/workflows/2-plan/gdd/game-types/simulation.md +73 -0
  201. package/src/modules/bmm/workflows/2-plan/gdd/game-types/sports.md +75 -0
  202. package/src/modules/bmm/workflows/2-plan/gdd/game-types/strategy.md +71 -0
  203. package/src/modules/bmm/workflows/2-plan/gdd/game-types/survival.md +79 -0
  204. package/src/modules/bmm/workflows/2-plan/gdd/game-types/text-based.md +91 -0
  205. package/src/modules/bmm/workflows/2-plan/gdd/game-types/tower-defense.md +79 -0
  206. package/src/modules/bmm/workflows/2-plan/gdd/game-types/turn-based-tactics.md +88 -0
  207. package/src/modules/bmm/workflows/2-plan/gdd/game-types/visual-novel.md +89 -0
  208. package/src/modules/bmm/workflows/2-plan/gdd/game-types.csv +25 -0
  209. package/src/modules/bmm/workflows/2-plan/gdd/gdd-template.md +159 -0
  210. package/src/modules/bmm/workflows/2-plan/gdd/instructions-gdd.md +480 -0
  211. package/src/modules/bmm/workflows/2-plan/instructions-router.md +222 -0
  212. package/src/modules/bmm/workflows/2-plan/narrative/instructions-narrative.md +517 -0
  213. package/src/modules/bmm/workflows/2-plan/narrative/narrative-template.md +195 -0
  214. package/src/modules/bmm/workflows/2-plan/prd/analysis-template.md +53 -0
  215. package/src/modules/bmm/workflows/2-plan/prd/epics-template.md +18 -0
  216. package/src/modules/bmm/workflows/2-plan/prd/instructions-lg.md +267 -0
  217. package/src/modules/bmm/workflows/2-plan/prd/instructions-med.md +251 -0
  218. package/src/modules/bmm/workflows/2-plan/prd/prd-template.md +73 -0
  219. package/src/modules/bmm/workflows/2-plan/tech-spec/instructions-sm.md +137 -0
  220. package/src/modules/bmm/workflows/2-plan/tech-spec/tech-spec-template.md +59 -0
  221. package/src/modules/bmm/workflows/2-plan/ux/instructions-ux.md +360 -0
  222. package/src/modules/bmm/workflows/2-plan/ux/ux-spec-template.md +162 -0
  223. package/src/modules/bmm/workflows/2-plan/workflow.yaml +60 -0
  224. package/src/modules/bmm/workflows/3-solutioning/ADR-template.md +74 -0
  225. package/src/modules/bmm/workflows/3-solutioning/README.md +565 -0
  226. package/src/modules/bmm/workflows/3-solutioning/checklist.md +170 -0
  227. package/src/modules/bmm/workflows/3-solutioning/instructions.md +661 -0
  228. package/src/modules/bmm/workflows/3-solutioning/project-types/backend-questions.md +490 -0
  229. package/src/modules/bmm/workflows/3-solutioning/project-types/cli-questions.md +337 -0
  230. package/src/modules/bmm/workflows/3-solutioning/project-types/data-questions.md +472 -0
  231. package/src/modules/bmm/workflows/3-solutioning/project-types/desktop-questions.md +299 -0
  232. package/src/modules/bmm/workflows/3-solutioning/project-types/embedded-questions.md +118 -0
  233. package/src/modules/bmm/workflows/3-solutioning/project-types/extension-questions.md +374 -0
  234. package/src/modules/bmm/workflows/3-solutioning/project-types/game-questions.md +133 -0
  235. package/src/modules/bmm/workflows/3-solutioning/project-types/infra-questions.md +484 -0
  236. package/src/modules/bmm/workflows/3-solutioning/project-types/library-questions.md +146 -0
  237. package/src/modules/bmm/workflows/3-solutioning/project-types/mobile-questions.md +110 -0
  238. package/src/modules/bmm/workflows/3-solutioning/project-types/project-types.csv +12 -0
  239. package/src/modules/bmm/workflows/3-solutioning/project-types/web-questions.md +136 -0
  240. package/src/modules/bmm/workflows/3-solutioning/tech-spec/README.md +195 -0
  241. package/src/modules/bmm/workflows/3-solutioning/tech-spec/checklist.md +17 -0
  242. package/src/modules/bmm/workflows/3-solutioning/tech-spec/instructions.md +73 -0
  243. package/src/modules/bmm/workflows/3-solutioning/tech-spec/template.md +76 -0
  244. package/src/modules/bmm/workflows/3-solutioning/tech-spec/workflow.yaml +51 -0
  245. package/src/modules/bmm/workflows/3-solutioning/templates/backend-service-architecture.md +66 -0
  246. package/src/modules/bmm/workflows/3-solutioning/templates/cli-tool-architecture.md +66 -0
  247. package/src/modules/bmm/workflows/3-solutioning/templates/data-pipeline-architecture.md +66 -0
  248. package/src/modules/bmm/workflows/3-solutioning/templates/desktop-app-architecture.md +66 -0
  249. package/src/modules/bmm/workflows/3-solutioning/templates/embedded-firmware-architecture.md +66 -0
  250. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-architecture.md +244 -0
  251. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-godot-guide.md +428 -0
  252. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-unity-guide.md +333 -0
  253. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-web-guide.md +528 -0
  254. package/src/modules/bmm/workflows/3-solutioning/templates/infrastructure-architecture.md +66 -0
  255. package/src/modules/bmm/workflows/3-solutioning/templates/library-package-architecture.md +66 -0
  256. package/src/modules/bmm/workflows/3-solutioning/templates/mobile-app-architecture.md +66 -0
  257. package/src/modules/bmm/workflows/3-solutioning/templates/registry.csv +172 -0
  258. package/src/modules/bmm/workflows/3-solutioning/templates/web-api-architecture.md +66 -0
  259. package/src/modules/bmm/workflows/3-solutioning/templates/web-fullstack-architecture.md +277 -0
  260. package/src/modules/bmm/workflows/3-solutioning/workflow.yaml +65 -0
  261. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
  262. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +190 -0
  263. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +35 -0
  264. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +42 -0
  265. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +39 -0
  266. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +81 -0
  267. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +57 -0
  268. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +72 -0
  269. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +84 -0
  270. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
  271. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +87 -0
  272. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +53 -0
  273. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +391 -0
  274. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +41 -0
  275. package/src/modules/bmm/workflows/4-implementation/review-story/README.md +72 -0
  276. package/src/modules/bmm/workflows/4-implementation/review-story/backlog_template.md +12 -0
  277. package/src/modules/bmm/workflows/4-implementation/review-story/checklist.md +22 -0
  278. package/src/modules/bmm/workflows/4-implementation/review-story/instructions.md +176 -0
  279. package/src/modules/bmm/workflows/4-implementation/review-story/workflow.yaml +99 -0
  280. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +234 -0
  281. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +16 -0
  282. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +34 -0
  283. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +76 -0
  284. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +56 -0
  285. package/src/modules/cis/_module-installer/install-menu-config.yaml +14 -0
  286. package/src/modules/cis/_module-installer/installer.js +92 -0
  287. package/src/modules/cis/agents/README.md +104 -0
  288. package/src/modules/cis/agents/brainstorming-coach.md +24 -0
  289. package/src/modules/cis/agents/creative-problem-solver.md +24 -0
  290. package/src/modules/cis/agents/design-thinking-coach.md +24 -0
  291. package/src/modules/cis/agents/innovation-strategist.md +24 -0
  292. package/src/modules/cis/agents/storyteller.md +24 -0
  293. package/src/modules/cis/readme.md +86 -0
  294. package/src/modules/cis/teams/creative-squad.yaml +6 -0
  295. package/src/modules/cis/workflows/README.md +67 -0
  296. package/src/modules/cis/workflows/brainstorming/README.md +271 -0
  297. package/src/modules/cis/workflows/brainstorming/brain-methods.csv +36 -0
  298. package/src/modules/cis/workflows/brainstorming/instructions.md +310 -0
  299. package/src/modules/cis/workflows/brainstorming/template.md +102 -0
  300. package/src/modules/cis/workflows/brainstorming/workflow.yaml +30 -0
  301. package/src/modules/cis/workflows/design-thinking/README.md +56 -0
  302. package/src/modules/cis/workflows/design-thinking/design-methods.csv +31 -0
  303. package/src/modules/cis/workflows/design-thinking/instructions.md +200 -0
  304. package/src/modules/cis/workflows/design-thinking/template.md +111 -0
  305. package/src/modules/cis/workflows/design-thinking/workflow.yaml +29 -0
  306. package/src/modules/cis/workflows/innovation-strategy/README.md +56 -0
  307. package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
  308. package/src/modules/cis/workflows/innovation-strategy/instructions.md +274 -0
  309. package/src/modules/cis/workflows/innovation-strategy/template.md +189 -0
  310. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +29 -0
  311. package/src/modules/cis/workflows/problem-solving/README.md +56 -0
  312. package/src/modules/cis/workflows/problem-solving/instructions.md +250 -0
  313. package/src/modules/cis/workflows/problem-solving/solving-methods.csv +31 -0
  314. package/src/modules/cis/workflows/problem-solving/template.md +165 -0
  315. package/src/modules/cis/workflows/problem-solving/workflow.yaml +29 -0
  316. package/src/modules/cis/workflows/storytelling/README.md +58 -0
  317. package/src/modules/cis/workflows/storytelling/instructions.md +275 -0
  318. package/src/modules/cis/workflows/storytelling/story-types.csv +26 -0
  319. package/src/modules/cis/workflows/storytelling/template.md +113 -0
  320. package/src/modules/cis/workflows/storytelling/workflow.yaml +29 -0
  321. package/src/utility/models/agent-activation-ide.xml +51 -0
  322. package/src/utility/models/agent-config-template.md +23 -0
  323. package/tools/cli/bmad-cli.js +42 -0
  324. package/tools/cli/bundlers/bundle-web.js +157 -0
  325. package/tools/cli/bundlers/test-analyst.js +28 -0
  326. package/tools/cli/bundlers/test-bundler.js +118 -0
  327. package/tools/cli/bundlers/web-bundler.js +880 -0
  328. package/tools/cli/commands/install.js +41 -0
  329. package/tools/cli/commands/list.js +28 -0
  330. package/tools/cli/commands/status.js +47 -0
  331. package/tools/cli/commands/uninstall.js +44 -0
  332. package/tools/cli/commands/update.js +28 -0
  333. package/tools/cli/installers/lib/core/config-collector.js +383 -0
  334. package/tools/cli/installers/lib/core/dependency-resolver.js +721 -0
  335. package/tools/cli/installers/lib/core/detector.js +208 -0
  336. package/tools/cli/installers/lib/core/installer.js +1070 -0
  337. package/tools/cli/installers/lib/core/manifest-generator.js +385 -0
  338. package/tools/cli/installers/lib/core/manifest.js +484 -0
  339. package/tools/cli/installers/lib/ide/_base-ide.js +281 -0
  340. package/tools/cli/installers/lib/ide/auggie.js +271 -0
  341. package/tools/cli/installers/lib/ide/claude-code.js +625 -0
  342. package/tools/cli/installers/lib/ide/cline.js +301 -0
  343. package/tools/cli/installers/lib/ide/codex.js +267 -0
  344. package/tools/cli/installers/lib/ide/crush.js +204 -0
  345. package/tools/cli/installers/lib/ide/cursor.js +224 -0
  346. package/tools/cli/installers/lib/ide/gemini.js +160 -0
  347. package/tools/cli/installers/lib/ide/github-copilot.js +289 -0
  348. package/tools/cli/installers/lib/ide/iflow.js +142 -0
  349. package/tools/cli/installers/lib/ide/kilo.js +171 -0
  350. package/tools/cli/installers/lib/ide/manager.js +203 -0
  351. package/tools/cli/installers/lib/ide/qwen.js +188 -0
  352. package/tools/cli/installers/lib/ide/roo.js +288 -0
  353. package/tools/cli/installers/lib/ide/trae.js +182 -0
  354. package/tools/cli/installers/lib/ide/windsurf.js +149 -0
  355. package/tools/cli/installers/lib/ide/workflow-command-generator.js +162 -0
  356. package/tools/cli/installers/lib/ide/workflow-command-template.md +11 -0
  357. package/tools/cli/installers/lib/modules/manager.js +452 -0
  358. package/tools/cli/lib/agent-party-generator.js +206 -0
  359. package/tools/cli/lib/cli-utils.js +208 -0
  360. package/tools/cli/lib/config.js +210 -0
  361. package/tools/cli/lib/file-ops.js +204 -0
  362. package/tools/cli/lib/platform-codes.js +116 -0
  363. package/tools/cli/lib/project-root.js +71 -0
  364. package/tools/cli/lib/replace-project-root.js +239 -0
  365. package/tools/cli/lib/ui.js +516 -0
  366. package/tools/cli/lib/xml-handler.js +183 -0
  367. package/tools/cli/lib/xml-to-markdown.js +82 -0
  368. package/tools/{yaml-format.js → cli/lib/yaml-format.js} +3 -10
  369. package/tools/cli/regenerate-manifests.js +28 -0
  370. package/tools/flattener/ignoreRules.js +2 -6
  371. package/tools/flattener/main.js +31 -121
  372. package/tools/flattener/projectRoot.js +3 -8
  373. package/tools/flattener/stats.helpers.js +8 -35
  374. package/tools/flattener/stats.js +1 -6
  375. package/tools/flattener/test-matrix.js +1 -5
  376. package/tools/platform-codes.yaml +127 -0
  377. package/tools/test-agents/captain-kirk-commander.md +110 -0
  378. package/tools/test-agents/data-operations-android.md +123 -0
  379. package/tools/test-agents/geordi-chief-engineer.md +135 -0
  380. package/tools/test-agents/isabella-martinez-ethicist.md +109 -0
  381. package/tools/test-agents/marcus-thompson-security.md +109 -0
  382. package/tools/test-agents/maya-patel-pragmatist.md +82 -0
  383. package/tools/test-agents/picard-diplomat-captain.md +134 -0
  384. package/tools/test-agents/spock-science-officer.md +124 -0
  385. package/tools/test-agents/william-smithers-technocrat.md +71 -0
  386. package/tools/test-agents/zara-chen-designer.md +94 -0
  387. package/tools/validate-bundles.js +87 -0
  388. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -22
  389. package/README.md +0 -221
  390. package/bmad-core/agent-teams/team-all.yaml +0 -14
  391. package/bmad-core/agent-teams/team-fullstack.yaml +0 -18
  392. package/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
  393. package/bmad-core/agent-teams/team-no-ui.yaml +0 -13
  394. package/bmad-core/agents/analyst.md +0 -81
  395. package/bmad-core/agents/architect.md +0 -83
  396. package/bmad-core/agents/bmad-master.md +0 -107
  397. package/bmad-core/agents/bmad-orchestrator.md +0 -149
  398. package/bmad-core/agents/dev.md +0 -75
  399. package/bmad-core/agents/pm.md +0 -81
  400. package/bmad-core/agents/po.md +0 -76
  401. package/bmad-core/agents/qa.md +0 -88
  402. package/bmad-core/agents/sm.md +0 -62
  403. package/bmad-core/agents/ux-expert.md +0 -66
  404. package/bmad-core/checklists/architect-checklist.md +0 -438
  405. package/bmad-core/checklists/change-checklist.md +0 -182
  406. package/bmad-core/checklists/pm-checklist.md +0 -370
  407. package/bmad-core/checklists/po-master-checklist.md +0 -432
  408. package/bmad-core/checklists/story-dod-checklist.md +0 -94
  409. package/bmad-core/checklists/story-draft-checklist.md +0 -153
  410. package/bmad-core/core-config.yaml +0 -20
  411. package/bmad-core/data/bmad-kb.md +0 -806
  412. package/bmad-core/data/brainstorming-techniques.md +0 -36
  413. package/bmad-core/data/elicitation-methods.md +0 -154
  414. package/bmad-core/data/technical-preferences.md +0 -3
  415. package/bmad-core/tasks/advanced-elicitation.md +0 -117
  416. package/bmad-core/tasks/brownfield-create-epic.md +0 -160
  417. package/bmad-core/tasks/brownfield-create-story.md +0 -147
  418. package/bmad-core/tasks/correct-course.md +0 -70
  419. package/bmad-core/tasks/create-brownfield-story.md +0 -312
  420. package/bmad-core/tasks/create-deep-research-prompt.md +0 -278
  421. package/bmad-core/tasks/create-next-story.md +0 -112
  422. package/bmad-core/tasks/document-project.md +0 -343
  423. package/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
  424. package/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
  425. package/bmad-core/tasks/index-docs.md +0 -173
  426. package/bmad-core/tasks/kb-mode-interaction.md +0 -75
  427. package/bmad-core/tasks/nfr-assess.md +0 -343
  428. package/bmad-core/tasks/qa-gate.md +0 -159
  429. package/bmad-core/tasks/review-story.md +0 -314
  430. package/bmad-core/tasks/risk-profile.md +0 -353
  431. package/bmad-core/tasks/shard-doc.md +0 -185
  432. package/bmad-core/tasks/test-design.md +0 -174
  433. package/bmad-core/tasks/trace-requirements.md +0 -264
  434. package/bmad-core/tasks/validate-next-story.md +0 -134
  435. package/bmad-core/templates/architecture-tmpl.yaml +0 -650
  436. package/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  437. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
  438. package/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
  439. package/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -306
  440. package/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -218
  441. package/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
  442. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -823
  443. package/bmad-core/templates/market-research-tmpl.yaml +0 -252
  444. package/bmad-core/templates/prd-tmpl.yaml +0 -202
  445. package/bmad-core/templates/project-brief-tmpl.yaml +0 -221
  446. package/bmad-core/templates/qa-gate-tmpl.yaml +0 -102
  447. package/bmad-core/templates/story-tmpl.yaml +0 -137
  448. package/bmad-core/workflows/brownfield-fullstack.yaml +0 -297
  449. package/bmad-core/workflows/brownfield-service.yaml +0 -187
  450. package/bmad-core/workflows/brownfield-ui.yaml +0 -197
  451. package/bmad-core/workflows/greenfield-fullstack.yaml +0 -240
  452. package/bmad-core/workflows/greenfield-service.yaml +0 -206
  453. package/bmad-core/workflows/greenfield-ui.yaml +0 -235
  454. package/common/tasks/create-doc.md +0 -101
  455. package/common/tasks/execute-checklist.md +0 -86
  456. package/common/utils/bmad-doc-template.md +0 -325
  457. package/common/utils/workflow-management.md +0 -69
  458. package/dist/agents/analyst.txt +0 -2889
  459. package/dist/agents/architect.txt +0 -3552
  460. package/dist/agents/bmad-master.txt +0 -8769
  461. package/dist/agents/bmad-orchestrator.txt +0 -1513
  462. package/dist/agents/dev.txt +0 -414
  463. package/dist/agents/pm.txt +0 -2204
  464. package/dist/agents/po.txt +0 -1346
  465. package/dist/agents/qa.txt +0 -1987
  466. package/dist/agents/sm.txt +0 -658
  467. package/dist/agents/ux-expert.txt +0 -694
  468. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2371
  469. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1620
  470. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -815
  471. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -10952
  472. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +0 -4012
  473. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +0 -3698
  474. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -450
  475. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +0 -973
  476. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -15376
  477. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2075
  478. package/dist/teams/team-all.txt +0 -12682
  479. package/dist/teams/team-fullstack.txt +0 -10421
  480. package/dist/teams/team-ide-minimal.txt +0 -5103
  481. package/dist/teams/team-no-ui.txt +0 -8980
  482. package/docs/GUIDING-PRINCIPLES.md +0 -91
  483. package/docs/core-architecture.md +0 -219
  484. package/docs/enhanced-ide-development-workflow.md +0 -248
  485. package/docs/expansion-packs.md +0 -280
  486. package/docs/how-to-contribute-with-pull-requests.md +0 -158
  487. package/docs/user-guide.md +0 -504
  488. package/docs/versioning-and-releases.md +0 -147
  489. package/docs/versions.md +0 -48
  490. package/docs/working-in-the-brownfield.md +0 -597
  491. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
  492. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
  493. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
  494. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
  495. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
  496. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
  497. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
  498. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
  499. package/expansion-packs/README.md +0 -3
  500. package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -13
  501. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -71
  502. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -78
  503. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -64
  504. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -201
  505. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -160
  506. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +0 -8
  507. package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -250
  508. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -647
  509. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -110
  510. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -216
  511. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -290
  512. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -613
  513. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -356
  514. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -343
  515. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -253
  516. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
  517. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -183
  518. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -175
  519. package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -14
  520. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +0 -80
  521. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +0 -77
  522. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +0 -78
  523. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +0 -65
  524. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -391
  525. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -203
  526. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -201
  527. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -124
  528. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +0 -6
  529. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -769
  530. package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -586
  531. package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -110
  532. package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -141
  533. package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -184
  534. package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -290
  535. package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -200
  536. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -1030
  537. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -356
  538. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -705
  539. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -256
  540. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
  541. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -183
  542. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -175
  543. package/expansion-packs/bmad-infrastructure-devops/README.md +0 -147
  544. package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -71
  545. package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -484
  546. package/expansion-packs/bmad-infrastructure-devops/config.yaml +0 -9
  547. package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +0 -305
  548. package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -159
  549. package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -153
  550. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -424
  551. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -629
  552. package/release_notes.md +0 -32
  553. package/tools/bmad-npx-wrapper.js +0 -39
  554. package/tools/builders/web-builder.js +0 -675
  555. package/tools/bump-all-versions.js +0 -115
  556. package/tools/bump-expansion-version.js +0 -90
  557. package/tools/cli.js +0 -152
  558. package/tools/installer/README.md +0 -8
  559. package/tools/installer/bin/bmad.js +0 -585
  560. package/tools/installer/config/ide-agent-config.yaml +0 -58
  561. package/tools/installer/config/install.config.yaml +0 -123
  562. package/tools/installer/lib/config-loader.js +0 -257
  563. package/tools/installer/lib/file-manager.js +0 -389
  564. package/tools/installer/lib/ide-base-setup.js +0 -228
  565. package/tools/installer/lib/ide-setup.js +0 -1441
  566. package/tools/installer/lib/installer.js +0 -1995
  567. package/tools/installer/lib/memory-profiler.js +0 -225
  568. package/tools/installer/lib/module-manager.js +0 -114
  569. package/tools/installer/lib/resource-locator.js +0 -308
  570. package/tools/installer/package.json +0 -44
  571. package/tools/lib/dependency-resolver.js +0 -175
  572. package/tools/lib/yaml-utils.js +0 -29
  573. package/tools/md-assets/web-agent-startup-instructions.md +0 -39
  574. package/tools/preview-release-notes.js +0 -66
  575. package/tools/shared/bannerArt.js +0 -105
  576. package/tools/sync-installer-version.js +0 -32
  577. package/tools/update-expansion-version.js +0 -53
  578. package/tools/upgraders/v3-to-v4-upgrader.js +0 -672
  579. package/tools/version-bump.js +0 -94
@@ -0,0 +1,203 @@
1
+ const fs = require('fs-extra');
2
+ const path = require('node:path');
3
+ const chalk = require('chalk');
4
+
5
+ /**
6
+ * IDE Manager - handles IDE-specific setup
7
+ * Dynamically discovers and loads IDE handlers
8
+ */
9
+ class IdeManager {
10
+ constructor() {
11
+ this.handlers = new Map();
12
+ this.loadHandlers();
13
+ }
14
+
15
+ /**
16
+ * Dynamically load all IDE handlers from directory
17
+ */
18
+ loadHandlers() {
19
+ const ideDir = __dirname;
20
+
21
+ try {
22
+ // Get all JS files in the IDE directory
23
+ const files = fs.readdirSync(ideDir).filter((file) => {
24
+ // Skip base class, manager, utility files (starting with _), and helper modules
25
+ return file.endsWith('.js') && !file.startsWith('_') && file !== 'manager.js' && file !== 'workflow-command-generator.js';
26
+ });
27
+
28
+ // Sort alphabetically for consistent ordering
29
+ files.sort();
30
+
31
+ for (const file of files) {
32
+ const moduleName = path.basename(file, '.js');
33
+
34
+ try {
35
+ const modulePath = path.join(ideDir, file);
36
+ const HandlerModule = require(modulePath);
37
+
38
+ // Get the first exported class (handles various export styles)
39
+ const HandlerClass = HandlerModule.default || HandlerModule[Object.keys(HandlerModule)[0]];
40
+
41
+ if (HandlerClass) {
42
+ const instance = new HandlerClass();
43
+ // Use the name property from the instance (set in constructor)
44
+ this.handlers.set(instance.name, instance);
45
+ }
46
+ } catch (error) {
47
+ console.log(chalk.yellow(` Warning: Could not load ${moduleName}: ${error.message}`));
48
+ }
49
+ }
50
+ } catch (error) {
51
+ console.error(chalk.red('Failed to load IDE handlers:'), error.message);
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Get all available IDEs with their metadata
57
+ * @returns {Array} Array of IDE information objects
58
+ */
59
+ getAvailableIdes() {
60
+ const ides = [];
61
+
62
+ for (const [key, handler] of this.handlers) {
63
+ ides.push({
64
+ value: key,
65
+ name: handler.displayName || handler.name || key,
66
+ preferred: handler.preferred || false,
67
+ });
68
+ }
69
+
70
+ // Sort: preferred first, then alphabetical
71
+ ides.sort((a, b) => {
72
+ if (a.preferred && !b.preferred) return -1;
73
+ if (!a.preferred && b.preferred) return 1;
74
+ // Ensure both names exist before comparing
75
+ const nameA = a.name || '';
76
+ const nameB = b.name || '';
77
+ return nameA.localeCompare(nameB);
78
+ });
79
+
80
+ return ides;
81
+ }
82
+
83
+ /**
84
+ * Get preferred IDEs
85
+ * @returns {Array} Array of preferred IDE information
86
+ */
87
+ getPreferredIdes() {
88
+ return this.getAvailableIdes().filter((ide) => ide.preferred);
89
+ }
90
+
91
+ /**
92
+ * Get non-preferred IDEs
93
+ * @returns {Array} Array of non-preferred IDE information
94
+ */
95
+ getOtherIdes() {
96
+ return this.getAvailableIdes().filter((ide) => !ide.preferred);
97
+ }
98
+
99
+ /**
100
+ * Setup IDE configuration
101
+ * @param {string} ideName - Name of the IDE
102
+ * @param {string} projectDir - Project directory
103
+ * @param {string} bmadDir - BMAD installation directory
104
+ * @param {Object} options - Setup options
105
+ */
106
+ async setup(ideName, projectDir, bmadDir, options = {}) {
107
+ const handler = this.handlers.get(ideName.toLowerCase());
108
+
109
+ if (!handler) {
110
+ console.warn(chalk.yellow(`⚠️ IDE '${ideName}' is not yet supported`));
111
+ console.log(chalk.dim('Supported IDEs:', [...this.handlers.keys()].join(', ')));
112
+ return { success: false, reason: 'unsupported' };
113
+ }
114
+
115
+ try {
116
+ await handler.setup(projectDir, bmadDir, options);
117
+ return { success: true, ide: ideName };
118
+ } catch (error) {
119
+ console.error(chalk.red(`Failed to setup ${ideName}:`), error.message);
120
+ return { success: false, error: error.message };
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Cleanup IDE configurations
126
+ * @param {string} projectDir - Project directory
127
+ */
128
+ async cleanup(projectDir) {
129
+ const results = [];
130
+
131
+ for (const [name, handler] of this.handlers) {
132
+ try {
133
+ await handler.cleanup(projectDir);
134
+ results.push({ ide: name, success: true });
135
+ } catch (error) {
136
+ results.push({ ide: name, success: false, error: error.message });
137
+ }
138
+ }
139
+
140
+ return results;
141
+ }
142
+
143
+ /**
144
+ * Get list of supported IDEs
145
+ * @returns {Array} List of supported IDE names
146
+ */
147
+ getSupportedIdes() {
148
+ return [...this.handlers.keys()];
149
+ }
150
+
151
+ /**
152
+ * Check if an IDE is supported
153
+ * @param {string} ideName - Name of the IDE
154
+ * @returns {boolean} True if IDE is supported
155
+ */
156
+ isSupported(ideName) {
157
+ return this.handlers.has(ideName.toLowerCase());
158
+ }
159
+
160
+ /**
161
+ * Detect installed IDEs
162
+ * @param {string} projectDir - Project directory
163
+ * @returns {Array} List of detected IDEs
164
+ */
165
+ async detectInstalledIdes(projectDir) {
166
+ const detected = [];
167
+
168
+ // Check for IDE-specific directories
169
+ const ideChecks = {
170
+ cursor: '.cursor',
171
+ 'claude-code': '.claude',
172
+ windsurf: '.windsurf',
173
+ cline: '.clinerules',
174
+ roo: '.roomodes',
175
+ trae: '.trae',
176
+ kilo: '.kilocodemodes',
177
+ gemini: '.gemini',
178
+ qwen: '.qwen',
179
+ crush: '.crush',
180
+ iflow: '.iflow',
181
+ auggie: '.auggie',
182
+ 'github-copilot': '.github/chatmodes',
183
+ vscode: '.vscode',
184
+ idea: '.idea',
185
+ };
186
+
187
+ for (const [ide, dir] of Object.entries(ideChecks)) {
188
+ const idePath = path.join(projectDir, dir);
189
+ if (await fs.pathExists(idePath)) {
190
+ detected.push(ide);
191
+ }
192
+ }
193
+
194
+ // Check for AGENTS.md (Codex)
195
+ if (await fs.pathExists(path.join(projectDir, 'AGENTS.md'))) {
196
+ detected.push('codex');
197
+ }
198
+
199
+ return detected;
200
+ }
201
+ }
202
+
203
+ module.exports = { IdeManager };
@@ -0,0 +1,188 @@
1
+ const path = require('node:path');
2
+ const { BaseIdeSetup } = require('./_base-ide');
3
+ const chalk = require('chalk');
4
+
5
+ /**
6
+ * Qwen Code setup handler
7
+ * Creates concatenated QWEN.md file in .qwen/bmad-method/ (similar to Gemini)
8
+ */
9
+ class QwenSetup extends BaseIdeSetup {
10
+ constructor() {
11
+ super('qwen', 'Qwen Code');
12
+ this.configDir = '.qwen';
13
+ this.bmadDir = 'bmad-method';
14
+ }
15
+
16
+ /**
17
+ * Setup Qwen Code configuration
18
+ * @param {string} projectDir - Project directory
19
+ * @param {string} bmadDir - BMAD installation directory
20
+ * @param {Object} options - Setup options
21
+ */
22
+ async setup(projectDir, bmadDir, options = {}) {
23
+ console.log(chalk.cyan(`Setting up ${this.name}...`));
24
+
25
+ // Create .qwen/bmad-method directory
26
+ const qwenDir = path.join(projectDir, this.configDir);
27
+ const bmadMethodDir = path.join(qwenDir, this.bmadDir);
28
+ await this.ensureDir(bmadMethodDir);
29
+
30
+ // Update existing settings.json if present
31
+ await this.updateSettings(qwenDir);
32
+
33
+ // Clean up old agents directory if exists
34
+ await this.cleanupOldAgents(qwenDir);
35
+
36
+ // Get agents
37
+ const agents = await this.getAgents(bmadDir);
38
+
39
+ // Create concatenated content for all agents
40
+ let concatenatedContent = `# BMAD Method - Qwen Code Configuration
41
+
42
+ This file contains all BMAD agents configured for use with Qwen Code.
43
+ Agents can be activated by typing \`*{agent-name}\` in your prompts.
44
+
45
+ ---
46
+
47
+ `;
48
+
49
+ let agentCount = 0;
50
+ for (const agent of agents) {
51
+ const content = await this.readFile(agent.path);
52
+ const agentSection = this.createAgentSection(agent, content, projectDir);
53
+
54
+ concatenatedContent += agentSection;
55
+ concatenatedContent += '\n\n---\n\n';
56
+ agentCount++;
57
+
58
+ console.log(chalk.green(` ✓ Added agent: *${agent.name}`));
59
+ }
60
+
61
+ // Write QWEN.md
62
+ const qwenMdPath = path.join(bmadMethodDir, 'QWEN.md');
63
+ await this.writeFile(qwenMdPath, concatenatedContent);
64
+
65
+ console.log(chalk.green(`✓ ${this.name} configured:`));
66
+ console.log(chalk.dim(` - ${agentCount} agents configured`));
67
+ console.log(chalk.dim(` - Configuration file: ${path.relative(projectDir, qwenMdPath)}`));
68
+ console.log(chalk.dim(` - Agents activated with: *{agent-name}`));
69
+
70
+ return {
71
+ success: true,
72
+ agents: agentCount,
73
+ };
74
+ }
75
+
76
+ /**
77
+ * Update settings.json to remove old agent references
78
+ */
79
+ async updateSettings(qwenDir) {
80
+ const fs = require('fs-extra');
81
+ const settingsPath = path.join(qwenDir, 'settings.json');
82
+
83
+ if (await fs.pathExists(settingsPath)) {
84
+ try {
85
+ const settingsContent = await fs.readFile(settingsPath, 'utf8');
86
+ const settings = JSON.parse(settingsContent);
87
+ let updated = false;
88
+
89
+ // Remove agent file references from contextFileName
90
+ if (settings.contextFileName && Array.isArray(settings.contextFileName)) {
91
+ const originalLength = settings.contextFileName.length;
92
+ settings.contextFileName = settings.contextFileName.filter((fileName) => !fileName.startsWith('agents/'));
93
+
94
+ if (settings.contextFileName.length !== originalLength) {
95
+ updated = true;
96
+ }
97
+ }
98
+
99
+ if (updated) {
100
+ await fs.writeFile(settingsPath, JSON.stringify(settings, null, 2));
101
+ console.log(chalk.green(' ✓ Updated .qwen/settings.json'));
102
+ }
103
+ } catch (error) {
104
+ console.warn(chalk.yellow(' ⚠ Could not update settings.json:'), error.message);
105
+ }
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Clean up old agents directory
111
+ */
112
+ async cleanupOldAgents(qwenDir) {
113
+ const fs = require('fs-extra');
114
+ const agentsDir = path.join(qwenDir, 'agents');
115
+
116
+ if (await fs.pathExists(agentsDir)) {
117
+ await fs.remove(agentsDir);
118
+ console.log(chalk.green(' ✓ Removed old agents directory'));
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Create agent section for concatenated file
124
+ */
125
+ createAgentSection(agent, content, projectDir) {
126
+ // Extract metadata
127
+ const titleMatch = content.match(/title="([^"]+)"/);
128
+ const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
129
+
130
+ // Extract YAML content
131
+ const yamlMatch = content.match(/```ya?ml\r?\n([\s\S]*?)```/);
132
+ const yamlContent = yamlMatch ? yamlMatch[1] : content;
133
+
134
+ // Get relative path
135
+ const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
136
+
137
+ let section = `# ${agent.name.toUpperCase()} Agent Rule
138
+
139
+ This rule is triggered when the user types \`*${agent.name}\` and activates the ${title} agent persona.
140
+
141
+ ## Agent Activation
142
+
143
+ CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
144
+
145
+ \`\`\`yaml
146
+ ${yamlContent}
147
+ \`\`\`
148
+
149
+ ## File Reference
150
+
151
+ The complete agent definition is available in [${relativePath}](${relativePath}).
152
+
153
+ ## Usage
154
+
155
+ When the user types \`*${agent.name}\`, activate this ${title} persona and follow all instructions defined in the YAML configuration above.
156
+
157
+ ## Module
158
+
159
+ Part of the BMAD ${agent.module.toUpperCase()} module.`;
160
+
161
+ return section;
162
+ }
163
+
164
+ /**
165
+ * Format name as title
166
+ */
167
+ formatTitle(name) {
168
+ return name
169
+ .split('-')
170
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
171
+ .join(' ');
172
+ }
173
+
174
+ /**
175
+ * Cleanup Qwen configuration
176
+ */
177
+ async cleanup(projectDir) {
178
+ const fs = require('fs-extra');
179
+ const bmadMethodDir = path.join(projectDir, this.configDir, this.bmadDir);
180
+
181
+ if (await fs.pathExists(bmadMethodDir)) {
182
+ await fs.remove(bmadMethodDir);
183
+ console.log(chalk.dim(`Removed BMAD configuration from Qwen Code`));
184
+ }
185
+ }
186
+ }
187
+
188
+ module.exports = { QwenSetup };
@@ -0,0 +1,288 @@
1
+ const path = require('node:path');
2
+ const { BaseIdeSetup } = require('./_base-ide');
3
+ const chalk = require('chalk');
4
+ const inquirer = require('inquirer');
5
+
6
+ /**
7
+ * Roo IDE setup handler
8
+ * Creates custom modes in .roomodes file
9
+ */
10
+ class RooSetup extends BaseIdeSetup {
11
+ constructor() {
12
+ super('roo', 'Roo Code');
13
+ this.configFile = '.roomodes';
14
+ this.defaultPermissions = {
15
+ dev: {
16
+ description: 'Development files',
17
+ fileRegex: String.raw`.*\.(js|jsx|ts|tsx|py|java|cpp|c|h|cs|go|rs|php|rb|swift)$`,
18
+ },
19
+ config: {
20
+ description: 'Configuration files',
21
+ fileRegex: String.raw`.*\.(json|yaml|yml|toml|xml|ini|env|config)$`,
22
+ },
23
+ docs: {
24
+ description: 'Documentation files',
25
+ fileRegex: String.raw`.*\.(md|mdx|rst|txt|doc|docx)$`,
26
+ },
27
+ styles: {
28
+ description: 'Style and design files',
29
+ fileRegex: String.raw`.*\.(css|scss|sass|less|stylus)$`,
30
+ },
31
+ all: {
32
+ description: 'All files',
33
+ fileRegex: '.*',
34
+ },
35
+ };
36
+ }
37
+
38
+ /**
39
+ * Collect configuration choices before installation
40
+ * @param {Object} options - Configuration options
41
+ * @returns {Object} Collected configuration
42
+ */
43
+ async collectConfiguration(options = {}) {
44
+ const response = await inquirer.prompt([
45
+ {
46
+ type: 'list',
47
+ name: 'permissions',
48
+ message: 'Select default file edit permissions for BMAD agents:',
49
+ choices: [
50
+ { name: 'Development files only (js, ts, py, etc.)', value: 'dev' },
51
+ { name: 'Configuration files only (json, yaml, xml, etc.)', value: 'config' },
52
+ { name: 'Documentation files only (md, txt, doc, etc.)', value: 'docs' },
53
+ { name: 'All files (unrestricted access)', value: 'all' },
54
+ { name: 'Custom per agent (will be configured individually)', value: 'custom' },
55
+ ],
56
+ default: 'dev',
57
+ },
58
+ ]);
59
+
60
+ return { permissions: response.permissions };
61
+ }
62
+
63
+ /**
64
+ * Setup Roo IDE configuration
65
+ * @param {string} projectDir - Project directory
66
+ * @param {string} bmadDir - BMAD installation directory
67
+ * @param {Object} options - Setup options
68
+ */
69
+ async setup(projectDir, bmadDir, options = {}) {
70
+ console.log(chalk.cyan(`Setting up ${this.name}...`));
71
+
72
+ // Check for existing .roomodes file
73
+ const roomodesPath = path.join(projectDir, this.configFile);
74
+ let existingModes = [];
75
+ let existingContent = '';
76
+
77
+ if (await this.pathExists(roomodesPath)) {
78
+ existingContent = await this.readFile(roomodesPath);
79
+ // Parse existing modes to avoid duplicates
80
+ const modeMatches = existingContent.matchAll(/- slug: ([\w-]+)/g);
81
+ for (const match of modeMatches) {
82
+ existingModes.push(match[1]);
83
+ }
84
+ console.log(chalk.yellow(`Found existing .roomodes file with ${existingModes.length} modes`));
85
+ }
86
+
87
+ // Get agents
88
+ const agents = await this.getAgents(bmadDir);
89
+
90
+ // Use pre-collected configuration if available
91
+ const config = options.preCollectedConfig || {};
92
+ let permissionChoice = config.permissions || options.permissions || 'dev';
93
+
94
+ // Create modes content
95
+ let newModesContent = '';
96
+ let addedCount = 0;
97
+ let skippedCount = 0;
98
+
99
+ for (const agent of agents) {
100
+ const slug = `bmad-${agent.module}-${agent.name}`;
101
+
102
+ // Skip if already exists
103
+ if (existingModes.includes(slug)) {
104
+ console.log(chalk.dim(` Skipping ${slug} - already exists`));
105
+ skippedCount++;
106
+ continue;
107
+ }
108
+
109
+ const content = await this.readFile(agent.path);
110
+ const modeEntry = this.createModeEntry(agent, content, permissionChoice, projectDir);
111
+
112
+ newModesContent += modeEntry;
113
+ addedCount++;
114
+ console.log(chalk.green(` ✓ Added mode: ${slug}`));
115
+ }
116
+
117
+ // Build final content
118
+ let finalContent = '';
119
+ if (existingContent) {
120
+ // Append to existing content
121
+ finalContent = existingContent.trim() + '\n' + newModesContent;
122
+ } else {
123
+ // Create new .roomodes file
124
+ finalContent = 'customModes:\n' + newModesContent;
125
+ }
126
+
127
+ // Write .roomodes file
128
+ await this.writeFile(roomodesPath, finalContent);
129
+
130
+ console.log(chalk.green(`✓ ${this.name} configured:`));
131
+ console.log(chalk.dim(` - ${addedCount} modes added`));
132
+ if (skippedCount > 0) {
133
+ console.log(chalk.dim(` - ${skippedCount} modes skipped (already exist)`));
134
+ }
135
+ console.log(chalk.dim(` - Configuration file: ${this.configFile}`));
136
+ console.log(chalk.dim(` - Permission level: ${permissionChoice}`));
137
+ console.log(chalk.dim('\n Modes will be available when you open this project in Roo Code'));
138
+
139
+ return {
140
+ success: true,
141
+ modes: addedCount,
142
+ skipped: skippedCount,
143
+ };
144
+ }
145
+
146
+ /**
147
+ * Ask user about permission configuration
148
+ */
149
+ async askPermissions() {
150
+ const response = await inquirer.prompt([
151
+ {
152
+ type: 'list',
153
+ name: 'permissions',
154
+ message: 'Select default file edit permissions for BMAD agents:',
155
+ choices: [
156
+ { name: 'Development files only (js, ts, py, etc.)', value: 'dev' },
157
+ { name: 'Configuration files only (json, yaml, xml, etc.)', value: 'config' },
158
+ { name: 'Documentation files only (md, txt, doc, etc.)', value: 'docs' },
159
+ { name: 'All files (unrestricted access)', value: 'all' },
160
+ { name: 'Custom per agent (will be configured individually)', value: 'custom' },
161
+ ],
162
+ default: 'dev',
163
+ },
164
+ ]);
165
+
166
+ return response.permissions;
167
+ }
168
+
169
+ /**
170
+ * Create a mode entry for an agent
171
+ */
172
+ createModeEntry(agent, content, permissionChoice, projectDir) {
173
+ // Extract metadata from agent content
174
+ const titleMatch = content.match(/title="([^"]+)"/);
175
+ const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
176
+
177
+ const iconMatch = content.match(/icon="([^"]+)"/);
178
+ const icon = iconMatch ? iconMatch[1] : '🤖';
179
+
180
+ const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
181
+ const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
182
+
183
+ const roleDefinitionMatch = content.match(/roleDefinition="([^"]+)"/);
184
+ const roleDefinition = roleDefinitionMatch
185
+ ? roleDefinitionMatch[1]
186
+ : `You are a ${title} specializing in ${title.toLowerCase()} tasks and responsibilities.`;
187
+
188
+ // Get relative path
189
+ const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
190
+
191
+ // Determine permissions
192
+ const permissions = this.getPermissionsForAgent(agent, permissionChoice);
193
+
194
+ // Build mode entry
195
+ const slug = `bmad-${agent.module}-${agent.name}`;
196
+ let modeEntry = ` - slug: ${slug}\n`;
197
+ modeEntry += ` name: '${icon} ${title}'\n`;
198
+
199
+ if (permissions && permissions.description) {
200
+ modeEntry += ` description: '${permissions.description}'\n`;
201
+ }
202
+
203
+ modeEntry += ` roleDefinition: ${roleDefinition}\n`;
204
+ modeEntry += ` whenToUse: ${whenToUse}\n`;
205
+ modeEntry += ` customInstructions: CRITICAL Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
206
+ modeEntry += ` groups:\n`;
207
+ modeEntry += ` - read\n`;
208
+
209
+ if (permissions && permissions.fileRegex) {
210
+ modeEntry += ` - - edit\n`;
211
+ modeEntry += ` - fileRegex: ${permissions.fileRegex}\n`;
212
+ modeEntry += ` description: ${permissions.description}\n`;
213
+ } else {
214
+ modeEntry += ` - edit\n`;
215
+ }
216
+
217
+ return modeEntry;
218
+ }
219
+
220
+ /**
221
+ * Get permissions configuration for an agent
222
+ */
223
+ getPermissionsForAgent(agent, permissionChoice) {
224
+ if (permissionChoice === 'custom') {
225
+ // Custom logic based on agent name/module
226
+ if (agent.name.includes('dev') || agent.name.includes('code')) {
227
+ return this.defaultPermissions.dev;
228
+ } else if (agent.name.includes('doc') || agent.name.includes('write')) {
229
+ return this.defaultPermissions.docs;
230
+ } else if (agent.name.includes('config') || agent.name.includes('setup')) {
231
+ return this.defaultPermissions.config;
232
+ } else if (agent.name.includes('style') || agent.name.includes('css')) {
233
+ return this.defaultPermissions.styles;
234
+ }
235
+ // Default to all for custom agents
236
+ return this.defaultPermissions.all;
237
+ }
238
+
239
+ return this.defaultPermissions[permissionChoice] || null;
240
+ }
241
+
242
+ /**
243
+ * Format name as title
244
+ */
245
+ formatTitle(name) {
246
+ return name
247
+ .split('-')
248
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
249
+ .join(' ');
250
+ }
251
+
252
+ /**
253
+ * Cleanup Roo configuration
254
+ */
255
+ async cleanup(projectDir) {
256
+ const fs = require('fs-extra');
257
+ const roomodesPath = path.join(projectDir, this.configFile);
258
+
259
+ if (await fs.pathExists(roomodesPath)) {
260
+ const content = await fs.readFile(roomodesPath, 'utf8');
261
+
262
+ // Remove BMAD modes only
263
+ const lines = content.split('\n');
264
+ const filteredLines = [];
265
+ let skipMode = false;
266
+ let removedCount = 0;
267
+
268
+ for (const line of lines) {
269
+ if (/^\s*- slug: bmad-/.test(line)) {
270
+ skipMode = true;
271
+ removedCount++;
272
+ } else if (skipMode && /^\s*- slug: /.test(line)) {
273
+ skipMode = false;
274
+ }
275
+
276
+ if (!skipMode) {
277
+ filteredLines.push(line);
278
+ }
279
+ }
280
+
281
+ // Write back filtered content
282
+ await fs.writeFile(roomodesPath, filteredLines.join('\n'));
283
+ console.log(chalk.dim(`Removed ${removedCount} BMAD modes from .roomodes`));
284
+ }
285
+ }
286
+ }
287
+
288
+ module.exports = { RooSetup };