bmad-method 6.0.0-alpha.8 → 6.0.1

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 (1313) hide show
  1. package/.augment/code_review_guidelines.yaml +271 -0
  2. package/.claude/skills/bmad-os-changelog-social/SKILL.md +178 -0
  3. package/.claude/skills/bmad-os-changelog-social/examples/discord-example.md +53 -0
  4. package/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md +49 -0
  5. package/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md +55 -0
  6. package/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md +7 -0
  7. package/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md +229 -0
  8. package/.claude/skills/bmad-os-draft-changelog/SKILL.md +7 -0
  9. package/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md +82 -0
  10. package/.claude/skills/bmad-os-gh-triage/README.md +14 -0
  11. package/.claude/skills/bmad-os-gh-triage/SKILL.md +12 -0
  12. package/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md +60 -0
  13. package/.claude/skills/bmad-os-gh-triage/prompts/instructions.md +74 -0
  14. package/.claude/skills/bmad-os-release-module/README.md +24 -0
  15. package/.claude/skills/bmad-os-release-module/SKILL.md +7 -0
  16. package/.claude/skills/bmad-os-release-module/prompts/instructions.md +53 -0
  17. package/.coderabbit.yaml +85 -0
  18. package/.github/CODE_OF_CONDUCT.md +128 -0
  19. package/.github/ISSUE_TEMPLATE/bug-report.yaml +124 -0
  20. package/.github/ISSUE_TEMPLATE/config.yaml +5 -2
  21. package/.github/ISSUE_TEMPLATE/documentation.yaml +55 -0
  22. package/.github/ISSUE_TEMPLATE/feature-request.md +22 -0
  23. package/.github/ISSUE_TEMPLATE/issue.md +32 -0
  24. package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  25. package/.github/scripts/discord-helpers.sh +34 -0
  26. package/.github/workflows/coderabbit-review.yaml +22 -0
  27. package/.github/workflows/discord.yaml +82 -8
  28. package/.github/workflows/docs.yaml +64 -0
  29. package/.github/workflows/quality.yaml +40 -2
  30. package/.husky/pre-commit +13 -0
  31. package/.markdownlint-cli2.yaml +41 -0
  32. package/.prettierignore +7 -0
  33. package/.vscode/settings.json +4 -3
  34. package/CHANGELOG.md +1220 -382
  35. package/CNAME +1 -0
  36. package/CONTRIBUTING.md +97 -189
  37. package/CONTRIBUTORS.md +32 -0
  38. package/LICENSE +7 -3
  39. package/README.md +51 -388
  40. package/SECURITY.md +85 -0
  41. package/TRADEMARK.md +55 -0
  42. package/Wordmark.png +0 -0
  43. package/banner-bmad-method.png +0 -0
  44. package/docs/404.md +9 -0
  45. package/docs/_STYLE_GUIDE.md +370 -0
  46. package/docs/explanation/advanced-elicitation.md +49 -0
  47. package/docs/explanation/adversarial-review.md +59 -0
  48. package/docs/explanation/brainstorming.md +33 -0
  49. package/docs/explanation/established-projects-faq.md +50 -0
  50. package/docs/explanation/party-mode.md +59 -0
  51. package/docs/explanation/preventing-agent-conflicts.md +112 -0
  52. package/docs/explanation/project-context.md +157 -0
  53. package/docs/explanation/quick-flow.md +73 -0
  54. package/docs/explanation/why-solutioning-matters.md +77 -0
  55. package/docs/how-to/customize-bmad.md +172 -0
  56. package/docs/how-to/established-projects.md +105 -0
  57. package/docs/how-to/get-answers-about-bmad.md +103 -0
  58. package/docs/how-to/install-bmad.md +88 -0
  59. package/docs/how-to/non-interactive-installation.md +171 -0
  60. package/docs/how-to/project-context.md +136 -0
  61. package/docs/how-to/quick-fixes.md +123 -0
  62. package/docs/how-to/shard-large-documents.md +78 -0
  63. package/docs/how-to/upgrade-to-v6.md +97 -0
  64. package/docs/index.md +33 -204
  65. package/docs/reference/agents.md +28 -0
  66. package/docs/reference/commands.md +131 -0
  67. package/docs/reference/modules.md +76 -0
  68. package/docs/reference/testing.md +106 -0
  69. package/docs/reference/workflow-map.md +122 -0
  70. package/docs/tutorials/getting-started.md +219 -0
  71. package/eslint.config.mjs +26 -16
  72. package/package.json +35 -28
  73. package/src/bmm/agents/analyst.agent.yaml +43 -0
  74. package/src/bmm/agents/architect.agent.yaml +29 -0
  75. package/src/bmm/agents/dev.agent.yaml +38 -0
  76. package/src/bmm/agents/pm.agent.yaml +44 -0
  77. package/src/bmm/agents/qa.agent.yaml +58 -0
  78. package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
  79. package/src/bmm/agents/sm.agent.yaml +37 -0
  80. package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  81. package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +46 -0
  82. package/src/bmm/agents/ux-designer.agent.yaml +27 -0
  83. package/src/bmm/data/project-context-template.md +26 -0
  84. package/src/bmm/module-help.csv +31 -0
  85. package/src/bmm/module.yaml +50 -0
  86. package/src/bmm/teams/default-party.csv +20 -0
  87. package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  88. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  89. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  90. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  91. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  92. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  93. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  94. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  95. package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
  96. package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  97. package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  98. package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  99. package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  100. package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  101. package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  102. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  103. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  104. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  105. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  106. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  107. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  108. package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
  109. package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  110. package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  111. package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  112. package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  113. package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -0
  114. package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  115. package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
  116. package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
  117. package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
  118. package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
  119. package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  120. package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  121. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  122. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
  123. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  124. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -0
  125. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -0
  126. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  127. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  128. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  129. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  130. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  131. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  132. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  133. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  134. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  135. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  136. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  137. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  138. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  139. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  140. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  141. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -0
  142. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  143. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  144. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  145. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  146. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  147. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  148. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  149. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  150. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  151. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  152. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  153. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  154. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  155. package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  156. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
  157. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
  158. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
  159. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  160. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  161. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  162. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  163. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  164. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  165. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  166. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  167. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  168. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  169. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  170. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  171. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  172. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  173. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  174. package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  175. package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
  176. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -0
  177. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -0
  178. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -0
  179. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -0
  180. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -0
  181. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
  182. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  183. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  184. package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  185. package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
  186. package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  187. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  188. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  189. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  190. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  191. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  192. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  193. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  194. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  195. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  196. package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  197. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  198. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  199. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  200. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  201. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  202. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  203. package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  204. package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  205. package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +44 -0
  206. package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  207. package/src/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
  208. package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +54 -0
  209. package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  210. package/src/bmm/workflows/4-implementation/create-story/instructions.xml +346 -0
  211. package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
  212. package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +53 -0
  213. package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  214. package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  215. package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +21 -0
  216. package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
  217. package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +53 -0
  218. package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -0
  219. package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  220. package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
  221. package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
  222. package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
  223. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -0
  224. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -0
  225. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -0
  226. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -0
  227. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -0
  228. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
  229. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
  230. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +191 -0
  231. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +144 -0
  232. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +127 -0
  233. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -0
  234. package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  235. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  236. package/src/bmm/workflows/document-project/checklist.md +245 -0
  237. package/src/bmm/workflows/document-project/instructions.md +130 -0
  238. package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  239. package/src/bmm/workflows/document-project/workflow.yaml +22 -0
  240. package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  241. package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  242. package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  243. package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  244. package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  245. package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
  246. package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
  247. package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
  248. package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
  249. package/src/bmm/workflows/qa/automate/checklist.md +33 -0
  250. package/src/bmm/workflows/qa/automate/instructions.md +110 -0
  251. package/src/bmm/workflows/qa/automate/workflow.yaml +44 -0
  252. package/src/core/agents/bmad-master.agent.yaml +12 -21
  253. package/src/core/module-help.csv +9 -0
  254. package/src/core/module.yaml +25 -0
  255. package/src/core/tasks/editorial-review-prose.xml +102 -0
  256. package/src/core/tasks/editorial-review-structure.xml +209 -0
  257. package/src/core/tasks/help.md +85 -0
  258. package/src/core/tasks/index-docs.xml +2 -2
  259. package/src/core/tasks/review-adversarial-general.xml +48 -0
  260. package/src/core/tasks/shard-doc.xml +108 -0
  261. package/src/core/tasks/workflow.xml +126 -47
  262. package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
  263. package/src/core/workflows/advanced-elicitation/workflow.xml +117 -0
  264. package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
  265. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  266. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  267. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  268. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  269. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  270. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  271. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  272. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  273. package/src/core/workflows/brainstorming/template.md +13 -100
  274. package/src/core/workflows/brainstorming/workflow.md +58 -0
  275. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  276. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  277. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
  278. package/src/core/workflows/party-mode/workflow.md +194 -0
  279. package/src/utility/agent-components/activation-rules.txt +6 -0
  280. package/src/utility/agent-components/activation-steps.txt +14 -0
  281. package/src/utility/agent-components/agent-command-header.md +1 -0
  282. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  283. package/src/utility/agent-components/handler-action.txt +4 -0
  284. package/src/utility/agent-components/handler-exec.txt +6 -0
  285. package/src/utility/agent-components/handler-multi.txt +14 -0
  286. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  287. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  288. package/src/utility/agent-components/handler-workflow.txt +10 -0
  289. package/src/utility/agent-components/menu-handlers.txt +6 -0
  290. package/test/README.md +4 -4
  291. package/test/adversarial-review-tests/README.md +56 -0
  292. package/test/adversarial-review-tests/sample-content.md +46 -0
  293. package/test/adversarial-review-tests/test-cases.yaml +103 -0
  294. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +1 -0
  295. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +1 -0
  296. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +1 -0
  297. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +1 -0
  298. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +1 -0
  299. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +1 -0
  300. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +1 -0
  301. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
  302. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
  303. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +1 -0
  304. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +1 -0
  305. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +1 -0
  306. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +1 -0
  307. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +1 -0
  308. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +1 -1
  309. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +1 -0
  310. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +1 -0
  311. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +1 -0
  312. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +1 -0
  313. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +1 -0
  314. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +1 -0
  315. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +1 -0
  316. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +1 -0
  317. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +1 -0
  318. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +1 -0
  319. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +1 -0
  320. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +1 -0
  321. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +1 -0
  322. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +1 -0
  323. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +1 -0
  324. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +2 -3
  325. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +1 -0
  326. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
  327. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +2 -1
  328. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
  329. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +1 -0
  330. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +2 -1
  331. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +2 -1
  332. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
  333. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
  334. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +1 -0
  335. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +1 -0
  336. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +1 -0
  337. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +1 -0
  338. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +1 -0
  339. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +1 -0
  340. package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
  341. package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
  342. package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
  343. package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
  344. package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
  345. package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
  346. package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
  347. package/test/test-agent-schema.js +4 -4
  348. package/test/test-file-refs-csv.js +133 -0
  349. package/test/test-installation-components.js +10 -12
  350. package/test/test-rehype-plugins.mjs +1050 -0
  351. package/test/unit-test-schema.js +2 -2
  352. package/tools/build-docs.mjs +463 -0
  353. package/tools/cli/README.md +41 -571
  354. package/tools/cli/bmad-cli.js +67 -1
  355. package/tools/cli/commands/install.js +42 -34
  356. package/tools/cli/commands/status.js +44 -26
  357. package/tools/cli/commands/uninstall.js +146 -23
  358. package/tools/cli/external-official-modules.yaml +53 -0
  359. package/tools/cli/installers/install-messages.yaml +39 -0
  360. package/tools/cli/installers/lib/core/config-collector.js +589 -95
  361. package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
  362. package/tools/cli/installers/lib/core/dependency-resolver.js +57 -39
  363. package/tools/cli/installers/lib/core/detector.js +19 -125
  364. package/tools/cli/installers/lib/core/ide-config-manager.js +12 -9
  365. package/tools/cli/installers/lib/core/installer.js +2075 -1154
  366. package/tools/cli/installers/lib/core/manifest-generator.js +494 -103
  367. package/tools/cli/installers/lib/core/manifest.js +544 -46
  368. package/tools/cli/installers/lib/custom/handler.js +358 -0
  369. package/tools/cli/installers/lib/ide/_base-ide.js +83 -44
  370. package/tools/cli/installers/lib/ide/_config-driven.js +560 -0
  371. package/tools/cli/installers/lib/ide/codex.js +277 -54
  372. package/tools/cli/installers/lib/ide/github-copilot.js +607 -209
  373. package/tools/cli/installers/lib/ide/kilo.js +169 -75
  374. package/tools/cli/installers/lib/ide/manager.js +179 -48
  375. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  376. package/tools/cli/installers/lib/ide/platform-codes.yaml +227 -0
  377. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +95 -5
  378. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +51 -20
  379. package/tools/cli/installers/lib/ide/shared/module-injections.js +6 -3
  380. package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
  381. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +262 -14
  382. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +108 -27
  383. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +2 -1
  384. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  385. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +16 -0
  386. package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
  387. package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
  388. package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +15 -0
  389. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +7 -0
  390. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
  391. package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
  392. package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
  393. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
  394. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
  395. package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
  396. package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
  397. package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
  398. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
  399. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
  400. package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
  401. package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +14 -0
  402. package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +14 -0
  403. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +17 -0
  404. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +17 -0
  405. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  406. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  407. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  408. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +2 -1
  409. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +6 -0
  410. package/tools/cli/installers/lib/message-loader.js +83 -0
  411. package/tools/cli/installers/lib/modules/external-manager.js +136 -0
  412. package/tools/cli/installers/lib/modules/manager.js +931 -207
  413. package/tools/cli/lib/activation-builder.js +13 -16
  414. package/tools/cli/lib/agent/compiler.js +525 -0
  415. package/tools/cli/lib/agent/installer.js +680 -0
  416. package/tools/cli/lib/agent/template-engine.js +152 -0
  417. package/tools/cli/lib/agent-analyzer.js +48 -20
  418. package/tools/cli/lib/agent-party-generator.js +5 -17
  419. package/tools/cli/lib/cli-utils.js +76 -104
  420. package/tools/cli/lib/config.js +4 -3
  421. package/tools/cli/lib/platform-codes.js +2 -2
  422. package/tools/cli/lib/project-root.js +6 -0
  423. package/tools/cli/lib/prompts.js +809 -0
  424. package/tools/cli/lib/ui.js +1608 -270
  425. package/tools/cli/lib/xml-handler.js +4 -55
  426. package/tools/cli/lib/yaml-format.js +4 -6
  427. package/tools/cli/lib/yaml-xml-builder.js +203 -63
  428. package/tools/docs/_prompt-external-modules-page.md +59 -0
  429. package/tools/docs/fix-refs.md +91 -0
  430. package/tools/fix-doc-links.js +285 -0
  431. package/tools/lib/xml-utils.js +13 -0
  432. package/tools/maintainer/review-pr-README.md +55 -0
  433. package/tools/maintainer/review-pr.md +242 -0
  434. package/tools/migrate-custom-module-paths.js +124 -0
  435. package/tools/platform-codes.yaml +24 -0
  436. package/tools/schema/agent.js +306 -53
  437. package/tools/validate-agent-schema.js +3 -3
  438. package/tools/validate-doc-links.js +393 -0
  439. package/tools/validate-file-refs.js +554 -0
  440. package/tools/validate-svg-changes.sh +356 -0
  441. package/website/README.md +75 -0
  442. package/website/astro.config.mjs +135 -0
  443. package/website/public/favicon.ico +0 -0
  444. package/website/public/img/bmad-dark.png +0 -0
  445. package/website/public/img/bmad-light.png +0 -0
  446. package/website/public/workflow-map-diagram.html +361 -0
  447. package/website/src/components/Banner.astro +62 -0
  448. package/website/src/components/Header.astro +96 -0
  449. package/website/src/components/MobileMenuFooter.astro +33 -0
  450. package/website/src/content/config.ts +6 -0
  451. package/website/src/lib/site-url.mjs +25 -0
  452. package/website/src/pages/404.astro +11 -0
  453. package/website/src/pages/robots.txt.ts +48 -0
  454. package/website/src/rehype-base-paths.js +112 -0
  455. package/website/src/rehype-markdown-links.js +111 -0
  456. package/website/src/styles/custom.css +509 -0
  457. package/.bmad/_cfg/agent-manifest.csv +0 -11
  458. package/.bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  459. package/.bmad/_cfg/agents/bmm-analyst.customize.yaml +0 -42
  460. package/.bmad/_cfg/agents/bmm-architect.customize.yaml +0 -42
  461. package/.bmad/_cfg/agents/bmm-dev.customize.yaml +0 -42
  462. package/.bmad/_cfg/agents/bmm-pm.customize.yaml +0 -42
  463. package/.bmad/_cfg/agents/bmm-sm.customize.yaml +0 -42
  464. package/.bmad/_cfg/agents/bmm-tea.customize.yaml +0 -42
  465. package/.bmad/_cfg/agents/bmm-tech-writer.customize.yaml +0 -42
  466. package/.bmad/_cfg/agents/bmm-ux-designer.customize.yaml +0 -42
  467. package/.bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  468. package/.bmad/_cfg/files-manifest.csv +0 -289
  469. package/.bmad/_cfg/ides/claude-code.yaml +0 -7
  470. package/.bmad/_cfg/manifest.yaml +0 -10
  471. package/.bmad/_cfg/task-manifest.csv +0 -6
  472. package/.bmad/_cfg/tool-manifest.csv +0 -2
  473. package/.bmad/_cfg/workflow-manifest.csv +0 -44
  474. package/.bmad/bmb/README.md +0 -194
  475. package/.bmad/bmb/agents/bmad-builder.md +0 -70
  476. package/.bmad/bmb/config.yaml +0 -16
  477. package/.bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  478. package/.bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  479. package/.bmad/bmb/workflows/audit-workflow/template.md +0 -118
  480. package/.bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  481. package/.bmad/bmb/workflows/convert-legacy/README.md +0 -262
  482. package/.bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  483. package/.bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  484. package/.bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  485. package/.bmad/bmb/workflows/create-agent/README.md +0 -203
  486. package/.bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  487. package/.bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  488. package/.bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  489. package/.bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  490. package/.bmad/bmb/workflows/create-agent/checklist.md +0 -62
  491. package/.bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  492. package/.bmad/bmb/workflows/create-agent/instructions.md +0 -459
  493. package/.bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  494. package/.bmad/bmb/workflows/create-module/README.md +0 -229
  495. package/.bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  496. package/.bmad/bmb/workflows/create-module/checklist.md +0 -244
  497. package/.bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  498. package/.bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  499. package/.bmad/bmb/workflows/create-module/instructions.md +0 -581
  500. package/.bmad/bmb/workflows/create-module/module-structure.md +0 -400
  501. package/.bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  502. package/.bmad/bmb/workflows/create-workflow/README.md +0 -277
  503. package/.bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  504. package/.bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  505. package/.bmad/bmb/workflows/create-workflow/instructions.md +0 -724
  506. package/.bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1308
  507. package/.bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  508. package/.bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  509. package/.bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  510. package/.bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  511. package/.bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  512. package/.bmad/bmb/workflows/edit-agent/README.md +0 -112
  513. package/.bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  514. package/.bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  515. package/.bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  516. package/.bmad/bmb/workflows/edit-module/README.md +0 -187
  517. package/.bmad/bmb/workflows/edit-module/checklist.md +0 -165
  518. package/.bmad/bmb/workflows/edit-module/instructions.md +0 -339
  519. package/.bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  520. package/.bmad/bmb/workflows/edit-workflow/README.md +0 -119
  521. package/.bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  522. package/.bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  523. package/.bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  524. package/.bmad/bmb/workflows/module-brief/README.md +0 -264
  525. package/.bmad/bmb/workflows/module-brief/checklist.md +0 -116
  526. package/.bmad/bmb/workflows/module-brief/instructions.md +0 -267
  527. package/.bmad/bmb/workflows/module-brief/template.md +0 -275
  528. package/.bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  529. package/.bmad/bmb/workflows/redoc/README.md +0 -87
  530. package/.bmad/bmb/workflows/redoc/checklist.md +0 -99
  531. package/.bmad/bmb/workflows/redoc/instructions.md +0 -265
  532. package/.bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  533. package/.bmad/bmm/README.md +0 -128
  534. package/.bmad/bmm/agents/analyst.md +0 -75
  535. package/.bmad/bmm/agents/architect.md +0 -80
  536. package/.bmad/bmm/agents/dev.md +0 -69
  537. package/.bmad/bmm/agents/pm.md +0 -84
  538. package/.bmad/bmm/agents/sm.md +0 -93
  539. package/.bmad/bmm/agents/tea.md +0 -80
  540. package/.bmad/bmm/agents/tech-writer.md +0 -90
  541. package/.bmad/bmm/agents/ux-designer.md +0 -79
  542. package/.bmad/bmm/config.yaml +0 -18
  543. package/.bmad/bmm/docs/README.md +0 -235
  544. package/.bmad/bmm/docs/agents-guide.md +0 -1056
  545. package/.bmad/bmm/docs/brownfield-guide.md +0 -754
  546. package/.bmad/bmm/docs/enterprise-agentic-development.md +0 -680
  547. package/.bmad/bmm/docs/faq.md +0 -587
  548. package/.bmad/bmm/docs/glossary.md +0 -320
  549. package/.bmad/bmm/docs/party-mode.md +0 -224
  550. package/.bmad/bmm/docs/quick-spec-flow.md +0 -652
  551. package/.bmad/bmm/docs/quick-start.md +0 -366
  552. package/.bmad/bmm/docs/scale-adaptive-system.md +0 -599
  553. package/.bmad/bmm/docs/test-architecture.md +0 -394
  554. package/.bmad/bmm/docs/workflow-architecture-reference.md +0 -371
  555. package/.bmad/bmm/docs/workflow-document-project-reference.md +0 -487
  556. package/.bmad/bmm/docs/workflows-analysis.md +0 -370
  557. package/.bmad/bmm/docs/workflows-implementation.md +0 -284
  558. package/.bmad/bmm/docs/workflows-planning.md +0 -601
  559. package/.bmad/bmm/docs/workflows-solutioning.md +0 -501
  560. package/.bmad/bmm/tasks/daily-standup.xml +0 -85
  561. package/.bmad/bmm/teams/default-party.csv +0 -19
  562. package/.bmad/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  563. package/.bmad/bmm/testarch/knowledge/component-tdd.md +0 -486
  564. package/.bmad/bmm/testarch/knowledge/contract-testing.md +0 -957
  565. package/.bmad/bmm/testarch/knowledge/data-factories.md +0 -500
  566. package/.bmad/bmm/testarch/knowledge/email-auth.md +0 -721
  567. package/.bmad/bmm/testarch/knowledge/error-handling.md +0 -725
  568. package/.bmad/bmm/testarch/knowledge/feature-flags.md +0 -750
  569. package/.bmad/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  570. package/.bmad/bmm/testarch/knowledge/network-first.md +0 -486
  571. package/.bmad/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  572. package/.bmad/bmm/testarch/knowledge/playwright-config.md +0 -730
  573. package/.bmad/bmm/testarch/knowledge/probability-impact.md +0 -601
  574. package/.bmad/bmm/testarch/knowledge/risk-governance.md +0 -615
  575. package/.bmad/bmm/testarch/knowledge/selective-testing.md +0 -732
  576. package/.bmad/bmm/testarch/knowledge/selector-resilience.md +0 -527
  577. package/.bmad/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  578. package/.bmad/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  579. package/.bmad/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  580. package/.bmad/bmm/testarch/knowledge/test-quality.md +0 -664
  581. package/.bmad/bmm/testarch/knowledge/timing-debugging.md +0 -372
  582. package/.bmad/bmm/testarch/knowledge/visual-debugging.md +0 -524
  583. package/.bmad/bmm/testarch/tea-index.csv +0 -22
  584. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -110
  585. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  586. package/.bmad/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -26
  587. package/.bmad/bmm/workflows/1-analysis/domain-research/instructions.md +0 -423
  588. package/.bmad/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  589. package/.bmad/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -40
  590. package/.bmad/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  591. package/.bmad/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  592. package/.bmad/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  593. package/.bmad/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -45
  594. package/.bmad/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  595. package/.bmad/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  596. package/.bmad/bmm/workflows/1-analysis/research/checklist.md +0 -299
  597. package/.bmad/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  598. package/.bmad/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -439
  599. package/.bmad/bmm/workflows/1-analysis/research/instructions-market.md +0 -679
  600. package/.bmad/bmm/workflows/1-analysis/research/instructions-router.md +0 -133
  601. package/.bmad/bmm/workflows/1-analysis/research/instructions-technical.md +0 -538
  602. package/.bmad/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  603. package/.bmad/bmm/workflows/1-analysis/research/template-market.md +0 -347
  604. package/.bmad/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  605. package/.bmad/bmm/workflows/1-analysis/research/workflow.yaml +0 -44
  606. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  607. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1301
  608. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  609. package/.bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -60
  610. package/.bmad/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -350
  611. package/.bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +0 -52
  612. package/.bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +0 -169
  613. package/.bmad/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +0 -45
  614. package/.bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  615. package/.bmad/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -408
  616. package/.bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -237
  617. package/.bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  618. package/.bmad/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -46
  619. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -214
  620. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -80
  621. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -200
  622. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -451
  623. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -1115
  624. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  625. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  626. package/.bmad/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
  627. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
  628. package/.bmad/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  629. package/.bmad/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
  630. package/.bmad/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  631. package/.bmad/bmm/workflows/3-solutioning/architecture/instructions.md +0 -704
  632. package/.bmad/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  633. package/.bmad/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -68
  634. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
  635. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -305
  636. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  637. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  638. package/.bmad/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -64
  639. package/.bmad/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  640. package/.bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  641. package/.bmad/bmm/workflows/4-implementation/code-review/instructions.md +0 -420
  642. package/.bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -65
  643. package/.bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  644. package/.bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -201
  645. package/.bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -43
  646. package/.bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  647. package/.bmad/bmm/workflows/4-implementation/create-story/instructions.md +0 -283
  648. package/.bmad/bmm/workflows/4-implementation/create-story/template.md +0 -51
  649. package/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -74
  650. package/.bmad/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  651. package/.bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  652. package/.bmad/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
  653. package/.bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -26
  654. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  655. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -189
  656. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  657. package/.bmad/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
  658. package/.bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1460
  659. package/.bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -71
  660. package/.bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -238
  661. package/.bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  662. package/.bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -47
  663. package/.bmad/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  664. package/.bmad/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  665. package/.bmad/bmm/workflows/4-implementation/story-context/instructions.md +0 -234
  666. package/.bmad/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -57
  667. package/.bmad/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  668. package/.bmad/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -25
  669. package/.bmad/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  670. package/.bmad/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
  671. package/.bmad/bmm/workflows/document-project/checklist.md +0 -245
  672. package/.bmad/bmm/workflows/document-project/instructions.md +0 -222
  673. package/.bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  674. package/.bmad/bmm/workflows/document-project/workflow.yaml +0 -34
  675. package/.bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  676. package/.bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  677. package/.bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  678. package/.bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  679. package/.bmad/bmm/workflows/techdoc/documentation-standards.md +0 -262
  680. package/.bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  681. package/.bmad/bmm/workflows/testarch/atdd/checklist.md +0 -373
  682. package/.bmad/bmm/workflows/testarch/atdd/instructions.md +0 -785
  683. package/.bmad/bmm/workflows/testarch/atdd/workflow.yaml +0 -52
  684. package/.bmad/bmm/workflows/testarch/automate/checklist.md +0 -580
  685. package/.bmad/bmm/workflows/testarch/automate/instructions.md +0 -1303
  686. package/.bmad/bmm/workflows/testarch/automate/workflow.yaml +0 -61
  687. package/.bmad/bmm/workflows/testarch/ci/checklist.md +0 -246
  688. package/.bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  689. package/.bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  690. package/.bmad/bmm/workflows/testarch/ci/instructions.md +0 -517
  691. package/.bmad/bmm/workflows/testarch/ci/workflow.yaml +0 -53
  692. package/.bmad/bmm/workflows/testarch/framework/checklist.md +0 -321
  693. package/.bmad/bmm/workflows/testarch/framework/instructions.md +0 -455
  694. package/.bmad/bmm/workflows/testarch/framework/workflow.yaml +0 -53
  695. package/.bmad/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  696. package/.bmad/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  697. package/.bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  698. package/.bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -56
  699. package/.bmad/bmm/workflows/testarch/test-design/checklist.md +0 -234
  700. package/.bmad/bmm/workflows/testarch/test-design/instructions.md +0 -621
  701. package/.bmad/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  702. package/.bmad/bmm/workflows/testarch/test-design/workflow.yaml +0 -52
  703. package/.bmad/bmm/workflows/testarch/test-review/checklist.md +0 -470
  704. package/.bmad/bmm/workflows/testarch/test-review/instructions.md +0 -608
  705. package/.bmad/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  706. package/.bmad/bmm/workflows/testarch/test-review/workflow.yaml +0 -53
  707. package/.bmad/bmm/workflows/testarch/trace/checklist.md +0 -654
  708. package/.bmad/bmm/workflows/testarch/trace/instructions.md +0 -1045
  709. package/.bmad/bmm/workflows/testarch/trace/trace-template.md +0 -673
  710. package/.bmad/bmm/workflows/testarch/trace/workflow.yaml +0 -66
  711. package/.bmad/bmm/workflows/workflow-status/init/instructions.md +0 -822
  712. package/.bmad/bmm/workflows/workflow-status/init/workflow.yaml +0 -27
  713. package/.bmad/bmm/workflows/workflow-status/instructions.md +0 -387
  714. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -127
  715. package/.bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -115
  716. package/.bmad/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  717. package/.bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -97
  718. package/.bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -88
  719. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  720. package/.bmad/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  721. package/.bmad/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  722. package/.bmad/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +0 -49
  723. package/.bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -31
  724. package/.bmad/bmm/workflows/workflow-status/workflow.yaml +0 -28
  725. package/.bmad/core/agents/bmad-master.md +0 -71
  726. package/.bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  727. package/.bmad/core/config.yaml +0 -11
  728. package/.bmad/core/tasks/adv-elicit-methods.csv +0 -39
  729. package/.bmad/core/tasks/adv-elicit.xml +0 -106
  730. package/.bmad/core/tasks/index-docs.xml +0 -65
  731. package/.bmad/core/tasks/validate-workflow.xml +0 -89
  732. package/.bmad/core/tasks/workflow.xml +0 -156
  733. package/.bmad/core/tools/shard-doc.xml +0 -65
  734. package/.bmad/core/workflows/brainstorming/README.md +0 -271
  735. package/.bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  736. package/.bmad/core/workflows/brainstorming/instructions.md +0 -314
  737. package/.bmad/core/workflows/brainstorming/template.md +0 -102
  738. package/.bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  739. package/.bmad/core/workflows/party-mode/instructions.md +0 -183
  740. package/.bmad/core/workflows/party-mode/workflow.yaml +0 -27
  741. package/.bmad/docs/claude-code-instructions.md +0 -25
  742. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  743. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  744. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  745. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  746. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  747. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  748. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  749. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  750. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  751. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  752. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  753. package/.claude/commands/bmad/bmm/agents/analyst.md +0 -75
  754. package/.claude/commands/bmad/bmm/agents/architect.md +0 -80
  755. package/.claude/commands/bmad/bmm/agents/dev.md +0 -69
  756. package/.claude/commands/bmad/bmm/agents/pm.md +0 -84
  757. package/.claude/commands/bmad/bmm/agents/sm.md +0 -93
  758. package/.claude/commands/bmad/bmm/agents/tea.md +0 -80
  759. package/.claude/commands/bmad/bmm/agents/tech-writer.md +0 -90
  760. package/.claude/commands/bmad/bmm/agents/ux-designer.md +0 -79
  761. package/.claude/commands/bmad/bmm/workflows/architecture.md +0 -15
  762. package/.claude/commands/bmad/bmm/workflows/brainstorm-project.md +0 -15
  763. package/.claude/commands/bmad/bmm/workflows/code-review.md +0 -15
  764. package/.claude/commands/bmad/bmm/workflows/correct-course.md +0 -15
  765. package/.claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +0 -15
  766. package/.claude/commands/bmad/bmm/workflows/create-story.md +0 -15
  767. package/.claude/commands/bmad/bmm/workflows/create-ux-design.md +0 -15
  768. package/.claude/commands/bmad/bmm/workflows/dev-story.md +0 -15
  769. package/.claude/commands/bmad/bmm/workflows/document-project.md +0 -15
  770. package/.claude/commands/bmad/bmm/workflows/domain-research.md +0 -15
  771. package/.claude/commands/bmad/bmm/workflows/epic-tech-context.md +0 -15
  772. package/.claude/commands/bmad/bmm/workflows/prd.md +0 -15
  773. package/.claude/commands/bmad/bmm/workflows/product-brief.md +0 -15
  774. package/.claude/commands/bmad/bmm/workflows/research.md +0 -15
  775. package/.claude/commands/bmad/bmm/workflows/retrospective.md +0 -15
  776. package/.claude/commands/bmad/bmm/workflows/solutioning-gate-check.md +0 -15
  777. package/.claude/commands/bmad/bmm/workflows/sprint-planning.md +0 -15
  778. package/.claude/commands/bmad/bmm/workflows/story-context.md +0 -15
  779. package/.claude/commands/bmad/bmm/workflows/story-done.md +0 -15
  780. package/.claude/commands/bmad/bmm/workflows/story-ready.md +0 -15
  781. package/.claude/commands/bmad/bmm/workflows/tech-spec.md +0 -15
  782. package/.claude/commands/bmad/bmm/workflows/workflow-init.md +0 -15
  783. package/.claude/commands/bmad/bmm/workflows/workflow-status.md +0 -15
  784. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  785. package/.claude/commands/bmad/core/tasks/adv-elicit.md +0 -9
  786. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  787. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  788. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  789. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  790. package/.claude/settings.local.json +0 -16
  791. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  792. package/.github/ISSUE_TEMPLATE/idea_submission.md +0 -109
  793. package/.github/workflows/manual-release.yaml +0 -173
  794. package/docs/document-sharding-guide.md +0 -447
  795. package/docs/ide-info/auggie.md +0 -31
  796. package/docs/ide-info/claude-code.md +0 -25
  797. package/docs/ide-info/cline.md +0 -31
  798. package/docs/ide-info/codex.md +0 -21
  799. package/docs/ide-info/crush.md +0 -30
  800. package/docs/ide-info/cursor.md +0 -25
  801. package/docs/ide-info/gemini.md +0 -25
  802. package/docs/ide-info/github-copilot.md +0 -26
  803. package/docs/ide-info/iflow.md +0 -33
  804. package/docs/ide-info/kilo.md +0 -24
  805. package/docs/ide-info/opencode.md +0 -24
  806. package/docs/ide-info/qwen.md +0 -25
  807. package/docs/ide-info/roo.md +0 -27
  808. package/docs/ide-info/trae.md +0 -25
  809. package/docs/ide-info/windsurf.md +0 -22
  810. package/docs/installers-bundlers/ide-injections.md +0 -186
  811. package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -388
  812. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  813. package/docs/v4-to-v6-upgrade.md +0 -227
  814. package/src/core/_module-installer/install-config.yaml +0 -34
  815. package/src/core/_module-installer/installer.js +0 -60
  816. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  817. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  818. package/src/core/tasks/adv-elicit.xml +0 -106
  819. package/src/core/tasks/validate-workflow.xml +0 -89
  820. package/src/core/tools/shard-doc.xml +0 -65
  821. package/src/core/workflows/brainstorming/README.md +0 -271
  822. package/src/core/workflows/brainstorming/instructions.md +0 -314
  823. package/src/core/workflows/brainstorming/workflow.yaml +0 -43
  824. package/src/core/workflows/party-mode/instructions.md +0 -183
  825. package/src/core/workflows/party-mode/workflow.yaml +0 -27
  826. package/src/modules/bmb/README.md +0 -194
  827. package/src/modules/bmb/_module-installer/install-config.yaml +0 -31
  828. package/src/modules/bmb/agents/bmad-builder.agent.yaml +0 -59
  829. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -143
  830. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  831. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  832. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  833. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  834. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  835. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  836. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
  837. package/src/modules/bmb/workflows/create-agent/README.md +0 -203
  838. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
  839. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  840. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  841. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  842. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  843. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  844. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -459
  845. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
  846. package/src/modules/bmb/workflows/create-module/README.md +0 -229
  847. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  848. package/src/modules/bmb/workflows/create-module/checklist.md +0 -244
  849. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  850. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  851. package/src/modules/bmb/workflows/create-module/instructions.md +0 -581
  852. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -400
  853. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
  854. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  855. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  856. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  857. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -724
  858. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1308
  859. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  860. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  861. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  862. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
  863. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
  864. package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
  865. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  866. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
  867. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
  868. package/src/modules/bmb/workflows/edit-module/README.md +0 -187
  869. package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
  870. package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
  871. package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
  872. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  873. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  874. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  875. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
  876. package/src/modules/bmb/workflows/module-brief/README.md +0 -264
  877. package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
  878. package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
  879. package/src/modules/bmb/workflows/module-brief/template.md +0 -275
  880. package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
  881. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  882. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  883. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  884. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  885. package/src/modules/bmgd/README.md +0 -208
  886. package/src/modules/bmgd/_module-installer/install-config.yaml +0 -67
  887. package/src/modules/bmgd/agents/game-architect.agent.yaml +0 -33
  888. package/src/modules/bmgd/agents/game-designer.agent.yaml +0 -40
  889. package/src/modules/bmgd/agents/game-dev.agent.yaml +0 -40
  890. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +0 -75
  891. package/src/modules/bmgd/teams/default-party.csv +0 -10
  892. package/src/modules/bmgd/teams/team-gamedev.yaml +0 -18
  893. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +0 -26
  894. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/game-context.md +0 -115
  895. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +0 -128
  896. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +0 -41
  897. package/src/modules/bmgd/workflows/1-preproduction/game-brief/checklist.md +0 -128
  898. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +0 -371
  899. package/src/modules/bmgd/workflows/1-preproduction/game-brief/template.md +0 -205
  900. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +0 -44
  901. package/src/modules/bmgd/workflows/2-design/gdd/checklist.md +0 -148
  902. package/src/modules/bmgd/workflows/2-design/gdd/game-types/action-platformer.md +0 -45
  903. package/src/modules/bmgd/workflows/2-design/gdd/game-types/adventure.md +0 -84
  904. package/src/modules/bmgd/workflows/2-design/gdd/game-types/card-game.md +0 -76
  905. package/src/modules/bmgd/workflows/2-design/gdd/game-types/fighting.md +0 -89
  906. package/src/modules/bmgd/workflows/2-design/gdd/game-types/horror.md +0 -86
  907. package/src/modules/bmgd/workflows/2-design/gdd/game-types/idle-incremental.md +0 -78
  908. package/src/modules/bmgd/workflows/2-design/gdd/game-types/metroidvania.md +0 -87
  909. package/src/modules/bmgd/workflows/2-design/gdd/game-types/moba.md +0 -74
  910. package/src/modules/bmgd/workflows/2-design/gdd/game-types/party-game.md +0 -79
  911. package/src/modules/bmgd/workflows/2-design/gdd/game-types/puzzle.md +0 -58
  912. package/src/modules/bmgd/workflows/2-design/gdd/game-types/racing.md +0 -88
  913. package/src/modules/bmgd/workflows/2-design/gdd/game-types/rhythm.md +0 -79
  914. package/src/modules/bmgd/workflows/2-design/gdd/game-types/roguelike.md +0 -69
  915. package/src/modules/bmgd/workflows/2-design/gdd/game-types/rpg.md +0 -70
  916. package/src/modules/bmgd/workflows/2-design/gdd/game-types/sandbox.md +0 -79
  917. package/src/modules/bmgd/workflows/2-design/gdd/game-types/shooter.md +0 -62
  918. package/src/modules/bmgd/workflows/2-design/gdd/game-types/simulation.md +0 -73
  919. package/src/modules/bmgd/workflows/2-design/gdd/game-types/sports.md +0 -75
  920. package/src/modules/bmgd/workflows/2-design/gdd/game-types/strategy.md +0 -71
  921. package/src/modules/bmgd/workflows/2-design/gdd/game-types/survival.md +0 -79
  922. package/src/modules/bmgd/workflows/2-design/gdd/game-types/text-based.md +0 -91
  923. package/src/modules/bmgd/workflows/2-design/gdd/game-types/tower-defense.md +0 -79
  924. package/src/modules/bmgd/workflows/2-design/gdd/game-types/turn-based-tactics.md +0 -88
  925. package/src/modules/bmgd/workflows/2-design/gdd/game-types/visual-novel.md +0 -89
  926. package/src/modules/bmgd/workflows/2-design/gdd/game-types.csv +0 -25
  927. package/src/modules/bmgd/workflows/2-design/gdd/gdd-template.md +0 -153
  928. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -506
  929. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +0 -81
  930. package/src/modules/bmgd/workflows/2-design/narrative/checklist.md +0 -139
  931. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +0 -608
  932. package/src/modules/bmgd/workflows/2-design/narrative/narrative-template.md +0 -195
  933. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +0 -38
  934. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +0 -347
  935. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +0 -103
  936. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +0 -244
  937. package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +0 -222
  938. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +0 -704
  939. package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +0 -13
  940. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +0 -67
  941. package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +0 -12
  942. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +0 -22
  943. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -420
  944. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +0 -67
  945. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +0 -279
  946. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +0 -201
  947. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +0 -45
  948. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +0 -240
  949. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -283
  950. package/src/modules/bmgd/workflows/4-production/create-story/template.md +0 -51
  951. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +0 -76
  952. package/src/modules/bmgd/workflows/4-production/dev-story/AUDIT-REPORT.md +0 -367
  953. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +0 -38
  954. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -262
  955. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +0 -28
  956. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
  957. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -189
  958. package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
  959. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -60
  960. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +0 -1460
  961. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +0 -73
  962. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +0 -33
  963. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +0 -238
  964. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +0 -55
  965. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +0 -49
  966. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
  967. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
  968. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -234
  969. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -59
  970. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
  971. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -27
  972. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
  973. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -27
  974. package/src/modules/bmm/README.md +0 -128
  975. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  976. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  977. package/src/modules/bmm/_module-installer/install-config.yaml +0 -65
  978. package/src/modules/bmm/_module-installer/installer.js +0 -131
  979. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +0 -35
  980. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +0 -32
  981. package/src/modules/bmm/agents/analyst.agent.yaml +0 -48
  982. package/src/modules/bmm/agents/architect.agent.yaml +0 -42
  983. package/src/modules/bmm/agents/dev.agent.yaml +0 -40
  984. package/src/modules/bmm/agents/pm.agent.yaml +0 -61
  985. package/src/modules/bmm/agents/sm.agent.yaml +0 -72
  986. package/src/modules/bmm/agents/tea.agent.yaml +0 -65
  987. package/src/modules/bmm/agents/tech-writer.agent.yaml +0 -73
  988. package/src/modules/bmm/agents/ux-designer.agent.yaml +0 -38
  989. package/src/modules/bmm/docs/README.md +0 -235
  990. package/src/modules/bmm/docs/agents-guide.md +0 -1056
  991. package/src/modules/bmm/docs/brownfield-guide.md +0 -754
  992. package/src/modules/bmm/docs/enterprise-agentic-development.md +0 -680
  993. package/src/modules/bmm/docs/faq.md +0 -587
  994. package/src/modules/bmm/docs/glossary.md +0 -320
  995. package/src/modules/bmm/docs/party-mode.md +0 -224
  996. package/src/modules/bmm/docs/quick-spec-flow.md +0 -652
  997. package/src/modules/bmm/docs/quick-start.md +0 -366
  998. package/src/modules/bmm/docs/scale-adaptive-system.md +0 -599
  999. package/src/modules/bmm/docs/test-architecture.md +0 -394
  1000. package/src/modules/bmm/docs/workflow-architecture-reference.md +0 -371
  1001. package/src/modules/bmm/docs/workflow-document-project-reference.md +0 -487
  1002. package/src/modules/bmm/docs/workflows-analysis.md +0 -370
  1003. package/src/modules/bmm/docs/workflows-implementation.md +0 -284
  1004. package/src/modules/bmm/docs/workflows-planning.md +0 -601
  1005. package/src/modules/bmm/docs/workflows-solutioning.md +0 -501
  1006. package/src/modules/bmm/sub-modules/claude-code/README.md +0 -87
  1007. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  1008. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  1009. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  1010. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  1011. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  1012. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  1013. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  1014. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  1015. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  1016. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  1017. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  1018. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  1019. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  1020. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  1021. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  1022. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  1023. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  1024. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  1025. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  1026. package/src/modules/bmm/teams/default-party.csv +0 -19
  1027. package/src/modules/bmm/teams/team-fullstack.yaml +0 -12
  1028. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  1029. package/src/modules/bmm/testarch/knowledge/component-tdd.md +0 -486
  1030. package/src/modules/bmm/testarch/knowledge/contract-testing.md +0 -957
  1031. package/src/modules/bmm/testarch/knowledge/data-factories.md +0 -500
  1032. package/src/modules/bmm/testarch/knowledge/email-auth.md +0 -721
  1033. package/src/modules/bmm/testarch/knowledge/error-handling.md +0 -725
  1034. package/src/modules/bmm/testarch/knowledge/feature-flags.md +0 -750
  1035. package/src/modules/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  1036. package/src/modules/bmm/testarch/knowledge/network-first.md +0 -486
  1037. package/src/modules/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  1038. package/src/modules/bmm/testarch/knowledge/playwright-config.md +0 -730
  1039. package/src/modules/bmm/testarch/knowledge/probability-impact.md +0 -601
  1040. package/src/modules/bmm/testarch/knowledge/risk-governance.md +0 -615
  1041. package/src/modules/bmm/testarch/knowledge/selective-testing.md +0 -732
  1042. package/src/modules/bmm/testarch/knowledge/selector-resilience.md +0 -527
  1043. package/src/modules/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  1044. package/src/modules/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  1045. package/src/modules/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  1046. package/src/modules/bmm/testarch/knowledge/test-quality.md +0 -664
  1047. package/src/modules/bmm/testarch/knowledge/timing-debugging.md +0 -372
  1048. package/src/modules/bmm/testarch/knowledge/visual-debugging.md +0 -524
  1049. package/src/modules/bmm/testarch/tea-index.csv +0 -22
  1050. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -110
  1051. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  1052. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  1053. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -423
  1054. package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  1055. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -69
  1056. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  1057. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
  1058. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  1059. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
  1060. package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  1061. package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  1062. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
  1063. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  1064. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -439
  1065. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -679
  1066. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -133
  1067. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -538
  1068. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  1069. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
  1070. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  1071. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
  1072. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  1073. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1301
  1074. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  1075. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
  1076. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -350
  1077. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +0 -52
  1078. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +0 -169
  1079. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +0 -55
  1080. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  1081. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -408
  1082. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -237
  1083. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  1084. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -72
  1085. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -214
  1086. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -80
  1087. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -200
  1088. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -451
  1089. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -1115
  1090. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  1091. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  1092. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -79
  1093. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
  1094. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  1095. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
  1096. package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  1097. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -704
  1098. package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  1099. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -114
  1100. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
  1101. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -305
  1102. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  1103. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  1104. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -66
  1105. package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  1106. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  1107. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -420
  1108. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -59
  1109. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  1110. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +0 -201
  1111. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -45
  1112. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  1113. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -281
  1114. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +0 -51
  1115. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -63
  1116. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  1117. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  1118. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
  1119. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -28
  1120. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  1121. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -187
  1122. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  1123. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -48
  1124. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1460
  1125. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -70
  1126. package/src/modules/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  1127. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -229
  1128. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  1129. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -50
  1130. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  1131. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  1132. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -233
  1133. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -51
  1134. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  1135. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -27
  1136. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  1137. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -27
  1138. package/src/modules/bmm/workflows/document-project/checklist.md +0 -245
  1139. package/src/modules/bmm/workflows/document-project/documentation-requirements.csv +0 -12
  1140. package/src/modules/bmm/workflows/document-project/instructions.md +0 -222
  1141. package/src/modules/bmm/workflows/document-project/templates/deep-dive-template.md +0 -345
  1142. package/src/modules/bmm/workflows/document-project/templates/index-template.md +0 -169
  1143. package/src/modules/bmm/workflows/document-project/templates/project-overview-template.md +0 -103
  1144. package/src/modules/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  1145. package/src/modules/bmm/workflows/document-project/templates/source-tree-template.md +0 -135
  1146. package/src/modules/bmm/workflows/document-project/workflow.yaml +0 -36
  1147. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  1148. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  1149. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  1150. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  1151. package/src/modules/bmm/workflows/techdoc/documentation-standards.md +0 -262
  1152. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  1153. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +0 -373
  1154. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +0 -785
  1155. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +0 -54
  1156. package/src/modules/bmm/workflows/testarch/automate/checklist.md +0 -580
  1157. package/src/modules/bmm/workflows/testarch/automate/instructions.md +0 -1303
  1158. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +0 -63
  1159. package/src/modules/bmm/workflows/testarch/ci/checklist.md +0 -246
  1160. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  1161. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  1162. package/src/modules/bmm/workflows/testarch/ci/instructions.md +0 -517
  1163. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +0 -55
  1164. package/src/modules/bmm/workflows/testarch/framework/checklist.md +0 -321
  1165. package/src/modules/bmm/workflows/testarch/framework/instructions.md +0 -455
  1166. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +0 -55
  1167. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  1168. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  1169. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  1170. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -58
  1171. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +0 -234
  1172. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +0 -621
  1173. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  1174. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +0 -54
  1175. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +0 -470
  1176. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +0 -608
  1177. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  1178. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +0 -55
  1179. package/src/modules/bmm/workflows/testarch/trace/checklist.md +0 -654
  1180. package/src/modules/bmm/workflows/testarch/trace/instructions.md +0 -1045
  1181. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +0 -673
  1182. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +0 -68
  1183. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +0 -823
  1184. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +0 -29
  1185. package/src/modules/bmm/workflows/workflow-status/instructions.md +0 -387
  1186. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -127
  1187. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -115
  1188. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  1189. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -97
  1190. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -88
  1191. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  1192. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  1193. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  1194. package/src/modules/bmm/workflows/workflow-status/sample-level-3-workflow.yaml +0 -49
  1195. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -31
  1196. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +0 -30
  1197. package/src/modules/cis/README.md +0 -153
  1198. package/src/modules/cis/_module-installer/install-config.yaml +0 -16
  1199. package/src/modules/cis/_module-installer/installer.js +0 -92
  1200. package/src/modules/cis/agents/README.md +0 -104
  1201. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +0 -28
  1202. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +0 -28
  1203. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +0 -28
  1204. package/src/modules/cis/agents/innovation-strategist.agent.yaml +0 -28
  1205. package/src/modules/cis/agents/storyteller.agent.yaml +0 -28
  1206. package/src/modules/cis/teams/creative-squad.yaml +0 -7
  1207. package/src/modules/cis/teams/default-party.csv +0 -11
  1208. package/src/modules/cis/workflows/README.md +0 -139
  1209. package/src/modules/cis/workflows/design-thinking/README.md +0 -56
  1210. package/src/modules/cis/workflows/design-thinking/design-methods.csv +0 -31
  1211. package/src/modules/cis/workflows/design-thinking/instructions.md +0 -200
  1212. package/src/modules/cis/workflows/design-thinking/template.md +0 -111
  1213. package/src/modules/cis/workflows/design-thinking/workflow.yaml +0 -43
  1214. package/src/modules/cis/workflows/innovation-strategy/README.md +0 -56
  1215. package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
  1216. package/src/modules/cis/workflows/innovation-strategy/instructions.md +0 -274
  1217. package/src/modules/cis/workflows/innovation-strategy/template.md +0 -189
  1218. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +0 -43
  1219. package/src/modules/cis/workflows/problem-solving/README.md +0 -56
  1220. package/src/modules/cis/workflows/problem-solving/instructions.md +0 -250
  1221. package/src/modules/cis/workflows/problem-solving/solving-methods.csv +0 -31
  1222. package/src/modules/cis/workflows/problem-solving/template.md +0 -165
  1223. package/src/modules/cis/workflows/problem-solving/workflow.yaml +0 -43
  1224. package/src/modules/cis/workflows/storytelling/README.md +0 -58
  1225. package/src/modules/cis/workflows/storytelling/instructions.md +0 -291
  1226. package/src/modules/cis/workflows/storytelling/story-types.csv +0 -26
  1227. package/src/modules/cis/workflows/storytelling/template.md +0 -113
  1228. package/src/modules/cis/workflows/storytelling/workflow.yaml +0 -43
  1229. package/src/utility/models/agent-activation-ide.xml +0 -51
  1230. package/src/utility/models/agent-activation-web.xml +0 -60
  1231. package/src/utility/models/agent-command-header.md +0 -1
  1232. package/src/utility/models/agent-config-template.md +0 -23
  1233. package/src/utility/models/agent-in-team-activation.xml +0 -3
  1234. package/src/utility/models/fragments/activation-rules.xml +0 -8
  1235. package/src/utility/models/fragments/activation-steps.xml +0 -16
  1236. package/src/utility/models/fragments/handler-action.xml +0 -4
  1237. package/src/utility/models/fragments/handler-exec.xml +0 -5
  1238. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  1239. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  1240. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  1241. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  1242. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  1243. package/src/utility/templates/agent.customize.template.yaml +0 -42
  1244. package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +0 -26
  1245. package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +0 -25
  1246. package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +0 -26
  1247. package/tools/cli/bundlers/bundle-web.js +0 -179
  1248. package/tools/cli/bundlers/test-analyst.js +0 -28
  1249. package/tools/cli/bundlers/test-bundler.js +0 -118
  1250. package/tools/cli/bundlers/web-bundler.js +0 -1667
  1251. package/tools/cli/commands/build.js +0 -458
  1252. package/tools/cli/commands/list.js +0 -28
  1253. package/tools/cli/commands/update.js +0 -28
  1254. package/tools/cli/installers/lib/ide/auggie.js +0 -179
  1255. package/tools/cli/installers/lib/ide/claude-code.js +0 -471
  1256. package/tools/cli/installers/lib/ide/cline.js +0 -220
  1257. package/tools/cli/installers/lib/ide/crush.js +0 -240
  1258. package/tools/cli/installers/lib/ide/cursor.js +0 -352
  1259. package/tools/cli/installers/lib/ide/gemini.js +0 -206
  1260. package/tools/cli/installers/lib/ide/iflow.js +0 -125
  1261. package/tools/cli/installers/lib/ide/opencode.js +0 -212
  1262. package/tools/cli/installers/lib/ide/qwen.js +0 -318
  1263. package/tools/cli/installers/lib/ide/roo.js +0 -253
  1264. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +0 -14
  1265. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +0 -12
  1266. package/tools/cli/installers/lib/ide/trae.js +0 -266
  1267. package/tools/cli/installers/lib/ide/windsurf.js +0 -211
  1268. package/tools/cli/lib/replace-project-root.js +0 -239
  1269. package/tools/cli/regenerate-manifests.js +0 -28
  1270. package/tools/cli/test-yaml-builder.js +0 -43
  1271. package/tools/flattener/aggregate.js +0 -76
  1272. package/tools/flattener/binary.js +0 -80
  1273. package/tools/flattener/discovery.js +0 -71
  1274. package/tools/flattener/files.js +0 -35
  1275. package/tools/flattener/ignoreRules.js +0 -172
  1276. package/tools/flattener/main.js +0 -483
  1277. package/tools/flattener/projectRoot.js +0 -201
  1278. package/tools/flattener/prompts.js +0 -44
  1279. package/tools/flattener/stats.helpers.js +0 -368
  1280. package/tools/flattener/stats.js +0 -75
  1281. package/tools/flattener/test-matrix.js +0 -409
  1282. package/tools/flattener/xml.js +0 -88
  1283. package/tools/validate-bundles.js +0 -87
  1284. package/v6-open-items.md +0 -17
  1285. package/web-bundles/bmgd/agents/game-architect.xml +0 -664
  1286. package/web-bundles/bmgd/agents/game-designer.xml +0 -5489
  1287. package/web-bundles/bmgd/agents/game-dev.xml +0 -595
  1288. package/web-bundles/bmgd/agents/game-scrum-master.xml +0 -699
  1289. package/web-bundles/bmgd/teams/team-gamedev.xml +0 -6588
  1290. package/web-bundles/bmm/agents/analyst.xml +0 -5263
  1291. package/web-bundles/bmm/agents/architect.xml +0 -2378
  1292. package/web-bundles/bmm/agents/dev.xml +0 -248
  1293. package/web-bundles/bmm/agents/pm.xml +0 -4137
  1294. package/web-bundles/bmm/agents/sm.xml +0 -708
  1295. package/web-bundles/bmm/agents/tea.xml +0 -759
  1296. package/web-bundles/bmm/agents/tech-writer.xml +0 -624
  1297. package/web-bundles/bmm/agents/ux-designer.xml +0 -2492
  1298. package/web-bundles/bmm/teams/team-fullstack.xml +0 -12369
  1299. package/web-bundles/cis/agents/brainstorming-coach.xml +0 -1069
  1300. package/web-bundles/cis/agents/creative-problem-solver.xml +0 -1060
  1301. package/web-bundles/cis/agents/design-thinking-coach.xml +0 -955
  1302. package/web-bundles/cis/agents/innovation-strategist.xml +0 -1108
  1303. package/web-bundles/cis/agents/storyteller.xml +0 -598
  1304. package/web-bundles/cis/teams/creative-squad.xml +0 -3449
  1305. /package/{.bmad → src}/bmm/teams/team-fullstack.yaml +0 -0
  1306. /package/{.bmad → src}/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -0
  1307. /package/{.bmad → src}/bmm/workflows/document-project/documentation-requirements.csv +0 -0
  1308. /package/{.bmad → src}/bmm/workflows/document-project/templates/deep-dive-template.md +0 -0
  1309. /package/{.bmad → src}/bmm/workflows/document-project/templates/index-template.md +0 -0
  1310. /package/{.bmad → src}/bmm/workflows/document-project/templates/project-overview-template.md +0 -0
  1311. /package/{.bmad → src}/bmm/workflows/document-project/templates/source-tree-template.md +0 -0
  1312. /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
  1313. /package/{src/utility/models/action-command-header.md → tools/cli/installers/lib/ide/templates/split/.gitkeep} +0 -0
@@ -1,1667 +0,0 @@
1
- const path = require('node:path');
2
- const fs = require('fs-extra');
3
- const chalk = require('chalk');
4
- const yaml = require('js-yaml');
5
- const { DependencyResolver } = require('../installers/lib/core/dependency-resolver');
6
- const { XmlHandler } = require('../lib/xml-handler');
7
- const { YamlXmlBuilder } = require('../lib/yaml-xml-builder');
8
- const { AgentPartyGenerator } = require('../lib/agent-party-generator');
9
- const xml2js = require('xml2js');
10
- const { getProjectRoot, getSourcePath, getModulePath } = require('../lib/project-root');
11
-
12
- class WebBundler {
13
- constructor(sourceDir = null, outputDir = 'web-bundles') {
14
- this.sourceDir = sourceDir || getSourcePath();
15
- this.outputDir = path.isAbsolute(outputDir) ? outputDir : path.join(getProjectRoot(), outputDir);
16
- this.modulesPath = getSourcePath('modules');
17
- this.utilityPath = getSourcePath('utility');
18
-
19
- this.dependencyResolver = new DependencyResolver();
20
- this.xmlHandler = new XmlHandler();
21
- this.yamlBuilder = new YamlXmlBuilder();
22
-
23
- // Cache for resolved dependencies to avoid duplicates
24
- this.dependencyCache = new Map();
25
-
26
- // Discovered agents and teams for manifest generation
27
- this.discoveredAgents = [];
28
- this.discoveredTeams = [];
29
-
30
- // Temporary directory for generated manifests
31
- this.tempDir = path.join(process.cwd(), '.bundler-temp');
32
- this.tempManifestDir = path.join(this.tempDir, 'bmad', '_cfg');
33
-
34
- // Bundle statistics
35
- this.stats = {
36
- totalAgents: 0,
37
- bundledAgents: 0,
38
- skippedAgents: 0,
39
- failedAgents: 0,
40
- invalidXml: 0,
41
- warnings: [],
42
- };
43
- }
44
-
45
- /**
46
- * Main entry point to bundle all modules
47
- */
48
- async bundleAll() {
49
- console.log(chalk.cyan.bold('═══════════════════════════════════════════════'));
50
- console.log(chalk.cyan.bold(' 🚀 Web Bundle Generation'));
51
- console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
52
-
53
- try {
54
- // Vendor cross-module workflows FIRST
55
- const modules = await this.discoverModules();
56
- for (const module of modules) {
57
- await this.vendorCrossModuleWorkflows(module);
58
- }
59
-
60
- // Pre-discover all modules to generate complete manifests
61
- for (const module of modules) {
62
- await this.preDiscoverModule(module);
63
- }
64
-
65
- // Create temporary manifest files
66
- await this.createTempManifests();
67
-
68
- // Process all modules
69
- for (const module of modules) {
70
- await this.bundleModule(module);
71
- }
72
-
73
- // Display summary
74
- this.displaySummary();
75
- } finally {
76
- // Clean up temp files
77
- await this.cleanupTempFiles();
78
- }
79
- }
80
-
81
- /**
82
- * Bundle a specific module
83
- */
84
- async bundleModule(moduleName) {
85
- const modulePath = path.join(this.modulesPath, moduleName);
86
-
87
- if (!(await fs.pathExists(modulePath))) {
88
- console.log(chalk.yellow(`Module ${moduleName} not found`));
89
- return { module: moduleName, agents: [], teams: [] };
90
- }
91
-
92
- console.log(chalk.bold(`\n📦 Bundling module: ${moduleName}`));
93
-
94
- const results = {
95
- module: moduleName,
96
- agents: [],
97
- teams: [],
98
- };
99
-
100
- // Vendor cross-module workflows first (if not already done by bundleAll)
101
- await this.vendorCrossModuleWorkflows(moduleName);
102
-
103
- // Pre-discover all agents and teams for manifest generation
104
- await this.preDiscoverModule(moduleName);
105
-
106
- // Ensure temp manifests exist (might not exist if called directly)
107
- if (!(await fs.pathExists(this.tempManifestDir))) {
108
- await this.createTempManifests();
109
- }
110
-
111
- // Process agents
112
- const agents = await this.discoverAgents(modulePath);
113
- for (const agent of agents) {
114
- try {
115
- await this.bundleAgent(moduleName, agent, false); // false = don't track again
116
- results.agents.push(agent);
117
- } catch (error) {
118
- console.error(` Failed to bundle agent ${agent}:`, error.message);
119
- }
120
- }
121
-
122
- // Process teams
123
- const teams = await this.discoverTeams(modulePath);
124
- for (const team of teams) {
125
- try {
126
- await this.bundleTeam(moduleName, team);
127
- results.teams.push(team);
128
- } catch (error) {
129
- console.error(` Failed to bundle team ${team}:`, error.message);
130
- }
131
- }
132
-
133
- return results;
134
- }
135
-
136
- /**
137
- * Bundle a single agent
138
- */
139
- async bundleAgent(moduleName, agentFile, shouldTrack = true) {
140
- const agentName = agentFile.endsWith('.agent.yaml') ? path.basename(agentFile, '.agent.yaml') : path.basename(agentFile, '.md');
141
- this.stats.totalAgents++;
142
-
143
- console.log(chalk.dim(` → Processing: ${agentName}`));
144
-
145
- // Vendor cross-module workflows first (if not already done)
146
- await this.vendorCrossModuleWorkflows(moduleName);
147
-
148
- const agentPath = path.join(this.modulesPath, moduleName, 'agents', agentFile);
149
-
150
- // Check if agent file exists
151
- if (!(await fs.pathExists(agentPath))) {
152
- this.stats.failedAgents++;
153
- console.log(chalk.red(` ✗ Agent file not found`));
154
- throw new Error(`Agent file not found: ${agentPath}`);
155
- }
156
-
157
- let content;
158
- let agentXml;
159
-
160
- // Handle YAML agents - build in-memory to XML
161
- if (agentFile.endsWith('.agent.yaml')) {
162
- // Build agent from YAML (no customize file for web bundles)
163
- const xmlContent = await this.yamlBuilder.buildFromYaml(agentPath, null, {
164
- includeMetadata: false, // Don't include build metadata in web bundles
165
- forWebBundle: true, // Use web-specific activation fragments
166
- });
167
-
168
- content = xmlContent;
169
- agentXml = this.extractAgentXml(xmlContent);
170
- } else {
171
- // Legacy MD format - read and extract XML
172
- content = await fs.readFile(agentPath, 'utf8');
173
- agentXml = this.extractAgentXml(content);
174
- }
175
-
176
- if (!agentXml) {
177
- this.stats.failedAgents++;
178
- console.log(chalk.red(` ✗ No agent XML found in ${agentFile}`));
179
- return;
180
- }
181
-
182
- // Check if agent has bundle="false" attribute
183
- if (this.shouldSkipBundling(agentXml)) {
184
- this.stats.skippedAgents++;
185
- console.log(chalk.gray(` ⊘ Skipped (bundle="false")`));
186
- return;
187
- }
188
-
189
- // Process {project-root} references in agent XML
190
- agentXml = this.processProjectRootReferences(agentXml);
191
-
192
- // Track for manifest generation BEFORE generating manifests (if not pre-discovered)
193
- if (shouldTrack) {
194
- const agentDetails = AgentPartyGenerator.extractAgentDetails(content, moduleName, agentName);
195
- if (agentDetails) {
196
- this.discoveredAgents.push(agentDetails);
197
- }
198
- }
199
-
200
- // Resolve dependencies with warning tracking
201
- const dependencyWarnings = [];
202
- const { dependencies, skippedWorkflows } = await this.resolveAgentDependencies(agentXml, moduleName, dependencyWarnings);
203
-
204
- if (dependencyWarnings.length > 0) {
205
- this.stats.warnings.push({ agent: agentName, warnings: dependencyWarnings });
206
- }
207
-
208
- // Check for module's default-party.csv and include it as agent manifest
209
- const defaultPartyPath = path.join(this.modulesPath, moduleName, 'teams', 'default-party.csv');
210
- if (await fs.pathExists(defaultPartyPath)) {
211
- const partyContent = await fs.readFile(defaultPartyPath, 'utf8');
212
- // Process any placeholders in the CSV content
213
- const processedPartyContent = this.processProjectRootReferences(partyContent);
214
- // Wrap as text to preserve raw CSV format in CDATA
215
- const wrappedParty = this.wrapContentInXml(processedPartyContent, 'bmad/_cfg/agent-manifest.csv', 'text');
216
- dependencies.set('bmad/_cfg/agent-manifest.csv', wrappedParty);
217
- console.log(chalk.gray(` + Added party manifest from module default-party.csv`));
218
- }
219
-
220
- // Remove commands for skipped workflows from agent XML
221
- if (skippedWorkflows.length > 0) {
222
- agentXml = this.removeSkippedWorkflowCommands(agentXml, skippedWorkflows);
223
- }
224
-
225
- // Build the bundle (no manifests for individual agents)
226
- const bundle = this.buildAgentBundle(agentXml, dependencies);
227
-
228
- // Validate XML
229
- const isValid = await this.validateXml(bundle);
230
- if (!isValid) {
231
- this.stats.invalidXml++;
232
- console.log(chalk.red(` ⚠ Invalid XML generated!`));
233
- }
234
-
235
- // Write bundle to output
236
- const outputPath = path.join(this.outputDir, moduleName, 'agents', `${agentName}.xml`);
237
- await fs.ensureDir(path.dirname(outputPath));
238
- await fs.writeFile(outputPath, bundle, 'utf8');
239
-
240
- this.stats.bundledAgents++;
241
- const statusIcon = isValid ? chalk.green('✓') : chalk.yellow('⚠');
242
- console.log(` ${statusIcon} Bundled: ${agentName}.xml${isValid ? '' : chalk.yellow(' (invalid XML)')}`);
243
- }
244
-
245
- /**
246
- * Bundle a team - includes orchestrator and all agents with their dependencies
247
- */
248
- async bundleTeam(moduleName, teamFile) {
249
- const teamName = path.basename(teamFile, path.extname(teamFile));
250
- console.log(chalk.dim(` → Processing team: ${teamName}`));
251
-
252
- const teamPath = path.join(this.modulesPath, moduleName, 'teams', teamFile);
253
-
254
- // Check if team file exists
255
- if (!(await fs.pathExists(teamPath))) {
256
- console.log(chalk.red(` ✗ Team file not found`));
257
- throw new Error(`Team file not found: ${teamPath}`);
258
- }
259
-
260
- // Read and parse team YAML
261
- const teamContent = await fs.readFile(teamPath, 'utf8');
262
- const teamConfig = yaml.load(teamContent);
263
-
264
- if (!teamConfig || !teamConfig.bundle) {
265
- console.log(chalk.red(` ✗ Invalid team configuration`));
266
- return;
267
- }
268
-
269
- // Start building the team bundle
270
- const dependencies = new Map();
271
- const processed = new Set();
272
- const allAgentXmls = [];
273
- const warnings = [];
274
-
275
- // Check if team has a party CSV file (agent manifest)
276
- const hasPartyFile = teamConfig.party && teamConfig.party.endsWith('.csv');
277
- if (hasPartyFile) {
278
- // Load the party CSV and add it as bmad/_cfg/agent-manifest.csv
279
- const partyPath = path.join(path.dirname(teamPath), teamConfig.party.replace(/^\.\//, ''));
280
- if (await fs.pathExists(partyPath)) {
281
- const partyContent = await fs.readFile(partyPath, 'utf8');
282
- // Process any placeholders in the CSV content
283
- const processedPartyContent = this.processProjectRootReferences(partyContent);
284
- // Wrap as text/csv to preserve raw CSV format in CDATA
285
- const wrappedParty = this.wrapContentInXml(processedPartyContent, 'bmad/_cfg/agent-manifest.csv', 'text');
286
- dependencies.set('bmad/_cfg/agent-manifest.csv', wrappedParty);
287
- console.log(chalk.gray(` + Added agent manifest from: ${teamConfig.party}`));
288
- } else {
289
- console.log(chalk.yellow(` ⚠ Party file not found: ${partyPath}`));
290
- }
291
- }
292
-
293
- // 1. First, always add the bmad-web-orchestrator (XML file only, no transformation needed)
294
- const orchestratorXmlPath = path.join(this.sourceDir, 'core', 'agents', 'bmad-web-orchestrator.agent.xml');
295
-
296
- if (await fs.pathExists(orchestratorXmlPath)) {
297
- // Read the XML file directly - no transformation needed
298
- const xmlContent = await fs.readFile(orchestratorXmlPath, 'utf8');
299
- let orchestratorXml = xmlContent.trim();
300
-
301
- // Process {project-root} references
302
- orchestratorXml = this.processProjectRootReferences(orchestratorXml);
303
-
304
- // Inject help/exit menu items only (orchestrator has its own activation)
305
- orchestratorXml = this.injectHelpExitMenuItems(orchestratorXml);
306
-
307
- // Resolve orchestrator dependencies
308
- const { dependencies: orchDeps } = await this.resolveAgentDependencies(orchestratorXml, 'core', warnings);
309
-
310
- // Merge orchestrator dependencies
311
- for (const [id, content] of orchDeps) {
312
- if (!dependencies.has(id)) {
313
- dependencies.set(id, content);
314
- }
315
- }
316
-
317
- // Add orchestrator XML first
318
- allAgentXmls.push(orchestratorXml);
319
- console.log(chalk.gray(` + Added orchestrator: bmad-web-orchestrator`));
320
- } else {
321
- console.log(chalk.yellow(` ⚠ Orchestrator not found at: ${orchestratorXmlPath}`));
322
- }
323
-
324
- // 2. Determine which agents to include
325
- let agentsToBundle = [];
326
-
327
- if (teamConfig.agents === '*' || (Array.isArray(teamConfig.agents) && teamConfig.agents.includes('*'))) {
328
- // Include all agents from the module
329
- const agentsPath = path.join(this.modulesPath, moduleName, 'agents');
330
- if (await fs.pathExists(agentsPath)) {
331
- const agentFiles = await fs.readdir(agentsPath);
332
- agentsToBundle = agentFiles
333
- .filter((file) => file.endsWith('.agent.yaml') || (file.endsWith('.md') && !file.toLowerCase().includes('readme')))
334
- .map((file) => file.replace(/\.(agent\.yaml|md)$/, ''));
335
- }
336
- } else if (Array.isArray(teamConfig.agents)) {
337
- // Include specific agents listed
338
- agentsToBundle = teamConfig.agents;
339
- } else {
340
- console.log(chalk.yellow(` ⚠ No agents specified in team configuration`));
341
- }
342
-
343
- // 3. Process each agent and their dependencies
344
- for (const agentName of agentsToBundle) {
345
- // Try YAML first, then MD
346
- let agentPath = path.join(this.modulesPath, moduleName, 'agents', `${agentName}.agent.yaml`);
347
- let isYaml = await fs.pathExists(agentPath);
348
-
349
- if (!isYaml) {
350
- agentPath = path.join(this.modulesPath, moduleName, 'agents', `${agentName}.md`);
351
- if (!(await fs.pathExists(agentPath))) {
352
- console.log(chalk.yellow(` ⚠ Agent not found: ${agentName}`));
353
- continue;
354
- }
355
- }
356
-
357
- let agentXml;
358
-
359
- if (isYaml) {
360
- // Build YAML agent in-memory - skip activation for team agents (orchestrator handles it)
361
- const xmlContent = await this.yamlBuilder.buildFromYaml(agentPath, null, {
362
- includeMetadata: false,
363
- skipActivation: true, // Skip activation for team agents
364
- });
365
- agentXml = this.extractAgentXml(xmlContent);
366
- } else {
367
- // Read legacy MD agent
368
- const agentContent = await fs.readFile(agentPath, 'utf8');
369
- agentXml = this.extractAgentXml(agentContent);
370
- }
371
-
372
- if (!agentXml) {
373
- console.log(chalk.yellow(` ⚠ No XML found in agent: ${agentName}`));
374
- continue;
375
- }
376
-
377
- // Skip agents with bundle="false"
378
- if (this.shouldSkipBundling(agentXml)) {
379
- console.log(chalk.gray(` ⊘ Skipped agent (bundle="false"): ${agentName}`));
380
- continue;
381
- }
382
-
383
- // Process {project-root} references
384
- agentXml = this.processProjectRootReferences(agentXml);
385
-
386
- // Resolve agent dependencies
387
- const agentWarnings = [];
388
- const { dependencies: agentDeps, skippedWorkflows } = await this.resolveAgentDependencies(agentXml, moduleName, agentWarnings);
389
-
390
- if (agentWarnings.length > 0) {
391
- warnings.push({ agent: agentName, warnings: agentWarnings });
392
- }
393
-
394
- // Remove commands for skipped workflows from agent XML
395
- if (skippedWorkflows.length > 0) {
396
- agentXml = this.removeSkippedWorkflowCommands(agentXml, skippedWorkflows);
397
- }
398
-
399
- // Merge agent dependencies (deduplicate)
400
- for (const [id, content] of agentDeps) {
401
- if (!dependencies.has(id)) {
402
- dependencies.set(id, content);
403
- }
404
- }
405
-
406
- // Skip web activation injection for team agents - orchestrator handles everything
407
- // Only inject help/exit menu items if missing
408
- agentXml = this.injectHelpExitMenuItems(agentXml);
409
-
410
- // Add agent XML to the collection
411
- allAgentXmls.push(agentXml);
412
- console.log(chalk.gray(` + Added agent: ${agentName}`));
413
- }
414
-
415
- // 4. Build the team bundle XML
416
- const bundle = this.buildTeamBundle(teamConfig.bundle, allAgentXmls, dependencies);
417
-
418
- // 5. Validate XML
419
- const isValid = await this.validateXml(bundle);
420
- if (!isValid) {
421
- console.log(chalk.red(` ⚠ Invalid XML generated for team!`));
422
- }
423
-
424
- // 6. Write bundle to output
425
- const outputPath = path.join(this.outputDir, moduleName, 'teams', `${teamName}.xml`);
426
- await fs.ensureDir(path.dirname(outputPath));
427
- await fs.writeFile(outputPath, bundle, 'utf8');
428
-
429
- const statusIcon = isValid ? chalk.green('✓') : chalk.yellow('⚠');
430
- console.log(` ${statusIcon} Bundled team: ${teamName}.xml${isValid ? '' : chalk.yellow(' (invalid XML)')}`);
431
-
432
- // Track warnings
433
- if (warnings.length > 0) {
434
- this.stats.warnings.push(...warnings);
435
- }
436
- }
437
-
438
- /**
439
- * Build the final team bundle XML
440
- */
441
- buildTeamBundle(teamMetadata, agentXmls, dependencies) {
442
- const parts = ['<?xml version="1.0" encoding="UTF-8"?>', '<team-bundle>', ' <!-- Agent Definitions -->', ' <agents>'];
443
-
444
- for (const agentXml of agentXmls) {
445
- // Indent each agent XML properly (add 4 spaces to each line)
446
- const indentedAgent = agentXml
447
- .split('\n')
448
- .map((line) => ' ' + line)
449
- .join('\n');
450
- parts.push(indentedAgent);
451
- }
452
-
453
- parts.push(' </agents>');
454
-
455
- // Add all dependencies
456
- if (dependencies && dependencies.size > 0) {
457
- parts.push('', ' <!-- Shared Dependencies -->', ' <dependencies>');
458
-
459
- for (const [id, content] of dependencies) {
460
- // All dependencies are now consistently wrapped in <file> elements
461
- // Indent properly (add 4 spaces to each line)
462
- const indentedContent = content
463
- .split('\n')
464
- .map((line) => ' ' + line)
465
- .join('\n');
466
- parts.push(indentedContent);
467
- }
468
-
469
- parts.push(' </dependencies>');
470
- }
471
-
472
- parts.push('</team-bundle>');
473
-
474
- return parts.join('\n');
475
- }
476
-
477
- /**
478
- * Vendor cross-module workflows for a module
479
- * Scans source agent YAML files for workflow-install attributes and copies workflows
480
- */
481
- async vendorCrossModuleWorkflows(moduleName) {
482
- const modulePath = path.join(this.modulesPath, moduleName);
483
- const agentsPath = path.join(modulePath, 'agents');
484
-
485
- if (!(await fs.pathExists(agentsPath))) {
486
- return;
487
- }
488
-
489
- // Find all agent YAML files
490
- const files = await fs.readdir(agentsPath);
491
- const yamlFiles = files.filter((f) => f.endsWith('.agent.yaml'));
492
-
493
- for (const agentFile of yamlFiles) {
494
- const agentPath = path.join(agentsPath, agentFile);
495
- const agentYaml = yaml.load(await fs.readFile(agentPath, 'utf8'));
496
-
497
- const menuItems = agentYaml?.agent?.menu || [];
498
- const workflowInstallItems = menuItems.filter((item) => item['workflow-install']);
499
-
500
- for (const item of workflowInstallItems) {
501
- const sourceWorkflowPath = item.workflow;
502
- const installWorkflowPath = item['workflow-install'];
503
-
504
- if (!sourceWorkflowPath || !installWorkflowPath) {
505
- continue;
506
- }
507
-
508
- // Parse paths to extract module and workflow location
509
- // Support both {project-root}/bmad/... and {project-root}/{bmad_folder}/... patterns
510
- const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
511
- const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
512
-
513
- if (!sourceMatch || !installMatch) {
514
- continue;
515
- }
516
-
517
- const sourceModule = sourceMatch[1];
518
- const sourceWorkflowRelPath = sourceMatch[2];
519
- const installModule = installMatch[1];
520
- const installWorkflowRelPath = installMatch[2];
521
-
522
- // Build actual filesystem paths
523
- const actualSourceWorkflowPath = path.join(this.modulesPath, sourceModule, 'workflows', sourceWorkflowRelPath);
524
- const actualDestWorkflowPath = path.join(this.modulesPath, installModule, 'workflows', installWorkflowRelPath);
525
-
526
- // Check if source workflow exists
527
- if (!(await fs.pathExists(actualSourceWorkflowPath))) {
528
- console.log(chalk.yellow(` ⚠ Source workflow not found for vendoring: ${sourceWorkflowPath}`));
529
- continue;
530
- }
531
-
532
- // Check if destination already exists (skip if already vendored)
533
- if (await fs.pathExists(actualDestWorkflowPath)) {
534
- continue;
535
- }
536
-
537
- // Get workflow directory (workflow.yaml is in a directory with other files)
538
- const sourceWorkflowDir = path.dirname(actualSourceWorkflowPath);
539
- const destWorkflowDir = path.dirname(actualDestWorkflowPath);
540
-
541
- // Copy entire workflow directory
542
- await fs.copy(sourceWorkflowDir, destWorkflowDir, { overwrite: false });
543
-
544
- // Update config_source in the vendored workflow.yaml
545
- const workflowYamlPath = actualDestWorkflowPath;
546
- if (await fs.pathExists(workflowYamlPath)) {
547
- await this.updateWorkflowConfigSource(workflowYamlPath, installModule);
548
- }
549
-
550
- console.log(chalk.dim(` → Vendored workflow: ${sourceWorkflowRelPath} → ${installModule}/workflows/${installWorkflowRelPath}`));
551
- }
552
- }
553
- }
554
-
555
- /**
556
- * Update config_source in a vendored workflow YAML file
557
- */
558
- async updateWorkflowConfigSource(workflowYamlPath, newModuleName) {
559
- let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
560
-
561
- // Replace config_source with new module reference
562
- // Support both old format (bmad) and new format ({bmad_folder})
563
- const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(?:\{bmad_folder\}|bmad)\/[^/]+\/config\.yaml["']?/g;
564
- const newConfigSource = `config_source: "{project-root}/{bmad_folder}/${newModuleName}/config.yaml"`;
565
-
566
- const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
567
- await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
568
- }
569
-
570
- /**
571
- * Pre-discover all agents and teams in a module for manifest generation
572
- */
573
- async preDiscoverModule(moduleName) {
574
- const modulePath = path.join(this.modulesPath, moduleName);
575
-
576
- // Clear any previously discovered agents for this module
577
- this.discoveredAgents = this.discoveredAgents.filter((a) => a.module !== moduleName);
578
-
579
- // Discover agents
580
- const agentsPath = path.join(modulePath, 'agents');
581
- if (await fs.pathExists(agentsPath)) {
582
- const files = await fs.readdir(agentsPath);
583
- for (const file of files) {
584
- if (file.endsWith('.agent.yaml') || (file.endsWith('.md') && !file.toLowerCase().includes('readme'))) {
585
- const agentPath = path.join(agentsPath, file);
586
- let content;
587
-
588
- if (file.endsWith('.agent.yaml')) {
589
- // Build YAML agent in-memory
590
- content = await this.yamlBuilder.buildFromYaml(agentPath, null, {
591
- includeMetadata: false,
592
- });
593
- } else {
594
- // Read legacy MD agent
595
- content = await fs.readFile(agentPath, 'utf8');
596
- }
597
-
598
- const agentXml = this.extractAgentXml(content);
599
-
600
- if (agentXml) {
601
- // Skip agents with bundle="false"
602
- if (this.shouldSkipBundling(agentXml)) {
603
- continue;
604
- }
605
-
606
- const agentName = file.endsWith('.agent.yaml') ? path.basename(file, '.agent.yaml') : path.basename(file, '.md');
607
- // Use the shared generator to extract agent details (pass full content)
608
- const agentDetails = AgentPartyGenerator.extractAgentDetails(content, moduleName, agentName);
609
- if (agentDetails) {
610
- this.discoveredAgents.push(agentDetails);
611
- }
612
- }
613
- }
614
- }
615
- }
616
-
617
- // TODO: Discover teams when implemented
618
- }
619
-
620
- /**
621
- * Extract agent XML from markdown content
622
- */
623
- extractAgentXml(content) {
624
- // Try 4 backticks first (can contain 3 backtick blocks inside)
625
- let match = content.match(/````xml\s*([\s\S]*?)````/);
626
- if (!match) {
627
- // Fall back to 3 backticks if no 4-backtick block found
628
- match = content.match(/```xml\s*([\s\S]*?)```/);
629
- }
630
-
631
- if (match) {
632
- const xmlContent = match[1];
633
- const agentMatch = xmlContent.match(/<agent[^>]*>[\s\S]*?<\/agent>/);
634
- return agentMatch ? agentMatch[0] : null;
635
- }
636
-
637
- // Fall back to direct extraction
638
- match = content.match(/<agent[^>]*>[\s\S]*?<\/agent>/);
639
- return match ? match[0] : null;
640
- }
641
-
642
- /**
643
- * Resolve all dependencies for an agent
644
- */
645
- async resolveAgentDependencies(agentXml, moduleName, warnings = []) {
646
- const dependencies = new Map();
647
- const processed = new Set();
648
- const skippedWorkflows = [];
649
-
650
- // Extract file references from agent XML
651
- const { refs, workflowRefs } = this.extractFileReferences(agentXml);
652
-
653
- // Process regular file references
654
- for (const ref of refs) {
655
- await this.processFileDependency(ref, dependencies, processed, moduleName, warnings);
656
- }
657
-
658
- // Process workflow references with special handling
659
- for (const workflowRef of workflowRefs) {
660
- const result = await this.processWorkflowDependency(workflowRef, dependencies, processed, moduleName, warnings);
661
- if (result && result.skipped) {
662
- skippedWorkflows.push(workflowRef);
663
- }
664
- }
665
-
666
- return { dependencies, skippedWorkflows };
667
- }
668
-
669
- /**
670
- * Extract file references from agent XML
671
- */
672
- extractFileReferences(xml) {
673
- const refs = new Set();
674
- const workflowRefs = new Set();
675
-
676
- // Match various file reference patterns
677
- const patterns = [
678
- /exec="([^"]+)"/g, // Command exec paths
679
- /tmpl="([^"]+)"/g, // Template paths
680
- /data="([^"]+)"/g, // Data file paths
681
- /file="([^"]+)"/g, // Generic file refs
682
- /src="([^"]+)"/g, // Source paths
683
- /system-prompts="([^"]+)"/g,
684
- /tools="([^"]+)"/g,
685
- /knowledge="([^"]+)"/g,
686
- /{project-root}\/([^"'\s<>]+)/g, // Legacy {project-root} paths
687
- /\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after {bmad_folder} replacement)
688
- ];
689
-
690
- for (const pattern of patterns) {
691
- let match;
692
- while ((match = pattern.exec(xml)) !== null) {
693
- let filePath = match[1];
694
- // Remove {project-root} prefix if present
695
- filePath = filePath.replace(/^{project-root}\//, '');
696
- // Remove {bmad_folder} prefix if present (should be rare, mostly replaced already)
697
- filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
698
-
699
- // For bmad/ pattern, prepend 'bmad/' since it was captured without it
700
- if (pattern.source.includes(String.raw`\bbmad\/`)) {
701
- filePath = 'bmad/' + filePath;
702
- }
703
-
704
- // Skip obvious placeholder/example paths
705
- if (filePath && !filePath.includes('path/to/') && !filePath.includes('example') && !filePath.includes('...')) {
706
- refs.add(filePath);
707
- }
708
- }
709
- }
710
-
711
- // Extract workflow references - both 'workflow' and 'run-workflow' attributes
712
- const workflowPatterns = [
713
- /workflow="([^"]+)"/g, // Menu items with workflow attribute
714
- /run-workflow="([^"]+)"/g, // Commands with run-workflow attribute
715
- /validate-workflow="([^"]+)"/g, // Validation workflow references
716
- ];
717
-
718
- for (const pattern of workflowPatterns) {
719
- let match;
720
- while ((match = pattern.exec(xml)) !== null) {
721
- let workflowPath = match[1];
722
- workflowPath = workflowPath.replace(/^{project-root}\//, '');
723
- // Remove {bmad_folder} prefix if present and replace with bmad
724
- workflowPath = workflowPath.replace(/^{bmad_folder}\//, 'bmad/');
725
-
726
- // Skip obvious placeholder/example paths
727
- if (workflowPath && workflowPath.endsWith('.yaml') && !workflowPath.includes('path/to/') && !workflowPath.includes('example')) {
728
- workflowRefs.add(workflowPath);
729
- }
730
- }
731
- }
732
-
733
- return { refs: [...refs], workflowRefs: [...workflowRefs] };
734
- }
735
-
736
- /**
737
- * Remove commands from agent XML that reference skipped workflows
738
- */
739
- removeSkippedWorkflowCommands(agentXml, skippedWorkflows) {
740
- let modifiedXml = agentXml;
741
-
742
- // For each skipped workflow, find and remove menu items and commands
743
- for (const workflowPath of skippedWorkflows) {
744
- // Need to escape special regex characters in the path
745
- const escapedPath = workflowPath.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`);
746
-
747
- // Pattern 1: Remove <item> tags with workflow attribute
748
- // Match: <item cmd="..." workflow="workflowPath">...</item>
749
- const itemWorkflowPattern = new RegExp(`\\s*<item\\s+[^>]*workflow="[^"]*${escapedPath}"[^>]*>.*?</item>\\s*`, 'gs');
750
- modifiedXml = modifiedXml.replace(itemWorkflowPattern, '');
751
-
752
- // Pattern 2: Remove <item> tags with run-workflow attribute
753
- // Match: <item cmd="..." run-workflow="workflowPath">...</item>
754
- const itemRunWorkflowPattern = new RegExp(`\\s*<item\\s+[^>]*run-workflow="[^"]*${escapedPath}"[^>]*>.*?</item>\\s*`, 'gs');
755
- modifiedXml = modifiedXml.replace(itemRunWorkflowPattern, '');
756
-
757
- // Pattern 3: Remove <c> tags with run-workflow attribute (legacy)
758
- // Match: <c cmd="..." run-workflow="workflowPath">...</c>
759
- const cPattern = new RegExp(`\\s*<c\\s+[^>]*run-workflow="[^"]*${escapedPath}"[^>]*>.*?</c>\\s*`, 'gs');
760
- modifiedXml = modifiedXml.replace(cPattern, '');
761
- }
762
-
763
- return modifiedXml;
764
- }
765
-
766
- /**
767
- * Process a file dependency recursively
768
- */
769
- async processFileDependency(filePath, dependencies, processed, moduleName, warnings = []) {
770
- // Skip workflow YAML files - they're handled by processWorkflowDependency
771
- if (filePath.includes('/workflow') && filePath.endsWith('workflow.yaml')) {
772
- return;
773
- }
774
-
775
- // Skip if already processed
776
- if (processed.has(filePath)) {
777
- return;
778
- }
779
- processed.add(filePath);
780
-
781
- // Skip agent-manifest.csv manifest for web bundles (agents are already bundled)
782
- if (filePath === 'bmad/_cfg/agent-manifest.csv' || filePath.endsWith('/agent-manifest.csv')) {
783
- return;
784
- }
785
-
786
- // Handle wildcard patterns
787
- if (filePath.includes('*')) {
788
- await this.processWildcardDependency(filePath, dependencies, processed, moduleName, warnings);
789
- return;
790
- }
791
-
792
- // Resolve actual file path
793
- const actualPath = this.resolveFilePath(filePath, moduleName);
794
-
795
- if (!actualPath || !(await fs.pathExists(actualPath))) {
796
- warnings.push(filePath);
797
- return;
798
- }
799
-
800
- // Read file content
801
- let content = await fs.readFile(actualPath, 'utf8');
802
-
803
- // Process {project-root} references
804
- content = this.processProjectRootReferences(content);
805
-
806
- // Extract dependencies from frontmatter if present
807
- const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
808
- if (frontmatterMatch) {
809
- const frontmatter = frontmatterMatch[1];
810
- // Look for dependencies in frontmatter
811
- const depMatch = frontmatter.match(/dependencies:\s*\[(.*?)\]/);
812
- if (depMatch) {
813
- const deps = depMatch[1].match(/['"]([^'"]+)['"]/g);
814
- if (deps) {
815
- for (const dep of deps) {
816
- let depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
817
- depPath = depPath.replace(/^{bmad_folder}\//, 'bmad/');
818
- if (depPath && !processed.has(depPath)) {
819
- await this.processFileDependency(depPath, dependencies, processed, moduleName, warnings);
820
- }
821
- }
822
- }
823
- }
824
- // Look for template references
825
- const templateMatch = frontmatter.match(/template:\s*\[(.*?)\]/);
826
- if (templateMatch) {
827
- const templates = templateMatch[1].match(/['"]([^'"]+)['"]/g);
828
- if (templates) {
829
- for (const template of templates) {
830
- let templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
831
- templatePath = templatePath.replace(/^{bmad_folder}\//, 'bmad/');
832
- if (templatePath && !processed.has(templatePath)) {
833
- await this.processFileDependency(templatePath, dependencies, processed, moduleName, warnings);
834
- }
835
- }
836
- }
837
- }
838
- }
839
-
840
- // Extract XML from markdown if applicable
841
- const ext = path.extname(actualPath).toLowerCase();
842
- let processedContent = content;
843
-
844
- switch (ext) {
845
- case '.md': {
846
- // Try to extract XML from markdown - handle both 3 and 4 backtick blocks
847
- // First try 4 backticks (which can contain 3 backtick blocks inside)
848
- let xmlMatches = [...content.matchAll(/````xml\s*([\s\S]*?)````/g)];
849
-
850
- // If no 4-backtick blocks, try 3 backticks
851
- if (xmlMatches.length === 0) {
852
- xmlMatches = [...content.matchAll(/```xml\s*([\s\S]*?)```/g)];
853
- }
854
-
855
- const xmlBlocks = [];
856
-
857
- for (const match of xmlMatches) {
858
- if (match[1]) {
859
- xmlBlocks.push(match[1].trim());
860
- }
861
- }
862
-
863
- if (xmlBlocks.length > 0) {
864
- // For XML content, just include it directly (it's already valid XML)
865
- processedContent = xmlBlocks.join('\n\n');
866
- } else {
867
- // No XML blocks found, skip non-XML markdown files
868
- return;
869
- }
870
-
871
- break;
872
- }
873
- case '.csv': {
874
- // CSV files need special handling - convert to XML file-index
875
- const lines = content.split('\n').filter((line) => line.trim());
876
- if (lines.length === 0) return;
877
-
878
- const headers = lines[0].split(',').map((h) => h.trim());
879
- const rows = lines.slice(1);
880
-
881
- const indexParts = [`<file-index id="${filePath}">`];
882
- indexParts.push(' <items>');
883
-
884
- // Track files referenced in CSV for additional bundling
885
- const referencedFiles = new Set();
886
-
887
- for (const row of rows) {
888
- const values = row.split(',').map((v) => v.trim());
889
- if (values.every((v) => !v)) continue;
890
-
891
- indexParts.push(' <item>');
892
- for (const [i, header] of headers.entries()) {
893
- const value = values[i] || '';
894
- const tagName = header.toLowerCase().replaceAll(/[^a-z0-9]/g, '_');
895
- indexParts.push(` <${tagName}>${value}</${tagName}>`);
896
-
897
- // Track referenced files
898
- if (header.toLowerCase().includes('file') && value.endsWith('.md')) {
899
- // Build path relative to CSV location
900
- const csvDir = path.dirname(actualPath);
901
- const refPath = path.join(csvDir, value);
902
- if (fs.existsSync(refPath)) {
903
- const refId = filePath.replace('index.csv', value);
904
- referencedFiles.add(refId);
905
- }
906
- }
907
- }
908
- indexParts.push(' </item>');
909
- }
910
-
911
- indexParts.push(' </items>', '</file-index>');
912
-
913
- // Store the XML version wrapped in a file element
914
- const csvXml = indexParts.join('\n');
915
- const wrappedCsv = `<file id="${filePath}" type="xml">\n${csvXml}\n</file>`;
916
- dependencies.set(filePath, wrappedCsv);
917
-
918
- // Process referenced files from CSV
919
- for (const refId of referencedFiles) {
920
- if (!processed.has(refId)) {
921
- await this.processFileDependency(refId, dependencies, processed, moduleName, warnings);
922
- }
923
- }
924
-
925
- return;
926
- }
927
- case '.xml': {
928
- // XML files can be included directly
929
- processedContent = content;
930
- break;
931
- }
932
- default: {
933
- // For other non-XML file types, skip them
934
- return;
935
- }
936
- }
937
-
938
- // Determine file type for wrapping
939
- let fileType = 'text';
940
- if (ext === '.xml' || (ext === '.md' && processedContent.trim().startsWith('<'))) {
941
- fileType = 'xml';
942
- } else
943
- switch (ext) {
944
- case '.yaml':
945
- case '.yml': {
946
- fileType = 'yaml';
947
-
948
- break;
949
- }
950
- case '.json': {
951
- fileType = 'json';
952
-
953
- break;
954
- }
955
- case '.md': {
956
- fileType = 'md';
957
-
958
- break;
959
- }
960
- // No default
961
- }
962
-
963
- // Wrap content in file element and store
964
- const wrappedContent = this.wrapContentInXml(processedContent, filePath, fileType);
965
- dependencies.set(filePath, wrappedContent);
966
-
967
- // Recursively scan for more dependencies
968
- const { refs: nestedRefs } = this.extractFileReferences(processedContent);
969
- for (const ref of nestedRefs) {
970
- await this.processFileDependency(ref, dependencies, processed, moduleName, warnings);
971
- }
972
- }
973
-
974
- /**
975
- * Process a workflow YAML file and its bundle files
976
- */
977
- async processWorkflowDependency(workflowPath, dependencies, processed, moduleName, warnings = []) {
978
- // Skip if already processed
979
- if (processed.has(workflowPath)) {
980
- return { skipped: false };
981
- }
982
- processed.add(workflowPath);
983
-
984
- // Resolve actual file path
985
- const actualPath = this.resolveFilePath(workflowPath, moduleName);
986
-
987
- if (!actualPath || !(await fs.pathExists(actualPath))) {
988
- warnings.push(workflowPath);
989
- return { skipped: true };
990
- }
991
-
992
- // Read and parse YAML file
993
- const yamlContent = await fs.readFile(actualPath, 'utf8');
994
- let workflowConfig;
995
-
996
- try {
997
- workflowConfig = yaml.load(yamlContent);
998
- } catch (error) {
999
- warnings.push(`${workflowPath} (invalid YAML: ${error.message})`);
1000
- return { skipped: true };
1001
- }
1002
-
1003
- // Check if web_bundle is explicitly set to false
1004
- if (workflowConfig.web_bundle === false) {
1005
- // Mark this workflow as skipped so we can remove the command from agent
1006
- return { skipped: true, workflowPath };
1007
- }
1008
-
1009
- // Create YAML content with only web_bundle section (flattened)
1010
- let bundleYamlContent;
1011
- if (workflowConfig.web_bundle && typeof workflowConfig.web_bundle === 'object') {
1012
- // Only include the web_bundle content, flattened to root level
1013
- bundleYamlContent = yaml.dump(workflowConfig.web_bundle);
1014
- } else {
1015
- // If no web_bundle section, include full YAML
1016
- bundleYamlContent = yamlContent;
1017
- }
1018
-
1019
- // Process {project-root} and {bmad_folder} references in the YAML content
1020
- bundleYamlContent = this.processProjectRootReferences(bundleYamlContent);
1021
-
1022
- // Include the YAML file with only web_bundle content, wrapped in XML
1023
- // Process the workflow path to create a clean ID
1024
- let yamlId = workflowPath.replace(/^{project-root}\//, '');
1025
- yamlId = yamlId.replace(/^{bmad_folder}\//, 'bmad/');
1026
- const wrappedYaml = this.wrapContentInXml(bundleYamlContent, yamlId, 'yaml');
1027
- dependencies.set(yamlId, wrappedYaml);
1028
-
1029
- // Always include core workflow task when processing workflows
1030
- await this.includeCoreWorkflowFiles(dependencies, processed, moduleName, warnings);
1031
-
1032
- // Check if advanced elicitation is enabled
1033
- if (workflowConfig.web_bundle && workflowConfig.web_bundle.use_advanced_elicitation) {
1034
- await this.includeAdvancedElicitationFiles(dependencies, processed, moduleName, warnings);
1035
- }
1036
-
1037
- // Process web_bundle_files if they exist
1038
- if (workflowConfig.web_bundle && workflowConfig.web_bundle.web_bundle_files) {
1039
- const bundleFiles = workflowConfig.web_bundle.web_bundle_files;
1040
-
1041
- for (const bundleFilePath of bundleFiles) {
1042
- // Process the file path to create a clean ID for checking if already processed
1043
- let cleanFilePath = bundleFilePath.replace(/^{project-root}\//, '');
1044
- cleanFilePath = cleanFilePath.replace(/^{bmad_folder}\//, 'bmad/');
1045
-
1046
- if (processed.has(cleanFilePath)) {
1047
- continue;
1048
- }
1049
-
1050
- const bundleActualPath = this.resolveFilePath(bundleFilePath, moduleName);
1051
-
1052
- if (!bundleActualPath || !(await fs.pathExists(bundleActualPath))) {
1053
- warnings.push(bundleFilePath);
1054
- continue;
1055
- }
1056
-
1057
- // Check if this is another workflow.yaml file - if so, recursively process it
1058
- if (bundleFilePath.endsWith('workflow.yaml')) {
1059
- // Recursively process this workflow and its dependencies
1060
- await this.processWorkflowDependency(bundleFilePath, dependencies, processed, moduleName, warnings);
1061
- } else {
1062
- // Regular file - process normally
1063
- processed.add(cleanFilePath);
1064
-
1065
- // Read the file content
1066
- let fileContent = await fs.readFile(bundleActualPath, 'utf8');
1067
- const fileExt = path.extname(bundleActualPath).toLowerCase().replace('.', '');
1068
-
1069
- // Process {project-root} references before wrapping
1070
- fileContent = this.processProjectRootReferences(fileContent);
1071
-
1072
- // Wrap in XML with proper escaping
1073
- const wrappedContent = this.wrapContentInXml(fileContent, cleanFilePath, fileExt);
1074
- dependencies.set(cleanFilePath, wrappedContent);
1075
- }
1076
- }
1077
- }
1078
-
1079
- return { skipped: false };
1080
- }
1081
-
1082
- /**
1083
- * Include core workflow task files
1084
- */
1085
- async includeCoreWorkflowFiles(dependencies, processed, moduleName, warnings = []) {
1086
- const coreWorkflowPath = 'bmad/core/tasks/workflow.xml';
1087
-
1088
- if (processed.has(coreWorkflowPath)) {
1089
- return;
1090
- }
1091
- processed.add(coreWorkflowPath);
1092
-
1093
- const actualPath = this.resolveFilePath(coreWorkflowPath, moduleName);
1094
-
1095
- if (!actualPath || !(await fs.pathExists(actualPath))) {
1096
- warnings.push(coreWorkflowPath);
1097
- return;
1098
- }
1099
-
1100
- let fileContent = await fs.readFile(actualPath, 'utf8');
1101
- // Process {project-root} and {bmad_folder} references
1102
- fileContent = this.processProjectRootReferences(fileContent);
1103
- const wrappedContent = this.wrapContentInXml(fileContent, coreWorkflowPath, 'xml');
1104
- dependencies.set(coreWorkflowPath, wrappedContent);
1105
- }
1106
-
1107
- /**
1108
- * Include advanced elicitation files
1109
- */
1110
- async includeAdvancedElicitationFiles(dependencies, processed, moduleName, warnings = []) {
1111
- const elicitationFiles = ['bmad/core/tasks/adv-elicit.xml', 'bmad/core/tasks/adv-elicit-methods.csv'];
1112
-
1113
- for (const filePath of elicitationFiles) {
1114
- if (processed.has(filePath)) {
1115
- continue;
1116
- }
1117
- processed.add(filePath);
1118
-
1119
- const actualPath = this.resolveFilePath(filePath, moduleName);
1120
-
1121
- if (!actualPath || !(await fs.pathExists(actualPath))) {
1122
- warnings.push(filePath);
1123
- continue;
1124
- }
1125
-
1126
- let fileContent = await fs.readFile(actualPath, 'utf8');
1127
- // Process {project-root} and {bmad_folder} references
1128
- fileContent = this.processProjectRootReferences(fileContent);
1129
- const fileExt = path.extname(actualPath).toLowerCase().replace('.', '');
1130
- const wrappedContent = this.wrapContentInXml(fileContent, filePath, fileExt);
1131
- dependencies.set(filePath, wrappedContent);
1132
- }
1133
- }
1134
-
1135
- /**
1136
- * Wrap file content in XML with proper escaping
1137
- */
1138
- wrapContentInXml(content, id, type = 'text') {
1139
- // For XML files, include directly without CDATA (they're already valid XML)
1140
- if (type === 'xml') {
1141
- // XML files can be included directly as they're already well-formed
1142
- // Just wrap in a file element
1143
- return `<file id="${id}" type="${type}">\n${content}\n</file>`;
1144
- }
1145
-
1146
- // For all other file types, use CDATA to preserve content exactly
1147
- // Escape any ]]> sequences in the content by splitting CDATA sections
1148
- // Replace ]]> with ]]]]><![CDATA[> to properly escape it within CDATA
1149
- const escapedContent = content.replaceAll(']]>', ']]]]><![CDATA[>');
1150
-
1151
- // Use CDATA to preserve content exactly as-is, including special characters
1152
- return `<file id="${id}" type="${type}"><![CDATA[${escapedContent}]]></file>`;
1153
- }
1154
-
1155
- /**
1156
- * Process wildcard dependency patterns
1157
- */
1158
- async processWildcardDependency(pattern, dependencies, processed, moduleName, warnings = []) {
1159
- // Remove {project-root} prefix
1160
- pattern = pattern.replace(/^{project-root}\//, '');
1161
- // Replace {bmad_folder} with bmad
1162
- pattern = pattern.replace(/^{bmad_folder}\//, 'bmad/');
1163
-
1164
- // Get directory and file pattern
1165
- const lastSlash = pattern.lastIndexOf('/');
1166
- const dirPath = pattern.slice(0, Math.max(0, lastSlash));
1167
- const filePattern = pattern.slice(Math.max(0, lastSlash + 1));
1168
-
1169
- // Resolve directory path without checking file existence
1170
- let dir;
1171
- if (dirPath.startsWith('bmad/')) {
1172
- // Remove bmad/ prefix
1173
- const actualPath = dirPath.replace(/^bmad\//, '');
1174
-
1175
- // Try different path mappings for directories
1176
- const possibleDirs = [
1177
- // Try as module path: bmad/cis/... -> src/modules/cis/...
1178
- path.join(this.sourceDir, 'modules', actualPath),
1179
- // Try as direct path: bmad/core/... -> src/core/...
1180
- path.join(this.sourceDir, actualPath),
1181
- ];
1182
-
1183
- for (const testDir of possibleDirs) {
1184
- if (fs.existsSync(testDir)) {
1185
- dir = testDir;
1186
- break;
1187
- }
1188
- }
1189
- }
1190
-
1191
- if (!dir) {
1192
- warnings.push(`${pattern} (could not resolve directory)`);
1193
- return;
1194
- }
1195
- if (!(await fs.pathExists(dir))) {
1196
- warnings.push(pattern);
1197
- return;
1198
- }
1199
-
1200
- // Read directory and match files
1201
- const files = await fs.readdir(dir);
1202
- let matchedFiles = [];
1203
-
1204
- if (filePattern === '*.*') {
1205
- matchedFiles = files;
1206
- } else if (filePattern.startsWith('*.')) {
1207
- const ext = filePattern.slice(1);
1208
- matchedFiles = files.filter((f) => f.endsWith(ext));
1209
- } else {
1210
- // Simple glob matching
1211
- const regex = new RegExp('^' + filePattern.replace('*', '.*') + '$');
1212
- matchedFiles = files.filter((f) => regex.test(f));
1213
- }
1214
-
1215
- // Process each matched file
1216
- for (const file of matchedFiles) {
1217
- const fullPath = dirPath + '/' + file;
1218
- if (!processed.has(fullPath)) {
1219
- await this.processFileDependency(fullPath, dependencies, processed, moduleName, warnings);
1220
- }
1221
- }
1222
- }
1223
-
1224
- /**
1225
- * Resolve file path relative to project
1226
- */
1227
- resolveFilePath(filePath, moduleName) {
1228
- // Remove {project-root} prefix
1229
- filePath = filePath.replace(/^{project-root}\//, '');
1230
- // Replace {bmad_folder} with bmad
1231
- filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
1232
- filePath = filePath.replace(/^{bmad_folder}$/, 'bmad');
1233
-
1234
- // Check temp directory first for _cfg files
1235
- if (filePath.startsWith('bmad/_cfg/')) {
1236
- const filename = filePath.split('/').pop();
1237
- const tempPath = path.join(this.tempManifestDir, filename);
1238
- if (fs.existsSync(tempPath)) {
1239
- return tempPath;
1240
- }
1241
- }
1242
-
1243
- // Handle different path patterns for bmad files
1244
- // bmad/cis/tasks/brain-session.md -> src/modules/cis/tasks/brain-session.md
1245
- // bmad/core/tasks/create-doc.md -> src/core/tasks/create-doc.md
1246
- // bmad/bmm/templates/brief.md -> src/modules/bmm/templates/brief.md
1247
-
1248
- let actualPath = filePath;
1249
-
1250
- if (filePath.startsWith('bmad/')) {
1251
- // Remove bmad/ prefix
1252
- actualPath = filePath.replace(/^bmad\//, '');
1253
-
1254
- // Check if it's a module-specific file (cis, bmm, etc) or core file
1255
- const parts = actualPath.split('/');
1256
- const firstPart = parts[0];
1257
-
1258
- // Try different path mappings
1259
- const possiblePaths = [
1260
- // Try in temp directory first
1261
- path.join(this.tempDir, filePath),
1262
- // Try as module path: bmad/cis/... -> src/modules/cis/...
1263
- path.join(this.sourceDir, 'modules', actualPath),
1264
- // Try as direct path: bmad/core/... -> src/core/...
1265
- path.join(this.sourceDir, actualPath),
1266
- // Try without any prefix in src
1267
- path.join(this.sourceDir, parts.slice(1).join('/')),
1268
- // Try in project root
1269
- path.join(this.sourceDir, '..', actualPath),
1270
- // Try original with bmad
1271
- path.join(this.sourceDir, '..', filePath),
1272
- ];
1273
-
1274
- for (const testPath of possiblePaths) {
1275
- if (fs.existsSync(testPath)) {
1276
- return testPath;
1277
- }
1278
- }
1279
- }
1280
-
1281
- // Try standard paths for non-bmad files
1282
- const basePaths = [
1283
- this.sourceDir, // src directory
1284
- path.join(this.modulesPath, moduleName), // Current module
1285
- path.join(this.sourceDir, '..'), // Project root
1286
- ];
1287
-
1288
- for (const basePath of basePaths) {
1289
- const fullPath = path.join(basePath, actualPath);
1290
- if (fs.existsSync(fullPath)) {
1291
- return fullPath;
1292
- }
1293
- }
1294
-
1295
- return null;
1296
- }
1297
-
1298
- /**
1299
- * Process and remove {project-root} references and replace {bmad_folder} with bmad
1300
- */
1301
- processProjectRootReferences(content) {
1302
- // Remove {project-root}/ prefix (with slash)
1303
- content = content.replaceAll('{project-root}/', '');
1304
- // Also remove {project-root} without slash
1305
- content = content.replaceAll('{project-root}', '');
1306
- // Replace {bmad_folder} with bmad
1307
- content = content.replaceAll('{bmad_folder}', 'bmad');
1308
- return content;
1309
- }
1310
-
1311
- /**
1312
- * Escape special XML characters in text content
1313
- */
1314
- escapeXmlText(text) {
1315
- return text
1316
- .replaceAll('&', '&amp;')
1317
- .replaceAll('<', '&lt;')
1318
- .replaceAll('>', '&gt;')
1319
- .replaceAll('"', '&quot;')
1320
- .replaceAll("'", '&apos;');
1321
- }
1322
-
1323
- /**
1324
- * Escape XML content while preserving XML tags
1325
- */
1326
- escapeXmlContent(content) {
1327
- const tagPattern = /<([^>]+)>/g;
1328
- const parts = [];
1329
- let lastIndex = 0;
1330
- let match;
1331
-
1332
- while ((match = tagPattern.exec(content)) !== null) {
1333
- if (match.index > lastIndex) {
1334
- parts.push(this.escapeXmlText(content.slice(lastIndex, match.index)));
1335
- }
1336
- parts.push('<' + match[1] + '>');
1337
- lastIndex = match.index + match[0].length;
1338
- }
1339
-
1340
- if (lastIndex < content.length) {
1341
- parts.push(this.escapeXmlText(content.slice(lastIndex)));
1342
- }
1343
-
1344
- return parts.join('');
1345
- }
1346
-
1347
- /**
1348
- * Inject help and exit menu items into agent XML
1349
- */
1350
- injectHelpExitMenuItems(agentXml) {
1351
- // Check if menu already has help and exit
1352
- const hasHelp = agentXml.includes('cmd="*help"') || agentXml.includes('trigger="*help"');
1353
- const hasExit = agentXml.includes('cmd="*exit"') || agentXml.includes('trigger="*exit"');
1354
-
1355
- if (hasHelp && hasExit) {
1356
- return agentXml; // Already has both, skip injection
1357
- }
1358
-
1359
- // Find the menu section
1360
- const menuMatch = agentXml.match(/(<menu>[\s\S]*?<\/menu>)/);
1361
- if (!menuMatch) {
1362
- return agentXml; // No menu found, skip injection
1363
- }
1364
-
1365
- const menuContent = menuMatch[1];
1366
- const menuClosingMatch = menuContent.match(/(\s*)<\/menu>/);
1367
- if (!menuClosingMatch) {
1368
- return agentXml;
1369
- }
1370
-
1371
- const indent = menuClosingMatch[1];
1372
- const menuItems = [];
1373
-
1374
- if (!hasHelp) {
1375
- menuItems.push(`${indent}<item cmd="*help">Show numbered menu</item>`);
1376
- }
1377
-
1378
- if (!hasExit) {
1379
- menuItems.push(`${indent}<item cmd="*exit">Exit with confirmation</item>`);
1380
- }
1381
-
1382
- if (menuItems.length === 0) {
1383
- return agentXml;
1384
- }
1385
-
1386
- // Inject menu items before closing </menu> tag
1387
- const newMenuContent = menuContent.replace(/(\s*)<\/menu>/, `\n${menuItems.join('\n')}\n${indent}</menu>`);
1388
- return agentXml.replace(menuContent, newMenuContent);
1389
- }
1390
-
1391
- /**
1392
- * Inject web activation instructions into agent XML
1393
- */
1394
- injectWebActivation(agentXml) {
1395
- // First, always inject help/exit menu items
1396
- agentXml = this.injectHelpExitMenuItems(agentXml);
1397
-
1398
- // Load the web activation template
1399
- const activationPath = path.join(this.sourceDir, 'utility', 'models', 'agent-activation-web.xml');
1400
-
1401
- if (!fs.existsSync(activationPath)) {
1402
- console.warn(chalk.yellow('Warning: agent-activation-web.xml not found, skipping activation injection'));
1403
- return agentXml;
1404
- }
1405
-
1406
- const activationXml = fs.readFileSync(activationPath, 'utf8');
1407
-
1408
- // For web bundles, ALWAYS replace existing activation with web activation
1409
- // This is because fragment-based activation assumes filesystem access which won't work in web bundles
1410
- const hasActivation = agentXml.includes('<activation');
1411
-
1412
- if (hasActivation) {
1413
- // Replace existing activation block with web activation
1414
- const injectedXml = agentXml.replace(/<activation[^>]*>[\s\S]*?<\/activation>/, activationXml);
1415
- return injectedXml;
1416
- }
1417
-
1418
- // Check for critical-actions block (legacy)
1419
- const hasCriticalActions = agentXml.includes('<critical-actions');
1420
-
1421
- if (hasCriticalActions) {
1422
- // Replace critical-actions block with activation
1423
- const injectedXml = agentXml.replace(/<critical-actions>[\s\S]*?<\/critical-actions>/, activationXml);
1424
- return injectedXml;
1425
- }
1426
-
1427
- // If no critical-actions, inject before closing </agent> tag
1428
- const closingTagMatch = agentXml.match(/(\s*)<\/agent>/);
1429
- if (!closingTagMatch) {
1430
- console.warn(chalk.yellow('Warning: Could not find </agent> tag for activation injection'));
1431
- return agentXml;
1432
- }
1433
-
1434
- // Inject the activation block before the closing </agent> tag
1435
- // Properly indent each line of the activation XML
1436
- const indent = closingTagMatch[1];
1437
- const indentedActivation = activationXml
1438
- .split('\n')
1439
- .map((line) => (line.trim() ? indent + line : ''))
1440
- .join('\n');
1441
-
1442
- const injectedXml = agentXml.replace(/(\s*)<\/agent>/, `\n${indentedActivation}\n${indent}</agent>`);
1443
-
1444
- return injectedXml;
1445
- }
1446
-
1447
- /**
1448
- * Build the final agent bundle XML
1449
- */
1450
- buildAgentBundle(agentXml, dependencies) {
1451
- // Web activation is now handled by fragments during YAML building
1452
- // agentXml = this.injectWebActivation(agentXml);
1453
-
1454
- const parts = [
1455
- '<?xml version="1.0" encoding="UTF-8"?>',
1456
- '<agent-bundle>',
1457
- ' <!-- Agent Definition -->',
1458
- ' ' + agentXml.replaceAll('\n', '\n '),
1459
- ];
1460
-
1461
- // Add dependencies (all are now consistently wrapped in <file> elements)
1462
- if (dependencies && dependencies.size > 0) {
1463
- parts.push('\n <!-- Dependencies -->');
1464
- for (const [id, content] of dependencies) {
1465
- // All dependencies are now wrapped in <file> elements
1466
- // Indent properly
1467
- const indentedContent = content
1468
- .split('\n')
1469
- .map((line) => ' ' + line)
1470
- .join('\n');
1471
- parts.push(indentedContent);
1472
- }
1473
- }
1474
-
1475
- parts.push('</agent-bundle>');
1476
-
1477
- return parts.join('\n');
1478
- }
1479
-
1480
- /**
1481
- * Discover all modules
1482
- */
1483
- async discoverModules() {
1484
- const modules = [];
1485
-
1486
- if (!(await fs.pathExists(this.modulesPath))) {
1487
- console.log(chalk.yellow('No modules directory found'));
1488
- return modules;
1489
- }
1490
-
1491
- const entries = await fs.readdir(this.modulesPath, { withFileTypes: true });
1492
-
1493
- for (const entry of entries) {
1494
- if (entry.isDirectory()) {
1495
- modules.push(entry.name);
1496
- }
1497
- }
1498
-
1499
- return modules;
1500
- }
1501
-
1502
- /**
1503
- * Discover agents in a module
1504
- */
1505
- async discoverAgents(modulePath) {
1506
- const agents = [];
1507
- const agentsPath = path.join(modulePath, 'agents');
1508
-
1509
- if (!(await fs.pathExists(agentsPath))) {
1510
- return agents;
1511
- }
1512
-
1513
- const files = await fs.readdir(agentsPath);
1514
-
1515
- for (const file of files) {
1516
- // Look for .agent.yaml files (new format) or .md files (legacy format)
1517
- if (file.endsWith('.agent.yaml') || (file.endsWith('.md') && !file.toLowerCase().includes('readme'))) {
1518
- agents.push(file);
1519
- }
1520
- }
1521
-
1522
- return agents;
1523
- }
1524
-
1525
- /**
1526
- * Discover all teams in a module
1527
- */
1528
- async discoverTeams(modulePath) {
1529
- const teams = [];
1530
- const teamsPath = path.join(modulePath, 'teams');
1531
-
1532
- if (!(await fs.pathExists(teamsPath))) {
1533
- return teams;
1534
- }
1535
-
1536
- const files = await fs.readdir(teamsPath);
1537
-
1538
- for (const file of files) {
1539
- if (file.endsWith('.yaml') || file.endsWith('.yml')) {
1540
- teams.push(file);
1541
- }
1542
- }
1543
-
1544
- return teams;
1545
- }
1546
-
1547
- /**
1548
- * Extract agent name from XML
1549
- */
1550
- getAgentName(xml) {
1551
- const match = xml.match(/<agent[^>]*name="([^"]+)"/);
1552
- return match ? match[1] : 'Unknown';
1553
- }
1554
-
1555
- /**
1556
- * Extract agent description from XML
1557
- */
1558
- getAgentDescription(xml) {
1559
- const match = xml.match(/<description>([^<]+)<\/description>/);
1560
- return match ? match[1] : '';
1561
- }
1562
-
1563
- /**
1564
- * Check if agent should be skipped for bundling
1565
- */
1566
- shouldSkipBundling(xml) {
1567
- // Check for bundle="false" attribute in the agent tag
1568
- const match = xml.match(/<agent[^>]*bundle="false"[^>]*>/);
1569
- return match !== null;
1570
- }
1571
-
1572
- /**
1573
- * Create temporary manifest files
1574
- */
1575
- async createTempManifests() {
1576
- // Ensure temp directory exists
1577
- await fs.ensureDir(this.tempManifestDir);
1578
-
1579
- // Generate agent-manifest.csv using shared generator
1580
- const agentPartyPath = path.join(this.tempManifestDir, 'agent-manifest.csv');
1581
- await AgentPartyGenerator.writeAgentParty(agentPartyPath, this.discoveredAgents, { forWeb: true });
1582
-
1583
- console.log(chalk.dim(' ✓ Created temporary manifest files'));
1584
- }
1585
-
1586
- /**
1587
- * Clean up temporary files
1588
- */
1589
- async cleanupTempFiles() {
1590
- if (await fs.pathExists(this.tempDir)) {
1591
- await fs.remove(this.tempDir);
1592
- console.log(chalk.dim('\n✓ Cleaned up temporary files'));
1593
- }
1594
- }
1595
-
1596
- /**
1597
- * Validate XML content
1598
- */
1599
- async validateXml(xmlContent) {
1600
- try {
1601
- await xml2js.parseStringPromise(xmlContent, {
1602
- strict: true,
1603
- explicitArray: false,
1604
- });
1605
- return true;
1606
- } catch {
1607
- return false;
1608
- }
1609
- }
1610
-
1611
- /**
1612
- * Display summary statistics
1613
- */
1614
- displaySummary() {
1615
- console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════'));
1616
- console.log(chalk.cyan.bold(' SUMMARY'));
1617
- console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
1618
-
1619
- console.log(chalk.bold('Bundle Statistics:'));
1620
- console.log(` Total agents found: ${this.stats.totalAgents}`);
1621
- console.log(` Successfully bundled: ${chalk.green(this.stats.bundledAgents)}`);
1622
- console.log(` Skipped (bundle=false): ${chalk.gray(this.stats.skippedAgents)}`);
1623
-
1624
- if (this.stats.failedAgents > 0) {
1625
- console.log(` Failed to bundle: ${chalk.red(this.stats.failedAgents)}`);
1626
- }
1627
-
1628
- if (this.stats.invalidXml > 0) {
1629
- console.log(` Invalid XML bundles: ${chalk.yellow(this.stats.invalidXml)}`);
1630
- }
1631
-
1632
- // Display warnings summary
1633
- // Check if there are actually any warnings with content
1634
- const hasActualWarnings = this.stats.warnings.some((w) => w && w.warnings && w.warnings.length > 0);
1635
-
1636
- if (hasActualWarnings) {
1637
- console.log(chalk.yellow('\n⚠ Missing Dependencies by Agent:'));
1638
-
1639
- // Group and display warnings by agent
1640
- for (const agentWarning of this.stats.warnings) {
1641
- if (agentWarning && agentWarning.warnings && agentWarning.warnings.length > 0) {
1642
- console.log(chalk.bold(`\n ${agentWarning.agent}:`));
1643
- // Display unique warnings for this agent
1644
- const uniqueWarnings = [...new Set(agentWarning.warnings)];
1645
- for (const warning of uniqueWarnings) {
1646
- console.log(chalk.dim(` • ${warning}`));
1647
- }
1648
- }
1649
- }
1650
- } else {
1651
- console.log(chalk.green('\n✓ No missing dependencies'));
1652
- }
1653
-
1654
- // Final status
1655
- if (this.stats.invalidXml > 0) {
1656
- console.log(chalk.yellow('\n⚠ Some bundles have invalid XML. Please review the output.'));
1657
- } else if (this.stats.failedAgents > 0) {
1658
- console.log(chalk.yellow('\n⚠ Some agents failed to bundle. Please review the errors.'));
1659
- } else {
1660
- console.log(chalk.green('\n✨ All bundles generated successfully!'));
1661
- }
1662
-
1663
- console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════\n'));
1664
- }
1665
- }
1666
-
1667
- module.exports = { WebBundler };