bmad-method 6.0.0-alpha.9 → 6.0.2

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 (933) hide show
  1. package/.augment/code_review_guidelines.yaml +271 -0
  2. package/.claude/skills/bmad-os-audit-file-refs/SKILL.md +6 -0
  3. package/.claude/skills/bmad-os-audit-file-refs/prompts/instructions.md +59 -0
  4. package/.claude/skills/bmad-os-changelog-social/SKILL.md +177 -0
  5. package/.claude/skills/bmad-os-changelog-social/examples/discord-example.md +53 -0
  6. package/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md +49 -0
  7. package/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md +55 -0
  8. package/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md +6 -0
  9. package/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md +229 -0
  10. package/.claude/skills/bmad-os-draft-changelog/SKILL.md +6 -0
  11. package/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md +82 -0
  12. package/.claude/skills/bmad-os-gh-triage/SKILL.md +6 -0
  13. package/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md +60 -0
  14. package/.claude/skills/bmad-os-gh-triage/prompts/instructions.md +74 -0
  15. package/.claude/skills/bmad-os-release-module/SKILL.md +6 -0
  16. package/.claude/skills/bmad-os-release-module/prompts/instructions.md +53 -0
  17. package/.claude/skills/bmad-os-review-pr/SKILL.md +6 -0
  18. package/.claude/skills/bmad-os-review-pr/prompts/instructions.md +231 -0
  19. package/.coderabbit.yaml +85 -0
  20. package/.github/CODE_OF_CONDUCT.md +128 -0
  21. package/.github/ISSUE_TEMPLATE/bug-report.yaml +124 -0
  22. package/.github/ISSUE_TEMPLATE/config.yaml +5 -2
  23. package/.github/ISSUE_TEMPLATE/documentation.yaml +55 -0
  24. package/.github/ISSUE_TEMPLATE/feature-request.md +22 -0
  25. package/.github/ISSUE_TEMPLATE/issue.md +32 -0
  26. package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  27. package/.github/scripts/discord-helpers.sh +34 -0
  28. package/.github/workflows/coderabbit-review.yaml +22 -0
  29. package/.github/workflows/discord.yaml +82 -8
  30. package/.github/workflows/docs.yaml +64 -0
  31. package/.github/workflows/quality.yaml +40 -2
  32. package/.husky/pre-commit +13 -0
  33. package/.markdownlint-cli2.yaml +41 -0
  34. package/.prettierignore +10 -0
  35. package/.vscode/settings.json +4 -3
  36. package/CHANGELOG.md +1110 -673
  37. package/CNAME +1 -0
  38. package/CONTRIBUTING.md +97 -189
  39. package/CONTRIBUTORS.md +32 -0
  40. package/LICENSE +7 -3
  41. package/README.md +55 -388
  42. package/SECURITY.md +85 -0
  43. package/TRADEMARK.md +55 -0
  44. package/Wordmark.png +0 -0
  45. package/banner-bmad-method.png +0 -0
  46. package/docs/404.md +9 -0
  47. package/docs/_STYLE_GUIDE.md +370 -0
  48. package/docs/explanation/advanced-elicitation.md +49 -0
  49. package/docs/explanation/adversarial-review.md +59 -0
  50. package/docs/explanation/brainstorming.md +33 -0
  51. package/docs/explanation/established-projects-faq.md +50 -0
  52. package/docs/explanation/party-mode.md +59 -0
  53. package/docs/explanation/preventing-agent-conflicts.md +112 -0
  54. package/docs/explanation/project-context.md +157 -0
  55. package/docs/explanation/quick-flow.md +73 -0
  56. package/docs/explanation/why-solutioning-matters.md +77 -0
  57. package/docs/how-to/customize-bmad.md +172 -0
  58. package/docs/how-to/established-projects.md +117 -0
  59. package/docs/how-to/get-answers-about-bmad.md +134 -0
  60. package/docs/how-to/install-bmad.md +97 -0
  61. package/docs/how-to/non-interactive-installation.md +171 -0
  62. package/docs/how-to/project-context.md +136 -0
  63. package/docs/how-to/quick-fixes.md +123 -0
  64. package/docs/how-to/shard-large-documents.md +78 -0
  65. package/docs/how-to/upgrade-to-v6.md +97 -0
  66. package/docs/index.md +37 -204
  67. package/docs/reference/agents.md +28 -0
  68. package/docs/reference/commands.md +151 -0
  69. package/docs/reference/modules.md +76 -0
  70. package/docs/reference/testing.md +106 -0
  71. package/docs/reference/workflow-map.md +89 -0
  72. package/docs/roadmap.mdx +136 -0
  73. package/docs/tutorials/getting-started.md +273 -0
  74. package/eslint.config.mjs +26 -16
  75. package/package.json +35 -28
  76. package/src/bmm/agents/analyst.agent.yaml +43 -0
  77. package/src/bmm/agents/architect.agent.yaml +29 -0
  78. package/src/bmm/agents/dev.agent.yaml +38 -0
  79. package/src/bmm/agents/pm.agent.yaml +44 -0
  80. package/src/bmm/agents/qa.agent.yaml +58 -0
  81. package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
  82. package/src/bmm/agents/sm.agent.yaml +37 -0
  83. package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  84. package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +46 -0
  85. package/src/bmm/agents/ux-designer.agent.yaml +27 -0
  86. package/src/bmm/data/project-context-template.md +26 -0
  87. package/src/bmm/module-help.csv +31 -0
  88. package/src/bmm/module.yaml +50 -0
  89. package/src/bmm/teams/default-party.csv +20 -0
  90. package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  91. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  92. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  93. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  94. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  95. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  96. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  97. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  98. package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
  99. package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  100. package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  101. package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  102. package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  103. package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  104. package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +444 -0
  105. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  106. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  107. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  108. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  109. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  110. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
  111. package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
  112. package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  113. package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  114. package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  115. package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  116. package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -0
  117. package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +487 -0
  118. package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
  119. package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
  120. package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
  121. package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
  122. package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  123. package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  124. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  125. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +152 -0
  126. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  127. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -0
  128. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -0
  129. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  130. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  131. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  132. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  133. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  134. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  135. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  136. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  137. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  138. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  139. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  140. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  141. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  142. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  143. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  144. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -0
  145. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  146. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  147. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  148. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  149. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  150. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  151. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  152. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  153. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  154. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  155. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  156. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  157. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  158. package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  159. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
  160. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
  161. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
  162. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  163. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  164. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  165. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  166. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  167. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  168. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  169. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  170. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  171. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  172. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  173. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  174. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  175. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  176. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  177. package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  178. package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
  179. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -0
  180. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -0
  181. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -0
  182. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -0
  183. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -0
  184. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
  185. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  186. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  187. package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  188. package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
  189. package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  190. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  191. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +173 -0
  192. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  193. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +329 -0
  194. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  195. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  196. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  197. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  198. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  199. package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  200. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  201. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  202. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  203. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  204. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  205. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  206. package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  207. package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  208. package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -0
  209. package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  210. package/src/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
  211. package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -0
  212. package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  213. package/src/bmm/workflows/4-implementation/create-story/instructions.xml +346 -0
  214. package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
  215. package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -0
  216. package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  217. package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  218. package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -0
  219. package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
  220. package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -0
  221. package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -0
  222. package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  223. package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
  224. package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
  225. package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
  226. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -0
  227. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -0
  228. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -0
  229. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -0
  230. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -0
  231. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
  232. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
  233. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
  234. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +143 -0
  235. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +126 -0
  236. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -0
  237. package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  238. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  239. package/src/bmm/workflows/document-project/checklist.md +245 -0
  240. package/src/bmm/workflows/document-project/instructions.md +130 -0
  241. package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  242. package/src/bmm/workflows/document-project/workflow.yaml +22 -0
  243. package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  244. package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  245. package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  246. package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  247. package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  248. package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
  249. package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
  250. package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
  251. package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
  252. package/src/bmm/workflows/qa-generate-e2e-tests/checklist.md +33 -0
  253. package/src/bmm/workflows/qa-generate-e2e-tests/instructions.md +110 -0
  254. package/src/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -0
  255. package/src/core/agents/bmad-master.agent.yaml +12 -21
  256. package/src/core/module-help.csv +9 -0
  257. package/src/core/module.yaml +25 -0
  258. package/src/core/tasks/editorial-review-prose.xml +102 -0
  259. package/src/core/tasks/editorial-review-structure.xml +208 -0
  260. package/src/core/tasks/help.md +86 -0
  261. package/src/core/tasks/index-docs.xml +2 -2
  262. package/src/core/tasks/review-adversarial-general.xml +49 -0
  263. package/src/core/tasks/shard-doc.xml +108 -0
  264. package/src/core/tasks/workflow.xml +39 -74
  265. package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
  266. package/src/core/workflows/advanced-elicitation/workflow.xml +118 -0
  267. package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
  268. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  269. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  270. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  271. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  272. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  273. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  274. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  275. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  276. package/src/core/workflows/brainstorming/template.md +13 -104
  277. package/src/core/workflows/brainstorming/workflow.md +58 -0
  278. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  279. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  280. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
  281. package/src/core/workflows/party-mode/workflow.md +194 -0
  282. package/src/utility/agent-components/activation-rules.txt +6 -0
  283. package/src/utility/agent-components/activation-steps.txt +14 -0
  284. package/src/utility/agent-components/agent-command-header.md +1 -0
  285. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  286. package/src/utility/agent-components/handler-action.txt +4 -0
  287. package/src/utility/agent-components/handler-exec.txt +6 -0
  288. package/src/utility/agent-components/handler-multi.txt +14 -0
  289. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  290. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  291. package/src/utility/agent-components/handler-workflow.txt +10 -0
  292. package/src/utility/agent-components/menu-handlers.txt +6 -0
  293. package/test/README.md +4 -4
  294. package/test/adversarial-review-tests/README.md +56 -0
  295. package/test/adversarial-review-tests/sample-content.md +46 -0
  296. package/test/adversarial-review-tests/test-cases.yaml +103 -0
  297. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +1 -0
  298. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +1 -0
  299. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +1 -0
  300. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +1 -0
  301. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +1 -0
  302. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +1 -0
  303. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +1 -0
  304. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
  305. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
  306. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +1 -0
  307. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +1 -0
  308. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +1 -0
  309. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +1 -0
  310. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +1 -0
  311. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +1 -1
  312. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +1 -0
  313. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +1 -0
  314. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +1 -0
  315. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +1 -0
  316. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +1 -0
  317. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +1 -0
  318. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +1 -0
  319. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +1 -0
  320. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +1 -0
  321. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +1 -0
  322. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +1 -0
  323. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +1 -0
  324. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +1 -0
  325. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +1 -0
  326. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +1 -0
  327. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +2 -3
  328. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +1 -0
  329. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
  330. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +2 -1
  331. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
  332. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +1 -0
  333. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +2 -1
  334. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +2 -1
  335. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
  336. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
  337. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +1 -0
  338. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +1 -0
  339. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +1 -0
  340. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +1 -0
  341. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +1 -0
  342. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +1 -0
  343. package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
  344. package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
  345. package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
  346. package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
  347. package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
  348. package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
  349. package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
  350. package/test/test-agent-schema.js +4 -4
  351. package/test/test-file-refs-csv.js +133 -0
  352. package/test/test-installation-components.js +10 -12
  353. package/test/test-rehype-plugins.mjs +1050 -0
  354. package/test/unit-test-schema.js +2 -2
  355. package/tools/build-docs.mjs +463 -0
  356. package/tools/cli/README.md +41 -589
  357. package/tools/cli/bmad-cli.js +67 -1
  358. package/tools/cli/commands/install.js +42 -34
  359. package/tools/cli/commands/status.js +44 -26
  360. package/tools/cli/commands/uninstall.js +146 -23
  361. package/tools/cli/external-official-modules.yaml +53 -0
  362. package/tools/cli/installers/install-messages.yaml +39 -0
  363. package/tools/cli/installers/lib/core/config-collector.js +589 -95
  364. package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
  365. package/tools/cli/installers/lib/core/dependency-resolver.js +57 -39
  366. package/tools/cli/installers/lib/core/detector.js +19 -125
  367. package/tools/cli/installers/lib/core/ide-config-manager.js +12 -9
  368. package/tools/cli/installers/lib/core/installer.js +2075 -1161
  369. package/tools/cli/installers/lib/core/manifest-generator.js +494 -103
  370. package/tools/cli/installers/lib/core/manifest.js +544 -46
  371. package/tools/cli/installers/lib/custom/handler.js +358 -0
  372. package/tools/cli/installers/lib/ide/_base-ide.js +83 -44
  373. package/tools/cli/installers/lib/ide/_config-driven.js +559 -0
  374. package/tools/cli/installers/lib/ide/codex.js +301 -64
  375. package/tools/cli/installers/lib/ide/github-copilot.js +606 -209
  376. package/tools/cli/installers/lib/ide/kilo.js +169 -75
  377. package/tools/cli/installers/lib/ide/manager.js +179 -48
  378. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  379. package/tools/cli/installers/lib/ide/platform-codes.yaml +234 -0
  380. package/tools/cli/installers/lib/ide/rovodev.js +257 -0
  381. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +95 -5
  382. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +51 -20
  383. package/tools/cli/installers/lib/ide/shared/module-injections.js +6 -3
  384. package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
  385. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +261 -14
  386. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +108 -27
  387. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
  388. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  389. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
  390. package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
  391. package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
  392. package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
  393. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
  394. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
  395. package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
  396. package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
  397. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
  398. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
  399. package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
  400. package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
  401. package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
  402. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
  403. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
  404. package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
  405. package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +14 -0
  406. package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +14 -0
  407. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +17 -0
  408. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +17 -0
  409. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  410. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  411. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  412. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +1 -1
  413. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  414. package/tools/cli/installers/lib/message-loader.js +83 -0
  415. package/tools/cli/installers/lib/modules/external-manager.js +136 -0
  416. package/tools/cli/installers/lib/modules/manager.js +931 -207
  417. package/tools/cli/lib/activation-builder.js +13 -16
  418. package/tools/cli/lib/agent/compiler.js +525 -0
  419. package/tools/cli/lib/agent/installer.js +680 -0
  420. package/tools/cli/lib/agent/template-engine.js +152 -0
  421. package/tools/cli/lib/agent-analyzer.js +48 -20
  422. package/tools/cli/lib/agent-party-generator.js +5 -17
  423. package/tools/cli/lib/cli-utils.js +76 -104
  424. package/tools/cli/lib/config.js +4 -3
  425. package/tools/cli/lib/platform-codes.js +2 -2
  426. package/tools/cli/lib/project-root.js +6 -0
  427. package/tools/cli/lib/prompts.js +809 -0
  428. package/tools/cli/lib/ui.js +1600 -272
  429. package/tools/cli/lib/xml-handler.js +4 -55
  430. package/tools/cli/lib/yaml-format.js +4 -6
  431. package/tools/cli/lib/yaml-xml-builder.js +183 -61
  432. package/tools/docs/_prompt-external-modules-page.md +59 -0
  433. package/tools/docs/fix-refs.md +91 -0
  434. package/tools/fix-doc-links.js +285 -0
  435. package/tools/lib/xml-utils.js +13 -0
  436. package/tools/migrate-custom-module-paths.js +124 -0
  437. package/tools/platform-codes.yaml +30 -6
  438. package/tools/schema/agent.js +306 -53
  439. package/tools/validate-agent-schema.js +3 -3
  440. package/tools/validate-doc-links.js +407 -0
  441. package/tools/validate-file-refs.js +554 -0
  442. package/tools/validate-svg-changes.sh +356 -0
  443. package/website/README.md +75 -0
  444. package/website/astro.config.mjs +136 -0
  445. package/website/public/favicon.ico +0 -0
  446. package/website/public/img/bmad-dark.png +0 -0
  447. package/website/public/img/bmad-light.png +0 -0
  448. package/website/public/workflow-map-diagram.html +361 -0
  449. package/website/src/components/Banner.astro +62 -0
  450. package/website/src/components/Header.astro +96 -0
  451. package/website/src/components/MobileMenuFooter.astro +33 -0
  452. package/website/src/content/config.ts +6 -0
  453. package/website/src/lib/site-url.mjs +25 -0
  454. package/website/src/pages/404.astro +11 -0
  455. package/website/src/pages/robots.txt.ts +48 -0
  456. package/website/src/rehype-base-paths.js +112 -0
  457. package/website/src/rehype-markdown-links.js +119 -0
  458. package/website/src/styles/custom.css +805 -0
  459. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  460. package/.github/ISSUE_TEMPLATE/idea_submission.md +0 -109
  461. package/.github/workflows/bundle-latest.yaml +0 -277
  462. package/.github/workflows/manual-release.yaml +0 -212
  463. package/docs/BUNDLE_DISTRIBUTION_SETUP.md +0 -95
  464. package/docs/agent-customization-guide.md +0 -208
  465. package/docs/document-sharding-guide.md +0 -447
  466. package/docs/ide-info/auggie.md +0 -31
  467. package/docs/ide-info/claude-code.md +0 -25
  468. package/docs/ide-info/cline.md +0 -31
  469. package/docs/ide-info/codex.md +0 -21
  470. package/docs/ide-info/crush.md +0 -30
  471. package/docs/ide-info/cursor.md +0 -25
  472. package/docs/ide-info/gemini.md +0 -25
  473. package/docs/ide-info/github-copilot.md +0 -26
  474. package/docs/ide-info/iflow.md +0 -33
  475. package/docs/ide-info/kilo.md +0 -24
  476. package/docs/ide-info/opencode.md +0 -24
  477. package/docs/ide-info/qwen.md +0 -25
  478. package/docs/ide-info/roo.md +0 -27
  479. package/docs/ide-info/trae.md +0 -25
  480. package/docs/ide-info/windsurf.md +0 -22
  481. package/docs/installers-bundlers/ide-injections.md +0 -186
  482. package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -388
  483. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  484. package/docs/v4-to-v6-upgrade.md +0 -227
  485. package/docs/web-bundles-gemini-gpt-guide.md +0 -473
  486. package/src/core/_module-installer/install-config.yaml +0 -35
  487. package/src/core/_module-installer/installer.js +0 -60
  488. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -113
  489. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  490. package/src/core/tasks/advanced-elicitation.xml +0 -106
  491. package/src/core/tasks/validate-workflow.xml +0 -89
  492. package/src/core/tools/shard-doc.xml +0 -109
  493. package/src/core/workflows/brainstorming/README.md +0 -261
  494. package/src/core/workflows/brainstorming/instructions.md +0 -315
  495. package/src/core/workflows/brainstorming/workflow.yaml +0 -43
  496. package/src/core/workflows/party-mode/instructions.md +0 -183
  497. package/src/core/workflows/party-mode/workflow.yaml +0 -27
  498. package/src/modules/bmb/README.md +0 -194
  499. package/src/modules/bmb/_module-installer/install-config.yaml +0 -31
  500. package/src/modules/bmb/agents/bmad-builder.agent.yaml +0 -59
  501. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
  502. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  503. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  504. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  505. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  506. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  507. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  508. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
  509. package/src/modules/bmb/workflows/create-agent/README.md +0 -203
  510. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -415
  511. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  512. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  513. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  514. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  515. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  516. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -456
  517. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
  518. package/src/modules/bmb/workflows/create-module/README.md +0 -229
  519. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  520. package/src/modules/bmb/workflows/create-module/checklist.md +0 -235
  521. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  522. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  523. package/src/modules/bmb/workflows/create-module/instructions.md +0 -576
  524. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -400
  525. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
  526. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  527. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  528. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  529. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -724
  530. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1306
  531. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  532. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  533. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  534. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
  535. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
  536. package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
  537. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  538. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
  539. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
  540. package/src/modules/bmb/workflows/edit-module/README.md +0 -187
  541. package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
  542. package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
  543. package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
  544. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  545. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  546. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  547. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
  548. package/src/modules/bmb/workflows/module-brief/README.md +0 -264
  549. package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
  550. package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
  551. package/src/modules/bmb/workflows/module-brief/template.md +0 -275
  552. package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
  553. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  554. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  555. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  556. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  557. package/src/modules/bmgd/README.md +0 -208
  558. package/src/modules/bmgd/_module-installer/install-config.yaml +0 -54
  559. package/src/modules/bmgd/agents/game-architect.agent.yaml +0 -33
  560. package/src/modules/bmgd/agents/game-designer.agent.yaml +0 -40
  561. package/src/modules/bmgd/agents/game-dev.agent.yaml +0 -40
  562. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +0 -75
  563. package/src/modules/bmgd/teams/default-party.csv +0 -10
  564. package/src/modules/bmgd/teams/team-gamedev.yaml +0 -18
  565. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +0 -26
  566. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/game-context.md +0 -115
  567. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +0 -128
  568. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +0 -41
  569. package/src/modules/bmgd/workflows/1-preproduction/game-brief/checklist.md +0 -128
  570. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +0 -371
  571. package/src/modules/bmgd/workflows/1-preproduction/game-brief/template.md +0 -205
  572. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +0 -44
  573. package/src/modules/bmgd/workflows/2-design/gdd/checklist.md +0 -148
  574. package/src/modules/bmgd/workflows/2-design/gdd/game-types/action-platformer.md +0 -45
  575. package/src/modules/bmgd/workflows/2-design/gdd/game-types/adventure.md +0 -84
  576. package/src/modules/bmgd/workflows/2-design/gdd/game-types/card-game.md +0 -76
  577. package/src/modules/bmgd/workflows/2-design/gdd/game-types/fighting.md +0 -89
  578. package/src/modules/bmgd/workflows/2-design/gdd/game-types/horror.md +0 -86
  579. package/src/modules/bmgd/workflows/2-design/gdd/game-types/idle-incremental.md +0 -78
  580. package/src/modules/bmgd/workflows/2-design/gdd/game-types/metroidvania.md +0 -87
  581. package/src/modules/bmgd/workflows/2-design/gdd/game-types/moba.md +0 -74
  582. package/src/modules/bmgd/workflows/2-design/gdd/game-types/party-game.md +0 -79
  583. package/src/modules/bmgd/workflows/2-design/gdd/game-types/puzzle.md +0 -58
  584. package/src/modules/bmgd/workflows/2-design/gdd/game-types/racing.md +0 -88
  585. package/src/modules/bmgd/workflows/2-design/gdd/game-types/rhythm.md +0 -79
  586. package/src/modules/bmgd/workflows/2-design/gdd/game-types/roguelike.md +0 -69
  587. package/src/modules/bmgd/workflows/2-design/gdd/game-types/rpg.md +0 -70
  588. package/src/modules/bmgd/workflows/2-design/gdd/game-types/sandbox.md +0 -79
  589. package/src/modules/bmgd/workflows/2-design/gdd/game-types/shooter.md +0 -62
  590. package/src/modules/bmgd/workflows/2-design/gdd/game-types/simulation.md +0 -73
  591. package/src/modules/bmgd/workflows/2-design/gdd/game-types/sports.md +0 -75
  592. package/src/modules/bmgd/workflows/2-design/gdd/game-types/strategy.md +0 -71
  593. package/src/modules/bmgd/workflows/2-design/gdd/game-types/survival.md +0 -79
  594. package/src/modules/bmgd/workflows/2-design/gdd/game-types/text-based.md +0 -91
  595. package/src/modules/bmgd/workflows/2-design/gdd/game-types/tower-defense.md +0 -79
  596. package/src/modules/bmgd/workflows/2-design/gdd/game-types/turn-based-tactics.md +0 -88
  597. package/src/modules/bmgd/workflows/2-design/gdd/game-types/visual-novel.md +0 -89
  598. package/src/modules/bmgd/workflows/2-design/gdd/game-types.csv +0 -25
  599. package/src/modules/bmgd/workflows/2-design/gdd/gdd-template.md +0 -153
  600. package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +0 -501
  601. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +0 -81
  602. package/src/modules/bmgd/workflows/2-design/narrative/checklist.md +0 -139
  603. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +0 -603
  604. package/src/modules/bmgd/workflows/2-design/narrative/narrative-template.md +0 -195
  605. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +0 -38
  606. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +0 -321
  607. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +0 -103
  608. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +0 -240
  609. package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +0 -222
  610. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +0 -699
  611. package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +0 -13
  612. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +0 -67
  613. package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +0 -12
  614. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +0 -22
  615. package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +0 -398
  616. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +0 -57
  617. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +0 -279
  618. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +0 -206
  619. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +0 -52
  620. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +0 -240
  621. package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +0 -256
  622. package/src/modules/bmgd/workflows/4-production/create-story/template.md +0 -51
  623. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +0 -68
  624. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +0 -38
  625. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +0 -267
  626. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +0 -53
  627. package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +0 -17
  628. package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +0 -164
  629. package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +0 -76
  630. package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +0 -52
  631. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +0 -1442
  632. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +0 -52
  633. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +0 -234
  634. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +0 -55
  635. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +0 -50
  636. package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +0 -16
  637. package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +0 -34
  638. package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +0 -209
  639. package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +0 -57
  640. package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +0 -111
  641. package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +0 -28
  642. package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +0 -117
  643. package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +0 -25
  644. package/src/modules/bmm/README.md +0 -128
  645. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  646. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  647. package/src/modules/bmm/_module-installer/install-config.yaml +0 -60
  648. package/src/modules/bmm/_module-installer/installer.js +0 -131
  649. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +0 -35
  650. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +0 -32
  651. package/src/modules/bmm/agents/analyst.agent.yaml +0 -48
  652. package/src/modules/bmm/agents/architect.agent.yaml +0 -42
  653. package/src/modules/bmm/agents/dev.agent.yaml +0 -40
  654. package/src/modules/bmm/agents/pm.agent.yaml +0 -61
  655. package/src/modules/bmm/agents/sm.agent.yaml +0 -72
  656. package/src/modules/bmm/agents/tea.agent.yaml +0 -65
  657. package/src/modules/bmm/agents/tech-writer.agent.yaml +0 -73
  658. package/src/modules/bmm/agents/ux-designer.agent.yaml +0 -38
  659. package/src/modules/bmm/docs/README.md +0 -235
  660. package/src/modules/bmm/docs/agents-guide.md +0 -1056
  661. package/src/modules/bmm/docs/brownfield-guide.md +0 -754
  662. package/src/modules/bmm/docs/enterprise-agentic-development.md +0 -680
  663. package/src/modules/bmm/docs/faq.md +0 -587
  664. package/src/modules/bmm/docs/glossary.md +0 -320
  665. package/src/modules/bmm/docs/party-mode.md +0 -224
  666. package/src/modules/bmm/docs/quick-spec-flow.md +0 -652
  667. package/src/modules/bmm/docs/quick-start.md +0 -366
  668. package/src/modules/bmm/docs/scale-adaptive-system.md +0 -599
  669. package/src/modules/bmm/docs/test-architecture.md +0 -394
  670. package/src/modules/bmm/docs/workflow-architecture-reference.md +0 -371
  671. package/src/modules/bmm/docs/workflow-document-project-reference.md +0 -487
  672. package/src/modules/bmm/docs/workflows-analysis.md +0 -370
  673. package/src/modules/bmm/docs/workflows-implementation.md +0 -284
  674. package/src/modules/bmm/docs/workflows-planning.md +0 -601
  675. package/src/modules/bmm/docs/workflows-solutioning.md +0 -501
  676. package/src/modules/bmm/teams/default-party.csv +0 -19
  677. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +0 -675
  678. package/src/modules/bmm/testarch/knowledge/component-tdd.md +0 -486
  679. package/src/modules/bmm/testarch/knowledge/contract-testing.md +0 -957
  680. package/src/modules/bmm/testarch/knowledge/data-factories.md +0 -500
  681. package/src/modules/bmm/testarch/knowledge/email-auth.md +0 -721
  682. package/src/modules/bmm/testarch/knowledge/error-handling.md +0 -725
  683. package/src/modules/bmm/testarch/knowledge/feature-flags.md +0 -750
  684. package/src/modules/bmm/testarch/knowledge/fixture-architecture.md +0 -401
  685. package/src/modules/bmm/testarch/knowledge/network-first.md +0 -486
  686. package/src/modules/bmm/testarch/knowledge/nfr-criteria.md +0 -670
  687. package/src/modules/bmm/testarch/knowledge/playwright-config.md +0 -730
  688. package/src/modules/bmm/testarch/knowledge/probability-impact.md +0 -601
  689. package/src/modules/bmm/testarch/knowledge/risk-governance.md +0 -615
  690. package/src/modules/bmm/testarch/knowledge/selective-testing.md +0 -732
  691. package/src/modules/bmm/testarch/knowledge/selector-resilience.md +0 -527
  692. package/src/modules/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
  693. package/src/modules/bmm/testarch/knowledge/test-levels-framework.md +0 -473
  694. package/src/modules/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
  695. package/src/modules/bmm/testarch/knowledge/test-quality.md +0 -664
  696. package/src/modules/bmm/testarch/knowledge/timing-debugging.md +0 -372
  697. package/src/modules/bmm/testarch/knowledge/visual-debugging.md +0 -524
  698. package/src/modules/bmm/testarch/tea-index.csv +0 -22
  699. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -110
  700. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  701. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  702. package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -423
  703. package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
  704. package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
  705. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  706. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -522
  707. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
  708. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -65
  709. package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
  710. package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
  711. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
  712. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  713. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -437
  714. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -674
  715. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -133
  716. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -533
  717. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  718. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
  719. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
  720. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
  721. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  722. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1306
  723. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +0 -145
  724. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -99
  725. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
  726. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/epics-template.md +0 -80
  727. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/instructions.md +0 -292
  728. package/src/modules/bmm/workflows/2-plan-workflows/prd/create-epics-and-stories/workflow.yaml +0 -53
  729. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
  730. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -525
  731. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -237
  732. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +0 -11
  733. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -76
  734. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
  735. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
  736. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -434
  737. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -978
  738. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
  739. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
  740. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -57
  741. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
  742. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  743. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
  744. package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
  745. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -696
  746. package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
  747. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -96
  748. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -169
  749. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -302
  750. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  751. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -66
  752. package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
  753. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
  754. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
  755. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +0 -57
  756. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
  757. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
  758. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -52
  759. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +0 -240
  760. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
  761. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +0 -51
  762. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +0 -68
  763. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +0 -38
  764. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
  765. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +0 -53
  766. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  767. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
  768. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  769. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -52
  770. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1442
  771. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -52
  772. package/src/modules/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -33
  773. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -234
  774. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -55
  775. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -50
  776. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  777. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  778. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
  779. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -57
  780. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  781. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
  782. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  783. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
  784. package/src/modules/bmm/workflows/document-project/checklist.md +0 -245
  785. package/src/modules/bmm/workflows/document-project/instructions.md +0 -222
  786. package/src/modules/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
  787. package/src/modules/bmm/workflows/document-project/workflow.yaml +0 -36
  788. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
  789. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
  790. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
  791. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
  792. package/src/modules/bmm/workflows/techdoc/documentation-standards.md +0 -262
  793. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -363
  794. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +0 -373
  795. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +0 -785
  796. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +0 -54
  797. package/src/modules/bmm/workflows/testarch/automate/checklist.md +0 -580
  798. package/src/modules/bmm/workflows/testarch/automate/instructions.md +0 -1303
  799. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +0 -63
  800. package/src/modules/bmm/workflows/testarch/ci/checklist.md +0 -246
  801. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -165
  802. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -128
  803. package/src/modules/bmm/workflows/testarch/ci/instructions.md +0 -517
  804. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +0 -55
  805. package/src/modules/bmm/workflows/testarch/framework/checklist.md +0 -321
  806. package/src/modules/bmm/workflows/testarch/framework/instructions.md +0 -455
  807. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +0 -55
  808. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +0 -405
  809. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
  810. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -443
  811. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -58
  812. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +0 -234
  813. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +0 -782
  814. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +0 -285
  815. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +0 -58
  816. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +0 -470
  817. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +0 -608
  818. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +0 -388
  819. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +0 -55
  820. package/src/modules/bmm/workflows/testarch/trace/checklist.md +0 -654
  821. package/src/modules/bmm/workflows/testarch/trace/instructions.md +0 -1045
  822. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +0 -673
  823. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +0 -68
  824. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +0 -823
  825. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +0 -29
  826. package/src/modules/bmm/workflows/workflow-status/instructions.md +0 -387
  827. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -120
  828. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -108
  829. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -52
  830. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -104
  831. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -95
  832. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
  833. package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
  834. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +0 -59
  835. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
  836. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +0 -30
  837. package/src/modules/cis/README.md +0 -153
  838. package/src/modules/cis/_module-installer/install-config.yaml +0 -16
  839. package/src/modules/cis/_module-installer/installer.js +0 -92
  840. package/src/modules/cis/agents/README.md +0 -104
  841. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +0 -28
  842. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +0 -28
  843. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +0 -28
  844. package/src/modules/cis/agents/innovation-strategist.agent.yaml +0 -28
  845. package/src/modules/cis/agents/storyteller.agent.yaml +0 -28
  846. package/src/modules/cis/teams/creative-squad.yaml +0 -7
  847. package/src/modules/cis/teams/default-party.csv +0 -11
  848. package/src/modules/cis/workflows/README.md +0 -139
  849. package/src/modules/cis/workflows/design-thinking/README.md +0 -56
  850. package/src/modules/cis/workflows/design-thinking/design-methods.csv +0 -31
  851. package/src/modules/cis/workflows/design-thinking/instructions.md +0 -200
  852. package/src/modules/cis/workflows/design-thinking/template.md +0 -111
  853. package/src/modules/cis/workflows/design-thinking/workflow.yaml +0 -43
  854. package/src/modules/cis/workflows/innovation-strategy/README.md +0 -56
  855. package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
  856. package/src/modules/cis/workflows/innovation-strategy/instructions.md +0 -274
  857. package/src/modules/cis/workflows/innovation-strategy/template.md +0 -189
  858. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +0 -43
  859. package/src/modules/cis/workflows/problem-solving/README.md +0 -56
  860. package/src/modules/cis/workflows/problem-solving/instructions.md +0 -250
  861. package/src/modules/cis/workflows/problem-solving/solving-methods.csv +0 -31
  862. package/src/modules/cis/workflows/problem-solving/template.md +0 -165
  863. package/src/modules/cis/workflows/problem-solving/workflow.yaml +0 -43
  864. package/src/modules/cis/workflows/storytelling/README.md +0 -58
  865. package/src/modules/cis/workflows/storytelling/instructions.md +0 -291
  866. package/src/modules/cis/workflows/storytelling/story-types.csv +0 -26
  867. package/src/modules/cis/workflows/storytelling/template.md +0 -113
  868. package/src/modules/cis/workflows/storytelling/workflow.yaml +0 -43
  869. package/src/utility/models/agent-activation-ide.xml +0 -51
  870. package/src/utility/models/agent-activation-web.xml +0 -60
  871. package/src/utility/models/agent-command-header.md +0 -1
  872. package/src/utility/models/agent-config-template.md +0 -23
  873. package/src/utility/models/agent-in-team-activation.xml +0 -3
  874. package/src/utility/models/fragments/activation-rules.xml +0 -8
  875. package/src/utility/models/fragments/activation-steps.xml +0 -16
  876. package/src/utility/models/fragments/handler-action.xml +0 -4
  877. package/src/utility/models/fragments/handler-exec.xml +0 -5
  878. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  879. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  880. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  881. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  882. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  883. package/src/utility/templates/agent.customize.template.yaml +0 -42
  884. package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +0 -26
  885. package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +0 -25
  886. package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +0 -26
  887. package/tools/cli/bundlers/bundle-web.js +0 -179
  888. package/tools/cli/bundlers/test-analyst.js +0 -28
  889. package/tools/cli/bundlers/test-bundler.js +0 -118
  890. package/tools/cli/bundlers/web-bundler.js +0 -1667
  891. package/tools/cli/commands/build.js +0 -458
  892. package/tools/cli/commands/list.js +0 -28
  893. package/tools/cli/commands/update.js +0 -28
  894. package/tools/cli/installers/lib/ide/auggie.js +0 -179
  895. package/tools/cli/installers/lib/ide/claude-code.js +0 -471
  896. package/tools/cli/installers/lib/ide/cline.js +0 -220
  897. package/tools/cli/installers/lib/ide/crush.js +0 -240
  898. package/tools/cli/installers/lib/ide/cursor.js +0 -352
  899. package/tools/cli/installers/lib/ide/gemini.js +0 -206
  900. package/tools/cli/installers/lib/ide/iflow.js +0 -125
  901. package/tools/cli/installers/lib/ide/opencode.js +0 -212
  902. package/tools/cli/installers/lib/ide/qwen.js +0 -318
  903. package/tools/cli/installers/lib/ide/roo.js +0 -253
  904. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +0 -14
  905. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +0 -12
  906. package/tools/cli/installers/lib/ide/trae.js +0 -266
  907. package/tools/cli/installers/lib/ide/windsurf.js +0 -211
  908. package/tools/cli/lib/replace-project-root.js +0 -239
  909. package/tools/cli/regenerate-manifests.js +0 -28
  910. package/tools/cli/test-yaml-builder.js +0 -43
  911. package/tools/flattener/aggregate.js +0 -76
  912. package/tools/flattener/binary.js +0 -80
  913. package/tools/flattener/discovery.js +0 -71
  914. package/tools/flattener/files.js +0 -35
  915. package/tools/flattener/ignoreRules.js +0 -172
  916. package/tools/flattener/main.js +0 -483
  917. package/tools/flattener/projectRoot.js +0 -201
  918. package/tools/flattener/prompts.js +0 -44
  919. package/tools/flattener/stats.helpers.js +0 -368
  920. package/tools/flattener/stats.js +0 -75
  921. package/tools/flattener/test-matrix.js +0 -409
  922. package/tools/flattener/xml.js +0 -88
  923. package/tools/validate-bundles.js +0 -87
  924. package/v6-open-items.md +0 -17
  925. /package/src/{modules/bmm → bmm}/teams/team-fullstack.yaml +0 -0
  926. /package/src/{modules/bmgd/workflows/4-production → bmm/workflows/4-implementation}/sprint-planning/checklist.md +0 -0
  927. /package/src/{modules/bmm → bmm}/workflows/document-project/documentation-requirements.csv +0 -0
  928. /package/src/{modules/bmm → bmm}/workflows/document-project/templates/deep-dive-template.md +0 -0
  929. /package/src/{modules/bmm → bmm}/workflows/document-project/templates/index-template.md +0 -0
  930. /package/src/{modules/bmm → bmm}/workflows/document-project/templates/project-overview-template.md +0 -0
  931. /package/src/{modules/bmm → bmm}/workflows/document-project/templates/source-tree-template.md +0 -0
  932. /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
  933. /package/{src/utility/models/action-command-header.md → tools/cli/installers/lib/ide/templates/split/.gitkeep} +0 -0
@@ -1,8 +1,10 @@
1
1
  const path = require('node:path');
2
2
  const fs = require('fs-extra');
3
- const yaml = require('js-yaml');
3
+ const yaml = require('yaml');
4
4
  const crypto = require('node:crypto');
5
+ const csv = require('csv-parse/sync');
5
6
  const { getSourcePath, getModulePath } = require('../../../lib/project-root');
7
+ const prompts = require('../../../lib/prompts');
6
8
 
7
9
  // Load package.json for version info
8
10
  const packageJson = require('../../../../../package.json');
@@ -21,25 +23,49 @@ class ManifestGenerator {
21
23
  this.selectedIdes = [];
22
24
  }
23
25
 
26
+ /**
27
+ * Clean text for CSV output by normalizing whitespace and escaping quotes
28
+ * @param {string} text - Text to clean
29
+ * @returns {string} Cleaned text safe for CSV
30
+ */
31
+ cleanForCSV(text) {
32
+ if (!text) return '';
33
+ return text
34
+ .trim()
35
+ .replaceAll(/\s+/g, ' ') // Normalize all whitespace (including newlines) to single space
36
+ .replaceAll('"', '""'); // Escape quotes for CSV
37
+ }
38
+
24
39
  /**
25
40
  * Generate all manifests for the installation
26
- * @param {string} bmadDir - BMAD installation directory
41
+ * @param {string} bmadDir - _bmad
27
42
  * @param {Array} selectedModules - Selected modules for installation
28
43
  * @param {Array} installedFiles - All installed files (optional, for hash tracking)
29
44
  */
30
45
  async generateManifests(bmadDir, selectedModules, installedFiles = [], options = {}) {
31
- // Create _cfg directory if it doesn't exist
32
- const cfgDir = path.join(bmadDir, '_cfg');
46
+ // Create _config directory if it doesn't exist
47
+ const cfgDir = path.join(bmadDir, '_config');
33
48
  await fs.ensureDir(cfgDir);
34
49
 
35
50
  // Store modules list (all modules including preserved ones)
36
51
  const preservedModules = options.preservedModules || [];
37
- // Deduplicate modules list to prevent duplicates
38
- this.modules = [...new Set(['core', ...selectedModules, ...preservedModules])];
39
- this.updatedModules = [...new Set(['core', ...selectedModules])]; // Only these get rescanned
40
- this.preservedModules = preservedModules; // These stay as-is in CSVs
52
+
53
+ // Scan the bmad directory to find all actually installed modules
54
+ const installedModules = await this.scanInstalledModules(bmadDir);
55
+
56
+ // Since custom modules are now installed the same way as regular modules,
57
+ // we don't need to exclude them from manifest generation
58
+ const allModules = [...new Set(['core', ...selectedModules, ...preservedModules, ...installedModules])];
59
+
60
+ this.modules = allModules;
61
+ this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
62
+
63
+ // For CSV manifests, we need to include ALL modules that are installed
64
+ // preservedModules controls which modules stay as-is in the CSV (don't get rescanned)
65
+ // But all modules should be included in the final manifest
66
+ this.preservedModules = allModules; // Include ALL modules (including custom)
41
67
  this.bmadDir = bmadDir;
42
- this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '.bmad' or 'bmad')
68
+ this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '_bmad' or 'bmad')
43
69
  this.allInstalledFiles = installedFiles;
44
70
 
45
71
  if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
@@ -57,14 +83,14 @@ class ManifestGenerator {
57
83
  // Collect workflow data
58
84
  await this.collectWorkflows(selectedModules);
59
85
 
60
- // Collect agent data
61
- await this.collectAgents(selectedModules);
86
+ // Collect agent data - use updatedModules which includes all installed modules
87
+ await this.collectAgents(this.updatedModules);
62
88
 
63
89
  // Collect task data
64
- await this.collectTasks(selectedModules);
90
+ await this.collectTasks(this.updatedModules);
65
91
 
66
92
  // Collect tool data
67
- await this.collectTools(selectedModules);
93
+ await this.collectTools(this.updatedModules);
68
94
 
69
95
  // Write manifest files and collect their paths
70
96
  const manifestFiles = [
@@ -105,13 +131,21 @@ class ManifestGenerator {
105
131
  }
106
132
 
107
133
  /**
108
- * Recursively find and parse workflow.yaml files
134
+ * Recursively find and parse workflow.yaml and workflow.md files
109
135
  */
110
136
  async getWorkflowsFromPath(basePath, moduleName) {
111
137
  const workflows = [];
112
138
  const workflowsPath = path.join(basePath, 'workflows');
139
+ const debug = process.env.BMAD_DEBUG_MANIFEST === 'true';
140
+
141
+ if (debug) {
142
+ console.log(`[DEBUG] Scanning workflows in: ${workflowsPath}`);
143
+ }
113
144
 
114
145
  if (!(await fs.pathExists(workflowsPath))) {
146
+ if (debug) {
147
+ console.log(`[DEBUG] Workflows path does not exist: ${workflowsPath}`);
148
+ }
115
149
  return workflows;
116
150
  }
117
151
 
@@ -126,14 +160,53 @@ class ManifestGenerator {
126
160
  // Recurse into subdirectories
127
161
  const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
128
162
  await findWorkflows(fullPath, newRelativePath);
129
- } else if (entry.name === 'workflow.yaml') {
130
- // Parse workflow file
163
+ } else if (
164
+ entry.name === 'workflow.yaml' ||
165
+ entry.name === 'workflow.md' ||
166
+ (entry.name.startsWith('workflow-') && entry.name.endsWith('.md'))
167
+ ) {
168
+ // Parse workflow file (both YAML and MD formats)
169
+ if (debug) {
170
+ console.log(`[DEBUG] Found workflow file: ${fullPath}`);
171
+ }
131
172
  try {
132
- const content = await fs.readFile(fullPath, 'utf8');
133
- const workflow = yaml.load(content);
173
+ // Read and normalize line endings (fix Windows CRLF issues)
174
+ const rawContent = await fs.readFile(fullPath, 'utf8');
175
+ const content = rawContent.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
176
+
177
+ let workflow;
178
+ if (entry.name === 'workflow.yaml') {
179
+ // Parse YAML workflow
180
+ workflow = yaml.parse(content);
181
+ } else {
182
+ // Parse MD workflow with YAML frontmatter
183
+ const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
184
+ if (!frontmatterMatch) {
185
+ if (debug) {
186
+ console.log(`[DEBUG] Skipped (no frontmatter): ${fullPath}`);
187
+ }
188
+ continue; // Skip MD files without frontmatter
189
+ }
190
+ workflow = yaml.parse(frontmatterMatch[1]);
191
+ }
192
+
193
+ if (debug) {
194
+ console.log(`[DEBUG] Parsed: name="${workflow.name}", description=${workflow.description ? 'OK' : 'MISSING'}`);
195
+ }
134
196
 
135
197
  // Skip template workflows (those with placeholder values)
136
198
  if (workflow.name && workflow.name.includes('{') && workflow.name.includes('}')) {
199
+ if (debug) {
200
+ console.log(`[DEBUG] Skipped (template placeholder): ${workflow.name}`);
201
+ }
202
+ continue;
203
+ }
204
+
205
+ // Skip workflows marked as non-standalone (reference/example workflows)
206
+ if (workflow.standalone === false) {
207
+ if (debug) {
208
+ console.log(`[DEBUG] Skipped (standalone=false): ${workflow.name}`);
209
+ }
137
210
  continue;
138
211
  }
139
212
 
@@ -141,18 +214,15 @@ class ManifestGenerator {
141
214
  // Build relative path for installation
142
215
  const installPath =
143
216
  moduleName === 'core'
144
- ? `${this.bmadFolderName}/core/workflows/${relativePath}/workflow.yaml`
145
- : `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/workflow.yaml`;
146
-
147
- // Check for standalone property (default: false)
148
- const standalone = workflow.standalone === true;
217
+ ? `${this.bmadFolderName}/core/workflows/${relativePath}/${entry.name}`
218
+ : `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/${entry.name}`;
149
219
 
220
+ // Workflows with standalone: false are filtered out above
150
221
  workflows.push({
151
222
  name: workflow.name,
152
- description: workflow.description.replaceAll('"', '""'), // Escape quotes for CSV
223
+ description: this.cleanForCSV(workflow.description),
153
224
  module: moduleName,
154
225
  path: installPath,
155
- standalone: standalone,
156
226
  });
157
227
 
158
228
  // Add to files list
@@ -162,15 +232,28 @@ class ManifestGenerator {
162
232
  module: moduleName,
163
233
  path: installPath,
164
234
  });
235
+
236
+ if (debug) {
237
+ console.log(`[DEBUG] ✓ Added workflow: ${workflow.name} (${moduleName})`);
238
+ }
239
+ } else {
240
+ if (debug) {
241
+ console.log(`[DEBUG] Skipped (missing name or description): ${fullPath}`);
242
+ }
165
243
  }
166
244
  } catch (error) {
167
- console.warn(`Warning: Failed to parse workflow at ${fullPath}: ${error.message}`);
245
+ await prompts.log.warn(`Failed to parse workflow at ${fullPath}: ${error.message}`);
168
246
  }
169
247
  }
170
248
  }
171
249
  };
172
250
 
173
251
  await findWorkflows(workflowsPath);
252
+
253
+ if (debug) {
254
+ console.log(`[DEBUG] Total workflows found in ${moduleName}: ${workflows.length}`);
255
+ }
256
+
174
257
  return workflows;
175
258
  }
176
259
 
@@ -207,18 +290,23 @@ class ManifestGenerator {
207
290
  }
208
291
 
209
292
  /**
210
- * Get agents from a directory
293
+ * Get agents from a directory recursively
211
294
  * Only includes compiled .md files (not .agent.yaml source files)
212
295
  */
213
- async getAgentsFromDir(dirPath, moduleName) {
296
+ async getAgentsFromDir(dirPath, moduleName, relativePath = '') {
214
297
  const agents = [];
215
- const files = await fs.readdir(dirPath);
298
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
216
299
 
217
- for (const file of files) {
218
- // Only include .md files, skip .agent.yaml source files and README.md
219
- if (file.endsWith('.md') && !file.endsWith('.agent.yaml') && file.toLowerCase() !== 'readme.md') {
220
- const filePath = path.join(dirPath, file);
221
- const content = await fs.readFile(filePath, 'utf8');
300
+ for (const entry of entries) {
301
+ const fullPath = path.join(dirPath, entry.name);
302
+
303
+ if (entry.isDirectory()) {
304
+ // Recurse into subdirectories
305
+ const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
306
+ const subDirAgents = await this.getAgentsFromDir(fullPath, moduleName, newRelativePath);
307
+ agents.push(...subDirAgents);
308
+ } else if (entry.name.endsWith('.md') && !entry.name.endsWith('.agent.yaml') && entry.name.toLowerCase() !== 'readme.md') {
309
+ const content = await fs.readFile(fullPath, 'utf8');
222
310
 
223
311
  // Skip files that don't contain <agent> tag (e.g., README files)
224
312
  if (!content.includes('<agent')) {
@@ -234,6 +322,7 @@ class ManifestGenerator {
234
322
  const nameMatch = content.match(/name="([^"]+)"/);
235
323
  const titleMatch = content.match(/title="([^"]+)"/);
236
324
  const iconMatch = content.match(/icon="([^"]+)"/);
325
+ const capabilitiesMatch = content.match(/capabilities="([^"]+)"/);
237
326
 
238
327
  // Extract persona fields
239
328
  const roleMatch = content.match(/<role>([^<]+)<\/role>/);
@@ -242,29 +331,24 @@ class ManifestGenerator {
242
331
  const principlesMatch = content.match(/<principles>([\s\S]*?)<\/principles>/);
243
332
 
244
333
  // Build relative path for installation
334
+ const fileRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
245
335
  const installPath =
246
- moduleName === 'core' ? `${this.bmadFolderName}/core/agents/${file}` : `${this.bmadFolderName}/${moduleName}/agents/${file}`;
336
+ moduleName === 'core'
337
+ ? `${this.bmadFolderName}/core/agents/${fileRelativePath}`
338
+ : `${this.bmadFolderName}/${moduleName}/agents/${fileRelativePath}`;
247
339
 
248
- const agentName = file.replace('.md', '');
249
-
250
- // Helper function to clean and escape CSV content
251
- const cleanForCSV = (text) => {
252
- if (!text) return '';
253
- return text
254
- .trim()
255
- .replaceAll(/\s+/g, ' ') // Normalize whitespace
256
- .replaceAll('"', '""'); // Escape quotes for CSV
257
- };
340
+ const agentName = entry.name.replace('.md', '');
258
341
 
259
342
  agents.push({
260
343
  name: agentName,
261
344
  displayName: nameMatch ? nameMatch[1] : agentName,
262
345
  title: titleMatch ? titleMatch[1] : '',
263
346
  icon: iconMatch ? iconMatch[1] : '',
264
- role: roleMatch ? cleanForCSV(roleMatch[1]) : '',
265
- identity: identityMatch ? cleanForCSV(identityMatch[1]) : '',
266
- communicationStyle: styleMatch ? cleanForCSV(styleMatch[1]) : '',
267
- principles: principlesMatch ? cleanForCSV(principlesMatch[1]) : '',
347
+ capabilities: capabilitiesMatch ? this.cleanForCSV(capabilitiesMatch[1]) : '',
348
+ role: roleMatch ? this.cleanForCSV(roleMatch[1]) : '',
349
+ identity: identityMatch ? this.cleanForCSV(identityMatch[1]) : '',
350
+ communicationStyle: styleMatch ? this.cleanForCSV(styleMatch[1]) : '',
351
+ principles: principlesMatch ? this.cleanForCSV(principlesMatch[1]) : '',
268
352
  module: moduleName,
269
353
  path: installPath,
270
354
  });
@@ -313,27 +397,55 @@ class ManifestGenerator {
313
397
  const filePath = path.join(dirPath, file);
314
398
  const content = await fs.readFile(filePath, 'utf8');
315
399
 
316
- // Extract task metadata from content if possible
317
- const nameMatch = content.match(/name="([^"]+)"/);
400
+ // Skip internal/engine files (not user-facing tasks)
401
+ if (content.includes('internal="true"')) {
402
+ continue;
403
+ }
404
+
405
+ let name = file.replace(/\.(xml|md)$/, '');
406
+ let displayName = name;
407
+ let description = '';
408
+ let standalone = false;
409
+
410
+ if (file.endsWith('.md')) {
411
+ // Parse YAML frontmatter for .md tasks
412
+ const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
413
+ if (frontmatterMatch) {
414
+ try {
415
+ const frontmatter = yaml.parse(frontmatterMatch[1]);
416
+ name = frontmatter.name || name;
417
+ displayName = frontmatter.displayName || frontmatter.name || name;
418
+ description = this.cleanForCSV(frontmatter.description || '');
419
+ // Tasks are standalone by default unless explicitly false (internal=true is already filtered above)
420
+ standalone = frontmatter.standalone !== false && frontmatter.standalone !== 'false';
421
+ } catch {
422
+ // If YAML parsing fails, use defaults
423
+ standalone = true; // Default to standalone
424
+ }
425
+ } else {
426
+ standalone = true; // No frontmatter means standalone
427
+ }
428
+ } else {
429
+ // For .xml tasks, extract from tag attributes
430
+ const nameMatch = content.match(/name="([^"]+)"/);
431
+ displayName = nameMatch ? nameMatch[1] : name;
318
432
 
319
- // Try description attribute first, fall back to <objective> element
320
- const descMatch = content.match(/description="([^"]+)"/);
321
- const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
322
- const description = descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '';
433
+ const descMatch = content.match(/description="([^"]+)"/);
434
+ const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
435
+ description = this.cleanForCSV(descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '');
323
436
 
324
- // Check for standalone attribute in <task> tag (default: false)
325
- const standaloneMatch = content.match(/<task[^>]+standalone="true"/);
326
- const standalone = !!standaloneMatch;
437
+ const standaloneFalseMatch = content.match(/<task[^>]+standalone="false"/);
438
+ standalone = !standaloneFalseMatch;
439
+ }
327
440
 
328
441
  // Build relative path for installation
329
442
  const installPath =
330
443
  moduleName === 'core' ? `${this.bmadFolderName}/core/tasks/${file}` : `${this.bmadFolderName}/${moduleName}/tasks/${file}`;
331
444
 
332
- const taskName = file.replace(/\.(xml|md)$/, '');
333
445
  tasks.push({
334
- name: taskName,
335
- displayName: nameMatch ? nameMatch[1] : taskName,
336
- description: description.replaceAll('"', '""'),
446
+ name: name,
447
+ displayName: displayName,
448
+ description: description,
337
449
  module: moduleName,
338
450
  path: installPath,
339
451
  standalone: standalone,
@@ -342,7 +454,7 @@ class ManifestGenerator {
342
454
  // Add to files list
343
455
  this.files.push({
344
456
  type: 'task',
345
- name: taskName,
457
+ name: name,
346
458
  module: moduleName,
347
459
  path: installPath,
348
460
  });
@@ -383,27 +495,55 @@ class ManifestGenerator {
383
495
  const filePath = path.join(dirPath, file);
384
496
  const content = await fs.readFile(filePath, 'utf8');
385
497
 
386
- // Extract tool metadata from content if possible
387
- const nameMatch = content.match(/name="([^"]+)"/);
498
+ // Skip internal tools (same as tasks)
499
+ if (content.includes('internal="true"')) {
500
+ continue;
501
+ }
502
+
503
+ let name = file.replace(/\.(xml|md)$/, '');
504
+ let displayName = name;
505
+ let description = '';
506
+ let standalone = false;
507
+
508
+ if (file.endsWith('.md')) {
509
+ // Parse YAML frontmatter for .md tools
510
+ const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
511
+ if (frontmatterMatch) {
512
+ try {
513
+ const frontmatter = yaml.parse(frontmatterMatch[1]);
514
+ name = frontmatter.name || name;
515
+ displayName = frontmatter.displayName || frontmatter.name || name;
516
+ description = this.cleanForCSV(frontmatter.description || '');
517
+ // Tools are standalone by default unless explicitly false (internal=true is already filtered above)
518
+ standalone = frontmatter.standalone !== false && frontmatter.standalone !== 'false';
519
+ } catch {
520
+ // If YAML parsing fails, use defaults
521
+ standalone = true; // Default to standalone
522
+ }
523
+ } else {
524
+ standalone = true; // No frontmatter means standalone
525
+ }
526
+ } else {
527
+ // For .xml tools, extract from tag attributes
528
+ const nameMatch = content.match(/name="([^"]+)"/);
529
+ displayName = nameMatch ? nameMatch[1] : name;
388
530
 
389
- // Try description attribute first, fall back to <objective> element
390
- const descMatch = content.match(/description="([^"]+)"/);
391
- const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
392
- const description = descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '';
531
+ const descMatch = content.match(/description="([^"]+)"/);
532
+ const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
533
+ description = this.cleanForCSV(descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '');
393
534
 
394
- // Check for standalone attribute in <tool> tag (default: false)
395
- const standaloneMatch = content.match(/<tool[^>]+standalone="true"/);
396
- const standalone = !!standaloneMatch;
535
+ const standaloneFalseMatch = content.match(/<tool[^>]+standalone="false"/);
536
+ standalone = !standaloneFalseMatch;
537
+ }
397
538
 
398
539
  // Build relative path for installation
399
540
  const installPath =
400
541
  moduleName === 'core' ? `${this.bmadFolderName}/core/tools/${file}` : `${this.bmadFolderName}/${moduleName}/tools/${file}`;
401
542
 
402
- const toolName = file.replace(/\.(xml|md)$/, '');
403
543
  tools.push({
404
- name: toolName,
405
- displayName: nameMatch ? nameMatch[1] : toolName,
406
- description: description.replaceAll('"', '""'),
544
+ name: name,
545
+ displayName: displayName,
546
+ description: description,
407
547
  module: moduleName,
408
548
  path: installPath,
409
549
  standalone: standalone,
@@ -412,7 +552,7 @@ class ManifestGenerator {
412
552
  // Add to files list
413
553
  this.files.push({
414
554
  type: 'tool',
415
- name: toolName,
555
+ name: name,
416
556
  module: moduleName,
417
557
  path: installPath,
418
558
  });
@@ -424,25 +564,80 @@ class ManifestGenerator {
424
564
 
425
565
  /**
426
566
  * Write main manifest as YAML with installation info only
567
+ * Fetches fresh version info for all modules
427
568
  * @returns {string} Path to the manifest file
428
569
  */
429
570
  async writeMainManifest(cfgDir) {
430
571
  const manifestPath = path.join(cfgDir, 'manifest.yaml');
431
572
 
573
+ // Read existing manifest to preserve install date
574
+ let existingInstallDate = null;
575
+ const existingModulesMap = new Map();
576
+
577
+ if (await fs.pathExists(manifestPath)) {
578
+ try {
579
+ const existingContent = await fs.readFile(manifestPath, 'utf8');
580
+ const existingManifest = yaml.parse(existingContent);
581
+
582
+ // Preserve original install date
583
+ if (existingManifest.installation?.installDate) {
584
+ existingInstallDate = existingManifest.installation.installDate;
585
+ }
586
+
587
+ // Build map of existing modules for quick lookup
588
+ if (existingManifest.modules && Array.isArray(existingManifest.modules)) {
589
+ for (const m of existingManifest.modules) {
590
+ if (typeof m === 'object' && m.name) {
591
+ existingModulesMap.set(m.name, m);
592
+ } else if (typeof m === 'string') {
593
+ existingModulesMap.set(m, { installDate: existingInstallDate });
594
+ }
595
+ }
596
+ }
597
+ } catch {
598
+ // If we can't read existing manifest, continue with defaults
599
+ }
600
+ }
601
+
602
+ // Fetch fresh version info for all modules
603
+ const { Manifest } = require('./manifest');
604
+ const manifestObj = new Manifest();
605
+ const updatedModules = [];
606
+
607
+ for (const moduleName of this.modules) {
608
+ // Get fresh version info from source
609
+ const versionInfo = await manifestObj.getModuleVersionInfo(moduleName, this.bmadDir);
610
+
611
+ // Get existing install date if available
612
+ const existing = existingModulesMap.get(moduleName);
613
+
614
+ updatedModules.push({
615
+ name: moduleName,
616
+ version: versionInfo.version,
617
+ installDate: existing?.installDate || new Date().toISOString(),
618
+ lastUpdated: new Date().toISOString(),
619
+ source: versionInfo.source,
620
+ npmPackage: versionInfo.npmPackage,
621
+ repoUrl: versionInfo.repoUrl,
622
+ });
623
+ }
624
+
432
625
  const manifest = {
433
626
  installation: {
434
627
  version: packageJson.version,
435
- installDate: new Date().toISOString(),
628
+ installDate: existingInstallDate || new Date().toISOString(),
436
629
  lastUpdated: new Date().toISOString(),
437
630
  },
438
- modules: this.modules,
631
+ modules: updatedModules,
439
632
  ides: this.selectedIdes,
440
633
  };
441
634
 
442
- const yamlStr = yaml.dump(manifest, {
635
+ // Clean the manifest to remove any non-serializable values
636
+ const cleanManifest = structuredClone(manifest);
637
+
638
+ const yamlStr = yaml.stringify(cleanManifest, {
443
639
  indent: 2,
444
- lineWidth: -1,
445
- noRefs: true,
640
+ lineWidth: 0,
446
641
  sortKeys: false,
447
642
  });
448
643
 
@@ -499,7 +694,7 @@ class ManifestGenerator {
499
694
 
500
695
  return preservedRows;
501
696
  } catch (error) {
502
- console.warn(`Warning: Failed to read existing CSV ${csvPath}:`, error.message);
697
+ await prompts.log.warn(`Failed to read existing CSV ${csvPath}: ${error.message}`);
503
698
  return [];
504
699
  }
505
700
  }
@@ -540,13 +735,30 @@ class ManifestGenerator {
540
735
  */
541
736
  async writeWorkflowManifest(cfgDir) {
542
737
  const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
738
+ const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
543
739
 
544
- // Create CSV header with standalone column
545
- let csv = 'name,description,module,path,standalone\n';
740
+ // Create CSV header - standalone column removed, everything is canonicalized to 4 columns
741
+ let csv = 'name,description,module,path\n';
742
+
743
+ // Build workflows map from discovered workflows only
744
+ // Old entries are NOT preserved - the manifest reflects what actually exists on disk
745
+ const allWorkflows = new Map();
546
746
 
547
- // Add all workflows
747
+ // Only add workflows that were actually discovered in this scan
548
748
  for (const workflow of this.workflows) {
549
- csv += `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}","${workflow.standalone}"\n`;
749
+ const key = `${workflow.module}:${workflow.name}`;
750
+ allWorkflows.set(key, {
751
+ name: workflow.name,
752
+ description: workflow.description,
753
+ module: workflow.module,
754
+ path: workflow.path,
755
+ });
756
+ }
757
+
758
+ // Write all workflows
759
+ for (const [, value] of allWorkflows) {
760
+ const row = [escapeCsv(value.name), escapeCsv(value.description), escapeCsv(value.module), escapeCsv(value.path)].join(',');
761
+ csv += row + '\n';
550
762
  }
551
763
 
552
764
  await fs.writeFile(csvPath, csv);
@@ -559,16 +771,69 @@ class ManifestGenerator {
559
771
  */
560
772
  async writeAgentManifest(cfgDir) {
561
773
  const csvPath = path.join(cfgDir, 'agent-manifest.csv');
774
+ const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
775
+
776
+ // Read existing manifest to preserve entries
777
+ const existingEntries = new Map();
778
+ if (await fs.pathExists(csvPath)) {
779
+ const content = await fs.readFile(csvPath, 'utf8');
780
+ const records = csv.parse(content, {
781
+ columns: true,
782
+ skip_empty_lines: true,
783
+ });
784
+ for (const record of records) {
785
+ existingEntries.set(`${record.module}:${record.name}`, record);
786
+ }
787
+ }
562
788
 
563
789
  // Create CSV header with persona fields
564
- let csv = 'name,displayName,title,icon,role,identity,communicationStyle,principles,module,path\n';
790
+ let csvContent = 'name,displayName,title,icon,capabilities,role,identity,communicationStyle,principles,module,path\n';
791
+
792
+ // Combine existing and new agents, preferring new data for duplicates
793
+ const allAgents = new Map();
794
+
795
+ // Add existing entries
796
+ for (const [key, value] of existingEntries) {
797
+ allAgents.set(key, value);
798
+ }
565
799
 
566
- // Add all agents
800
+ // Add/update new agents
567
801
  for (const agent of this.agents) {
568
- csv += `"${agent.name}","${agent.displayName}","${agent.title}","${agent.icon}","${agent.role}","${agent.identity}","${agent.communicationStyle}","${agent.principles}","${agent.module}","${agent.path}"\n`;
802
+ const key = `${agent.module}:${agent.name}`;
803
+ allAgents.set(key, {
804
+ name: agent.name,
805
+ displayName: agent.displayName,
806
+ title: agent.title,
807
+ icon: agent.icon,
808
+ capabilities: agent.capabilities,
809
+ role: agent.role,
810
+ identity: agent.identity,
811
+ communicationStyle: agent.communicationStyle,
812
+ principles: agent.principles,
813
+ module: agent.module,
814
+ path: agent.path,
815
+ });
569
816
  }
570
817
 
571
- await fs.writeFile(csvPath, csv);
818
+ // Write all agents
819
+ for (const [, record] of allAgents) {
820
+ const row = [
821
+ escapeCsv(record.name),
822
+ escapeCsv(record.displayName),
823
+ escapeCsv(record.title),
824
+ escapeCsv(record.icon),
825
+ escapeCsv(record.capabilities),
826
+ escapeCsv(record.role),
827
+ escapeCsv(record.identity),
828
+ escapeCsv(record.communicationStyle),
829
+ escapeCsv(record.principles),
830
+ escapeCsv(record.module),
831
+ escapeCsv(record.path),
832
+ ].join(',');
833
+ csvContent += row + '\n';
834
+ }
835
+
836
+ await fs.writeFile(csvPath, csvContent);
572
837
  return csvPath;
573
838
  }
574
839
 
@@ -578,16 +843,59 @@ class ManifestGenerator {
578
843
  */
579
844
  async writeTaskManifest(cfgDir) {
580
845
  const csvPath = path.join(cfgDir, 'task-manifest.csv');
846
+ const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
847
+
848
+ // Read existing manifest to preserve entries
849
+ const existingEntries = new Map();
850
+ if (await fs.pathExists(csvPath)) {
851
+ const content = await fs.readFile(csvPath, 'utf8');
852
+ const records = csv.parse(content, {
853
+ columns: true,
854
+ skip_empty_lines: true,
855
+ });
856
+ for (const record of records) {
857
+ existingEntries.set(`${record.module}:${record.name}`, record);
858
+ }
859
+ }
581
860
 
582
861
  // Create CSV header with standalone column
583
- let csv = 'name,displayName,description,module,path,standalone\n';
862
+ let csvContent = 'name,displayName,description,module,path,standalone\n';
863
+
864
+ // Combine existing and new tasks
865
+ const allTasks = new Map();
866
+
867
+ // Add existing entries
868
+ for (const [key, value] of existingEntries) {
869
+ allTasks.set(key, value);
870
+ }
584
871
 
585
- // Add all tasks
872
+ // Add/update new tasks
586
873
  for (const task of this.tasks) {
587
- csv += `"${task.name}","${task.displayName}","${task.description}","${task.module}","${task.path}","${task.standalone}"\n`;
874
+ const key = `${task.module}:${task.name}`;
875
+ allTasks.set(key, {
876
+ name: task.name,
877
+ displayName: task.displayName,
878
+ description: task.description,
879
+ module: task.module,
880
+ path: task.path,
881
+ standalone: task.standalone,
882
+ });
588
883
  }
589
884
 
590
- await fs.writeFile(csvPath, csv);
885
+ // Write all tasks
886
+ for (const [, record] of allTasks) {
887
+ const row = [
888
+ escapeCsv(record.name),
889
+ escapeCsv(record.displayName),
890
+ escapeCsv(record.description),
891
+ escapeCsv(record.module),
892
+ escapeCsv(record.path),
893
+ escapeCsv(record.standalone),
894
+ ].join(',');
895
+ csvContent += row + '\n';
896
+ }
897
+
898
+ await fs.writeFile(csvPath, csvContent);
591
899
  return csvPath;
592
900
  }
593
901
 
@@ -597,16 +905,59 @@ class ManifestGenerator {
597
905
  */
598
906
  async writeToolManifest(cfgDir) {
599
907
  const csvPath = path.join(cfgDir, 'tool-manifest.csv');
908
+ const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
909
+
910
+ // Read existing manifest to preserve entries
911
+ const existingEntries = new Map();
912
+ if (await fs.pathExists(csvPath)) {
913
+ const content = await fs.readFile(csvPath, 'utf8');
914
+ const records = csv.parse(content, {
915
+ columns: true,
916
+ skip_empty_lines: true,
917
+ });
918
+ for (const record of records) {
919
+ existingEntries.set(`${record.module}:${record.name}`, record);
920
+ }
921
+ }
600
922
 
601
923
  // Create CSV header with standalone column
602
- let csv = 'name,displayName,description,module,path,standalone\n';
924
+ let csvContent = 'name,displayName,description,module,path,standalone\n';
925
+
926
+ // Combine existing and new tools
927
+ const allTools = new Map();
928
+
929
+ // Add existing entries
930
+ for (const [key, value] of existingEntries) {
931
+ allTools.set(key, value);
932
+ }
603
933
 
604
- // Add all tools
934
+ // Add/update new tools
605
935
  for (const tool of this.tools) {
606
- csv += `"${tool.name}","${tool.displayName}","${tool.description}","${tool.module}","${tool.path}","${tool.standalone}"\n`;
936
+ const key = `${tool.module}:${tool.name}`;
937
+ allTools.set(key, {
938
+ name: tool.name,
939
+ displayName: tool.displayName,
940
+ description: tool.description,
941
+ module: tool.module,
942
+ path: tool.path,
943
+ standalone: tool.standalone,
944
+ });
607
945
  }
608
946
 
609
- await fs.writeFile(csvPath, csv);
947
+ // Write all tools
948
+ for (const [, record] of allTools) {
949
+ const row = [
950
+ escapeCsv(record.name),
951
+ escapeCsv(record.displayName),
952
+ escapeCsv(record.description),
953
+ escapeCsv(record.module),
954
+ escapeCsv(record.path),
955
+ escapeCsv(record.standalone),
956
+ ].join(',');
957
+ csvContent += row + '\n';
958
+ }
959
+
960
+ await fs.writeFile(csvPath, csvContent);
610
961
  return csvPath;
611
962
  }
612
963
 
@@ -641,13 +992,14 @@ class ManifestGenerator {
641
992
  if (this.allInstalledFiles && this.allInstalledFiles.length > 0) {
642
993
  // Process all installed files
643
994
  for (const filePath of this.allInstalledFiles) {
644
- const relativePath = 'bmad' + filePath.replace(this.bmadDir, '').replaceAll('\\', '/');
995
+ // Store paths relative to bmadDir (no folder prefix)
996
+ const relativePath = filePath.replace(this.bmadDir, '').replaceAll('\\', '/').replace(/^\//, '');
645
997
  const ext = path.extname(filePath).toLowerCase();
646
998
  const fileName = path.basename(filePath, ext);
647
999
 
648
- // Determine module from path
1000
+ // Determine module from path (first directory component)
649
1001
  const pathParts = relativePath.split('/');
650
- const module = pathParts.length > 1 ? pathParts[1] : 'unknown';
1002
+ const module = pathParts.length > 0 ? pathParts[0] : 'unknown';
651
1003
 
652
1004
  // Calculate hash
653
1005
  const hash = await this.calculateFileHash(filePath);
@@ -663,10 +1015,13 @@ class ManifestGenerator {
663
1015
  } else {
664
1016
  // Fallback: use the collected workflows/agents/tasks
665
1017
  for (const file of this.files) {
666
- const filePath = path.join(this.bmadDir, file.path.replace(this.bmadFolderName + '/', ''));
1018
+ // Strip the folder prefix if present (for consistency)
1019
+ const relPath = file.path.replace(this.bmadFolderName + '/', '');
1020
+ const filePath = path.join(this.bmadDir, relPath);
667
1021
  const hash = await this.calculateFileHash(filePath);
668
1022
  allFiles.push({
669
1023
  ...file,
1024
+ path: relPath,
670
1025
  hash: hash,
671
1026
  });
672
1027
  }
@@ -687,6 +1042,42 @@ class ManifestGenerator {
687
1042
  await fs.writeFile(csvPath, csv);
688
1043
  return csvPath;
689
1044
  }
1045
+
1046
+ /**
1047
+ * Scan the bmad directory to find all installed modules
1048
+ * @param {string} bmadDir - Path to bmad directory
1049
+ * @returns {Array} List of module names
1050
+ */
1051
+ async scanInstalledModules(bmadDir) {
1052
+ const modules = [];
1053
+
1054
+ try {
1055
+ const entries = await fs.readdir(bmadDir, { withFileTypes: true });
1056
+
1057
+ for (const entry of entries) {
1058
+ // Skip if not a directory or is a special directory
1059
+ if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_config') {
1060
+ continue;
1061
+ }
1062
+
1063
+ // Check if this looks like a module (has agents, workflows, or tasks directory)
1064
+ const modulePath = path.join(bmadDir, entry.name);
1065
+ const hasAgents = await fs.pathExists(path.join(modulePath, 'agents'));
1066
+ const hasWorkflows = await fs.pathExists(path.join(modulePath, 'workflows'));
1067
+ const hasTasks = await fs.pathExists(path.join(modulePath, 'tasks'));
1068
+ const hasTools = await fs.pathExists(path.join(modulePath, 'tools'));
1069
+
1070
+ // If it has any of these directories, it's likely a module
1071
+ if (hasAgents || hasWorkflows || hasTasks || hasTools) {
1072
+ modules.push(entry.name);
1073
+ }
1074
+ }
1075
+ } catch (error) {
1076
+ await prompts.log.warn(`Could not scan for installed modules: ${error.message}`);
1077
+ }
1078
+
1079
+ return modules;
1080
+ }
690
1081
  }
691
1082
 
692
1083
  module.exports = { ManifestGenerator };