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
@@ -1,675 +0,0 @@
1
- const fs = require('node:fs').promises;
2
- const path = require('node:path');
3
- const DependencyResolver = require('../lib/dependency-resolver');
4
- const yamlUtilities = require('../lib/yaml-utils');
5
-
6
- class WebBuilder {
7
- constructor(options = {}) {
8
- this.rootDir = options.rootDir || process.cwd();
9
- this.outputDirs = options.outputDirs || [path.join(this.rootDir, 'dist')];
10
- this.resolver = new DependencyResolver(this.rootDir);
11
- this.templatePath = path.join(
12
- this.rootDir,
13
- 'tools',
14
- 'md-assets',
15
- 'web-agent-startup-instructions.md',
16
- );
17
- }
18
-
19
- parseYaml(content) {
20
- const yaml = require('js-yaml');
21
- return yaml.load(content);
22
- }
23
-
24
- convertToWebPath(filePath, bundleRoot = 'bmad-core') {
25
- // Convert absolute paths to web bundle paths with dot prefix
26
- // All resources get installed under the bundle root, so use that path
27
- const relativePath = path.relative(this.rootDir, filePath);
28
- const pathParts = relativePath.split(path.sep);
29
-
30
- let resourcePath;
31
- if (pathParts[0] === 'expansion-packs') {
32
- // For expansion packs, remove 'expansion-packs/packname' and use the rest
33
- resourcePath = pathParts.slice(2).join('/');
34
- } else {
35
- // For bmad-core, common, etc., remove the first part
36
- resourcePath = pathParts.slice(1).join('/');
37
- }
38
-
39
- return `.${bundleRoot}/${resourcePath}`;
40
- }
41
-
42
- generateWebInstructions(bundleType, packName = null) {
43
- // Generate dynamic web instructions based on bundle type
44
- const rootExample = packName ? `.${packName}` : '.bmad-core';
45
- const examplePath = packName
46
- ? `.${packName}/folder/filename.md`
47
- : '.bmad-core/folder/filename.md';
48
- const personasExample = packName
49
- ? `.${packName}/personas/analyst.md`
50
- : '.bmad-core/personas/analyst.md';
51
- const tasksExample = packName
52
- ? `.${packName}/tasks/create-story.md`
53
- : '.bmad-core/tasks/create-story.md';
54
- const utilitiesExample = packName
55
- ? `.${packName}/utils/template-format.md`
56
- : '.bmad-core/utils/template-format.md';
57
- const tasksReference = packName
58
- ? `.${packName}/tasks/create-story.md`
59
- : '.bmad-core/tasks/create-story.md';
60
-
61
- return `# Web Agent Bundle Instructions
62
-
63
- You are now operating as a specialized AI agent from the BMad-Method framework. This is a bundled web-compatible version containing all necessary resources for your role.
64
-
65
- ## Important Instructions
66
-
67
- 1. **Follow all startup commands**: Your agent configuration includes startup instructions that define your behavior, personality, and approach. These MUST be followed exactly.
68
-
69
- 2. **Resource Navigation**: This bundle contains all resources you need. Resources are marked with tags like:
70
-
71
- - \`==================== START: ${examplePath} ====================\`
72
- - \`==================== END: ${examplePath} ====================\`
73
-
74
- When you need to reference a resource mentioned in your instructions:
75
-
76
- - Look for the corresponding START/END tags
77
- - The format is always the full path with dot prefix (e.g., \`${personasExample}\`, \`${tasksExample}\`)
78
- - If a section is specified (e.g., \`{root}/tasks/create-story.md#section-name\`), navigate to that section within the file
79
-
80
- **Understanding YAML References**: In the agent configuration, resources are referenced in the dependencies section. For example:
81
-
82
- \`\`\`yaml
83
- dependencies:
84
- utils:
85
- - template-format
86
- tasks:
87
- - create-story
88
- \`\`\`
89
-
90
- These references map directly to bundle sections:
91
-
92
- - \`utils: template-format\` → Look for \`==================== START: ${utilitiesExample} ====================\`
93
- - \`tasks: create-story\` → Look for \`==================== START: ${tasksReference} ====================\`
94
-
95
- 3. **Execution Context**: You are operating in a web environment. All your capabilities and knowledge are contained within this bundle. Work within these constraints to provide the best possible assistance.
96
-
97
- 4. **Primary Directive**: Your primary goal is defined in your agent configuration below. Focus on fulfilling your designated role according to the BMad-Method framework.
98
-
99
- ---
100
-
101
- `;
102
- }
103
-
104
- async cleanOutputDirs() {
105
- for (const dir of this.outputDirs) {
106
- try {
107
- await fs.rm(dir, { recursive: true, force: true });
108
- console.log(`Cleaned: ${path.relative(this.rootDir, dir)}`);
109
- } catch (error) {
110
- console.debug(`Failed to clean directory ${dir}:`, error.message);
111
- // Directory might not exist, that's fine
112
- }
113
- }
114
- }
115
-
116
- async buildAgents() {
117
- const agents = await this.resolver.listAgents();
118
-
119
- for (const agentId of agents) {
120
- console.log(` Building agent: ${agentId}`);
121
- const bundle = await this.buildAgentBundle(agentId);
122
-
123
- // Write to all output directories
124
- for (const outputDir of this.outputDirs) {
125
- const outputPath = path.join(outputDir, 'agents');
126
- await fs.mkdir(outputPath, { recursive: true });
127
- const outputFile = path.join(outputPath, `${agentId}.txt`);
128
- await fs.writeFile(outputFile, bundle, 'utf8');
129
- }
130
- }
131
-
132
- console.log(`Built ${agents.length} agent bundles in ${this.outputDirs.length} locations`);
133
- }
134
-
135
- async buildTeams() {
136
- const teams = await this.resolver.listTeams();
137
-
138
- for (const teamId of teams) {
139
- console.log(` Building team: ${teamId}`);
140
- const bundle = await this.buildTeamBundle(teamId);
141
-
142
- // Write to all output directories
143
- for (const outputDir of this.outputDirs) {
144
- const outputPath = path.join(outputDir, 'teams');
145
- await fs.mkdir(outputPath, { recursive: true });
146
- const outputFile = path.join(outputPath, `${teamId}.txt`);
147
- await fs.writeFile(outputFile, bundle, 'utf8');
148
- }
149
- }
150
-
151
- console.log(`Built ${teams.length} team bundles in ${this.outputDirs.length} locations`);
152
- }
153
-
154
- async buildAgentBundle(agentId) {
155
- const dependencies = await this.resolver.resolveAgentDependencies(agentId);
156
- const template = this.generateWebInstructions('agent');
157
-
158
- const sections = [template];
159
-
160
- // Add agent configuration
161
- const agentPath = this.convertToWebPath(dependencies.agent.path, 'bmad-core');
162
- sections.push(this.formatSection(agentPath, dependencies.agent.content, 'bmad-core'));
163
-
164
- // Add all dependencies
165
- for (const resource of dependencies.resources) {
166
- const resourcePath = this.convertToWebPath(resource.path, 'bmad-core');
167
- sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
168
- }
169
-
170
- return sections.join('\n');
171
- }
172
-
173
- async buildTeamBundle(teamId) {
174
- const dependencies = await this.resolver.resolveTeamDependencies(teamId);
175
- const template = this.generateWebInstructions('team');
176
-
177
- const sections = [template];
178
-
179
- // Add team configuration
180
- const teamPath = this.convertToWebPath(dependencies.team.path, 'bmad-core');
181
- sections.push(this.formatSection(teamPath, dependencies.team.content, 'bmad-core'));
182
-
183
- // Add all agents
184
- for (const agent of dependencies.agents) {
185
- const agentPath = this.convertToWebPath(agent.path, 'bmad-core');
186
- sections.push(this.formatSection(agentPath, agent.content, 'bmad-core'));
187
- }
188
-
189
- // Add all deduplicated resources
190
- for (const resource of dependencies.resources) {
191
- const resourcePath = this.convertToWebPath(resource.path, 'bmad-core');
192
- sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
193
- }
194
-
195
- return sections.join('\n');
196
- }
197
-
198
- processAgentContent(content) {
199
- // First, replace content before YAML with the template
200
- const yamlContent = yamlUtilities.extractYamlFromAgent(content);
201
- if (!yamlContent) return content;
202
-
203
- const yamlMatch = content.match(/```ya?ml\n([\s\S]*?)\n```/);
204
- if (!yamlMatch) return content;
205
-
206
- const yamlStartIndex = content.indexOf(yamlMatch[0]);
207
- const yamlEndIndex = yamlStartIndex + yamlMatch[0].length;
208
-
209
- // Parse YAML and remove root and IDE-FILE-RESOLUTION properties
210
- try {
211
- const yaml = require('js-yaml');
212
- const parsed = yaml.load(yamlContent);
213
-
214
- // Remove the properties if they exist at root level
215
- delete parsed.root;
216
- delete parsed['IDE-FILE-RESOLUTION'];
217
- delete parsed['REQUEST-RESOLUTION'];
218
-
219
- // Also remove from activation-instructions if they exist
220
- if (parsed['activation-instructions'] && Array.isArray(parsed['activation-instructions'])) {
221
- parsed['activation-instructions'] = parsed['activation-instructions'].filter(
222
- (instruction) => {
223
- return (
224
- typeof instruction === 'string' &&
225
- !instruction.startsWith('IDE-FILE-RESOLUTION:') &&
226
- !instruction.startsWith('REQUEST-RESOLUTION:')
227
- );
228
- },
229
- );
230
- }
231
-
232
- // Reconstruct the YAML
233
- const cleanedYaml = yaml.dump(parsed, { lineWidth: -1 });
234
-
235
- // Get the agent name from the YAML for the header
236
- const agentName = parsed.agent?.id || 'agent';
237
-
238
- // Build the new content with just the agent header and YAML
239
- const newHeader = `# ${agentName}\n\nCRITICAL: 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:\n\n`;
240
- const afterYaml = content.slice(Math.max(0, yamlEndIndex));
241
-
242
- return newHeader + '```yaml\n' + cleanedYaml.trim() + '\n```' + afterYaml;
243
- } catch (error) {
244
- console.warn('Failed to process agent YAML:', error.message);
245
- // If parsing fails, return original content
246
- return content;
247
- }
248
- }
249
-
250
- formatSection(path, content, bundleRoot = 'bmad-core') {
251
- const separator = '====================';
252
-
253
- // Process agent content if this is an agent file
254
- if (path.includes('/agents/')) {
255
- content = this.processAgentContent(content);
256
- }
257
-
258
- // Replace {root} references with the actual bundle root
259
- content = this.replaceRootReferences(content, bundleRoot);
260
-
261
- return [
262
- `${separator} START: ${path} ${separator}`,
263
- content.trim(),
264
- `${separator} END: ${path} ${separator}`,
265
- '',
266
- ].join('\n');
267
- }
268
-
269
- replaceRootReferences(content, bundleRoot) {
270
- // Replace {root} with the appropriate bundle root path
271
- return content.replaceAll('{root}', `.${bundleRoot}`);
272
- }
273
-
274
- async validate() {
275
- console.log('Validating agent configurations...');
276
- const agents = await this.resolver.listAgents();
277
- for (const agentId of agents) {
278
- try {
279
- await this.resolver.resolveAgentDependencies(agentId);
280
- console.log(` ✓ ${agentId}`);
281
- } catch (error) {
282
- console.log(` ✗ ${agentId}: ${error.message}`);
283
- throw error;
284
- }
285
- }
286
-
287
- console.log('\nValidating team configurations...');
288
- const teams = await this.resolver.listTeams();
289
- for (const teamId of teams) {
290
- try {
291
- await this.resolver.resolveTeamDependencies(teamId);
292
- console.log(` ✓ ${teamId}`);
293
- } catch (error) {
294
- console.log(` ✗ ${teamId}: ${error.message}`);
295
- throw error;
296
- }
297
- }
298
- }
299
-
300
- async buildAllExpansionPacks(options = {}) {
301
- const expansionPacks = await this.listExpansionPacks();
302
-
303
- for (const packName of expansionPacks) {
304
- console.log(` Building expansion pack: ${packName}`);
305
- await this.buildExpansionPack(packName, options);
306
- }
307
-
308
- console.log(`Built ${expansionPacks.length} expansion pack bundles`);
309
- }
310
-
311
- async buildExpansionPack(packName, options = {}) {
312
- const packDir = path.join(this.rootDir, 'expansion-packs', packName);
313
- const outputDirectories = [path.join(this.rootDir, 'dist', 'expansion-packs', packName)];
314
-
315
- // Clean output directories if requested
316
- if (options.clean !== false) {
317
- for (const outputDir of outputDirectories) {
318
- try {
319
- await fs.rm(outputDir, { recursive: true, force: true });
320
- } catch {
321
- // Directory might not exist, that's fine
322
- }
323
- }
324
- }
325
-
326
- // Build individual agents first
327
- const agentsDir = path.join(packDir, 'agents');
328
- try {
329
- const agentFiles = await fs.readdir(agentsDir);
330
- const agentMarkdownFiles = agentFiles.filter((f) => f.endsWith('.md'));
331
-
332
- if (agentMarkdownFiles.length > 0) {
333
- console.log(` Building individual agents for ${packName}:`);
334
-
335
- for (const agentFile of agentMarkdownFiles) {
336
- const agentName = agentFile.replace('.md', '');
337
- console.log(` - ${agentName}`);
338
-
339
- // Build individual agent bundle
340
- const bundle = await this.buildExpansionAgentBundle(packName, packDir, agentName);
341
-
342
- // Write to all output directories
343
- for (const outputDir of outputDirectories) {
344
- const agentsOutputDir = path.join(outputDir, 'agents');
345
- await fs.mkdir(agentsOutputDir, { recursive: true });
346
- const outputFile = path.join(agentsOutputDir, `${agentName}.txt`);
347
- await fs.writeFile(outputFile, bundle, 'utf8');
348
- }
349
- }
350
- }
351
- } catch {
352
- console.debug(` No agents directory found for ${packName}`);
353
- }
354
-
355
- // Build team bundle
356
- const agentTeamsDir = path.join(packDir, 'agent-teams');
357
- try {
358
- const teamFiles = await fs.readdir(agentTeamsDir);
359
- const teamFile = teamFiles.find((f) => f.endsWith('.yaml'));
360
-
361
- if (teamFile) {
362
- console.log(` Building team bundle for ${packName}`);
363
- const teamConfigPath = path.join(agentTeamsDir, teamFile);
364
-
365
- // Build expansion pack as a team bundle
366
- const bundle = await this.buildExpansionTeamBundle(packName, packDir, teamConfigPath);
367
-
368
- // Write to all output directories
369
- for (const outputDir of outputDirectories) {
370
- const teamsOutputDir = path.join(outputDir, 'teams');
371
- await fs.mkdir(teamsOutputDir, { recursive: true });
372
- const outputFile = path.join(teamsOutputDir, teamFile.replace('.yaml', '.txt'));
373
- await fs.writeFile(outputFile, bundle, 'utf8');
374
- console.log(` ✓ Created bundle: ${path.relative(this.rootDir, outputFile)}`);
375
- }
376
- } else {
377
- console.warn(` ⚠ No team configuration found in ${packName}/agent-teams/`);
378
- }
379
- } catch {
380
- console.warn(` ⚠ No agent-teams directory found for ${packName}`);
381
- }
382
- }
383
-
384
- async buildExpansionAgentBundle(packName, packDir, agentName) {
385
- const template = this.generateWebInstructions('expansion-agent', packName);
386
- const sections = [template];
387
-
388
- // Add agent configuration
389
- const agentPath = path.join(packDir, 'agents', `${agentName}.md`);
390
- const agentContent = await fs.readFile(agentPath, 'utf8');
391
- const agentWebPath = this.convertToWebPath(agentPath, packName);
392
- sections.push(this.formatSection(agentWebPath, agentContent, packName));
393
-
394
- // Resolve and add agent dependencies
395
- const yamlContent = yamlUtilities.extractYamlFromAgent(agentContent);
396
- if (yamlContent) {
397
- try {
398
- const yaml = require('js-yaml');
399
- const agentConfig = yaml.load(yamlContent);
400
-
401
- if (agentConfig.dependencies) {
402
- // Add resources, first try expansion pack, then core
403
- for (const [resourceType, resources] of Object.entries(agentConfig.dependencies)) {
404
- if (Array.isArray(resources)) {
405
- for (const resourceName of resources) {
406
- let found = false;
407
-
408
- // Try expansion pack first
409
- const resourcePath = path.join(packDir, resourceType, resourceName);
410
- try {
411
- const resourceContent = await fs.readFile(resourcePath, 'utf8');
412
- const resourceWebPath = this.convertToWebPath(resourcePath, packName);
413
- sections.push(this.formatSection(resourceWebPath, resourceContent, packName));
414
- found = true;
415
- } catch {
416
- // Not in expansion pack, continue
417
- }
418
-
419
- // If not found in expansion pack, try core
420
- if (!found) {
421
- const corePath = path.join(this.rootDir, 'bmad-core', resourceType, resourceName);
422
- try {
423
- const coreContent = await fs.readFile(corePath, 'utf8');
424
- const coreWebPath = this.convertToWebPath(corePath, packName);
425
- sections.push(this.formatSection(coreWebPath, coreContent, packName));
426
- found = true;
427
- } catch {
428
- // Not in core either, continue
429
- }
430
- }
431
-
432
- // If not found in core, try common folder
433
- if (!found) {
434
- const commonPath = path.join(this.rootDir, 'common', resourceType, resourceName);
435
- try {
436
- const commonContent = await fs.readFile(commonPath, 'utf8');
437
- const commonWebPath = this.convertToWebPath(commonPath, packName);
438
- sections.push(this.formatSection(commonWebPath, commonContent, packName));
439
- found = true;
440
- } catch {
441
- // Not in common either, continue
442
- }
443
- }
444
-
445
- if (!found) {
446
- console.warn(
447
- ` ⚠ Dependency ${resourceType}#${resourceName} not found in expansion pack or core`,
448
- );
449
- }
450
- }
451
- }
452
- }
453
- }
454
- } catch (error) {
455
- console.debug(`Failed to parse agent YAML for ${agentName}:`, error.message);
456
- }
457
- }
458
-
459
- return sections.join('\n');
460
- }
461
-
462
- async buildExpansionTeamBundle(packName, packDir, teamConfigPath) {
463
- const template = this.generateWebInstructions('expansion-team', packName);
464
-
465
- const sections = [template];
466
-
467
- // Add team configuration and parse to get agent list
468
- const teamContent = await fs.readFile(teamConfigPath, 'utf8');
469
- const teamFileName = path.basename(teamConfigPath, '.yaml');
470
- const teamConfig = this.parseYaml(teamContent);
471
- const teamWebPath = this.convertToWebPath(teamConfigPath, packName);
472
- sections.push(this.formatSection(teamWebPath, teamContent, packName));
473
-
474
- // Get list of expansion pack agents
475
- const expansionAgents = new Set();
476
- const agentsDir = path.join(packDir, 'agents');
477
- try {
478
- const agentFiles = await fs.readdir(agentsDir);
479
- for (const agentFile of agentFiles.filter((f) => f.endsWith('.md'))) {
480
- const agentName = agentFile.replace('.md', '');
481
- expansionAgents.add(agentName);
482
- }
483
- } catch {
484
- console.warn(` ⚠ No agents directory found in ${packName}`);
485
- }
486
-
487
- // Build a map of all available expansion pack resources for override checking
488
- const expansionResources = new Map();
489
- const resourceDirectories = ['templates', 'tasks', 'checklists', 'workflows', 'data'];
490
- for (const resourceDir of resourceDirectories) {
491
- const resourcePath = path.join(packDir, resourceDir);
492
- try {
493
- const resourceFiles = await fs.readdir(resourcePath);
494
- for (const resourceFile of resourceFiles.filter(
495
- (f) => f.endsWith('.md') || f.endsWith('.yaml'),
496
- )) {
497
- expansionResources.set(`${resourceDir}#${resourceFile}`, true);
498
- }
499
- } catch {
500
- // Directory might not exist, that's fine
501
- }
502
- }
503
-
504
- // Process all agents listed in team configuration
505
- const agentsToProcess = teamConfig.agents || [];
506
-
507
- // Ensure bmad-orchestrator is always included for teams
508
- if (!agentsToProcess.includes('bmad-orchestrator')) {
509
- console.warn(` ⚠ Team ${teamFileName} missing bmad-orchestrator, adding automatically`);
510
- agentsToProcess.unshift('bmad-orchestrator');
511
- }
512
-
513
- // Track all dependencies from all agents (deduplicated)
514
- const allDependencies = new Map();
515
-
516
- for (const agentId of agentsToProcess) {
517
- if (expansionAgents.has(agentId)) {
518
- // Use expansion pack version (override)
519
- const agentPath = path.join(agentsDir, `${agentId}.md`);
520
- const agentContent = await fs.readFile(agentPath, 'utf8');
521
- const expansionAgentWebPath = this.convertToWebPath(agentPath, packName);
522
- sections.push(this.formatSection(expansionAgentWebPath, agentContent, packName));
523
-
524
- // Parse and collect dependencies from expansion agent
525
- const agentYaml = agentContent.match(/```yaml\n([\s\S]*?)\n```/);
526
- if (agentYaml) {
527
- try {
528
- const agentConfig = this.parseYaml(agentYaml[1]);
529
- if (agentConfig.dependencies) {
530
- for (const [resourceType, resources] of Object.entries(agentConfig.dependencies)) {
531
- if (Array.isArray(resources)) {
532
- for (const resourceName of resources) {
533
- const key = `${resourceType}#${resourceName}`;
534
- if (!allDependencies.has(key)) {
535
- allDependencies.set(key, { type: resourceType, name: resourceName });
536
- }
537
- }
538
- }
539
- }
540
- }
541
- } catch (error) {
542
- console.debug(`Failed to parse agent YAML for ${agentId}:`, error.message);
543
- }
544
- }
545
- } else {
546
- // Use core BMad version
547
- try {
548
- const coreAgentPath = path.join(this.rootDir, 'bmad-core', 'agents', `${agentId}.md`);
549
- const coreAgentContent = await fs.readFile(coreAgentPath, 'utf8');
550
- const coreAgentWebPath = this.convertToWebPath(coreAgentPath, packName);
551
- sections.push(this.formatSection(coreAgentWebPath, coreAgentContent, packName));
552
-
553
- // Parse and collect dependencies from core agent
554
- const yamlContent = yamlUtilities.extractYamlFromAgent(coreAgentContent, true);
555
- if (yamlContent) {
556
- try {
557
- const agentConfig = this.parseYaml(yamlContent);
558
- if (agentConfig.dependencies) {
559
- for (const [resourceType, resources] of Object.entries(agentConfig.dependencies)) {
560
- if (Array.isArray(resources)) {
561
- for (const resourceName of resources) {
562
- const key = `${resourceType}#${resourceName}`;
563
- if (!allDependencies.has(key)) {
564
- allDependencies.set(key, { type: resourceType, name: resourceName });
565
- }
566
- }
567
- }
568
- }
569
- }
570
- } catch (error) {
571
- console.debug(`Failed to parse agent YAML for ${agentId}:`, error.message);
572
- }
573
- }
574
- } catch {
575
- console.warn(` ⚠ Agent ${agentId} not found in core or expansion pack`);
576
- }
577
- }
578
- }
579
-
580
- // Add all collected dependencies from agents
581
- // Always prefer expansion pack versions if they exist
582
- for (const [key, dep] of allDependencies) {
583
- let found = false;
584
-
585
- // Always check expansion pack first, even if the dependency came from a core agent
586
- if (expansionResources.has(key)) {
587
- // We know it exists in expansion pack, find and load it
588
- const expansionPath = path.join(packDir, dep.type, dep.name);
589
- try {
590
- const content = await fs.readFile(expansionPath, 'utf8');
591
- const expansionWebPath = this.convertToWebPath(expansionPath, packName);
592
- sections.push(this.formatSection(expansionWebPath, content, packName));
593
- console.log(` ✓ Using expansion override for ${key}`);
594
- found = true;
595
- } catch {
596
- // Try next extension
597
- }
598
- }
599
-
600
- // If not found in expansion pack (or doesn't exist there), try core
601
- if (!found) {
602
- const corePath = path.join(this.rootDir, 'bmad-core', dep.type, dep.name);
603
- try {
604
- const content = await fs.readFile(corePath, 'utf8');
605
- const coreWebPath = this.convertToWebPath(corePath, packName);
606
- sections.push(this.formatSection(coreWebPath, content, packName));
607
- found = true;
608
- } catch {
609
- // Not in core either, continue
610
- }
611
- }
612
-
613
- // If not found in core, try common folder
614
- if (!found) {
615
- const commonPath = path.join(this.rootDir, 'common', dep.type, dep.name);
616
- try {
617
- const content = await fs.readFile(commonPath, 'utf8');
618
- const commonWebPath = this.convertToWebPath(commonPath, packName);
619
- sections.push(this.formatSection(commonWebPath, content, packName));
620
- found = true;
621
- } catch {
622
- // Not in common either, continue
623
- }
624
- }
625
-
626
- if (!found) {
627
- console.warn(` ⚠ Dependency ${key} not found in expansion pack or core`);
628
- }
629
- }
630
-
631
- // Add remaining expansion pack resources not already included as dependencies
632
- for (const resourceDir of resourceDirectories) {
633
- const resourcePath = path.join(packDir, resourceDir);
634
- try {
635
- const resourceFiles = await fs.readdir(resourcePath);
636
- for (const resourceFile of resourceFiles.filter(
637
- (f) => f.endsWith('.md') || f.endsWith('.yaml'),
638
- )) {
639
- const filePath = path.join(resourcePath, resourceFile);
640
- const fileContent = await fs.readFile(filePath, 'utf8');
641
- const fileName = resourceFile.replace(/\.(md|yaml)$/, '');
642
-
643
- // Only add if not already included as a dependency
644
- const resourceKey = `${resourceDir}#${fileName}`;
645
- if (!allDependencies.has(resourceKey)) {
646
- const fullResourcePath = path.join(resourcePath, resourceFile);
647
- const resourceWebPath = this.convertToWebPath(fullResourcePath, packName);
648
- sections.push(this.formatSection(resourceWebPath, fileContent, packName));
649
- }
650
- }
651
- } catch {
652
- // Directory might not exist, that's fine
653
- }
654
- }
655
-
656
- return sections.join('\n');
657
- }
658
-
659
- async listExpansionPacks() {
660
- const expansionPacksDir = path.join(this.rootDir, 'expansion-packs');
661
- try {
662
- const entries = await fs.readdir(expansionPacksDir, { withFileTypes: true });
663
- return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
664
- } catch {
665
- console.warn('No expansion-packs directory found');
666
- return [];
667
- }
668
- }
669
-
670
- listAgents() {
671
- return this.resolver.listAgents();
672
- }
673
- }
674
-
675
- module.exports = WebBuilder;