ma-agents 3.6.2 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (975) hide show
  1. package/CONTRIBUTING.md +139 -0
  2. package/README.md +26 -11
  3. package/bin/cli.js +138 -37
  4. package/docs/deployment/vllm-nemotron.md +4 -2
  5. package/lib/.bmad-extension-plugin.build-1264-1777348888201/.claude-plugin/marketplace.json +109 -0
  6. package/lib/{bmad-extension → .bmad-extension-plugin.build-1264-1777348888201/skills}/module-help.csv +5 -5
  7. package/lib/.bmad-extension-plugin.build-1264-1777348888201/skills/module.yaml +20 -0
  8. package/lib/.bmad-extension-plugin.build-24696-1777348768444/.claude-plugin/marketplace.json +109 -0
  9. package/lib/.bmad-extension-plugin.build-24696-1777348768444/skills/module-help.csv +62 -0
  10. package/lib/.bmad-extension-plugin.build-24696-1777348768444/skills/module.yaml +20 -0
  11. package/lib/.bmad-extension-plugin.build-25428-1777348694953/.claude-plugin/marketplace.json +109 -0
  12. package/lib/.bmad-extension-plugin.build-25428-1777348694953/skills/module-help.csv +62 -0
  13. package/lib/.bmad-extension-plugin.build-25428-1777348694953/skills/module.yaml +20 -0
  14. package/lib/agents.js +32 -10
  15. package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +4 -11
  16. package/lib/bmad-cache/bmb/README.md +1 -1
  17. package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
  18. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.idx +0 -0
  19. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/{pack-554778ad4e7254827618ebd2497c3f4bce9054a4.pack → pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.pack} +0 -0
  20. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.rev +0 -0
  21. package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
  22. package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
  23. package/lib/bmad-cache/bmb/_git_preserved/refs/tags/v1.7.0 +1 -0
  24. package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
  25. package/lib/bmad-cache/bmb/package-lock.json +2 -2
  26. package/lib/bmad-cache/bmb/package.json +2 -7
  27. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/customize-template.toml +62 -0
  28. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/sample-customize-analyst.toml +87 -0
  29. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/customize-template.toml +56 -0
  30. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/sample-customize-product-brief.toml +51 -0
  31. package/lib/bmad-cache/bmb/tools/validate-doc-links.cjs +6 -1
  32. package/lib/bmad-cache/bmb/website/astro.config.mjs +5 -1
  33. package/lib/bmad-cache/cache-manifest.json +13 -11
  34. package/lib/bmad-cache/cis/.claude-plugin/marketplace.json +1 -1
  35. package/lib/bmad-cache/cis/README.md +1 -1
  36. package/lib/bmad-cache/cis/_git_preserved/index +0 -0
  37. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.idx +0 -0
  38. package/lib/bmad-cache/cis/_git_preserved/objects/pack/{pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.pack → pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.pack} +0 -0
  39. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.rev +0 -0
  40. package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
  41. package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
  42. package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
  43. package/lib/bmad-cache/cis/package.json +1 -1
  44. package/lib/bmad-cache/cis/src/module.yaml +49 -0
  45. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-brainstorming-coach/customize.toml +38 -0
  46. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-creative-problem-solver/customize.toml +38 -0
  47. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-design-thinking-coach/customize.toml +39 -0
  48. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-innovation-strategist/customize.toml +38 -0
  49. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-presentation-master/customize.toml +73 -0
  50. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-storyteller/customize.toml +60 -0
  51. package/lib/bmad-cache/cis/src/skills/bmad-cis-design-thinking/customize.toml +41 -0
  52. package/lib/bmad-cache/cis/src/skills/bmad-cis-innovation-strategy/customize.toml +41 -0
  53. package/lib/bmad-cache/cis/src/skills/bmad-cis-problem-solving/customize.toml +42 -0
  54. package/lib/bmad-cache/cis/src/skills/bmad-cis-storytelling/customize.toml +41 -0
  55. package/lib/bmad-cache/cis/tools/build-docs.mjs +8 -0
  56. package/lib/bmad-cache/cis/website/astro.config.mjs +34 -4
  57. package/lib/bmad-cache/cis/website/src/content/config.ts +2 -1
  58. package/lib/bmad-cache/cis/website/src/content/i18n/zh-CN.json +28 -0
  59. package/lib/bmad-cache/cis/website/src/lib/locales.mjs +27 -0
  60. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +7 -6
  61. package/lib/bmad-cache/gds/README.md +5 -3
  62. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  63. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.idx +0 -0
  64. package/lib/bmad-cache/gds/_git_preserved/objects/pack/{pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.pack → pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.pack} +0 -0
  65. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.rev +0 -0
  66. package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
  67. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
  68. package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
  69. package/lib/bmad-cache/gds/package.json +1 -1
  70. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +57 -0
  71. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +59 -0
  72. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +129 -0
  73. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +60 -0
  74. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +65 -0
  75. package/lib/bmad-cache/gds/src/module-help.csv +4 -4
  76. package/lib/bmad-cache/gds/src/module.yaml +43 -1
  77. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +41 -0
  78. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +41 -0
  79. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +41 -0
  80. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/customize.toml +41 -0
  81. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +41 -0
  82. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/customize.toml +41 -0
  83. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/customize.toml +41 -0
  84. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-gdd/customize.toml +41 -0
  85. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-prd/customize.toml +41 -0
  86. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/customize.toml +41 -0
  87. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/data/genre-complexity.csv +26 -0
  88. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/customize.toml +41 -0
  89. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/domain-complexity.csv +15 -0
  90. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/project-types.csv +11 -0
  91. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +41 -0
  92. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +41 -0
  93. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +41 -0
  94. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +41 -0
  95. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +41 -0
  96. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +41 -0
  97. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +41 -0
  98. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +41 -0
  99. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +41 -0
  100. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +41 -0
  101. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +41 -0
  102. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +41 -0
  103. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +41 -0
  104. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +41 -0
  105. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +41 -0
  106. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +41 -0
  107. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +41 -0
  108. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +41 -0
  109. package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +41 -0
  110. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +41 -0
  111. package/lib/bmad-cache/tea/.claude-plugin/marketplace.json +1 -1
  112. package/lib/bmad-cache/tea/.github/CODE_OF_CONDUCT.md +128 -0
  113. package/lib/bmad-cache/tea/.github/FUNDING.yaml +15 -0
  114. package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/config.yaml +11 -0
  115. package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/feature_request.md +70 -0
  116. package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/issue.md +61 -0
  117. package/lib/bmad-cache/tea/.github/workflows/docs.yaml +66 -0
  118. package/lib/bmad-cache/tea/.github/workflows/manual-release.yaml +216 -0
  119. package/lib/bmad-cache/tea/.github/workflows/quality.yaml +117 -0
  120. package/lib/bmad-cache/tea/.vscode/settings.json +47 -0
  121. package/lib/bmad-cache/tea/README.md +63 -55
  122. package/lib/bmad-cache/tea/_git_preserved/index +0 -0
  123. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.idx +0 -0
  124. package/lib/bmad-cache/tea/_git_preserved/objects/pack/{pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.pack → pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.pack} +0 -0
  125. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.rev +0 -0
  126. package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
  127. package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
  128. package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
  129. package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +1 -1
  130. package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +1 -1
  131. package/lib/bmad-cache/tea/docs/glossary/index.md +1 -1
  132. package/lib/bmad-cache/tea/docs/how-to/customization/extend-tea-with-custom-workflows.md +29 -0
  133. package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +27 -20
  134. package/lib/bmad-cache/tea/docs/how-to/workflows/teach-me-testing.md +2 -2
  135. package/lib/bmad-cache/tea/docs/reference/commands.md +3 -3
  136. package/lib/bmad-cache/tea/docs/reference/troubleshooting.md +36 -0
  137. package/lib/bmad-cache/tea/docs/tutorials/learn-testing-tea-academy.md +1 -1
  138. package/lib/bmad-cache/tea/package-lock.json +2 -2
  139. package/lib/bmad-cache/tea/package.json +3 -3
  140. package/lib/bmad-cache/tea/src/agents/bmad-tea/SKILL.md +54 -44
  141. package/lib/bmad-cache/tea/src/agents/bmad-tea/customize.toml +104 -0
  142. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/contract-testing.md +32 -15
  143. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-broker-webhooks.md +237 -0
  144. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  145. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-mcp.md +1 -0
  146. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  147. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-overview.md +15 -12
  148. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  149. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-zod-to-pact.md +262 -0
  150. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-module-setup.md +122 -0
  151. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-providers.md +155 -0
  152. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-risk-guidance.md +114 -0
  153. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-template-matchers.md +160 -0
  154. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  155. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-timeout-error.md +130 -0
  156. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-waiting-querying.md +167 -0
  157. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +13 -4
  158. package/lib/bmad-cache/tea/src/module.yaml +8 -0
  159. package/lib/bmad-cache/tea/src/workflows/testarch/README.md +5 -3
  160. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/SKILL.md +124 -1
  161. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/checklist.md +3 -2
  162. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/customize.toml +40 -0
  163. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/instructions.md +7 -0
  164. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01-init.md +1 -1
  165. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01b-continue.md +1 -1
  166. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-02-assess.md +1 -1
  167. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +1 -1
  168. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-02.md +1 -1
  169. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-03.md +1 -1
  170. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-04.md +1 -1
  171. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-05.md +1 -1
  172. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-06.md +1 -1
  173. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +1 -1
  174. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-05-completion.md +8 -0
  175. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-01-assess-workflow.md +2 -2
  176. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-02-apply-edits.md +9 -1
  177. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-v/step-v-01-validate.md +12 -3
  178. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/SKILL.md +80 -1
  179. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/customize.toml +40 -0
  180. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +2 -2
  181. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/contract-testing.md +32 -15
  182. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-broker-webhooks.md +237 -0
  183. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  184. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-mcp.md +1 -0
  185. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  186. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-overview.md +15 -12
  187. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  188. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-zod-to-pact.md +262 -0
  189. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-module-setup.md +122 -0
  190. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-providers.md +155 -0
  191. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-risk-guidance.md +114 -0
  192. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-template-matchers.md +160 -0
  193. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  194. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-timeout-error.md +130 -0
  195. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-waiting-querying.md +167 -0
  196. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +13 -4
  197. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +3 -3
  198. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-02-generation-mode.md +1 -1
  199. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-03-test-strategy.md +1 -1
  200. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04-generate-tests.md +1 -1
  201. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04a-subagent-api-failing.md +1 -1
  202. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04c-aggregate.md +1 -1
  203. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-05-validate-and-complete.md +8 -0
  204. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-01-assess.md +1 -1
  205. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-02-apply-edit.md +8 -0
  206. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-v/step-01-validate.md +9 -1
  207. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/SKILL.md +80 -1
  208. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/customize.toml +40 -0
  209. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +2 -2
  210. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/contract-testing.md +18 -2
  211. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-broker-webhooks.md +237 -0
  212. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  213. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-mcp.md +1 -0
  214. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  215. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  216. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-module-setup.md +122 -0
  217. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-providers.md +155 -0
  218. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-risk-guidance.md +114 -0
  219. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-template-matchers.md +160 -0
  220. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  221. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-timeout-error.md +130 -0
  222. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-waiting-querying.md +167 -0
  223. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +12 -4
  224. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +1 -1
  225. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-02-identify-targets.md +1 -1
  226. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03-generate-tests.md +1 -1
  227. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03a-subagent-api.md +9 -1
  228. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +1 -1
  229. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-04-validate-and-summarize.md +8 -0
  230. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-01-assess.md +1 -1
  231. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-02-apply-edit.md +8 -0
  232. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-v/step-01-validate.md +9 -1
  233. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/SKILL.md +80 -1
  234. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/customize.toml +40 -0
  235. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +2 -2
  236. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/contract-testing.md +18 -2
  237. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-broker-webhooks.md +237 -0
  238. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  239. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-mcp.md +1 -0
  240. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  241. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  242. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-module-setup.md +122 -0
  243. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-providers.md +155 -0
  244. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-risk-guidance.md +114 -0
  245. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-template-matchers.md +160 -0
  246. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  247. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-timeout-error.md +130 -0
  248. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-waiting-querying.md +167 -0
  249. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +12 -4
  250. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md +1 -1
  251. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +15 -7
  252. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +7 -2
  253. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-04-validate-and-summary.md +8 -0
  254. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-01-assess.md +1 -1
  255. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-02-apply-edit.md +8 -0
  256. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-v/step-01-validate.md +9 -1
  257. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/SKILL.md +80 -1
  258. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/customize.toml +40 -0
  259. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +2 -2
  260. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/contract-testing.md +18 -2
  261. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-broker-webhooks.md +237 -0
  262. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  263. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-mcp.md +1 -0
  264. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  265. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  266. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-module-setup.md +122 -0
  267. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-providers.md +155 -0
  268. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-risk-guidance.md +114 -0
  269. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-template-matchers.md +160 -0
  270. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  271. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-timeout-error.md +130 -0
  272. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-waiting-querying.md +167 -0
  273. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +12 -4
  274. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01-preflight.md +1 -1
  275. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-02-select-framework.md +1 -1
  276. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +11 -7
  277. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +1 -1
  278. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +8 -0
  279. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-01-assess.md +1 -1
  280. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-02-apply-edit.md +8 -0
  281. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-v/step-01-validate.md +9 -1
  282. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +80 -1
  283. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/customize.toml +40 -0
  284. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +2 -2
  285. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/contract-testing.md +18 -2
  286. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-broker-webhooks.md +237 -0
  287. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  288. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-mcp.md +1 -0
  289. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  290. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  291. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-module-setup.md +122 -0
  292. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-providers.md +155 -0
  293. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-risk-guidance.md +114 -0
  294. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-template-matchers.md +160 -0
  295. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  296. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-timeout-error.md +130 -0
  297. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-waiting-querying.md +167 -0
  298. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +12 -4
  299. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
  300. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +1 -1
  301. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-03-gather-evidence.md +1 -1
  302. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +1 -1
  303. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +1 -1
  304. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +8 -0
  305. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-01-assess.md +1 -1
  306. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-02-apply-edit.md +8 -0
  307. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-v/step-01-validate.md +9 -1
  308. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/SKILL.md +82 -1
  309. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/customize.toml +40 -0
  310. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +2 -2
  311. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/contract-testing.md +18 -2
  312. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-broker-webhooks.md +237 -0
  313. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  314. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-mcp.md +1 -0
  315. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  316. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  317. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-module-setup.md +122 -0
  318. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-providers.md +155 -0
  319. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-risk-guidance.md +114 -0
  320. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-template-matchers.md +160 -0
  321. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  322. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-timeout-error.md +130 -0
  323. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-waiting-querying.md +167 -0
  324. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +12 -4
  325. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01-detect-mode.md +7 -1
  326. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01b-resume.md +29 -15
  327. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +7 -1
  328. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +7 -1
  329. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +7 -1
  330. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +14 -0
  331. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-01-assess.md +1 -1
  332. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-02-apply-edit.md +8 -0
  333. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-v/step-01-validate.md +9 -1
  334. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +3 -0
  335. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +3 -0
  336. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +3 -0
  337. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/SKILL.md +80 -1
  338. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/customize.toml +40 -0
  339. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/instructions.md +2 -2
  340. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/contract-testing.md +18 -2
  341. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-broker-webhooks.md +237 -0
  342. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  343. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-mcp.md +1 -0
  344. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  345. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  346. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-module-setup.md +122 -0
  347. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-providers.md +155 -0
  348. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-risk-guidance.md +114 -0
  349. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-template-matchers.md +160 -0
  350. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  351. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-timeout-error.md +130 -0
  352. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-waiting-querying.md +167 -0
  353. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +12 -4
  354. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +3 -3
  355. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +1 -1
  356. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03-quality-evaluation.md +1 -1
  357. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +43 -0
  358. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03f-aggregate-scores.md +1 -1
  359. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-04-generate-report.md +8 -0
  360. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-01-assess.md +1 -1
  361. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-02-apply-edit.md +8 -0
  362. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-v/step-01-validate.md +9 -1
  363. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/SKILL.md +82 -1
  364. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +42 -18
  365. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/customize.toml +40 -0
  366. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/instructions.md +6 -4
  367. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/contract-testing.md +18 -2
  368. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-broker-webhooks.md +237 -0
  369. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  370. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-mcp.md +1 -0
  371. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  372. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  373. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-module-setup.md +122 -0
  374. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-providers.md +155 -0
  375. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-risk-guidance.md +114 -0
  376. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-template-matchers.md +160 -0
  377. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  378. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-timeout-error.md +130 -0
  379. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-waiting-querying.md +167 -0
  380. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +12 -4
  381. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +74 -13
  382. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01b-resume.md +1 -1
  383. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-02-discover-tests.md +24 -4
  384. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-03-map-criteria.md +15 -11
  385. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-04-analyze-gaps.md +210 -3
  386. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-05-gate-decision.md +477 -62
  387. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-01-assess.md +1 -1
  388. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-02-apply-edit.md +8 -0
  389. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-v/step-01-validate.md +9 -1
  390. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +10 -2
  391. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow-plan.md +14 -11
  392. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.yaml +24 -0
  393. package/lib/bmad-cache/tea/test/test-installation-components.js +210 -66
  394. package/lib/bmad-cache/tea/test/test-knowledge-base.js +6 -1
  395. package/lib/bmad-cache/tea/test/test-release-metadata.js +71 -0
  396. package/lib/bmad-cache/tea/tools/validate-agent-schema.js +73 -0
  397. package/lib/bmad-customize/bmm-qa.customize.yaml +1 -1
  398. package/lib/bmad-extension/.claude-plugin/marketplace.json.template +117 -0
  399. package/lib/bmad-extension/skills/add-sprint/SKILL.md +39 -0
  400. package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +39 -0
  401. package/lib/bmad-extension/skills/bmad-dev-story/workflow.md +39 -0
  402. package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +41 -0
  403. package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +39 -0
  404. package/lib/bmad-extension/skills/cleanup-done/SKILL.md +39 -0
  405. package/lib/bmad-extension/skills/close-sprint/SKILL.md +39 -0
  406. package/lib/bmad-extension/skills/generate-backlog/SKILL.md +41 -0
  407. package/lib/bmad-extension/skills/ma-agent-cyber/.gitkeep +0 -0
  408. package/lib/bmad-extension/skills/ma-agent-cyber/SKILL.md +49 -0
  409. package/lib/bmad-extension/skills/ma-agent-cyber/bmad-skill-manifest.yaml +11 -0
  410. package/lib/bmad-extension/skills/ma-agent-devops/.gitkeep +0 -0
  411. package/lib/bmad-extension/skills/ma-agent-devops/SKILL.md +49 -0
  412. package/lib/bmad-extension/skills/ma-agent-devops/bmad-skill-manifest.yaml +11 -0
  413. package/lib/bmad-extension/skills/ma-agent-ml/.gitkeep +0 -0
  414. package/lib/bmad-extension/skills/ma-agent-ml/SKILL.md +59 -0
  415. package/lib/bmad-extension/skills/ma-agent-ml/bmad-skill-manifest.yaml +11 -0
  416. package/lib/bmad-extension/skills/ma-agent-sqa/.gitkeep +0 -0
  417. package/lib/bmad-extension/skills/ma-agent-sqa/SKILL.md +59 -0
  418. package/lib/bmad-extension/skills/ma-agent-sqa/bmad-skill-manifest.yaml +11 -0
  419. package/lib/bmad-extension/skills/ma-agent-sre/.gitkeep +0 -0
  420. package/lib/bmad-extension/skills/ma-agent-sre/SKILL.md +49 -0
  421. package/lib/bmad-extension/skills/ma-agent-sre/bmad-skill-manifest.yaml +11 -0
  422. package/lib/bmad-extension/skills/modify-sprint/SKILL.md +39 -0
  423. package/lib/bmad-extension/skills/module-help.csv +62 -0
  424. package/lib/bmad-extension/skills/module.yaml +20 -0
  425. package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +39 -0
  426. package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +39 -0
  427. package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +39 -0
  428. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +109 -0
  429. package/lib/bmad-extension-plugin/skills/add-sprint/SKILL.md +214 -0
  430. package/lib/bmad-extension-plugin/skills/add-sprint/bmad-skill-manifest.yaml +3 -0
  431. package/lib/bmad-extension-plugin/skills/add-to-sprint/SKILL.md +282 -0
  432. package/lib/bmad-extension-plugin/skills/add-to-sprint/bmad-skill-manifest.yaml +3 -0
  433. package/lib/bmad-extension-plugin/skills/bmad-dev-story/SKILL.md +6 -0
  434. package/lib/bmad-extension-plugin/skills/bmad-dev-story/bmad-skill-manifest.yaml +3 -0
  435. package/lib/bmad-extension-plugin/skills/bmad-dev-story/checklist.md +80 -0
  436. package/lib/bmad-extension-plugin/skills/bmad-dev-story/workflow.md +548 -0
  437. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/SKILL.md +6 -0
  438. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/bmad-skill-manifest.yaml +3 -0
  439. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/checklist.md +74 -0
  440. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
  441. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/workflow.md +413 -0
  442. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/SKILL.md +6 -0
  443. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/bmad-skill-manifest.yaml +3 -0
  444. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/workflow.md +473 -0
  445. package/lib/bmad-extension-plugin/skills/cleanup-done/.gitkeep +0 -0
  446. package/lib/bmad-extension-plugin/skills/cleanup-done/SKILL.md +254 -0
  447. package/lib/bmad-extension-plugin/skills/cleanup-done/bmad-skill-manifest.yaml +3 -0
  448. package/lib/bmad-extension-plugin/skills/close-sprint/.gitkeep +0 -0
  449. package/lib/bmad-extension-plugin/skills/close-sprint/SKILL.md +418 -0
  450. package/lib/bmad-extension-plugin/skills/close-sprint/bmad-skill-manifest.yaml +3 -0
  451. package/lib/bmad-extension-plugin/skills/create-bug-story/.gitkeep +0 -0
  452. package/lib/bmad-extension-plugin/skills/create-bug-story/SKILL.md +195 -0
  453. package/lib/bmad-extension-plugin/skills/create-bug-story/bmad-skill-manifest.yaml +3 -0
  454. package/lib/bmad-extension-plugin/skills/cyber-generate-certs/.gitkeep +0 -0
  455. package/lib/bmad-extension-plugin/skills/cyber-generate-certs/SKILL.md +27 -0
  456. package/lib/bmad-extension-plugin/skills/cyber-generate-certs/bmad-skill-manifest.yaml +3 -0
  457. package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/.gitkeep +0 -0
  458. package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/SKILL.md +29 -0
  459. package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +3 -0
  460. package/lib/bmad-extension-plugin/skills/cyber-security-audit/.gitkeep +0 -0
  461. package/lib/bmad-extension-plugin/skills/cyber-security-audit/SKILL.md +27 -0
  462. package/lib/bmad-extension-plugin/skills/cyber-security-audit/bmad-skill-manifest.yaml +3 -0
  463. package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/.gitkeep +0 -0
  464. package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/SKILL.md +28 -0
  465. package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +3 -0
  466. package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/.gitkeep +0 -0
  467. package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/SKILL.md +23 -0
  468. package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +3 -0
  469. package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/.gitkeep +0 -0
  470. package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/SKILL.md +22 -0
  471. package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +3 -0
  472. package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/.gitkeep +0 -0
  473. package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/SKILL.md +28 -0
  474. package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +3 -0
  475. package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/.gitkeep +0 -0
  476. package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/SKILL.md +27 -0
  477. package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +3 -0
  478. package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/.gitkeep +0 -0
  479. package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/SKILL.md +27 -0
  480. package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +3 -0
  481. package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/.gitkeep +0 -0
  482. package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/SKILL.md +26 -0
  483. package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +3 -0
  484. package/lib/bmad-extension-plugin/skills/devops-manage-helm/.gitkeep +0 -0
  485. package/lib/bmad-extension-plugin/skills/devops-manage-helm/SKILL.md +28 -0
  486. package/lib/bmad-extension-plugin/skills/devops-manage-helm/bmad-skill-manifest.yaml +3 -0
  487. package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/.gitkeep +0 -0
  488. package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/SKILL.md +24 -0
  489. package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +3 -0
  490. package/lib/bmad-extension-plugin/skills/generate-backlog/.gitkeep +0 -0
  491. package/lib/bmad-extension-plugin/skills/generate-backlog/SKILL.md +236 -0
  492. package/lib/bmad-extension-plugin/skills/generate-backlog/bmad-skill-manifest.yaml +3 -0
  493. package/lib/bmad-extension-plugin/skills/ma-agent-cyber/.gitkeep +0 -0
  494. package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/ma-agent-cyber}/SKILL.md +1 -1
  495. package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/ma-agent-cyber}/bmad-skill-manifest.yaml +1 -1
  496. package/lib/bmad-extension-plugin/skills/ma-agent-devops/.gitkeep +0 -0
  497. package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/ma-agent-devops}/SKILL.md +1 -1
  498. package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/ma-agent-devops}/bmad-skill-manifest.yaml +1 -1
  499. package/lib/bmad-extension-plugin/skills/ma-agent-ml/.gitkeep +0 -0
  500. package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/ma-agent-ml}/SKILL.md +1 -1
  501. package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/ma-agent-ml}/bmad-skill-manifest.yaml +1 -1
  502. package/lib/bmad-extension-plugin/skills/ma-agent-sqa/.gitkeep +0 -0
  503. package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/ma-agent-sqa}/SKILL.md +1 -1
  504. package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/ma-agent-sqa}/bmad-skill-manifest.yaml +1 -1
  505. package/lib/bmad-extension-plugin/skills/ma-agent-sre/.gitkeep +0 -0
  506. package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/ma-agent-sre}/SKILL.md +1 -1
  507. package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/ma-agent-sre}/bmad-skill-manifest.yaml +1 -1
  508. package/lib/bmad-extension-plugin/skills/mil498-ocd/.gitkeep +0 -0
  509. package/lib/bmad-extension-plugin/skills/mil498-ocd/SKILL.md +30 -0
  510. package/lib/bmad-extension-plugin/skills/mil498-ocd/bmad-skill-manifest.yaml +5 -0
  511. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +26 -0
  512. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/02-load-template.md +10 -0
  513. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/03-generate-document.md +90 -0
  514. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/04-validate.md +14 -0
  515. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/05-review.md +15 -0
  516. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/06-save.md +15 -0
  517. package/lib/bmad-extension-plugin/skills/mil498-ocd/template.md +169 -0
  518. package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/.gitkeep +0 -0
  519. package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/SKILL.md +105 -0
  520. package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
  521. package/lib/bmad-extension-plugin/skills/mil498-sdd/.gitkeep +0 -0
  522. package/lib/bmad-extension-plugin/skills/mil498-sdd/SKILL.md +30 -0
  523. package/lib/bmad-extension-plugin/skills/mil498-sdd/bmad-skill-manifest.yaml +5 -0
  524. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +50 -0
  525. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/02-load-template.md +10 -0
  526. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/03-generate-document.md +98 -0
  527. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/04-validate.md +16 -0
  528. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/05-review.md +15 -0
  529. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/06-save.md +19 -0
  530. package/lib/bmad-extension-plugin/skills/mil498-sdd/template.md +163 -0
  531. package/lib/bmad-extension-plugin/skills/mil498-sdp/.gitkeep +0 -0
  532. package/lib/bmad-extension-plugin/skills/mil498-sdp/SKILL.md +30 -0
  533. package/lib/bmad-extension-plugin/skills/mil498-sdp/bmad-skill-manifest.yaml +5 -0
  534. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +32 -0
  535. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/02-load-template.md +10 -0
  536. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/03-generate-document.md +187 -0
  537. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/04-validate.md +13 -0
  538. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/05-review.md +15 -0
  539. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/06-save.md +14 -0
  540. package/lib/bmad-extension-plugin/skills/mil498-sdp/template.md +307 -0
  541. package/lib/bmad-extension-plugin/skills/mil498-srs/.gitkeep +0 -0
  542. package/lib/bmad-extension-plugin/skills/mil498-srs/SKILL.md +30 -0
  543. package/lib/bmad-extension-plugin/skills/mil498-srs/bmad-skill-manifest.yaml +5 -0
  544. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/01-discover-project-artifacts.md +42 -0
  545. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/02-load-template.md +10 -0
  546. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/03-generate-document.md +100 -0
  547. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/04-validate.md +16 -0
  548. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/05-review.md +15 -0
  549. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/06-save.md +18 -0
  550. package/lib/bmad-extension-plugin/skills/mil498-srs/template.md +219 -0
  551. package/lib/bmad-extension-plugin/skills/mil498-ssdd/.gitkeep +0 -0
  552. package/lib/bmad-extension-plugin/skills/mil498-ssdd/SKILL.md +32 -0
  553. package/lib/bmad-extension-plugin/skills/mil498-ssdd/bmad-skill-manifest.yaml +5 -0
  554. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +32 -0
  555. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/02-load-template.md +10 -0
  556. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +43 -0
  557. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/04-generate-document.md +96 -0
  558. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/05-validate.md +18 -0
  559. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/06-review.md +16 -0
  560. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/07-save.md +16 -0
  561. package/lib/bmad-extension-plugin/skills/mil498-ssdd/template.md +154 -0
  562. package/lib/bmad-extension-plugin/skills/mil498-sss/.gitkeep +0 -0
  563. package/lib/bmad-extension-plugin/skills/mil498-sss/SKILL.md +31 -0
  564. package/lib/bmad-extension-plugin/skills/mil498-sss/bmad-skill-manifest.yaml +5 -0
  565. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/01-discover-project-artifacts.md +31 -0
  566. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/02-load-template.md +10 -0
  567. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/03-generate-document.md +108 -0
  568. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/04-validate.md +16 -0
  569. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/05-review.md +15 -0
  570. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/06-save.md +15 -0
  571. package/lib/bmad-extension-plugin/skills/mil498-sss/template.md +225 -0
  572. package/lib/bmad-extension-plugin/skills/mil498-std/.gitkeep +0 -0
  573. package/lib/bmad-extension-plugin/skills/mil498-std/SKILL.md +30 -0
  574. package/lib/bmad-extension-plugin/skills/mil498-std/bmad-skill-manifest.yaml +5 -0
  575. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/01-discover-project-artifacts.md +42 -0
  576. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/02-load-template.md +10 -0
  577. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/03-generate-document.md +117 -0
  578. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/04-validate.md +15 -0
  579. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/05-review.md +15 -0
  580. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/06-save.md +15 -0
  581. package/lib/bmad-extension-plugin/skills/mil498-std/template.md +188 -0
  582. package/lib/bmad-extension-plugin/skills/ml-advise/.gitkeep +0 -0
  583. package/lib/bmad-extension-plugin/skills/ml-advise/SKILL.md +76 -0
  584. package/lib/bmad-extension-plugin/skills/ml-advise/bmad-skill-manifest.yaml +3 -0
  585. package/lib/bmad-extension-plugin/skills/ml-advise/skill.json +7 -0
  586. package/lib/bmad-extension-plugin/skills/ml-analysis/.gitkeep +0 -0
  587. package/lib/bmad-extension-plugin/skills/ml-analysis/SKILL.md +60 -0
  588. package/lib/bmad-extension-plugin/skills/ml-analysis/bmad-skill-manifest.yaml +3 -0
  589. package/lib/bmad-extension-plugin/skills/ml-analysis/skill.json +7 -0
  590. package/lib/bmad-extension-plugin/skills/ml-architecture/.gitkeep +0 -0
  591. package/lib/bmad-extension-plugin/skills/ml-architecture/SKILL.md +55 -0
  592. package/lib/bmad-extension-plugin/skills/ml-architecture/bmad-skill-manifest.yaml +3 -0
  593. package/lib/bmad-extension-plugin/skills/ml-architecture/skill.json +7 -0
  594. package/lib/bmad-extension-plugin/skills/ml-detailed-design/.gitkeep +0 -0
  595. package/lib/bmad-extension-plugin/skills/ml-detailed-design/SKILL.md +67 -0
  596. package/lib/bmad-extension-plugin/skills/ml-detailed-design/bmad-skill-manifest.yaml +3 -0
  597. package/lib/bmad-extension-plugin/skills/ml-detailed-design/skill.json +7 -0
  598. package/lib/bmad-extension-plugin/skills/ml-eda/.gitkeep +0 -0
  599. package/lib/bmad-extension-plugin/skills/ml-eda/SKILL.md +56 -0
  600. package/lib/bmad-extension-plugin/skills/ml-eda/bmad-skill-manifest.yaml +3 -0
  601. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/baseline_classifier.py +522 -0
  602. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/class_weights_calculator.py +295 -0
  603. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/clustering_explorer.py +383 -0
  604. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/eda_analyzer.py +654 -0
  605. package/lib/bmad-extension-plugin/skills/ml-eda/skill.json +7 -0
  606. package/lib/bmad-extension-plugin/skills/ml-experiment/.gitkeep +0 -0
  607. package/lib/bmad-extension-plugin/skills/ml-experiment/SKILL.md +74 -0
  608. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/advanced_trainer_configs.py +430 -0
  609. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/quick_trainer_setup.py +233 -0
  610. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_datamodule.py +219 -0
  611. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_gnn_module.py +341 -0
  612. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_lightning_module.py +158 -0
  613. package/lib/bmad-extension-plugin/skills/ml-experiment/bmad-skill-manifest.yaml +3 -0
  614. package/lib/bmad-extension-plugin/skills/ml-experiment/skill.json +7 -0
  615. package/lib/bmad-extension-plugin/skills/ml-hparam/.gitkeep +0 -0
  616. package/lib/bmad-extension-plugin/skills/ml-hparam/SKILL.md +81 -0
  617. package/lib/bmad-extension-plugin/skills/ml-hparam/bmad-skill-manifest.yaml +3 -0
  618. package/lib/bmad-extension-plugin/skills/ml-hparam/skill.json +7 -0
  619. package/lib/bmad-extension-plugin/skills/ml-ideation/.gitkeep +0 -0
  620. package/lib/bmad-extension-plugin/skills/ml-ideation/SKILL.md +50 -0
  621. package/lib/bmad-extension-plugin/skills/ml-ideation/bmad-skill-manifest.yaml +3 -0
  622. package/lib/bmad-extension-plugin/skills/ml-ideation/scripts/validate_ml_prd.py +287 -0
  623. package/lib/bmad-extension-plugin/skills/ml-ideation/skill.json +7 -0
  624. package/lib/bmad-extension-plugin/skills/ml-infra/.gitkeep +0 -0
  625. package/lib/bmad-extension-plugin/skills/ml-infra/SKILL.md +58 -0
  626. package/lib/bmad-extension-plugin/skills/ml-infra/bmad-skill-manifest.yaml +3 -0
  627. package/lib/bmad-extension-plugin/skills/ml-infra/skill.json +7 -0
  628. package/lib/bmad-extension-plugin/skills/ml-retrospective/.gitkeep +0 -0
  629. package/lib/bmad-extension-plugin/skills/ml-retrospective/SKILL.md +63 -0
  630. package/lib/bmad-extension-plugin/skills/ml-retrospective/bmad-skill-manifest.yaml +3 -0
  631. package/lib/bmad-extension-plugin/skills/ml-retrospective/skill.json +7 -0
  632. package/lib/bmad-extension-plugin/skills/ml-revision/.gitkeep +0 -0
  633. package/lib/bmad-extension-plugin/skills/ml-revision/SKILL.md +82 -0
  634. package/lib/bmad-extension-plugin/skills/ml-revision/bmad-skill-manifest.yaml +3 -0
  635. package/lib/bmad-extension-plugin/skills/ml-revision/skill.json +7 -0
  636. package/lib/bmad-extension-plugin/skills/ml-techspec/.gitkeep +0 -0
  637. package/lib/bmad-extension-plugin/skills/ml-techspec/SKILL.md +80 -0
  638. package/lib/bmad-extension-plugin/skills/ml-techspec/bmad-skill-manifest.yaml +3 -0
  639. package/lib/bmad-extension-plugin/skills/ml-techspec/skill.json +7 -0
  640. package/lib/bmad-extension-plugin/skills/modify-sprint/.gitkeep +0 -0
  641. package/lib/bmad-extension-plugin/skills/modify-sprint/SKILL.md +350 -0
  642. package/lib/bmad-extension-plugin/skills/modify-sprint/bmad-skill-manifest.yaml +3 -0
  643. package/lib/bmad-extension-plugin/skills/module-help.csv +62 -0
  644. package/lib/bmad-extension-plugin/skills/module.yaml +20 -0
  645. package/lib/bmad-extension-plugin/skills/prioritize-backlog/.gitkeep +0 -0
  646. package/lib/bmad-extension-plugin/skills/prioritize-backlog/SKILL.md +256 -0
  647. package/lib/bmad-extension-plugin/skills/prioritize-backlog/bmad-skill-manifest.yaml +3 -0
  648. package/lib/bmad-extension-plugin/skills/project-context-expansion/.gitkeep +0 -0
  649. package/lib/bmad-extension-plugin/skills/project-context-expansion/SKILL.md +238 -0
  650. package/lib/bmad-extension-plugin/skills/project-context-expansion/bmad-skill-manifest.yaml +3 -0
  651. package/lib/bmad-extension-plugin/skills/remove-from-sprint/.gitkeep +0 -0
  652. package/lib/bmad-extension-plugin/skills/remove-from-sprint/SKILL.md +223 -0
  653. package/lib/bmad-extension-plugin/skills/remove-from-sprint/bmad-skill-manifest.yaml +3 -0
  654. package/lib/bmad-extension-plugin/skills/sprint-status-view/.gitkeep +0 -0
  655. package/lib/bmad-extension-plugin/skills/sprint-status-view/SKILL.md +216 -0
  656. package/lib/bmad-extension-plugin/skills/sprint-status-view/bmad-skill-manifest.yaml +3 -0
  657. package/lib/bmad-extension-plugin/skills/sqa-audit/.gitkeep +0 -0
  658. package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +279 -0
  659. package/lib/bmad-extension-plugin/skills/sqa-audit/bmad-skill-manifest.yaml +3 -0
  660. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/.gitkeep +0 -0
  661. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +374 -0
  662. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/bmad-skill-manifest.yaml +3 -0
  663. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/.gitkeep +0 -0
  664. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +244 -0
  665. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/bmad-skill-manifest.yaml +3 -0
  666. package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/.gitkeep +0 -0
  667. package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/SKILL.md +32 -0
  668. package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +3 -0
  669. package/lib/bmad-extension-plugin/skills/sre-check-secrets/.gitkeep +0 -0
  670. package/lib/bmad-extension-plugin/skills/sre-check-secrets/SKILL.md +23 -0
  671. package/lib/bmad-extension-plugin/skills/sre-check-secrets/bmad-skill-manifest.yaml +3 -0
  672. package/lib/bmad-extension-plugin/skills/sre-check-system-status/.gitkeep +0 -0
  673. package/lib/bmad-extension-plugin/skills/sre-check-system-status/SKILL.md +27 -0
  674. package/lib/bmad-extension-plugin/skills/sre-check-system-status/bmad-skill-manifest.yaml +3 -0
  675. package/lib/bmad-extension-plugin/skills/sre-day-2-ops/.gitkeep +0 -0
  676. package/lib/bmad-extension-plugin/skills/sre-day-2-ops/SKILL.md +26 -0
  677. package/lib/bmad-extension-plugin/skills/sre-day-2-ops/bmad-skill-manifest.yaml +3 -0
  678. package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/.gitkeep +0 -0
  679. package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/SKILL.md +28 -0
  680. package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +3 -0
  681. package/lib/bmad-extension-plugin/skills/sre-fix-deployments/.gitkeep +0 -0
  682. package/lib/bmad-extension-plugin/skills/sre-fix-deployments/SKILL.md +25 -0
  683. package/lib/bmad-extension-plugin/skills/sre-fix-deployments/bmad-skill-manifest.yaml +3 -0
  684. package/lib/bmad-extension-plugin/skills/sre-gitops-status/.gitkeep +0 -0
  685. package/lib/bmad-extension-plugin/skills/sre-gitops-status/SKILL.md +25 -0
  686. package/lib/bmad-extension-plugin/skills/sre-gitops-status/bmad-skill-manifest.yaml +3 -0
  687. package/lib/bmad.js +1375 -372
  688. package/lib/installer.js +367 -2
  689. package/package.json +23 -5
  690. package/scripts/build-bmad-cache.js +250 -47
  691. package/scripts/build-plugin.js +574 -0
  692. package/skills/add-sprint/SKILL.md +39 -0
  693. package/skills/add-to-sprint/SKILL.md +39 -0
  694. package/skills/bmad-sprint-planning/SKILL.md +41 -0
  695. package/skills/bmad-sprint-status/SKILL.md +39 -0
  696. package/skills/cleanup-done/SKILL.md +39 -0
  697. package/skills/close-sprint/SKILL.md +39 -0
  698. package/skills/generate-backlog/SKILL.md +41 -0
  699. package/skills/modify-sprint/SKILL.md +39 -0
  700. package/skills/prioritize-backlog/SKILL.md +39 -0
  701. package/skills/remove-from-sprint/SKILL.md +39 -0
  702. package/skills/sprint-status-view/SKILL.md +39 -0
  703. package/skills/story-status-lookup/SKILL.md +38 -21
  704. package/.ma-agents.json +0 -10
  705. package/AGENTS.md +0 -97
  706. package/AiAudit.md +0 -12
  707. package/DEVELOPMENT.md +0 -173
  708. package/MANIFEST.yaml +0 -3
  709. package/_bmad-output/implementation-artifacts/16-4-validation-report.md +0 -79
  710. package/_bmad-output/implementation-artifacts/17-10-rework-generate-backlog.md +0 -237
  711. package/_bmad-output/implementation-artifacts/17-11-rework-add-to-sprint.md +0 -339
  712. package/_bmad-output/implementation-artifacts/17-12-rework-remove-from-sprint.md +0 -348
  713. package/_bmad-output/implementation-artifacts/17-13-rework-sprint-status-view.md +0 -383
  714. package/_bmad-output/implementation-artifacts/17-14-rework-cleanup-done.md +0 -348
  715. package/_bmad-output/implementation-artifacts/17-15-rework-bmad-sprint-planning.md +0 -385
  716. package/_bmad-output/implementation-artifacts/17-16-rework-add-sprint.md +0 -362
  717. package/_bmad-output/implementation-artifacts/17-17-rework-modify-sprint.md +0 -477
  718. package/_bmad-output/implementation-artifacts/17-18-rework-bmad-dev-story.md +0 -377
  719. package/_bmad-output/implementation-artifacts/17-19-rework-story-status-lookup.md +0 -301
  720. package/_bmad-output/implementation-artifacts/17-20-rework-bmad-sprint-status.md +0 -508
  721. package/_bmad-output/implementation-artifacts/17-21-new-close-sprint.md +0 -455
  722. package/_bmad-output/implementation-artifacts/17-22-jira-adapter-pattern.md +0 -325
  723. package/_bmad-output/implementation-artifacts/17-23-migration-deprecation-old-files.md +0 -403
  724. package/_bmad-output/implementation-artifacts/17-24-rework-prioritize-backlog.md +0 -344
  725. package/_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md +0 -279
  726. package/_bmad-output/implementation-artifacts/19-1-knowledge-graph-core-library.md +0 -239
  727. package/_bmad-output/implementation-artifacts/19-2-graph-emission-create-prd.md +0 -171
  728. package/_bmad-output/implementation-artifacts/19-3-graph-emission-create-architecture-epics.md +0 -179
  729. package/_bmad-output/implementation-artifacts/19-4-graph-emission-create-story-remaining.md +0 -190
  730. package/_bmad-output/implementation-artifacts/19-5-open-graph-skill.md +0 -213
  731. package/_bmad-output/implementation-artifacts/19-6-interactive-visualization-renderer.md +0 -259
  732. package/_bmad-output/implementation-artifacts/19-7-llm-writability-validation-tests.md +0 -280
  733. package/_bmad-output/implementation-artifacts/21-1-install-time-profile-prompt.md +0 -181
  734. package/_bmad-output/implementation-artifacts/21-10-profile-reconfigure.md +0 -161
  735. package/_bmad-output/implementation-artifacts/21-11-profile-uninstall.md +0 -150
  736. package/_bmad-output/implementation-artifacts/21-2-universal-instruction-block-expansion.md +0 -253
  737. package/_bmad-output/implementation-artifacts/21-3-roomodes-template-bmad-modes.md +0 -229
  738. package/_bmad-output/implementation-artifacts/21-4-agents-md-template-opencode.md +0 -275
  739. package/_bmad-output/implementation-artifacts/21-5-clinerules-template-extension.md +0 -221
  740. package/_bmad-output/implementation-artifacts/21-6-onprem-layered-guardrails.md +0 -287
  741. package/_bmad-output/implementation-artifacts/21-7-bmad-persona-phase-prefix.md +0 -258
  742. package/_bmad-output/implementation-artifacts/21-8-vllm-reference-doc-readme.md +0 -158
  743. package/_bmad-output/implementation-artifacts/21-9-tests-validation.md +0 -368
  744. package/_bmad-output/implementation-artifacts/4-1-vs-agent-registry-entry.md +0 -173
  745. package/_bmad-output/implementation-artifacts/4-2-vs-skill-template-format.md +0 -129
  746. package/_bmad-output/implementation-artifacts/5-5-explicit-parameter-passing.md +0 -274
  747. package/_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md +0 -186
  748. package/_bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md +0 -144
  749. package/_bmad-output/implementation-artifacts/7-2-installer-pipeline-tests.md +0 -132
  750. package/_bmad-output/implementation-artifacts/7-3-bmad-pipeline-tests.md +0 -119
  751. package/_bmad-output/implementation-artifacts/7-4-cli-command-routing-tests.md +0 -162
  752. package/_bmad-output/implementation-artifacts/bug-bmad-recompile-fails-on-airgapped-network.md +0 -112
  753. package/_bmad-output/implementation-artifacts/bug-experimentalwarning-about-commonjs-loading-es-module-during-install.md +0 -57
  754. package/_bmad-output/implementation-artifacts/deferred-work.md +0 -9
  755. package/_bmad-output/implementation-artifacts/done/1-1-ci-cd-yes-flag.md +0 -200
  756. package/_bmad-output/implementation-artifacts/done/10-1-ensure-bmad-output-not-gitignored.md +0 -172
  757. package/_bmad-output/implementation-artifacts/done/10-2-document-bmad-output-policy.md +0 -102
  758. package/_bmad-output/implementation-artifacts/done/11-1-auto-bug-detection-skill.md +0 -119
  759. package/_bmad-output/implementation-artifacts/done/11-2-bug-story-extension-workflow.md +0 -132
  760. package/_bmad-output/implementation-artifacts/done/11-3-integrate-bug-detection-code-review.md +0 -111
  761. package/_bmad-output/implementation-artifacts/done/12-1-add-sprint-workflow.md +0 -126
  762. package/_bmad-output/implementation-artifacts/done/12-2-add-to-sprint-workflow.md +0 -137
  763. package/_bmad-output/implementation-artifacts/done/12-3-modify-sprint-workflow.md +0 -127
  764. package/_bmad-output/implementation-artifacts/done/12-4-sprint-status-assigned-items.md +0 -129
  765. package/_bmad-output/implementation-artifacts/done/13-1-project-context-template-and-generator.md +0 -179
  766. package/_bmad-output/implementation-artifacts/done/13-2-install-pipeline-integration.md +0 -138
  767. package/_bmad-output/implementation-artifacts/done/13-3-bmad-critical-actions-update.md +0 -150
  768. package/_bmad-output/implementation-artifacts/done/13-4-retrospective-expansion-trigger.md +0 -128
  769. package/_bmad-output/implementation-artifacts/done/13-5-document-project-context-generation.md +0 -118
  770. package/_bmad-output/implementation-artifacts/done/15-1-bump-bmad-method-to-6-2-1.md +0 -132
  771. package/_bmad-output/implementation-artifacts/done/15-2-restructure-extension-module.md +0 -174
  772. package/_bmad-output/implementation-artifacts/done/15-3-convert-custom-agents-to-skill-folders.md +0 -183
  773. package/_bmad-output/implementation-artifacts/done/15-4-convert-mil498-workflows-to-skill-md.md +0 -252
  774. package/_bmad-output/implementation-artifacts/done/15-5-convert-sre-devops-cyber-workflows.md +0 -232
  775. package/_bmad-output/implementation-artifacts/done/15-6-separate-built-in-agent-customizations.md +0 -163
  776. package/_bmad-output/implementation-artifacts/done/15-7-migration-detection-and-upgrade-path.md +0 -133
  777. package/_bmad-output/implementation-artifacts/done/15-8-validate-migrated-agents-and-workflows.md +0 -172
  778. package/_bmad-output/implementation-artifacts/done/15-8-validation-report.md +0 -342
  779. package/_bmad-output/implementation-artifacts/done/16-1-repository-layout-wizard.md +0 -223
  780. package/_bmad-output/implementation-artifacts/done/16-2-config-storage-and-cross-reference.md +0 -180
  781. package/_bmad-output/implementation-artifacts/done/16-3-project-context-multi-repo-section.md +0 -136
  782. package/_bmad-output/implementation-artifacts/done/16-4-validate-cross-repo-path-resolution.md +0 -137
  783. package/_bmad-output/implementation-artifacts/done/16-4-validation-report.md +0 -79
  784. package/_bmad-output/implementation-artifacts/done/16-5-fix-config-lost-on-update.md +0 -110
  785. package/_bmad-output/implementation-artifacts/done/16-6-repo-sync-check-skill.md +0 -116
  786. package/_bmad-output/implementation-artifacts/done/16-7-portable-path-storage.md +0 -109
  787. package/_bmad-output/implementation-artifacts/done/16-8-cicd-remote-mode.md +0 -97
  788. package/_bmad-output/implementation-artifacts/done/16-9-reconfigure-layout-workflow.md +0 -125
  789. package/_bmad-output/implementation-artifacts/done/17-1-sprint-entity-model.md +0 -322
  790. package/_bmad-output/implementation-artifacts/done/17-2-flat-backlog-model.md +0 -264
  791. package/_bmad-output/implementation-artifacts/done/17-3-bug-as-story-type.md +0 -208
  792. package/_bmad-output/implementation-artifacts/done/17-4-backlog-to-sprint-workflow.md +0 -209
  793. package/_bmad-output/implementation-artifacts/done/17-5-sprint-to-backlog-workflow.md +0 -221
  794. package/_bmad-output/implementation-artifacts/done/17-6-done-item-cleanup.md +0 -273
  795. package/_bmad-output/implementation-artifacts/done/17-7-multi-criteria-prioritization.md +0 -235
  796. package/_bmad-output/implementation-artifacts/done/17-8-rework-sprint-status-display.md +0 -285
  797. package/_bmad-output/implementation-artifacts/done/2-1-cpp-coding-standards-skill.md +0 -188
  798. package/_bmad-output/implementation-artifacts/done/2-2-csharp-coding-standards-skill.md +0 -211
  799. package/_bmad-output/implementation-artifacts/done/2-3-python-coding-standards-skill.md +0 -189
  800. package/_bmad-output/implementation-artifacts/done/3-1-skill-scaffolding-tool.md +0 -184
  801. package/_bmad-output/implementation-artifacts/done/3-2-skill-validation-tool.md +0 -178
  802. package/_bmad-output/implementation-artifacts/done/3-3-mandatory-skill-designation.md +0 -136
  803. package/_bmad-output/implementation-artifacts/done/3-4-bmad-persona-customization-tooling.md +0 -141
  804. package/_bmad-output/implementation-artifacts/done/3-5-specialized-agent-development-tooling.md +0 -145
  805. package/_bmad-output/implementation-artifacts/done/5-1-bmad-method-direct-dependency.md +0 -188
  806. package/_bmad-output/implementation-artifacts/done/5-2-bmad-cache-build-script.md +0 -219
  807. package/_bmad-output/implementation-artifacts/done/5-3-pre-populate-bmad-cache.md +0 -234
  808. package/_bmad-output/implementation-artifacts/done/5-4-validate-bundled-installation.md +0 -274
  809. package/_bmad-output/implementation-artifacts/done/6-1-methodology-presentation-bundle.md +0 -173
  810. package/_bmad-output/implementation-artifacts/done/8-1-move-instruction-injection-to-top.md +0 -131
  811. package/_bmad-output/implementation-artifacts/done/8-2-agent-aware-injection-strategy.md +0 -124
  812. package/_bmad-output/implementation-artifacts/done/8-3-create-bmad-extension-module.md +0 -187
  813. package/_bmad-output/implementation-artifacts/done/8-4-integration-verification.md +0 -102
  814. package/_bmad-output/implementation-artifacts/done/8-5-per-agent-enforcement-hooks-research.md +0 -126
  815. package/_bmad-output/implementation-artifacts/done/8-6-context-persistence-research.md +0 -101
  816. package/_bmad-output/implementation-artifacts/done/9-1-register-opencode-agent.md +0 -73
  817. package/_bmad-output/implementation-artifacts/done/9-2-json-merge-injection.md +0 -91
  818. package/_bmad-output/implementation-artifacts/done/9-3-json-merge-existing.md +0 -113
  819. package/_bmad-output/implementation-artifacts/done/9-4-json-error-handling.md +0 -90
  820. package/_bmad-output/implementation-artifacts/epic-11-12-shared-guardrails.md +0 -53
  821. package/_bmad-output/implementation-artifacts/epic-15-adversarial-fixes.md +0 -287
  822. package/_bmad-output/implementation-artifacts/epic-16-adversarial-review.md +0 -49
  823. package/_bmad-output/implementation-artifacts/epic-16-edge-case-review.md +0 -230
  824. package/_bmad-output/implementation-artifacts/epic-17-adversarial-review.md +0 -37
  825. package/_bmad-output/implementation-artifacts/epic-17-edge-case-review.md +0 -140
  826. package/_bmad-output/implementation-artifacts/sprint-status.yaml +0 -139
  827. package/_bmad-output/planning-artifacts/adapter-pattern-spec.md +0 -508
  828. package/_bmad-output/planning-artifacts/architecture.md +0 -2023
  829. package/_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md +0 -295
  830. package/_bmad-output/planning-artifacts/epics.md +0 -4232
  831. package/_bmad-output/planning-artifacts/mil498-workflow-audit.md +0 -290
  832. package/_bmad-output/planning-artifacts/prd.md +0 -811
  833. package/_bmad-output/planning-artifacts/product-brief-agents-2026-03-08.md +0 -214
  834. package/_bmad-output/planning-artifacts/sprint-status-schema.md +0 -506
  835. package/_bmad-output/planning-artifacts/validation-report-prd-2026-04-07.md +0 -330
  836. package/_bmad-output/project-context.md +0 -47
  837. package/agents.code-workspace +0 -11
  838. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-554778ad4e7254827618ebd2497c3f4bce9054a4.idx +0 -0
  839. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-554778ad4e7254827618ebd2497c3f4bce9054a4.rev +0 -0
  840. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.idx +0 -0
  841. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.rev +0 -0
  842. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-brainstorming-coach/bmad-skill-manifest.yaml +0 -11
  843. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-creative-problem-solver/bmad-skill-manifest.yaml +0 -11
  844. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-design-thinking-coach/bmad-skill-manifest.yaml +0 -11
  845. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-innovation-strategist/bmad-skill-manifest.yaml +0 -11
  846. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-presentation-master/bmad-skill-manifest.yaml +0 -11
  847. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-storyteller/bmad-skill-manifest.yaml +0 -11
  848. package/lib/bmad-cache/cis/src/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
  849. package/lib/bmad-cache/cis/src/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
  850. package/lib/bmad-cache/cis/src/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
  851. package/lib/bmad-cache/cis/src/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
  852. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.idx +0 -0
  853. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.rev +0 -0
  854. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/bmad-skill-manifest.yaml +0 -11
  855. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/bmad-skill-manifest.yaml +0 -11
  856. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/bmad-skill-manifest.yaml +0 -11
  857. package/lib/bmad-cache/gds/src/agents/gds-agent-game-qa/bmad-skill-manifest.yaml +0 -11
  858. package/lib/bmad-cache/gds/src/agents/gds-agent-game-scrum-master/bmad-skill-manifest.yaml +0 -11
  859. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/bmad-skill-manifest.yaml +0 -11
  860. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
  861. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/bmad-skill-manifest.yaml +0 -1
  862. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/bmad-skill-manifest.yaml +0 -1
  863. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/bmad-skill-manifest.yaml +0 -9
  864. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/bmad-skill-manifest.yaml +0 -1
  865. package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/bmad-skill-manifest.yaml +0 -14
  866. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/bmad-skill-manifest.yaml +0 -1
  867. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/bmad-skill-manifest.yaml +0 -1
  868. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/bmad-skill-manifest.yaml +0 -1
  869. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/bmad-skill-manifest.yaml +0 -1
  870. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/bmad-skill-manifest.yaml +0 -1
  871. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/bmad-skill-manifest.yaml +0 -1
  872. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/bmad-skill-manifest.yaml +0 -1
  873. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/bmad-skill-manifest.yaml +0 -1
  874. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/bmad-skill-manifest.yaml +0 -1
  875. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/bmad-skill-manifest.yaml +0 -1
  876. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/bmad-skill-manifest.yaml +0 -1
  877. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/bmad-skill-manifest.yaml +0 -1
  878. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/bmad-skill-manifest.yaml +0 -1
  879. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/bmad-skill-manifest.yaml +0 -1
  880. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/bmad-skill-manifest.yaml +0 -1
  881. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/bmad-skill-manifest.yaml +0 -1
  882. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/bmad-skill-manifest.yaml +0 -1
  883. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/bmad-skill-manifest.yaml +0 -1
  884. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/bmad-skill-manifest.yaml +0 -1
  885. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/bmad-skill-manifest.yaml +0 -1
  886. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/bmad-skill-manifest.yaml +0 -1
  887. package/lib/bmad-cache/gds/src/workflows/gds-document-project/bmad-skill-manifest.yaml +0 -1
  888. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/bmad-skill-manifest.yaml +0 -1
  889. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev-new-preview/bmad-skill-manifest.yaml +0 -1
  890. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-spec/bmad-skill-manifest.yaml +0 -1
  891. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.idx +0 -0
  892. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.rev +0 -0
  893. package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.10.0 +0 -1
  894. package/lib/bmad-cache/tea/src/agents/bmad-tea/bmad-skill-manifest.yaml +0 -14
  895. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/bmad-skill-manifest.yaml +0 -1
  896. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow.md +0 -90
  897. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/bmad-skill-manifest.yaml +0 -1
  898. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.md +0 -41
  899. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/bmad-skill-manifest.yaml +0 -1
  900. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.md +0 -41
  901. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/bmad-skill-manifest.yaml +0 -1
  902. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.md +0 -41
  903. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/bmad-skill-manifest.yaml +0 -1
  904. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.md +0 -41
  905. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/bmad-skill-manifest.yaml +0 -1
  906. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.md +0 -41
  907. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/bmad-skill-manifest.yaml +0 -1
  908. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.md +0 -41
  909. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/bmad-skill-manifest.yaml +0 -1
  910. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.md +0 -41
  911. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/bmad-skill-manifest.yaml +0 -1
  912. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.md +0 -41
  913. package/lib/bmad-customizations/bmm-demerzel.customize.yaml +0 -36
  914. package/lib/bmad-customizations/demerzel.md +0 -32
  915. package/lib/bmad-customize/bmm-quick-flow-solo-dev.customize.yaml +0 -8
  916. package/lib/bmad-extension/module.yaml +0 -5
  917. package/out.txt +0 -0
  918. package/test/agent-injection-strategy.test.js +0 -129
  919. package/test/agents-md.test.js +0 -398
  920. package/test/bmad-extension.test.js +0 -283
  921. package/test/bmad-output-policy.test.js +0 -119
  922. package/test/bmad-persona-phase-prefix.test.js +0 -271
  923. package/test/bmad-version-bump.test.js +0 -313
  924. package/test/build-bmad-args.test.js +0 -368
  925. package/test/cicd-remote-mode.test.js +0 -224
  926. package/test/clinerules.test.js +0 -339
  927. package/test/config-layout.test.js +0 -230
  928. package/test/config-lost-on-update.test.js +0 -363
  929. package/test/config-storage.test.js +0 -275
  930. package/test/convert-agents-to-skills.test.js +0 -255
  931. package/test/create-agent.test.js +0 -232
  932. package/test/cross-repo-validation.test.js +0 -201
  933. package/test/enforcement-hooks.test.js +0 -324
  934. package/test/experimental-warning.test.js +0 -314
  935. package/test/extension-module-restructure.test.js +0 -407
  936. package/test/fixtures/README.md +0 -74
  937. package/test/fixtures/empty-project/README.md +0 -5
  938. package/test/fixtures/empty-project/package.json +0 -5
  939. package/test/fixtures/onprem-profile-baseline/.gitkeep +0 -2
  940. package/test/fixtures/standard-profile-baseline/.gitkeep +0 -2
  941. package/test/generate-project-context.test.js +0 -483
  942. package/test/instruction-block.test.js +0 -388
  943. package/test/instruction-injection.test.js +0 -336
  944. package/test/integration-verification.test.js +0 -433
  945. package/test/migration-validation.test.js +0 -506
  946. package/test/migration.test.js +0 -832
  947. package/test/offline-recompile.test.js +0 -267
  948. package/test/onprem-injection.test.js +0 -441
  949. package/test/onprem-layer.test.js +0 -419
  950. package/test/opencode-agent.test.js +0 -150
  951. package/test/opencode-json-error.test.js +0 -260
  952. package/test/opencode-json-injection.test.js +0 -264
  953. package/test/opencode-json-merge.test.js +0 -318
  954. package/test/portable-paths.test.js +0 -268
  955. package/test/profile.test.js +0 -301
  956. package/test/reconfigure.test.js +0 -436
  957. package/test/repo-layout.test.js +0 -246
  958. package/test/roo-code-agent.test.js +0 -166
  959. package/test/roo-code-injection.test.js +0 -172
  960. package/test/roomodes.test.js +0 -343
  961. package/test/skill-authoring.test.js +0 -272
  962. package/test/skill-customize-agent.test.js +0 -253
  963. package/test/skill-mandatory.test.js +0 -235
  964. package/test/skill-validation.test.js +0 -378
  965. package/test/story-15-5-workflow-skills.test.js +0 -311
  966. package/test/uninstall.test.js +0 -402
  967. package/test/yes-flag.test.js +0 -200
  968. /package/lib/bmad-cache/gds/src/{gametest → agents/gds-agent-game-dev/gametest}/qa-index.csv +0 -0
  969. /package/lib/bmad-cache/gds/src/workflows/2-design/{create-prd → gds-create-prd}/data/domain-complexity.csv +0 -0
  970. /package/lib/bmad-cache/gds/src/workflows/2-design/{create-prd → gds-create-prd}/data/project-types.csv +0 -0
  971. /package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/add-sprint}/.gitkeep +0 -0
  972. /package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/add-to-sprint}/.gitkeep +0 -0
  973. /package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/bmad-dev-story}/.gitkeep +0 -0
  974. /package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/bmad-sprint-planning}/.gitkeep +0 -0
  975. /package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/bmad-sprint-status}/.gitkeep +0 -0
@@ -1,2023 +0,0 @@
1
- ---
2
- stepsCompleted: ['step-01-init', 'step-02-context', 'step-03-starter', 'step-04-decisions', 'step-05-patterns', 'step-06-structure', 'step-07-validation', 'step-08-complete']
3
- phase2StepsCompleted: ['step-02-context', 'step-04-decisions', 'step-05-patterns', 'step-06-structure', 'step-07-validation', 'step-08-complete']
4
- phase2CompletedAt: '2026-03-11'
5
- phase2cStepsCompleted: ['step-02-context', 'step-04-decisions', 'step-06-structure', 'step-07-validation', 'step-08-complete']
6
- phase2cCompletedAt: '2026-03-26'
7
- phase3EditHistory:
8
- - date: '2026-04-07'
9
- changes: 'Added Decision P3-1: BMAD Knowledge Graph (FR141-FR157, NFR38-NFR41). Three-layer design: (1) knowledge-graph.json with meta/files/nodes/edges structure — files table maps short file-ids to arbitrary pointers (relative path, absolute path, URL), nodes use file-id#anchor identity, edges carry 6 typed relationships including informed-by for non-hierarchical influence, full provenance (created_by, agent, created_at). (2) BMAD skill emission via read-modify-write emitToGraph() pattern — additive-only, 7 emitting skills tabulated with their edge types, heading-to-anchor slug algorithm documented, LLM-writability contract defined. (3) open-graph skill as new extension module skill — VSCode env detection, self-contained HTML renderer with inlined JS/CSS and embedded JSON data, SVG-based visualization, color-coded nodes, edge tooltips, filter controls, neighbor highlight, URL navigation for external files. Updated project structure tree (knowledge-graph.json/html in _bmad-output/, open-graph/ in extension module skills), skill count 44→45, requirements coverage tables, validation section.'
10
- phase2bEditHistory:
11
- - date: '2026-04-03'
12
- changes: 'Added P2-11: Unified Sprint-Status File Architecture — single sprint-status.yaml replaces 3-file model (backlog.yaml + sprints/sprint-N.yaml + sprint-status.yaml). Movement semantics, atomic operations, close-sprint lifecycle, done archival, Jira adapter pattern. Updated P2-5 to include close-sprint and remove-from-sprint workflows (6 extension workflows, up from 4). Updated extension module structure trees, skill counts (44, up from 42), project structure, FR coverage tables, and validation sections. Added prioritize-backlog to skill integration map (13 skills). Fixed FR count to 141. Fixed sprint-status.yaml canonical path to implementation-artifacts/. Marked P2-3 as superseded by P2-9.'
13
- - date: '2026-03-26'
14
- changes: 'Revised P2-6: Explicit CLI parameter passing replaces silent install (FR123-FR127). Added P2-9: BMAD 6.2.0 Migration — agents as skill folders, 34 workflows as SKILL.md packages, module.yaml with code field, --custom-content deployment, .customize.yaml for 8 built-in agents only. Added P2-10: Multi-repo project layout — config-driven path resolution, project-layout.yaml cross-reference. Verified architecture against CIS module source and BMAD 6.2.0 customize docs. Updated project structure tree, implementation sequence, cross-component dependencies. Moved F8 Dashboard to Phase 3. Added wds to bmad-cache, bumped bmad-method pin to 6.2.0.'
15
- - date: '2026-03-19'
16
- changes: 'Added Decision P2-7: Project Context Auto-Generation (FR79-FR86, NFR22-NFR25). Two-layer design: generator returns content, pipeline writes. Platform paths sourced from full manifest. Critical_actions update for 12 BMM+master agents; CIS agents explicitly excluded. NFR25 adds template version comment for upgrade detection.'
17
- - date: '2026-03-15'
18
- changes: 'Added Decision P2-6: Bundled BMAD Installation. Added bmad-cache bundling architecture, bmad-method as npm dependency. Updated project structure, patterns, and validation.'
19
- - date: '2026-03-15'
20
- changes: 'Simplified P2-6: Removed --offline flag (bundled is the only mode), removed standalone binary option, removed Option B (vendored copy), renumbered Epic 13 to Epic 5. Swept all stale references.'
21
- - date: '2026-03-15'
22
- changes: 'Fixed stale counts in Project Context Analysis: FR count 50→76 (Phase 1+2 minus deleted FR77-FR78), NFR count 15→21 (original 15 + Phase 2 NFR16-NFR21).'
23
- inputDocuments: ['_bmad-output/planning-artifacts/prd.md', 'docs/index.md', 'docs/project-overview.md', 'docs/architecture.md', 'docs/source-tree-analysis.md', 'docs/development-guide.md', 'README.md']
24
- workflowType: 'architecture'
25
- status: 'complete'
26
- completedAt: '2026-03-07'
27
- project_name: 'agents'
28
- user_name: 'Alon'
29
- date: '2026-03-05'
30
- ---
31
-
32
- # Architecture Decision Document
33
-
34
- _This document builds collaboratively through step-by-step discovery. Sections are appended as we work through each architectural decision together._
35
-
36
- ## Project Context Analysis
37
-
38
- ### Requirements Overview
39
-
40
- **Functional Requirements:**
41
- 141 FRs across 14 capability areas (Phase 1: 50 FRs across 8 areas + Phase 2: 91 FRs across 6 areas, minus FR77-FR78 deleted). The architecture must support: (1) a content transformation pipeline that translates skills into agent-native formats, (2) a BMAD lifecycle management subsystem, (3) MIL-STD-498 document generation workflows delivered via BMAD, (4) manifest-based version tracking across multi-agent installs, (5) skill authoring and governance capabilities, and (6) unified sprint-status management with movement semantics and tracking-system adapter pattern.
42
-
43
- **Non-Functional Requirements:**
44
- 21 NFRs across 6 categories driving architectural decisions (original 15 + Phase 2 NFR16-NFR21):
45
- - **Security** — no data exfiltration, inspectable content, offline operation (NFR1-4)
46
- - **Integration reliability** — additive-only installs, atomic manifest operations, strict pipeline ordering (NFR5-8)
47
- - **Portability** — cross-platform identical results, write-once skills, extensible agent targets (NFR9-12)
48
- - **Maintainability** — configuration-driven extensibility for agents and skills, backward compatibility (NFR13-15)
49
-
50
- **Scale & Complexity:**
51
- - Primary domain: CLI tool / build-time packaging pipeline
52
- - Complexity level: Medium-High
53
- - Estimated architectural components: 6 (CLI Router, Installer Engine, Agent Registry, BMAD Integration, Skill Library, Manifest Manager)
54
-
55
- ### Technical Constraints & Dependencies
56
-
57
- - Node.js runtime (LTS versions) — no native dependencies
58
- - Zero runtime component — install-time only execution
59
- - Cross-platform file system operations (Windows, macOS, Linux)
60
- - Air-gapped operation — no network calls during skill installation
61
- - npm as primary distribution channel (bundled BMAD installation planned for Phase 2)
62
-
63
- ### Cross-Cutting Concerns Identified
64
-
65
- - **Path normalization** — every module touches the file system; platform-aware path handling affects all components
66
- - **Agent format translation** — the template resolution priority chain (agent-template.md → generic.md → SKILL.md) spans installer, agent registry, and skill library
67
- - **Manifest consistency** — version tracking, upgrade detection, and multi-agent deduplication affect install, uninstall, and status operations
68
- - **BMAD ordering constraints** — the 6-step customization pipeline (YAML configs before recompile, workflows/templates/agents after) cuts across BMAD integration and installer modules
69
- - **Skill enforcement** — instruction injection priority, BMAD extension module deployment, and per-agent enforcement hooks span installer, BMAD integration, and agent registry
70
-
71
- ### Phase 2 Requirements Analysis (2026-03-11)
72
-
73
- **New Functional Requirements (FR51-FR76):**
74
- 26 FRs across 6 capability areas. The architecture must additionally support: (6) instruction injection priority management (TOP placement, JSON injection for OpenCode), (7) a BMAD extension module that injects skill-loading `critical_actions` into BMAD agents, (8) bug entity management and auto-detection skills, (9) sprint management workflows as BMAD extensions, (10) bundled BMAD installation with bundled external modules.
75
-
76
- **New Non-Functional Requirements (NFR16-NFR21):**
77
- 6 NFRs adding BMAD extension compatibility and bundled installation requirements:
78
- - Extension module must survive BMAD updates (`extends-module` identity persistence) (NFR16)
79
- - Zero bmad-method core modifications — extension APIs only (NFR17)
80
- - OpenCode JSON injection must be additive-only — merge, not replace (NFR18)
81
- - Extension workflows must work via both agent menu and direct slash command (NFR19)
82
-
83
- **New Cross-Cutting Concern: Enforcement**
84
- Skill enforcement touches multiple architectural boundaries:
85
- - `installer.js` — instruction injection position (top vs bottom), JSON injection for OpenCode
86
- - `agents.js` — OpenCode agent registration, enforcement hook configuration
87
- - `bmad.js` — extension module deployment, `.customize.yaml` updates with `critical_actions`
88
- - New artifact: BMAD extension module (`module.yaml`, `module-help.csv`, extension workflows)
89
-
90
- **Architectural Impact Assessment:**
91
- - 2 new injection strategies (TOP placement, JSON merge)
92
- - 1 new shipped artifact type (BMAD extension module)
93
- - 1 new agent (OpenCode) in registry
94
- - 6 new BMAD extension workflows (bug story, add sprint, modify sprint, add items to sprint, remove from sprint, close sprint)
95
- - 1 new skill (`auto-bug-detection`)
96
- - 4 updated `.customize.yaml` files (SRE, DevOps, Cyber, MIL-498) with skill-loading `critical_actions`
97
- - 1 new bundled dependency (bmad-method v6.0.4)
98
- - 1 new build artifact directory (`lib/bmad-cache/` with 4 pre-cloned external modules)
99
- - 0 new CLI flags (bundled installation is the default and only mode)
100
-
101
- ## Technology Foundation (Established)
102
-
103
- ### Primary Technology Domain
104
-
105
- CLI tool / build-time packaging pipeline — established brownfield project (v2.19.2)
106
-
107
- ### Current Technology Stack
108
-
109
- | Layer | Technology | Status |
110
- |-------|-----------|--------|
111
- | Runtime | Node.js (JavaScript ES modules) | Established |
112
- | CLI interface | Custom argument parser + interactive wizard (inquirer) | Established |
113
- | Distribution | npm registry via `npx ma-agents` | Established |
114
- | File operations | Node.js fs (cross-platform path handling) | Established |
115
- | Build tooling | None — no transpilation, no bundling | By design |
116
- | Testing framework | Not formalized | Gap |
117
- | Type system | None (plain JavaScript) | Current state |
118
-
119
- ### Rationale
120
-
121
- - **No TypeScript:** Keeps the tool dependency-free and simple for air-gapped deployment. The codebase is small enough (~1,700 lines across 4 files) that type safety is manageable without a type system
122
- - **No build step:** Skills and BMAD content are plain text (markdown/JSON/YAML). The installer is pure Node.js. No transpilation needed means simpler deployment and debugging
123
- - **No framework:** The tool's job is file copying and text transformation — a framework would add complexity without value
124
- - **Starter template: N/A** — brownfield project, technology decisions are established
125
-
126
- ## Core Architectural Decisions
127
-
128
- ### Decision Priority Analysis
129
-
130
- **Critical Decisions (Established — Formalized Here):**
131
- - Skill data flow and schema contract
132
- - Agent extensibility model (configuration-driven registry)
133
- - Install pipeline stage architecture
134
- - Template resolution priority chain
135
- - Manifest versioning contract
136
-
137
- **Important Decisions (Shape Phase 2):**
138
- - Bundled BMAD installer packaging approach
139
- - Visual Studio agent integration mechanism
140
- - Testing strategy formalization
141
-
142
- **Deferred Decisions (Phase 3):**
143
- - Central skill registry architecture
144
- - Cross-project analytics collection
145
- - Skill marketplace distribution model
146
-
147
- ### Data Architecture
148
-
149
- **Skill Schema Contract:**
150
- Every skill is a directory containing:
151
- - `skill.json` — metadata SSoT (name, version, description, category, tags, always_load flag)
152
- - `SKILL.md` — canonical skill content (fallback if no agent template exists)
153
- - `templates/<agent-name>.md` — agent-specific content with frontmatter injection
154
- - `references/` and `assets/` — optional supporting files (mapped per agent resource rules)
155
-
156
- **Manifest Schema (v1.1.0):**
157
- `.ma-agents.json` per project root tracks:
158
- - `version` — manifest schema version
159
- - `agents` — map of agent-name → installed skills with versions
160
- - Supports multi-agent installs sharing one project directory
161
-
162
- **Data Flow:** `skill.json` → installer reads metadata → resolves template (agent-specific → generic → SKILL.md) → injects frontmatter → copies to agent config directory → updates manifest → generates MANIFEST.yaml
163
-
164
- ### Extensibility Model
165
-
166
- **Agent Registry (agents.js):**
167
- - Each agent is a configuration object: name, category, platform paths, instruction file, resource map
168
- - Adding a new agent = adding one object to the registry array (NFR13 satisfied)
169
- - No installer code changes needed — the installer iterates the registry dynamically
170
-
171
- **Skill Library:**
172
- - Skills are self-contained directories under `skills/`
173
- - Adding a new skill = adding the directory with skill.json + SKILL.md (NFR14 satisfied)
174
- - The installer discovers skills by scanning the directory — no hardcoded skill list
175
-
176
- **Template Resolution Priority:**
177
- 1. `templates/<agent-name>.md` — agent-specific (highest priority)
178
- 2. `templates/generic.md` — cross-agent fallback
179
- 3. `SKILL.md` — canonical content (lowest priority)
180
-
181
- This chain satisfies NFR10 (write-once skills) and NFR11 (new agents need only a template mapping).
182
-
183
- ### Pipeline Architecture
184
-
185
- **Install Pipeline (5 stages):**
186
- 1. **Discovery** — scan skill library, read skill.json metadata
187
- 2. **Selection** — user selects skills (interactive or --yes flag)
188
- 3. **Resolution** — resolve template per agent using priority chain
189
- 4. **Installation** — copy resolved content to agent config directory, inject frontmatter
190
- 5. **Manifest Update** — atomic write to .ma-agents.json, regenerate MANIFEST.yaml
191
-
192
- **BMAD Pipeline (6 stages, strictly ordered per NFR8):**
193
- 1. Install BMAD core files
194
- 2. Apply YAML config customizations
195
- 3. Trigger recompile
196
- 4. Apply workflow customizations
197
- 5. Apply template customizations
198
- 6. Apply agent customizations
199
-
200
- **Error Handling:** Each stage validates preconditions before execution. Manifest writes use read-modify-write with JSON validation before write (NFR7). Install operations are additive-only — existing files are not removed unless explicitly uninstalling (NFR5).
201
-
202
- ### Infrastructure & Deployment
203
-
204
- **Current (Phase 1):**
205
- - Distribution: npm registry, `npx ma-agents` (zero-install)
206
- - CI/CD: `npx ma-agents install --yes --force` for non-interactive pipeline use
207
- - Cross-platform: Node.js path.join/path.resolve for all file operations (NFR9)
208
-
209
- **Phase 2 Decisions:**
210
-
211
- | Decision | Options | Status |
212
- |----------|---------|--------|
213
- | Bundled BMAD installation | Bundle bmad-method as npm dependency + pre-clone external modules into `lib/bmad-cache/` | **DECIDED** (P2-6) — bmad-method v6.0.4 pinned, cache pre-population before install |
214
- | Project context auto-generation | Generate `_bmad-output/project-context.md` at install time with platform-aware manifest paths | **DECIDED** (P2-7) — template-based, idempotent, all BMAD critical_actions updated |
215
- | Visual Studio integration | VS Copilot Chat extensions, .vs/ directory, custom mechanism | Needs investigation — depends on VS AI agent config model |
216
- | Testing framework | Node.js built-in test runner, Jest, Vitest | Needs decision — recommend Node.js built-in (no dependencies, aligns with minimal approach) |
217
-
218
- ### Decision Impact Analysis
219
-
220
- **Implementation Sequence:**
221
- 1. Extensibility model → enables all skill/agent additions
222
- 2. Install pipeline stages → core user-facing workflow
223
- 3. BMAD pipeline ordering → enterprise integration reliability
224
- 4. Manifest contract → version tracking across all operations
225
- 5. (Phase 2) Testing framework → enables regression protection
226
- 6. (Phase 2) Bundled BMAD installation → air-gapped deployment
227
- 7. (Phase 2) Visual Studio integration → new agent target
228
-
229
- **Cross-Component Dependencies:**
230
- - Template resolution spans installer + agent registry + skill library
231
- - Manifest operations span install + uninstall + status commands
232
- - BMAD pipeline depends on installer for file operations but has its own ordering constraints
233
-
234
- ### Phase 2 Architectural Decisions (2026-03-11)
235
-
236
- #### Decision P2-1: Instruction Injection Priority (FR51)
237
-
238
- **Decision:** Agent-aware TOP injection with skip patterns
239
-
240
- The agent registry in `agents.js` gains an `injectionStrategy` property per agent:
241
-
242
- ```javascript
243
- {
244
- name: 'claude-code',
245
- instructionFile: 'CLAUDE.md',
246
- injectionStrategy: {
247
- position: 'top',
248
- skipPatterns: ['---'] // skip YAML frontmatter block if present
249
- }
250
- }
251
- ```
252
-
253
- **Behavior:**
254
- - `installer.js` reads the target instruction file
255
- - Parses file headers based on agent-specific `skipPatterns` (frontmatter, shebang, etc.)
256
- - Injects `<!-- MA-AGENTS-START -->` block after any required file headers but before all other content
257
- - If block already exists (update scenario), removes old block first then injects at top
258
- - Format awareness is centralized in `agents.js` — installer logic is format-agnostic
259
-
260
- **Rationale:** Different agents have different file header conventions. Placing the block before a required header would cause the agent to ignore it. The skip patterns keep format knowledge in the agent registry where it belongs.
261
-
262
- **Affects:** `installer.js` (injection logic), `agents.js` (registry schema extension)
263
-
264
- #### Decision P2-2: OpenCode JSON Injection (FR56-FR57)
265
-
266
- **Decision:** Create-if-absent, merge-if-exists
267
-
268
- **Behavior:**
269
- - If no `opencode.json` exists: create with ma-agents configuration including `instructions` array pointing to skill files in `.opencode/skills/`
270
- - If `opencode.json` exists: read, parse JSON, merge `instructions` array (append ma-agents entries, preserve all existing entries and keys), write back
271
- - Merge is additive-only — never removes or overwrites existing configuration (NFR18)
272
- - Uses the same read-validate-write pattern as manifest management (NFR7)
273
-
274
- **OpenCode agent registry entry:**
275
- ```javascript
276
- {
277
- name: 'opencode',
278
- category: 'ide',
279
- configDir: '.opencode',
280
- skillsDir: '.opencode/skills',
281
- instructionFile: 'opencode.json',
282
- injectionStrategy: {
283
- position: 'json-merge',
284
- targetKey: 'instructions'
285
- }
286
- }
287
- ```
288
-
289
- **Affects:** `agents.js` (new agent entry), `installer.js` (JSON injection path alongside markdown injection)
290
-
291
- #### Decision P2-3: BMAD Extension Module Structure (FR52, NFR16-NFR17) **[SUPERSEDED by P2-9]**
292
-
293
- **Decision:** Consolidated extension module in `lib/bmad-extension/`
294
-
295
- All BMAD extension content ships as a single module:
296
-
297
- ```
298
- lib/bmad-extension/
299
- module.yaml — extends-module: bmm, module identity
300
- module-help.csv — phase registration for extension workflows
301
- workflows/
302
- create-bug-story/ — bug story generation from bug report (FR61)
303
- workflow.md
304
- add-sprint/ — add sprint with capacity (FR68)
305
- workflow.md
306
- modify-sprint/ — change/modify sprint (FR70)
307
- workflow.md
308
- add-to-sprint/ — add stories/bugs to sprint (FR69)
309
- workflow.md
310
- agents/
311
- # Custom agents (full customization: persona + menu + critical_actions)
312
- bmm-sre.customize.yaml
313
- bmm-devops.customize.yaml
314
- bmm-cyber.customize.yaml
315
- bmm-mil498.customize.yaml
316
- # Built-in BMM agents (critical_actions only — no persona/menu override)
317
- bmm-pm.customize.yaml
318
- bmm-architect.customize.yaml
319
- bmm-dev.customize.yaml
320
- bmm-qa.customize.yaml
321
- bmm-sm.customize.yaml
322
- bmm-tech-writer.customize.yaml
323
- bmm-ux-designer.customize.yaml
324
- ```
325
-
326
- **Deployment:** `bmad.js` copies `lib/bmad-extension/` to the BMAD installation directory as a registered extension module. The existing `lib/bmad-customizations/` content migrates into this structure.
327
-
328
- **Survival:** The `extends-module: bmm` declaration in `module.yaml` gives the extension an independent identity. BMAD updates (`npx bmad-method install --action update`) preserve extension modules (NFR16).
329
-
330
- **Affects:** `bmad.js` (extension deployment), `lib/bmad-extension/` (new directory), `lib/bmad-customizations/` (migrated into extension)
331
-
332
- #### Decision P2-4: `critical_actions` for All BMAD Agents (FR52-FR53)
333
-
334
- **Decision:** Ship `critical_actions` for all 11 BMAD agents (4 custom + 7 built-in)
335
-
336
- **`critical_actions` pattern for all agents:**
337
- ```yaml
338
- critical_actions:
339
- 1: "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
340
- 2: "For each skill marked always_load: true, read the skill file completely"
341
- 3: "Follow all skill directives during this session"
342
- ```
343
-
344
- **Custom agents** (SRE, DevOps, Cyber, MIL-498): Full `.customize.yaml` with persona, menu, AND `critical_actions`. These already exist — `critical_actions` are added.
345
-
346
- **Built-in BMM agents** (PM, Architect, Dev, QA, SM, Tech Writer, UX Designer): Minimal `.customize.yaml` with ONLY `critical_actions`. No persona or menu overrides — preserves the built-in agent behavior while injecting skill loading.
347
-
348
- **Scope expansion:** FR53 in PRD says "All 4 BMAD agents" but the architecture covers all 11 to close the enforcement gap for built-in agents too.
349
-
350
- **Affects:** `lib/bmad-extension/agents/` (11 customize files), `bmad.js` (deployment)
351
-
352
- #### Decision P2-5: Pre-built Extension Workflows (FR61, FR68-FR70)
353
-
354
- **Decision:** Author workflows directly in `lib/bmad-extension/skills/` as static content
355
-
356
- 6 workflows shipped as pre-built BMAD skill files:
357
- 1. `create-bug-story` — generates a structured bug story from a bug report (FR61)
358
- 2. `add-sprint` — creates a new sprint entry in the unified `sprint-status.yaml` with capacity and iteration ID (FR68)
359
- 3. `add-to-sprint` — moves items from `backlog:` section to a sprint's `items:` in unified `sprint-status.yaml` (FR69)
360
- 4. `modify-sprint` — updates sprint metadata, reorder items, adjust capacity in unified `sprint-status.yaml` (FR70)
361
- 5. `close-sprint` — sprint close lifecycle: archive done items, handle canceled items, disposition remaining items (new — see P2-11)
362
- 6. `remove-from-sprint` — moves items from a sprint's `items:` back to `backlog:` section in unified `sprint-status.yaml`
363
-
364
- All sprint management workflows operate on the unified `sprint-status.yaml` file (see P2-11 for data architecture). Workflows are registered in `module-help.csv` for phase discovery. They function identically whether invoked via BMAD agent menu or direct slash command (NFR19).
365
-
366
- **Affects:** `lib/bmad-extension/skills/` (6 workflow directories), `lib/bmad-extension/module-help.csv`
367
-
368
- #### Decision P2-6: Bundled BMAD Installation with Explicit Parameter Passing (FR74-FR76, FR123-FR127, NFR20-NFR21)
369
-
370
- **Decision:** Bundle bmad-method as npm dependency, pre-clone external modules, and invoke bmad-method with explicit CLI parameters instead of silent mode
371
-
372
- **Problem (original):** bmad-method's external module installation uses `git clone` to fetch modules (bmb, cis, tea, gds, wds) from GitHub into `~/.bmad/cache/external-modules/`. This fails in air-gapped environments. Additionally, `npx bmad-method` itself requires npm registry access.
373
-
374
- **Problem (updated — FR123-FR127):** The current silent install (`--yes` flag) skips critical configuration: selected tools/platforms are not passed to bmad-method (OpenCode not configured even when selected in ma-agents), and paths with spaces break due to improper quoting in `execSync` calls. The fix is not to invoke setup skills programmatically — bmad-method already supports full parameterized invocation via CLI flags.
375
-
376
- **Architecture — Bundling (unchanged):**
377
-
378
- ```
379
- lib/
380
- ├── bmad-cache/ — pre-cloned external module repos
381
- │ ├── bmb/ — bmad-builder module (full git repo snapshot)
382
- │ │ ├── src/
383
- │ │ ├── package.json
384
- │ │ └── node_modules/ — pre-installed production dependencies
385
- │ ├── cis/ — bmad-creative-intelligence-suite
386
- │ ├── tea/ — bmad-method-test-architecture-enterprise
387
- │ ├── gds/ — bmad-game-dev-studio
388
- │ └── wds/ — bmad-whiteport-design-studio
389
- ```
390
-
391
- **Architecture — Invocation (revised):**
392
-
393
- ma-agents maps its collected installation answers to bmad-method CLI parameters:
394
-
395
- ```javascript
396
- // In bmad.js — buildBmadArgs() constructs the full parameter list
397
- function buildBmadArgs(installContext) {
398
- const bmadPath = require.resolve('bmad-method/tools/bmad-npx-wrapper.js');
399
- const args = [
400
- 'node', `"${bmadPath}"`, 'install',
401
- '--directory', `"${installContext.projectRoot}"`, // FR123: project path (quoted for spaces)
402
- '--modules', installContext.selectedModules.join(','), // e.g., "bmm,bmb,cis,tea,gds,wds"
403
- '--tools', installContext.selectedTools.join(','), // FR123: e.g., "claude-code,cursor,opencode"
404
- '--user-name', `"${installContext.userName}"`, // FR123: from ma-agents wizard
405
- '--communication-language', installContext.commLang, // FR123: default "English"
406
- '--document-output-language', installContext.docLang, // FR123: default "English"
407
- '--output-folder', installContext.outputFolder, // default "_bmad-output"
408
- '--custom-content', `"${installContext.extensionPath}"`, // path to lib/bmad-extension/
409
- '--yes', // FR126: skip prompts for params already provided
410
- ];
411
- if (installContext.isUpdate) {
412
- args.push('--action', 'update'); // FR107: upgrade detection
413
- }
414
- return args;
415
- }
416
- ```
417
-
418
- **Parameter mapping table (FR123):**
419
-
420
- | ma-agents collects | bmad-method flag | Source |
421
- |---|---|---|
422
- | Project path | `--directory` | Detected from cwd / package.json / .git |
423
- | Selected platforms (claude-code, cursor, opencode...) | `--tools` | Interactive wizard or `--yes` defaults |
424
- | BMAD modules to install | `--modules` | Always "bmm,bmb,cis,tea,gds,wds" (full bundle) |
425
- | User name | `--user-name` | Wizard prompt or system username |
426
- | Communication language | `--communication-language` | Wizard prompt or "English" default |
427
- | Document output language | `--document-output-language` | Wizard prompt or "English" default |
428
- | Output folder | `--output-folder` | Always "_bmad-output" |
429
- | Extension module | `--custom-content` | Always `lib/bmad-extension/` path |
430
- | Fresh vs upgrade | `--action` | Detected: "install" if no `_bmad/`, "update" if exists |
431
-
432
- **How this solves the three bugs:**
433
- 1. **OpenCode not configured** → `--tools` explicitly lists all selected platforms including opencode
434
- 2. **Spaces in paths** → all path arguments are quoted: `--directory "d:\My Projects\agents"`
435
- 3. **Silent install skips config** → `--yes` only suppresses prompts for parameters already supplied via flags — it doesn't skip configuration
436
-
437
- **Default handling (FR125):** When bmad-method introduces new CLI parameters that ma-agents hasn't mapped, the `--yes` flag causes bmad-method to apply its own defaults for those parameters. No configuration is ever skipped — it's either explicitly provided by ma-agents or defaulted by bmad-method.
438
-
439
- **Single wizard UX (FR126):** The user interacts only with ma-agents' wizard. bmad-method runs non-interactively with full explicit parameters. No second wizard prompt ever appears.
440
-
441
- **CI/CD mode (FR127):** `npx ma-agents install --yes --force` → ma-agents uses its own defaults for all parameters → passes those defaults to bmad-method via the same `buildBmadArgs()` function → identical code path, just with pre-determined answers.
442
-
443
- **Mechanism — 2 steps in `bmad.js` (cache + invoke):**
444
-
445
- 1. **Pre-populate cache:** Before calling bmad-method, copy `lib/bmad-cache/*` to `~/.bmad/cache/external-modules/` (only if target directory doesn't exist or `--force`). bmad-method's `cloneExternalModule()` checks `fs.pathExists(moduleCacheDir)` — if the cache directory exists, it skips git clone and uses the cached copy.
446
-
447
- 2. **Invoke bmad-method with explicit params:** `execSync(buildBmadArgs(installContext).join(' '))` — bmad-method is a direct npm dependency, resolved via `require.resolve()`. No `npx` download at runtime.
448
-
449
- **Pre-cloned cache creation (build step):**
450
- A new `npm run build:bmad-cache` script:
451
- 1. For each module in `external-official-modules.yaml`: `git clone --depth 1 <url> lib/bmad-cache/<code>/`
452
- 2. Run `npm install --omit=dev` in each cloned directory
453
- 3. Remove `.git/` directories to reduce package size
454
- 4. This script runs on a connected machine; the output is committed to the repo
455
-
456
- **npm package size impact:**
457
- - bmad-method: ~555 KB (v6.2.0 optimized — 91% smaller than 6.0.x)
458
- - External modules: estimated 2-5 MB each with node_modules
459
- - Total package size increase: ~10-20 MB — acceptable for enterprise/air-gapped use case
460
-
461
- **Version pinning (NFR20):**
462
- - `package.json` pins `bmad-method` to exact version: `"6.2.0"`
463
- - `lib/bmad-cache/` modules are pinned at clone time
464
- - Upgrading is a deliberate operation: update version pin, re-run `npm run build:bmad-cache`, test, release
465
-
466
- **Affects:** `bmad.js` (cache pre-population + parameterized invocation), `package.json` (dependency pinned to 6.2.0), `lib/bmad-cache/` (5 modules incl. wds), build script
467
-
468
- #### Decision P2-7: Project Context Auto-Generation (FR79-FR86, NFR22-NFR25)
469
-
470
- **Decision:** Template-based generation at install time with platform-aware manifest path resolution and idempotency guard
471
-
472
- **Problem:** BMAD agents and IDE agents installed via ma-agents have skills available but lack a *constitutional document* that mandates their use. The CLAUDE.md/platform-instruction-file contains the skill-loading rule, but: (1) it only fires reliably for the primary agent session — BMAD workflow-invoked agents may not inherit it; (2) it says nothing about worktree-based git workflows; (3) it has no platform-agnostic path to MANIFEST.yaml when multiple platforms are installed. The `project-context.md` concept from BMAD closes this gap — it is a living document loaded by BMAD workflows (`dev-story`, `code-review`, `create-architecture`, etc.) that acts as persistent behavioral governance across all sessions.
473
-
474
- **Architecture:**
475
-
476
- The template is maintained as a standalone file, not an inline string:
477
-
478
- ```
479
- lib/
480
- ├── templates/
481
- │ └── project-context.template.md — canonical template (not embedded in code)
482
- ```
483
-
484
- **Two-layer design — generator returns content, pipeline handles write:**
485
-
486
- ```javascript
487
- // Layer 1: generateProjectContext() — pure content generator, no file I/O (Story 13.1)
488
- // installedAgents = ALL agents present in the project manifest (not just current run)
489
- // This ensures project-context.md always lists every installed platform's MANIFEST path.
490
- async function generateProjectContext(projectRoot, installedAgents) {
491
- const template = await fs.readFile(TEMPLATE_PATH, 'utf8');
492
-
493
- // Resolve relative manifest paths per platform (FR81, FR82) — relative to project root
494
- const pathLines = installedAgents
495
- .map(agent => ` - \`${agent.skillsDir}/MANIFEST.yaml\``)
496
- .join('\n');
497
-
498
- return template.replace('{{MANIFEST_PATHS_LIST}}', pathLines || ' - (no agents installed)');
499
- }
500
-
501
- // Layer 2: install pipeline integration (Story 13.2)
502
- // Idempotency guard + file write live here, not in the generator
503
- async function writeProjectContextIfAbsent(projectRoot, installedAgents) {
504
- const outputPath = path.join(projectRoot, '_bmad-output', 'project-context.md');
505
- if (await fs.pathExists(outputPath)) {
506
- console.log(chalk.blue('ℹ project-context.md already exists — skipping generation'));
507
- return;
508
- }
509
- try {
510
- const content = await generateProjectContext(projectRoot, installedAgents);
511
- await fs.ensureDir(path.dirname(outputPath));
512
- await fs.writeFile(outputPath, content, 'utf8');
513
- console.log(chalk.green('✓ project-context.md generated at _bmad-output/project-context.md'));
514
- } catch (err) {
515
- console.log(chalk.yellow(`⚠ project-context generation failed: ${err.message} — continuing`));
516
- }
517
- }
518
- ```
519
-
520
- **Template structure (`lib/templates/project-context.template.md`):**
521
-
522
- ```markdown
523
- # Project Context
524
- <!-- Generated by ma-agents at install time — this is a living document -->
525
- <!--
526
- EXPAND THIS FILE over time:
527
- - After architecture: run /bmad-generate-project-context
528
- - After each sprint: run /bmad-retrospective (includes context update step)
529
- - Manually: add conventions you notice agents getting wrong
530
- -->
531
-
532
- ## AI Agent Mandatory Rules
533
-
534
- ### Pre-Task (EVERY task, no exceptions)
535
- 1. Read the MANIFEST.yaml for your platform:
536
- {{MANIFEST_PATHS_LIST}}
537
- 2. Load ALL skills marked `always_load: true` completely
538
- 3. Select additional skills relevant to the specific task
539
-
540
- ### Git Workflow (ALL file-changing tasks)
541
- 1. Create a fresh worktree: `git worktree add ../{{project}}-{{branch}} -b {{branch}}`
542
- 2. ALL work happens inside that worktree — never in the main working tree
543
- 3. Use conventional commits: feat/fix/chore/docs/refactor
544
- 4. Open a PR to main — never merge directly
545
- 5. After merge: `git worktree remove ../{{project}}-{{branch}}`
546
-
547
- ### Agent Mission Lifecycle
548
- 1. Pre-flight: manifest read, always_load skills loaded, task skills selected
549
- 2. Fresh worktree + feature branch created
550
- 3. Implementation executed
551
- 4. Self-review: run code-review skill on own output before PR
552
- 5. PR opened with conventional commit message
553
- 6. Human review gate: await approval — do NOT auto-merge
554
- 7. After merge: worktree removed, branch deleted
555
- 8. Post-mission: story status updated, AiAudit.md logged
556
-
557
- ## Technology Stack
558
- <!-- TODO: Populated by /bmad-generate-project-context after architecture phase -->
559
-
560
- ## Project-Specific Rules
561
- <!-- TODO: Grows through retrospectives and manual additions -->
562
- ```
563
-
564
- **Platform path resolution (FR81-FR82):**
565
-
566
- The `{{MANIFEST_PATHS_LIST}}` placeholder is replaced at generation time with the actual paths for each installed platform, sourced from the **full project manifest** (`.ma-agents.json`) — not just the agents installed in the current run. This ensures that if Claude Code was installed last week and Cursor today, project-context.md lists both paths. If only Claude Code is installed: ` - \`.claude/skills/MANIFEST.yaml\``. If both are installed, both appear. Paths are relative to project root (NFR22 applies to the template, not the generated output).
567
-
568
- **`installedAgents` parameter contract:** Always pass all agents currently recorded in the project manifest. The generator reads `agent.skillsDir` from each entry. Never pass only the current-run agents — incomplete path lists break sessions on any excluded platform.
569
-
570
- **BMAD critical_actions update (FR86):**
571
-
572
- All **BMM agent** `.customize.yaml` files in `lib/bmad-extension/agents/` (12 total: 4 custom + 7 built-in + bmad-master) gain a new `critical_actions` entry after the MANIFEST step:
573
-
574
- ```yaml
575
- critical_actions:
576
- 1: "Read the skills MANIFEST at {project-root}/<platform>/skills/MANIFEST.yaml"
577
- 2: "For each skill marked always_load: true, read the skill file completely"
578
- 3: "If _bmad-output/project-context.md exists, read it completely"
579
- 4: "Follow all skill directives and project-context rules during this session"
580
- ```
581
-
582
- Step 3 uses `if exists` phrasing — graceful degradation for projects that have not yet generated project-context.
583
-
584
- **CIS module agents (brainstorming-coach, creative-problem-solver, design-thinking-coach, innovation-strategist, presentation-master, storyteller) are deliberately excluded.** Project-context rules govern software development workflows (git worktrees, code review, mission lifecycle). CIS agents conduct creative and innovation sessions that are orthogonal to these rules. Including project-context in CIS sessions would add irrelevant noise to creative workflows. This is an explicit architecture decision, not an oversight.
585
-
586
- **Idempotency (FR82, NFR23):**
587
-
588
- `fs.pathExists(outputPath)` check before any write. If the file exists — regardless of content — generation is skipped. A log message notifies the user: `ℹ project-context.md already exists — skipping generation`.
589
-
590
- **Global vs project-level install:**
591
-
592
- Project-context generation fires only on project-level installs (where a `package.json` or `.git` directory is detected as the project root). Global installs (`~/.config/<agent>/`) do not generate project-context.
593
-
594
- **Affects:** `installer.js` (new `generateProjectContext()` function called at end of install pipeline), new `lib/templates/project-context.template.md`, `lib/bmad-extension/agents/*.customize.yaml` (all 11 updated with step 3 in `critical_actions`)
595
-
596
- #### Decision P2-9: BMAD 6.2.0 Agent Architecture Migration (FR94-FR110, NFR29-NFR33)
597
-
598
- **Decision:** Restructure the extension module to follow BMAD 6.2.0 module conventions — agents as skill folders, workflows as skill folders, `module.yaml` with `code` field, deployed via `--custom-content`
599
-
600
- **Problem:** The 4 custom agents (SRE, DevOps, Cyber, MIL-498) are currently delivered via `.customize.yaml` files. BMAD 6.2.0 modules deliver agents as skills (`SKILL.md` + `bmad-skill-manifest.yaml` with `type: agent`). `.customize.yaml` is for END-USER customization of other modules' agents, not for delivering module-owned agents. Additionally, MIL-498 workflows use the legacy YAML/XML workflow engine which is removed in 6.2.0.
601
-
602
- **Verified pattern (from CIS module source):**
603
- - Agents in modules: `skills/<agent-name>/SKILL.md` + `bmad-skill-manifest.yaml` (type: agent)
604
- - Workflows in modules: `skills/<workflow-name>/SKILL.md` + `bmad-skill-manifest.yaml` (type: skill)
605
- - Module identity: `module.yaml` with `code` field
606
- - Deployment: `--custom-content <module-path>`
607
-
608
- **Revised extension module structure:**
609
-
610
- ```
611
- lib/bmad-extension/
612
- ├── module.yaml — code: ma-skills, name, description
613
- ├── module-help.csv — capability registry for all agents + workflows
614
- └── skills/
615
-
616
- │ ── Agent Skills (type: agent) ──
617
- ├── bmad-ma-agent-sre/
618
- │ ├── SKILL.md — Alex: full agent instructions (persona, menu, activation, critical_actions)
619
- │ └── bmad-skill-manifest.yaml — type: agent, displayName: Alex, role: SRE, module: ma-skills
620
- ├── bmad-ma-agent-devops/
621
- │ ├── SKILL.md — Amit: DevOps agent
622
- │ └── bmad-skill-manifest.yaml
623
- ├── bmad-ma-agent-cyber/
624
- │ ├── SKILL.md — Yael: Cyber Security Analyst
625
- │ └── bmad-skill-manifest.yaml
626
- ├── bmad-ma-agent-mil498/
627
- │ ├── SKILL.md — Joseph: MIL-STD-498 Expert
628
- │ └── bmad-skill-manifest.yaml
629
-
630
- │ ── MIL-498 DID Workflows (type: skill, Complex Workflow) ──
631
- ├── mil498-sss/
632
- │ ├── SKILL.md — SSS generation entrypoint
633
- │ ├── bmad-skill-manifest.yaml — type: skill
634
- │ ├── template.md — SSS DID template
635
- │ └── prompts/ — step files (progressive disclosure)
636
- │ ├── 01-discovery.md
637
- │ ├── 02-requirements.md
638
- │ └── ...
639
- ├── mil498-ssdd/ — SSDD generation
640
- ├── mil498-ocd/ — OCD generation
641
- ├── mil498-sdp/ — SDP generation
642
- ├── mil498-srs/ — SRS generation
643
- ├── mil498-sdd/ — SDD generation
644
- ├── mil498-std/ — STD generation
645
- ├── mil498-str/ — STR generation
646
- ├── mil498-idd/ — IDD generation
647
- ├── mil498-irs/ — IRS generation
648
- ├── mil498-hrs/ — HRS generation
649
-
650
- │ ── SRE Playbooks (type: skill) ──
651
- ├── sre-health-check/
652
- │ ├── SKILL.md — health check workflow
653
- │ └── bmad-skill-manifest.yaml
654
- ├── sre-fix-deployments/
655
- ├── sre-performance-opt/
656
- ├── sre-check-deployment-status/
657
- ├── sre-check-secrets/
658
- ├── sre-day-2-ops/
659
- ├── sre-deployment-strategies/
660
- ├── sre-gitops-status/
661
- │ └── (1 more — 9 SRE workflows total)
662
-
663
- │ ── DevOps Playbooks (type: skill) ──
664
- ├── devops-configure-infrastructure/
665
- ├── devops-optimize-pipelines/
666
- ├── devops-manage-helm/
667
- ├── devops-disconnected-deployment/
668
- ├── devops-docker-compose-setup/
669
- ├── devops-sign-docker-image/
670
- │ └── (6 DevOps workflows total)
671
-
672
- │ ── Cyber Playbooks (type: skill) ──
673
- ├── cyber-vulnerability-scan/
674
- ├── cyber-security-audit/
675
- ├── cyber-threat-modeling/
676
- ├── cyber-generate-certs/
677
- ├── cyber-immunity-estimation/
678
- ├── cyber-vault-secrets/
679
- ├── cyber-verify-docker-users/
680
- ├── cyber-verify-image-signature/
681
- │ └── (8 Cyber workflows total)
682
-
683
- │ ── BMAD Extension Workflows (type: skill) ──
684
- ├── create-bug-story/ — bug story from report (FR61)
685
- │ ├── SKILL.md
686
- │ └── bmad-skill-manifest.yaml
687
- ├── add-sprint/ — new sprint entry in unified sprint-status.yaml (FR68)
688
- ├── modify-sprint/ — update sprint metadata/items in unified file (FR70)
689
- ├── add-to-sprint/ — move items from backlog to sprint in unified file (FR69)
690
- ├── close-sprint/ — sprint close lifecycle: archive done, disposition remaining (P2-11)
691
- │ ├── SKILL.md
692
- │ └── bmad-skill-manifest.yaml
693
- └── remove-from-sprint/ — move items from sprint back to backlog
694
- ├── SKILL.md
695
- └── bmad-skill-manifest.yaml
696
- ```
697
-
698
- **Total skills in module:** 4 agents + 11 MIL-498 + 9 SRE + 6 DevOps + 8 Cyber + 6 extension workflows + 1 open-graph = **45 skills**
699
-
700
- **`bmad-skill-manifest.yaml` patterns:**
701
-
702
- Agent skill manifest:
703
- ```yaml
704
- type: agent
705
- name: bmad-ma-agent-sre
706
- displayName: Alex
707
- title: Site Reliability Engineer
708
- icon: "🔧"
709
- capabilities: "system availability, Kubernetes ops, SLO/SLA management, deployment strategies"
710
- role: "Site Reliability Engineer"
711
- identity: "Experienced SRE focused on system reliability and operational excellence"
712
- communicationStyle: "Direct, data-driven, alert to risks"
713
- principles: "Reliability first. Automate everything. Measure what matters."
714
- module: ma-skills
715
- ```
716
-
717
- Workflow skill manifest:
718
- ```yaml
719
- type: skill
720
- name: mil498-srs
721
- module: ma-skills
722
- ```
723
-
724
- **`module.yaml` update:**
725
- ```yaml
726
- code: ma-skills
727
- name: "MA-Agents Skills & Agents"
728
- description: "Enterprise methodology enforcement, specialized agents, and operational workflows"
729
- extends-module: bmm
730
- default_selected: false
731
- ```
732
-
733
- The `code` field is required for `--custom-content` deployment. `extends-module: bmm` is retained to indicate this module builds on BMM.
734
-
735
- **Agent SKILL.md content:** Each agent's `SKILL.md` contains the full agent definition that was previously split across `.customize.yaml` + XML `<agent>` definition:
736
- - Persona (role, identity, communication style, principles)
737
- - Menu items with trigger phrases
738
- - Activation sequence (including skill-loading critical_actions)
739
- - References to the agent's workflow skills (e.g., SRE agent's menu references `sre-health-check`, `sre-fix-deployments`, etc.)
740
-
741
- **Built-in BMM agent customization (7 agents + bmad-master):**
742
- The 8 built-in BMM agents that ma-agents does NOT own still use `.customize.yaml` files — these are deployed by `bmad.js` to `_bmad/_config/agents/` AFTER `--custom-content` installs the module. These files add `critical_actions` for skill loading only (no persona/menu override):
743
-
744
- ```yaml
745
- # MA-AGENTS: skill enforcement for bmm-pm
746
- critical_actions:
747
- - "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
748
- - "For each skill marked always_load: true, read the skill file completely"
749
- - "If _bmad-output/project-context.md exists, read it completely"
750
- - "Follow all skill directives and project-context rules during this session"
751
- ```
752
-
753
- **Note:** In 6.2.0, `critical_actions` in `.customize.yaml` uses array syntax (list of strings), not numbered map syntax. Updated to match current BMAD documentation.
754
-
755
- **Deployment sequence in `bmad.js`:**
756
- 1. Pre-populate `~/.bmad/cache/external-modules/` from `lib/bmad-cache/`
757
- 2. Invoke bmad-method with `--custom-content "lib/bmad-extension/"` — installs the module including 4 agents and all workflow skills
758
- 3. Deploy `.customize.yaml` files for 8 built-in BMM agents to `_bmad/_config/agents/`
759
- 4. Run `--action quick-update` to apply customizations
760
-
761
- **MIL-498 workflow conversion detail (FR98-FR100):**
762
- Each DID workflow converts from `workflow.yaml` + `instructions.md` (legacy engine) to:
763
- - `SKILL.md` — workflow entrypoint with frontmatter triggers and routing logic
764
- - `prompts/` — step files for progressive disclosure (Layer 4), preserving strict sequential execution
765
- - `template.md` — DID output template (same content, new location)
766
- - The legacy `<template-output>` checkpoints become explicit user confirmation gates in step files
767
-
768
- **SRE/DevOps/Cyber workflow conversion detail (FR101-FR103):**
769
- These workflows are already `.md` files. Conversion is lighter:
770
- - Wrap existing `.md` content in `SKILL.md` with proper frontmatter
771
- - Add `bmad-skill-manifest.yaml` with `type: skill`
772
- - Multi-step workflows get `prompts/` for progressive disclosure
773
- - Single-pass playbooks remain as simple `SKILL.md` files
774
-
775
- **Migration detection and upgrade path (FR107-FR110):**
776
-
777
- ```javascript
778
- // In bmad.js — detect BMAD version and migration need
779
- function detectMigrationNeed(projectRoot) {
780
- const configPath = path.join(projectRoot, '_bmad', 'core', 'config.yaml');
781
- if (!fs.existsSync(configPath)) return { action: 'install', migrate: false };
782
-
783
- const config = yaml.load(fs.readFileSync(configPath, 'utf8'));
784
- const version = config?.version || '0.0.0';
785
-
786
- if (semver.lt(version, '6.2.0')) {
787
- return { action: 'update', migrate: true, fromVersion: version };
788
- }
789
- return { action: 'update', migrate: false };
790
- }
791
- ```
792
-
793
- **Migration steps (when upgrading from 6.0.4):**
794
- 1. Detect old version from `_bmad/core/config.yaml`
795
- 2. Back up existing `_bmad/_config/agents/*.customize.yaml` (user customizations to preserve)
796
- 3. Invoke bmad-method with `--action update` + `--custom-content` — bmad-method handles the core upgrade
797
- 4. Deploy new `.customize.yaml` files for built-in agents
798
- 5. Merge user customizations back: if user had added custom `memories` or extra `critical_actions` to any of the 4 custom agents, carry those forward into the new agent SKILL.md
799
- 6. Clean up legacy artifacts: old `.customize.yaml` files for custom agents (now replaced by module agent skills), XML agent definitions in `_bmad/custom/agents/`, YAML workflow files in `lib/bmad-workflows/mil498/`
800
-
801
- **Rollback (NFR29):** If bmad-method update fails, `bmad.js` restores the backed-up `.customize.yaml` files and logs the error. The project remains on the old version. Full atomicity is achieved by backing up before and restoring on failure.
802
-
803
- **Affects:** `lib/bmad-extension/` (complete restructure), `bmad.js` (migration detection, `--custom-content` deployment, `.customize.yaml` deployment for built-ins), `lib/bmad-workflows/` (migrated into extension module skills), `lib/bmad-customizations/` (eliminated — content moved to extension module)
804
-
805
- #### Decision P2-10: Multi-Repository Project Layout (FR111-FR122, NFR34-NFR37)
806
-
807
- **Decision:** Config-driven path resolution with `project-layout.yaml` cross-reference file
808
-
809
- **Problem:** Enterprise projects separate planning docs, sprint management, and code across repositories. BMAD workflows that produce/consume artifacts need to resolve paths to the correct repository. Agents operating in the code repo need to discover where planning and sprint data live.
810
-
811
- **Architecture:**
812
-
813
- **Installation flow (FR111-FR116):**
814
- ```javascript
815
- // In cli.js — new wizard section after agent selection
816
- async function collectRepoLayout() {
817
- const layout = { knowledgebase: null, sprintManagement: null };
818
-
819
- for (const concern of ['knowledgebase', 'sprintManagement']) {
820
- const mode = await prompt({
821
- type: 'list',
822
- message: `Where is your ${concern} managed?`,
823
- choices: [
824
- { name: 'Current repository (default)', value: 'same' },
825
- { name: 'Local path', value: 'local' },
826
- { name: 'Remote git repository', value: 'remote' },
827
- ]
828
- });
829
-
830
- if (mode === 'same') {
831
- layout[concern] = { mode: 'same', path: '.' };
832
- } else if (mode === 'local') {
833
- const localPath = await prompt({ message: 'Local path:' });
834
- if (!fs.existsSync(localPath)) {
835
- console.log(chalk.yellow(`⚠ Path does not exist: ${localPath}`));
836
- const confirmed = await prompt({ type: 'confirm', message: 'Use this path anyway?' });
837
- if (!confirmed) continue; // re-ask
838
- }
839
- layout[concern] = { mode: 'local', path: path.resolve(localPath) };
840
- } else if (mode === 'remote') {
841
- const gitUrl = await prompt({ message: 'Git URL:' });
842
- const destPath = await prompt({ message: 'Local destination for cloning:' });
843
- if (fs.existsSync(destPath)) {
844
- console.log(chalk.blue(`ℹ Directory already exists: ${destPath}`));
845
- const confirmed = await prompt({ type: 'confirm', message: 'Use existing directory?' });
846
- if (!confirmed) continue;
847
- } else {
848
- execSync(`git clone "${gitUrl}" "${destPath}"`);
849
- }
850
- layout[concern] = { mode: 'remote', path: path.resolve(destPath), gitUrl };
851
- }
852
- }
853
- return layout;
854
- }
855
- ```
856
-
857
- **Config storage (FR117):**
858
- Repo paths are written to `_bmad/core/config.yaml` (shared, git-committed) alongside existing BMAD config:
859
-
860
- ```yaml
861
- # Added by ma-agents installer
862
- knowledgebase_path: "d:/Code/agents-knowledgebase" # or "." for same-repo
863
- sprint_management_path: "d:/Code/agents-sprints" # or "." for same-repo
864
- ```
865
-
866
- These values are also passed to bmad-method via `--custom-content` module config or written directly after installation.
867
-
868
- **Cross-reference file (FR122):**
869
- In multi-repo mode, the installer creates `_bmad-output/project-layout.yaml` in the CODE repository:
870
-
871
- ```yaml
872
- # Generated by ma-agents — do not edit manually
873
- # Tells agents where to find planning and sprint data
874
- generated: '2026-03-26'
875
- knowledgebase:
876
- mode: remote # or local, or same
877
- path: "d:/Code/agents-knowledgebase"
878
- gitUrl: "https://github.com/org/agents-knowledgebase.git" # only if remote
879
- sprint_management:
880
- mode: local
881
- path: "d:/Code/agents-sprints"
882
- ```
883
-
884
- **Deterministic output (NFR36):** Same inputs → same file content. The `generated` date is the only varying field.
885
-
886
- **BMAD workflow path resolution (FR119-FR120):**
887
- BMAD workflows resolve artifact paths by reading config at runtime. The resolution chain:
888
-
889
- 1. Workflow reads `knowledgebase_path` from `_bmad/core/config.yaml` (or equivalent module config)
890
- 2. If value is `"."` → current repo (default, backward compatible)
891
- 3. If value is an absolute path → use that path
892
- 4. All planning artifact output goes to `{knowledgebase_path}/_bmad-output/planning-artifacts/`
893
- 5. Sprint tracking lives at `{sprint_management_path}/_bmad-output/implementation-artifacts/sprint-status.yaml` (unified file per P2-11)
894
-
895
- **Implementation note:** The actual path resolution happens inside BMAD workflows, not in ma-agents code. ma-agents' job is to (1) collect the paths during installation, (2) store them in config, and (3) stamp them into `project-context.md`. BMAD workflows use the config values. This means no changes to `installer.js`, `agents.js`, or `bmad.js` beyond the wizard collection and config write.
896
-
897
- **Project-context integration (FR118):**
898
- The `project-context.template.md` gains a new section when multi-repo is configured:
899
-
900
- ```markdown
901
- ### Repository Layout
902
- - **Knowledgebase:** {{KNOWLEDGEBASE_PATH}}
903
- - **Sprint Management:** {{SPRINT_MANAGEMENT_PATH}}
904
- - When creating or reading planning artifacts, use the knowledgebase path
905
- - When creating or reading sprint/story artifacts, use the sprint management path
906
- ```
907
-
908
- Single-repo mode omits this section entirely (NFR34 backward compatibility).
909
-
910
- **CI/CD mode (FR127 integration):**
911
- In `--yes` mode, both concerns default to "current repository" — no repo layout prompts. Multi-repo is interactive-only configuration.
912
-
913
- **Affects:** `cli.js` (new wizard section), `_bmad/core/config.yaml` (new fields), `_bmad-output/project-layout.yaml` (new file), `lib/templates/project-context.template.md` (new section), BMAD workflows (path resolution from config — not ma-agents code changes)
914
-
915
- #### Decision P2-11: Unified Sprint-Status File Architecture (2026-04-03)
916
-
917
- **Decision:** Consolidate sprint/backlog management into a single `sprint-status.yaml` file with structured sections, movement semantics, and a tracking-system adapter pattern
918
-
919
- **Problem:** The previous sprint management design used 3 separate files: `backlog.yaml` (flat prioritized story list), `sprints/sprint-N.yaml` (individual sprint entity files), and `sprint-status.yaml` (status tracking). Multiple files create consistency issues — dual-writes fail, status diverges across files, and users encounter contradictory data. Skills that read or write sprint data must cross-reference multiple sources, increasing complexity and error surface.
920
-
921
- **Architecture — Unified File Schema:**
922
-
923
- All sprint and backlog data lives in a single `sprint-status.yaml`:
924
-
925
- ```yaml
926
- generated: "2026-04-03T12:00:00Z"
927
- last_updated: "2026-04-03T12:00:00Z"
928
- project: ProjectName
929
- project_key: KEY
930
- tracking_system: file-system # or "jira" — see adapter pattern below
931
- story_location: _bmad-output/implementation-artifacts
932
-
933
- epics:
934
- epic-1:
935
- status: in-progress # backlog → in-progress → done
936
- retrospective: optional # link to retrospective artifact
937
-
938
- backlog:
939
- - id: "3-1-story-name"
940
- type: story # story | bug
941
- epic: 3
942
- title: "Story Title"
943
- priority: 1
944
- status: backlog # backlog → ready-for-dev → in-progress → review → done
945
- severity: null # only for bugs: critical | high | medium | low
946
-
947
- sprints:
948
- sprint-1:
949
- name: "Foundation Sprint"
950
- status: active # planning → active → closed
951
- capacity: 21
952
- start: "2026-04-03"
953
- end: "2026-04-14"
954
- items:
955
- - id: "1-2-story-name"
956
- type: story
957
- epic: 1
958
- title: "Story Title"
959
- status: in-progress
960
- severity: null
961
- ```
962
-
963
- **Core Design Principles:**
964
-
965
- 1. **Single file, atomic operations** — all reads and writes target one file, eliminating dual-write consistency bugs. Skills use read-modify-write with YAML validation before write.
966
-
967
- 2. **Movement semantics** — an item exists in exactly ONE section at any time: either `backlog:` or a specific sprint's `items:` list. Moving an item means removing it from the source section and appending it to the target section in a single atomic write. No item duplication, no cross-reference reconciliation.
968
-
969
- 3. **Status progression on items:**
970
- - `backlog` → `ready-for-dev` → `in-progress` → `review` → `done` (plus `on-hold` and `cancelled` — see schema spec)
971
- - Items in `backlog:` section typically have status `backlog`, but may have other statuses (e.g., `ready-for-dev` awaiting sprint assignment)
972
- - Items in a sprint's `items:` may have any status from `ready-for-dev` through `done`
973
- - Only items with status `ready-for-dev` may be added to a sprint via `add-to-sprint`
974
-
975
- 4. **Epic status in structured section:**
976
- - `backlog` → `in-progress` → `done`
977
- - Epic status is derived from constituent story progress but stored explicitly for fast lookup
978
- - Each epic key holds a map with `status` and optional `retrospective` link
979
-
980
- 5. **Sprint lifecycle states:**
981
- - `planning` → `active` → `closed`
982
- - Only one sprint may be `active` at a time
983
- - `planning` sprints can receive items via `add-to-sprint`
984
- - `closed` sprints are immutable — no item changes allowed
985
-
986
- **Close-Sprint Lifecycle Workflow:**
987
-
988
- The `close-sprint` skill implements a structured sprint closure:
989
-
990
- 1. **Done items → archive:** Items with status `done` are removed from the sprint's `items:` list. Their corresponding story files are moved from `{story_location}/` to `{story_location}/done/`.
991
-
992
- 2. **Canceled items → archive separately:** Items explicitly marked as canceled are removed and their story files moved to `{story_location}/done/` with a canceled notation.
993
-
994
- 3. **Remaining items → user decides:** For each item still in-progress, review, or ready-for-dev, the user is prompted:
995
- - Move to next sprint (if one exists in `planning` state)
996
- - Return to backlog (resets status to `backlog`, item moves to `backlog:` section)
997
- - Decide per-item (interactive item-by-item disposition)
998
-
999
- 4. **Sprint status → closed:** After all items are dispositioned, the sprint's `status` is set to `closed`. The sprint entry remains in the file as historical record (no deletion).
1000
-
1001
- 5. **Timestamps updated:** `last_updated` is refreshed. Sprint `end` date is set to actual close date if different from planned.
1002
-
1003
- **Done Archival Pattern:**
1004
-
1005
- When items are archived (removed from `sprint-status.yaml`):
1006
- - The item is deleted from the sprint's `items:` list
1007
- - The corresponding story file at `{story_location}/{id}.md` is moved to `{story_location}/done/{id}.md`
1008
- - No trace of the item remains in `sprint-status.yaml` — the `done/` folder is the archive
1009
- - This keeps the active file lean and focused on current work
1010
-
1011
- **Jira Adapter Pattern:**
1012
-
1013
- The `tracking_system` field switches between backends:
1014
-
1015
- ```yaml
1016
- tracking_system: file-system # default — all operations read/write sprint-status.yaml
1017
- tracking_system: jira # future — operations proxy to Jira API
1018
- ```
1019
-
1020
- - **`file-system` backend (current):** All 13 affected skills read/write `sprint-status.yaml` directly. The file is the single source of truth.
1021
- - **`jira` backend (future):** Skills detect `tracking_system: jira` and delegate to a Jira adapter module. The adapter translates unified data model operations (move item, update status, close sprint) into Jira API calls. The `sprint-status.yaml` schema is the canonical data contract — Jira responses are mapped into the same structure.
1022
- - **Same data model:** Both backends expose identical data shapes. Skills never branch on backend type for business logic — only the I/O layer differs.
1023
-
1024
- **Skill Integration Map (13 skills affected):**
1025
-
1026
- | Skill | Rework Level | Operation | Section(s) Touched |
1027
- |-------|-------------|-----------|-------------------|
1028
- | `generate-backlog` | Heavy | Writes items to `backlog:` section from epics | `backlog:`, `epics:` |
1029
- | `add-to-sprint` | Heavy | Moves item from `backlog:` to sprint `items:` | `backlog:`, `sprints:` |
1030
- | `remove-from-sprint` | Heavy | Moves item from sprint `items:` back to `backlog:` | `sprints:`, `backlog:` |
1031
- | `sprint-status-view` | Heavy | Reads single file, renders progress | All sections (read-only) |
1032
- | `cleanup-done` | Heavy | Scans for done items, archives, removes from file | `sprints:`, file system |
1033
- | `bmad-sprint-planning` | Heavy | Bootstraps unified file from epics data | Creates entire file |
1034
- | `add-sprint` | Moderate | Adds sprint entry to `sprints:` section | `sprints:` |
1035
- | `modify-sprint` | Moderate | Updates sprint entry in-place (metadata, items) | `sprints:` |
1036
- | `bmad-dev-story` | Moderate | Finds item across sections, updates status field | `backlog:` or `sprints:` |
1037
- | `story-status-lookup` | Light | Searches `backlog:` + all sprint `items:` for item | All sections (read-only) |
1038
- | `bmad-sprint-status` | Light | Reads structured sections for summary | All sections (read-only) |
1039
- | `prioritize-backlog` | Light | Reads/writes `backlog:` section to reorder items by priority criteria | `backlog:` |
1040
- | `close-sprint` | New | Full sprint close lifecycle (see above) | `sprints:`, `backlog:`, file system |
1041
-
1042
- **Note on skill ownership:** Of the 13 affected skills, 6 are extension module skills delivered via `lib/bmad-extension/skills/` (add-sprint, add-to-sprint, remove-from-sprint, modify-sprint, close-sprint, cleanup-done) and 7 are existing BMAD/ma-agents skills being reworked (generate-backlog, sprint-status-view, bmad-sprint-planning, bmad-dev-story, story-status-lookup, bmad-sprint-status, prioritize-backlog).
1043
-
1044
- **File Location Resolution:**
1045
-
1046
- In single-repo mode, `sprint-status.yaml` lives at:
1047
- ```
1048
- {sprint_management_path}/_bmad-output/implementation-artifacts/sprint-status.yaml
1049
- ```
1050
-
1051
- In multi-repo mode (P2-10), `sprint_management_path` from `_bmad/core/config.yaml` resolves to the sprint management repository. The file path is always `_bmad-output/implementation-artifacts/sprint-status.yaml` relative to that root.
1052
-
1053
- **Migration from 3-file model:**
1054
-
1055
- If a project has existing `backlog.yaml`, `sprints/sprint-N.yaml`, or the old `sprint-status.yaml`:
1056
- 1. `bmad-sprint-planning` detects the legacy files and offers to migrate
1057
- 2. Items from `backlog.yaml` are loaded into the `backlog:` section
1058
- 3. Sprint entities from `sprints/sprint-N.yaml` are loaded into `sprints:` with their items
1059
- 4. Status data from old `sprint-status.yaml` is used to set item statuses
1060
- 5. Legacy files are renamed with `.legacy` suffix (not deleted — user can verify and remove)
1061
-
1062
- **Affects:** All 13 skills listed in the integration map above, `sprint-status.yaml` (new unified file), `{story_location}/done/` (archive directory)
1063
-
1064
- #### Phase 2 Decision Impact Analysis (Updated 2026-04-03)
1065
-
1066
- **Implementation Sequence:**
1067
- 1. Agent registry extension (`agents.js`) — add OpenCode + `injectionStrategy` to all agents
1068
- 2. Instruction injection refactor (`installer.js`) — TOP placement + JSON injection path
1069
- 3. Extension module restructure (`lib/bmad-extension/`) — 6.2.0 module pattern with `code` field, agents as skill folders, workflows as skill folders (P2-9)
1070
- 4. MIL-498 workflow conversion — 11 YAML/XML workflows → SKILL.md packages with progressive disclosure step files (P2-9)
1071
- 5. SRE/DevOps/Cyber workflow packaging — 23 `.md` workflows → SKILL.md skill packages (P2-9)
1072
- 6. Extension deployment via `--custom-content` (`bmad.js`) — replaces manual copy (P2-9)
1073
- 7. Built-in agent `.customize.yaml` deployment (`bmad.js`) — 8 files to `_bmad/_config/agents/` for critical_actions (P2-9)
1074
- 8. Explicit parameter passing (`bmad.js`) — replace silent install with `buildBmadArgs()` (P2-6 rev)
1075
- 9. `auto-bug-detection` skill creation (`skills/auto-bug-detection/`)
1076
- 10. `.gitignore` update logic (`installer.js`) — don't add `_bmad-output`
1077
- 11. Bundled BMAD installation (`bmad.js`, `package.json`, `lib/bmad-cache/`) — bmad-method v6.2.0 + 5 external modules (bmb, cis, tea, gds, wds)
1078
- 12. Project context auto-generation (`installer.js`, `lib/templates/project-context.template.md`)
1079
- 13. Multi-repo layout wizard (`cli.js`) — collect knowledgebase/sprint paths, write config + project-layout.yaml (P2-10)
1080
- 14. Migration detection (`bmad.js`) — detect 6.0.4, back up, upgrade, merge customizations (P2-9)
1081
- 15. Unified sprint-status file architecture — consolidate 3-file model into single `sprint-status.yaml`, update 13 skills (P2-11)
1082
- 16. Close-sprint workflow skill — sprint close lifecycle with done archival and item disposition (P2-11)
1083
-
1084
- **New Cross-Component Dependencies:**
1085
- - `injectionStrategy` in `agents.js` drives `installer.js` injection behavior
1086
- - `bmad.js` deploys `lib/bmad-extension/` via `--custom-content` — all extension content moves together
1087
- - `bmad.js` separately deploys `.customize.yaml` for 8 built-in agents AFTER `--custom-content`
1088
- - `critical_actions` in agent SKILL.md and `.customize.yaml` reference `skills/MANIFEST.yaml` — depends on skill installation completing first
1089
- - All sprint management skills read/write the unified `sprint-status.yaml` — single file eliminates cross-file consistency concerns
1090
- - `close-sprint` skill depends on `story_location` field in `sprint-status.yaml` to resolve archive paths
1091
- - `sprint-status.yaml` location depends on `sprint_management_path` from P2-10 multi-repo config
1092
- - Multi-repo config in `_bmad/core/config.yaml` is read by BMAD workflows at runtime — ma-agents writes it, BMAD workflows consume it
1093
- - `project-layout.yaml` in code repo enables agents to discover cross-repo paths without re-running installation
1094
-
1095
- ## Implementation Patterns & Consistency Rules
1096
-
1097
- ### Critical Conflict Points
1098
-
1099
- 6 areas where AI agents working on the ma-agents codebase could make incompatible choices:
1100
-
1101
- ### Naming Patterns
1102
-
1103
- **File & Module Naming:**
1104
- - Source files: `kebab-case.js` (e.g., `cli.js`, `installer.js`, `agents.js`)
1105
- - Skill directories: `kebab-case` (e.g., `security-skill`, `cpp-best-practices`)
1106
- - BMAD agents: `kebab-case` with role prefix (e.g., `bmm-sre`, `bmm-devops`, `cis-storyteller`)
1107
- - Templates: `<agent-name>.md` matching the agent registry key exactly
1108
-
1109
- **Code Naming:**
1110
- - Functions: `camelCase` (e.g., `installSkills`, `getAgentPath`, `applyCustomizations`)
1111
- - Variables: `camelCase` (e.g., `skillList`, `agentConfig`, `manifestData`)
1112
- - Constants: `UPPER_SNAKE_CASE` only for true constants (e.g., `MANIFEST_VERSION`)
1113
- - No class-based patterns — the codebase uses plain functions and objects
1114
-
1115
- **JSON/YAML Fields:**
1116
- - `skill.json`: `snake_case` keys (e.g., `always_load`, `skill_name`) — established convention
1117
- - `.ma-agents.json` manifest: `camelCase` keys — established convention
1118
- - `config.yaml`: `snake_case` keys — BMAD convention
1119
-
1120
- ### Structure Patterns
1121
-
1122
- **Project Organization (established, do not restructure):**
1123
- ```
1124
- bin/cli.js — CLI entry point and command routing
1125
- lib/installer.js — Core installation engine
1126
- lib/agents.js — Agent registry and configuration
1127
- lib/bmad.js — BMAD integration subsystem
1128
- skills/ — Skill library (self-contained directories)
1129
- index.js — Programmatic API exports
1130
- ```
1131
-
1132
- **Skill Directory Structure (mandatory for all new skills):**
1133
- ```
1134
- skills/<skill-name>/
1135
- skill.json — metadata SSoT (REQUIRED)
1136
- SKILL.md — canonical content (REQUIRED)
1137
- templates/ — agent-specific templates (optional)
1138
- claude-code.md
1139
- generic.md
1140
- references/ — supporting docs (optional)
1141
- assets/ — templates/configs (optional)
1142
- ```
1143
-
1144
- **Where tests go:** `tests/` directory at project root, mirroring source structure (e.g., `tests/installer.test.js`). Co-located tests are not used.
1145
-
1146
- ### Format Patterns
1147
-
1148
- **Console Output:**
1149
- - User-facing messages: plain text with chalk colors (green=success, yellow=warning, red=error)
1150
- - Progress indicators: simple line-by-line output, no spinners or progress bars
1151
- - List output: indented with ` - ` prefix
1152
- - No emoji in CLI output unless explicitly requested
1153
-
1154
- **Error Messages:**
1155
- - Format: `Error: <what went wrong>` followed by ` Hint: <how to fix>` on next line
1156
- - Never expose stack traces to users — log to debug only
1157
- - Always suggest a recovery action when possible
1158
-
1159
- **Skill Metadata (skill.json):**
1160
- ```json
1161
- {
1162
- "name": "skill-name",
1163
- "version": "1.0.0",
1164
- "description": "One-line description",
1165
- "category": "one of: security|architecture|testing|documentation|workflow|language",
1166
- "tags": ["tag1", "tag2"],
1167
- "always_load": false
1168
- }
1169
- ```
1170
-
1171
- ### Process Patterns
1172
-
1173
- **Adding a New Agent:**
1174
- 1. Add configuration object to `agents.js` registry array
1175
- 2. Define: name, category, platform paths, instruction file, resource map
1176
- 3. No changes to `installer.js` or other modules (NFR13)
1177
- 4. Test: install a skill targeting the new agent, verify file placement
1178
-
1179
- **Adding a New Skill:**
1180
- 1. Create skill directory under `skills/`
1181
- 2. Add `skill.json` (metadata) and `SKILL.md` (content) — both required
1182
- 3. Optionally add `templates/<agent>.md` for agent-specific content
1183
- 4. No changes to installer or any other module (NFR14)
1184
- 5. Test: `npx ma-agents list` shows the skill, install works for target agents
1185
-
1186
- **Modifying the Install Pipeline:**
1187
- 1. Changes to `installer.js` must preserve the 5-stage pipeline order
1188
- 2. Manifest writes must remain atomic (read → validate → write)
1189
- 3. All file operations must use `path.join()` — never string concatenation for paths
1190
- 4. New operations must be additive-only unless explicitly implementing uninstall
1191
-
1192
- **Modifying BMAD Integration:**
1193
- 1. Changes to `bmad.js` must preserve the 6-stage pipeline order
1194
- 2. YAML configs always before recompile, workflows/templates/agents always after
1195
- 3. Never skip the recompile step — downstream customizations depend on it
1196
-
1197
- ### Enforcement Guidelines
1198
-
1199
- **All AI Agents Working on This Codebase MUST:**
1200
- - Use `path.join()` for all file path construction — never `/` or `\\` concatenation
1201
- - Preserve existing module boundaries — no merging modules or moving functions between files without explicit instruction
1202
- - Keep the codebase dependency-minimal — no new npm dependencies without explicit approval
1203
- - Follow the established 4-module architecture — new functionality goes into the most relevant existing module or a new module if genuinely needed
1204
-
1205
- **Anti-Patterns (Never Do):**
1206
- - Adding TypeScript, build steps, or transpilation
1207
- - Importing external frameworks (Express, Commander, etc.)
1208
- - Creating class hierarchies — use plain functions and objects
1209
- - Hardcoding agent names or skill names in installer logic
1210
- - Using `process.platform` checks outside of `agents.js` — platform awareness is centralized there
1211
-
1212
- ### Phase 2 Implementation Patterns (2026-03-11)
1213
-
1214
- #### Injection Strategy Patterns
1215
-
1216
- **Markdown Injection (TOP placement):**
1217
- ```
1218
- <!-- MA-AGENTS-START -->
1219
- <injected skill-loading instructions>
1220
- <!-- MA-AGENTS-END -->
1221
- ```
1222
- - `skipPatterns: ['---']` means skip the entire delimited block (e.g., YAML frontmatter between `---` pairs), not just the delimiter line
1223
- - **Update scenario:** Find existing `MA-AGENTS-START` → `MA-AGENTS-END` block, replace in-place at the same position
1224
- - **New injection:** Insert block after skipped headers, before all other content
1225
- - Injection logic in `installer.js` is format-agnostic — all format knowledge lives in `agents.js` via `injectionStrategy`
1226
-
1227
- **JSON Injection (OpenCode):**
1228
- - No comment markers — JSON doesn't support comments
1229
- - **Detection:** ma-agents entries in the `instructions` array are identified by a known prefix (e.g., entries containing `[ma-agents]` tag)
1230
- - **Update scenario:** Filter out existing ma-agents entries from `instructions` array, then append fresh entries
1231
- - **New file:** Create `opencode.json` with complete ma-agents configuration
1232
- - **Existing file:** Read → parse → merge `instructions` array (additive-only, NFR18) → preserve all other keys → write back
1233
- - Uses same read-validate-write pattern as manifest management (NFR7)
1234
-
1235
- #### Extension Module Authoring Patterns
1236
-
1237
- **Built-in Agent `.customize.yaml` (critical_actions only):**
1238
- ```yaml
1239
- # MA-AGENTS: skill enforcement for bmm-<role>
1240
- critical_actions:
1241
- 1: "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
1242
- 2: "For each skill marked always_load: true, read the skill file completely"
1243
- 3: "Follow all skill directives during this session"
1244
- ```
1245
-
1246
- **Custom Agent `.customize.yaml` (full customization):**
1247
- ```yaml
1248
- # MA-AGENTS: full customization for bmm-<role>
1249
- persona: |
1250
- <persona content>
1251
- menu:
1252
- <menu entries>
1253
- critical_actions:
1254
- 1: "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
1255
- 2: "For each skill marked always_load: true, read the skill file completely"
1256
- 3: "Follow all skill directives during this session"
1257
- 4: "<agent-specific action if needed>"
1258
- ```
1259
-
1260
- **Rules:**
1261
- - Always use YAML block style (not flow style)
1262
- - Always quote action string values
1263
- - `critical_actions` 1-3 are identical across all 11 agents — treat as a template constant
1264
- - Custom agents MAY add actions 4+ for agent-specific needs
1265
- - Built-in agents MUST NOT include persona or menu overrides — only `critical_actions`
1266
-
1267
- #### Extension Workflow Patterns
1268
-
1269
- - Each workflow directory: `workflows/<workflow-name>/workflow.md`
1270
- - Follows existing BMAD workflow conventions (same structure as `_bmad/bmm/workflows/`)
1271
- - `module-help.csv` entries follow BMAD's established CSV schema for phase registration
1272
- - NFR19 compliance is automatic — BMAD's registration system supports both menu and slash command invocation for all registered workflows
1273
- - No custom invocation handling needed
1274
-
1275
- #### `_bmad-output` Gitignore Patterns
1276
-
1277
- - **During install:** If `_bmad-output` is found in `.gitignore`, remove that line
1278
- - **New installs:** Never add `_bmad-output` to `.gitignore`
1279
- - **User notification:** Print `"_bmad-output is now tracked as project knowledge (not gitignored)"`
1280
- - **Backward compatibility:** Existing projects with `_bmad-output` in `.gitignore` get it removed on next install/update
1281
-
1282
- #### `auto-bug-detection` Skill Pattern
1283
-
1284
- - Standard skill schema: `skill.json` + `SKILL.md` + optional `templates/`
1285
- - `always_load: true` — bug detection active for all agents by default
1286
- - Passive enforcement model — skill content instructs agents on detection/reporting behavior
1287
- - BMAD `critical_actions` ensure the skill is loaded; the skill itself defines what the agent does with it
1288
- - Follows all existing skill authoring patterns from Phase 1
1289
-
1290
- #### Phase 2 Enforcement Additions
1291
-
1292
- **All AI Agents Working on Phase 2 Features MUST:**
1293
- - Never put format-awareness logic in `installer.js` — all agent format knowledge belongs in `agents.js` via `injectionStrategy`
1294
- - Use `<!-- MA-AGENTS-START -->` / `<!-- MA-AGENTS-END -->` markers for all markdown injections — no other marker format
1295
- - Keep `critical_actions` 1-3 identical across all 11 agent customize files — divergence breaks the enforcement model
1296
- - Use additive-only merge for `opencode.json` — never remove or overwrite existing user configuration
1297
-
1298
- **Phase 2 Anti-Patterns:**
1299
- - Hardcoding injection positions (line numbers, byte offsets) instead of using skip pattern parsing
1300
- - Creating per-agent injection logic in `installer.js` instead of driving behavior from `agents.js` registry
1301
- - Modifying bmad-method core files instead of using extension module APIs (NFR17 violation)
1302
- - Adding `_bmad-output` to `.gitignore` (reverses F3 intent)
1303
- - Fetching bmad-method via `npx` instead of using the npm dependency copy (breaks air-gap, NFR20 violation)
1304
- - Letting bmad-method auto-fetch external modules without pre-populating the cache first (breaks air-gap)
1305
- - Including `.git/` directories in `lib/bmad-cache/` — wastes package size, not needed for installation
1306
-
1307
- ## Project Structure & Boundaries
1308
-
1309
- ### Complete Project Directory Structure
1310
-
1311
- ```
1312
- ma-agents/
1313
- ├── package.json — npm package config, version, bin entry
1314
- ├── index.js — programmatic API exports
1315
- ├── README.md — user-facing documentation
1316
- ├── QUICK_START.md — getting started guide
1317
- ├── DEVELOPMENT.md — contributor development guide
1318
- ├── CONTRIBUTING.md — contribution guidelines
1319
- ├── SKILLS_STRUCTURE.md — skill authoring reference
1320
- ├── LICENSE — project license
1321
- ├── .gitignore — excludes node_modules, _bmad/, .claude/ (NOT _bmad-output — tracked as project knowledge per F3)
1322
-
1323
- ├── bin/
1324
- │ └── cli.js — CLI entry point, command routing, interactive wizard
1325
-
1326
- ├── lib/
1327
- │ ├── installer.js — core install engine, manifest management, MANIFEST.yaml gen
1328
- │ ├── agents.js — agent registry (12 agents incl. OpenCode), platform paths, resource maps
1329
- │ ├── bmad.js — BMAD lifecycle: install, update, customize, recompile, bundled cache pre-population
1330
- │ ├── bmad-cache/ — pre-cloned BMAD external modules (committed, built via build:bmad-cache)
1331
- │ │ ├── bmb/ — bmad-builder (with pre-installed node_modules, no .git/)
1332
- │ │ ├── cis/ — bmad-creative-intelligence-suite
1333
- │ │ ├── tea/ — bmad-method-test-architecture-enterprise
1334
- │ │ └── gds/ — bmad-game-dev-studio
1335
- │ ├── bmad-extension/ — BMAD extension module (deployed via --custom-content)
1336
- │ │ ├── module.yaml — code: ma-skills, extends-module: bmm
1337
- │ │ ├── module-help.csv — capability registry for agents + workflows
1338
- │ │ └── skills/ — all agents and workflows as BMAD 6.2.0 skills
1339
- │ │ ├── bmad-ma-agent-sre/ — agent skill: Alex (SRE)
1340
- │ │ │ ├── SKILL.md — full agent definition
1341
- │ │ │ └── bmad-skill-manifest.yaml — type: agent
1342
- │ │ ├── bmad-ma-agent-devops/ — agent skill: Amit (DevOps)
1343
- │ │ ├── bmad-ma-agent-cyber/ — agent skill: Yael (Cyber)
1344
- │ │ ├── bmad-ma-agent-mil498/ — agent skill: Joseph (MIL-498)
1345
- │ │ ├── mil498-sss/ — MIL-498 DID workflow (Complex Workflow)
1346
- │ │ │ ├── SKILL.md
1347
- │ │ │ ├── bmad-skill-manifest.yaml — type: skill
1348
- │ │ │ ├── template.md
1349
- │ │ │ └── prompts/ — step files
1350
- │ │ ├── mil498-ssdd/ ... mil498-hrs/ — (11 MIL-498 DID workflows total)
1351
- │ │ ├── sre-health-check/ ... sre-gitops-status/ — (9 SRE playbooks)
1352
- │ │ ├── devops-configure-infrastructure/ ... devops-sign-docker-image/ — (6 DevOps playbooks)
1353
- │ │ ├── cyber-vulnerability-scan/ ... cyber-verify-image-signature/ — (8 Cyber playbooks)
1354
- │ │ ├── create-bug-story/ — bug story from report (FR61)
1355
- │ │ ├── add-sprint/ — new sprint entry in unified sprint-status.yaml (FR68)
1356
- │ │ ├── modify-sprint/ — update sprint metadata/items in unified file (FR70)
1357
- │ │ ├── add-to-sprint/ — move items from backlog to sprint in unified file (FR69)
1358
- │ │ ├── close-sprint/ — sprint close lifecycle: archive done, disposition remaining (P2-11)
1359
- │ │ ├── remove-from-sprint/ — move items from sprint back to backlog
1360
- │ │ └── open-graph/ — generate knowledge-graph.html and open it (P3-1)
1361
- │ └── bmad-customize/ — .customize.yaml for built-in BMM agents (deployed to _bmad/_config/agents/)
1362
- │ ├── bmm-pm.customize.yaml — critical_actions only
1363
- │ ├── bmm-architect.customize.yaml
1364
- │ ├── bmm-dev.customize.yaml
1365
- │ ├── bmm-qa.customize.yaml
1366
- │ ├── bmm-sm.customize.yaml
1367
- │ ├── bmm-tech-writer.customize.yaml
1368
- │ ├── bmm-ux-designer.customize.yaml
1369
- │ └── core-bmad-master.customize.yaml — bmad-master critical_actions
1370
-
1371
- ├── skills/ — skill library (28 skills incl. auto-bug-detection, self-contained directories)
1372
- │ ├── <skill-name>/
1373
- │ │ ├── skill.json — metadata SSoT
1374
- │ │ ├── SKILL.md — canonical content
1375
- │ │ ├── templates/ — agent-specific templates (optional)
1376
- │ │ │ ├── claude-code.md
1377
- │ │ │ ├── cline.md
1378
- │ │ │ └── generic.md
1379
- │ │ ├── references/ — supporting docs (optional)
1380
- │ │ └── assets/ — templates/configs (optional)
1381
- │ └── MANIFEST.yaml — generated skill index for agent consumption
1382
-
1383
- ├── _bmad/ — BMAD-METHOD installation (git-ignored, installed at runtime)
1384
- │ ├── core/ — BMAD core workflows, tasks, agents
1385
- │ ├── bmm/ — BMM module (workflows, config, templates)
1386
- │ │ ├── config.yaml — project-specific BMM configuration
1387
- │ │ └── workflows/ — BMAD workflow library
1388
- │ └── _config/ — BMAD configuration and catalog
1389
-
1390
- ├── _bmad-output/ — BMAD workflow outputs (version-controlled as project knowledge, NOT git-ignored per F3)
1391
- │ ├── planning-artifacts/ — PRD, architecture, epics
1392
- │ ├── implementation-artifacts/ — stories, specs
1393
- │ │ ├── done/ — archived done/canceled story files (P2-11 close-sprint)
1394
- │ │ └── sprint-status.yaml — unified sprint/backlog tracking (P2-11 — single source of truth)
1395
- │ ├── knowledge-graph.json — NEW: knowledge graph data (P3-1, version-controlled)
1396
- │ └── knowledge-graph.html — NEW: self-contained renderer (P3-1, generated by open-graph skill)
1397
-
1398
- ├── docs/ — generated project documentation
1399
- │ ├── index.md — documentation master index
1400
- │ ├── project-overview.md — executive summary
1401
- │ ├── architecture.md — existing architecture reference
1402
- │ ├── source-tree-analysis.md — annotated directory tree
1403
- │ └── development-guide.md — setup and common tasks
1404
-
1405
- └── tests/ — test directory (Phase 2 — currently empty)
1406
- ├── installer.test.js — installer engine tests
1407
- ├── agents.test.js — agent registry tests
1408
- ├── bmad.test.js — BMAD integration tests
1409
- └── cli.test.js — CLI command tests
1410
- ```
1411
-
1412
- ### Architectural Boundaries
1413
-
1414
- **Module Boundaries (4 modules, strict separation):**
1415
-
1416
- | Module | Responsibility | Talks To | Never Touches |
1417
- |--------|---------------|----------|---------------|
1418
- | `cli.js` | Command parsing, user interaction, wizard flow | installer.js, agents.js, bmad.js | File system directly (delegates to installer) |
1419
- | `installer.js` | Skill install/uninstall, manifest CRUD, MANIFEST.yaml generation | agents.js (for paths/config) | BMAD lifecycle (delegates to bmad.js) |
1420
- | `agents.js` | Agent registry, platform path resolution, resource maps | Nothing (pure data + path functions) | Install logic, BMAD logic |
1421
- | `bmad.js` | BMAD install/update/customize/recompile pipeline | File system (fs operations) | Agent registry, skill install logic |
1422
-
1423
- **Data Flow Boundaries:**
1424
- ```
1425
- User Input → cli.js → installer.js → agents.js (path lookup) → file system
1426
- → bmad.js (if BMAD requested) → file system
1427
- → installer.js (manifest update) → .ma-agents.json
1428
- ```
1429
-
1430
- ### Requirements to Structure Mapping
1431
-
1432
- | FR Category | Primary Module | Directory |
1433
- |-------------|---------------|-----------|
1434
- | Skill Management (FR1-7) | `installer.js` | `skills/`, target agent directories |
1435
- | BMAD Integration (FR8-12) | `bmad.js` | `_bmad/` |
1436
- | MIL-STD-498 Generation (FR13-23) | BMAD workflows | `_bmad/bmm/workflows/` |
1437
- | SDLC Workflow Execution (FR24-33) | BMAD workflows | `_bmad/bmm/workflows/`, `_bmad/core/` |
1438
- | Agent Targeting (FR34-38) | `agents.js` + `installer.js` | `lib/agents.js`, `skills/*/templates/` |
1439
- | Skill Authoring (FR39-43) | `installer.js` (MANIFEST.yaml gen) | `skills/` |
1440
- | Environment & Deployment (FR44-47) | `agents.js` (paths) + `installer.js` (manifest) | Platform-specific agent directories |
1441
- | Audit & Traceability (FR48-50) | BMAD workflows | `_bmad/bmm/workflows/` |
1442
- | Skill Enforcement (FR51-55) | `installer.js` + `agents.js` + `bmad.js` | `lib/bmad-extension/agents/` |
1443
- | OpenCode Support (FR56-58) | `agents.js` + `installer.js` | `.opencode/`, `opencode.json` |
1444
- | Project Knowledge (FR59-60) | `installer.js` | `.gitignore` modification |
1445
- | Bug Management (FR61-65) | BMAD extension workflows + skill | `lib/bmad-extension/skills/`, `skills/auto-bug-detection/` |
1446
- | Sprint Management (FR66-71) | BMAD extension workflows + unified `sprint-status.yaml` (P2-11) | `lib/bmad-extension/skills/`, `_bmad-output/implementation-artifacts/sprint-status.yaml` |
1447
- | Bundled BMAD (FR74-FR76) | `bmad.js` + `lib/bmad-cache/` + `package.json` | `lib/bmad-cache/`, `bmad.js` |
1448
-
1449
- ### Integration Points
1450
-
1451
- **Internal Communication:**
1452
- - `cli.js` calls `installer.js` functions directly (same process, no IPC)
1453
- - `installer.js` calls `agents.js` for path resolution and agent config lookup
1454
- - `cli.js` calls `bmad.js` directly for BMAD lifecycle operations
1455
- - No event bus, no message queue — synchronous function calls within one process
1456
-
1457
- **External Integrations:**
1458
- - npm registry (distribution only — `npx` handles this, not our code)
1459
- - File system (the only external system the tool interacts with at runtime)
1460
- - No network calls, no APIs, no databases
1461
-
1462
- ## Architecture Validation Results
1463
-
1464
- ### Coherence Validation
1465
-
1466
- **Decision Compatibility:** PASS
1467
- - Node.js runtime + plain JavaScript + no build step + no framework — all align
1468
- - 4-module architecture with strict boundaries maps cleanly to the extensibility model
1469
- - Pipeline architectures (5-stage install, 6-stage BMAD) don't conflict
1470
- - P2-1 (TOP injection) and P2-2 (JSON injection) are independent strategies driven by `agents.js` registry
1471
- - P2-6 rev (explicit params) + P2-9 (module restructure) work together: `--custom-content` deploys the restructured module, explicit params ensure correct tool/module selection
1472
- - P2-9 (agents as skills) + P2-4 (critical_actions) — clean separation: custom agents embed critical_actions in SKILL.md, built-in agents get critical_actions via `.customize.yaml`
1473
- - P2-10 (multi-repo) integrates cleanly: config values written at install time, consumed by BMAD workflows at runtime
1474
- - P2-11 (unified sprint-status) + P2-10 (multi-repo) — `sprint_management_path` resolves file location, unified file eliminates cross-repo dual-write risk
1475
- - P2-11 (unified sprint-status) + P2-5 (extension workflows) — all 6 sprint workflows target the same single file, movement semantics enforce item uniqueness
1476
- - bmad-method v6.2.0 pin aligns with skill-based module structure in P2-9
1477
-
1478
- **Note:** P2-3 (Extension Module Structure, 2026-03-11) is now HISTORICAL — superseded by P2-9 which restructures the extension module to follow BMAD 6.2.0 conventions. P2-4 (critical_actions) references updated: custom agents' critical_actions now live in SKILL.md (not `.customize.yaml`); built-in agent customizations now live in `lib/bmad-customize/` (not `lib/bmad-extension/agents/`).
1479
-
1480
- **Pattern Consistency:** PASS
1481
- - Agent skill naming (`bmad-ma-agent-sre`) follows verified CIS convention (`bmad-cis-agent-innovation-strategist`)
1482
- - Workflow skill naming (`mil498-srs`, `sre-health-check`) follows CIS convention (`bmad-cis-innovation-strategy`)
1483
- - `bmad-skill-manifest.yaml` uses same fields as CIS (type, name, displayName, module)
1484
- - `.customize.yaml` array syntax for critical_actions matches BMAD 6.2.0 documentation
1485
- - Naming conventions (camelCase code, kebab-case files, snake_case skill.json) remain consistent
1486
-
1487
- **Structure Alignment:** PASS
1488
- - `lib/bmad-extension/skills/` mirrors CIS `src/skills/` pattern
1489
- - `lib/bmad-customize/` cleanly separates module-owned agents from built-in agent customizations
1490
- - `--custom-content` deployment replaces manual file copying — follows BMAD's official deployment mechanism
1491
- - Module boundary table still holds: `bmad.js` handles extension deployment + customize deployment
1492
-
1493
- ### Requirements Coverage Validation
1494
-
1495
- **Functional Requirements Coverage:**
1496
-
1497
- | FR Category | Architectural Support | Status |
1498
- |-------------|----------------------|--------|
1499
- | Skill Management (FR1-7) | Install pipeline + manifest manager | COVERED |
1500
- | BMAD Integration (FR8-12) | BMAD pipeline architecture | COVERED |
1501
- | MIL-STD-498 Generation (FR13-23) | BMAD workflows (via extension module skills) | COVERED |
1502
- | SDLC Workflows (FR24-33) | BMAD workflows | COVERED |
1503
- | Agent Targeting (FR34-38) | Agent registry + template resolution chain | COVERED |
1504
- | Skill Authoring (FR39-43) | Skill schema contract + MANIFEST.yaml generation | COVERED |
1505
- | Environment & Deployment (FR44-47) | Cross-platform paths + offline operation | COVERED |
1506
- | Audit & Traceability (FR48-50) | BMAD workflows + ai-audit-trail skill | COVERED |
1507
- | Skill Enforcement (FR51-55) | P2-1 + P2-9 + P2-4: injection strategies, agent SKILL.md, built-in .customize.yaml | COVERED |
1508
- | OpenCode Support (FR56-57) | P2-2: JSON injection + new agent registry entry | COVERED |
1509
- | Project Knowledge (FR58-59) | Gitignore pattern: remove `_bmad-output` from `.gitignore` | COVERED |
1510
- | Bug Management (FR60-64) | P2-5: extension workflow skill + `auto-bug-detection` skill | COVERED |
1511
- | Sprint Management (FR65-71) | P2-5 + P2-11: 6 extension workflow skills (add/modify/add-to/remove-from/close sprint) operating on unified `sprint-status.yaml` | COVERED |
1512
- | Agent Activity Dashboard (FR87-93) | Deferred to Phase 3 | N/A |
1513
- | Knowledge Graph (FR141-157) | P3-1: JSON graph file, files table, skill emission, open-graph skill, self-contained renderer | COVERED |
1514
- | Agent Conversion (FR94-97) | P2-9: agent skill folders with SKILL.md + bmad-skill-manifest.yaml | COVERED |
1515
- | MIL-498 Workflow Conversion (FR98-100) | P2-9: Complex Workflow skills with prompts/ step files | COVERED |
1516
- | SRE/DevOps/Cyber Conversion (FR101-103) | P2-9: skill packages with SKILL.md | COVERED |
1517
- | Module Architecture (FR104-106) | P2-9: module.yaml with code field, skills/ layout, dual-layer eliminated | COVERED |
1518
- | Upgrade Path (FR107-110) | P2-9: migration detection, backup, upgrade, merge, cleanup | COVERED |
1519
- | Multi-Repo Layout (FR111-122) | P2-10: wizard, config, project-layout.yaml, path resolution | COVERED |
1520
- | Bundled Install + Params (FR74-76, FR123-127) | P2-6 rev: buildBmadArgs(), explicit flags, --custom-content | COVERED |
1521
- | Knowledge Graph (FR141-157) | P3-1: `lib/bmad-extension/skills/open-graph/`, `_bmad-output/knowledge-graph.json`, emitting BMAD skills | COVERED |
1522
- | Developer Infrastructure (FR73) | Tests directory defined | COVERED |
1523
- | Methodology Onboarding (FR72) | Bundled presentation deployment | COVERED |
1524
- | Project Context (FR79-86) | P2-7: template-based generation, platform paths, critical_actions | COVERED |
1525
-
1526
- **Non-Functional Requirements Coverage:**
1527
-
1528
- | NFR | Architectural Support | Status |
1529
- |-----|----------------------|--------|
1530
- | NFR1-4 (Security) | No network calls, plain text content, additive-only ops | COVERED |
1531
- | NFR5-8 (Integration Reliability) | Pipeline ordering, atomic manifests, additive installs | COVERED |
1532
- | NFR9-12 (Portability) | path.join centralization, template resolution chain, Node LTS | COVERED |
1533
- | NFR13-15 (Maintainability) | Config-driven agent registry, directory-scanned skills, backward compat | COVERED |
1534
- | NFR16-19 (BMAD Extension) | Module identity via code field, zero core mods, additive JSON, dual invocation | COVERED |
1535
- | NFR20-21 (Bundled Install) | Version pinning to 6.2.0, deterministic bundled output | COVERED |
1536
- | NFR22-25 (Project Context) | Template-based, idempotent, version comment | COVERED |
1537
- | NFR26-28 (Dashboard) | Deferred to Phase 3 | N/A |
1538
- | NFR29 (Atomic migration) | P2-9: backup before, restore on failure | COVERED |
1539
- | NFR30 (Functional equivalence) | P2-9: same menus, same workflows in new format | COVERED |
1540
- | NFR31 (Lint gate compliance) | P2-9: follows verified CIS module pattern | COVERED |
1541
- | NFR32 (Output equivalence) | P2-9: same templates, same step files | COVERED |
1542
- | NFR33 (Anti-zombie idempotency) | Depends on bmad-method setup skill behavior | MINOR GAP |
1543
- | NFR34-37 (Multi-Repo) | P2-10: backward compat, air-gapped, deterministic, config-driven | COVERED |
1544
- | NFR38-41 (Knowledge Graph) | P3-1: pre-computed layout + SVG, copy-pattern JSON, additive-only emission, inlined self-contained HTML | COVERED |
1545
-
1546
- ### Decision P3-1: BMAD Knowledge Graph (FR141–FR157, NFR38–NFR41) (2026-04-07)
1547
-
1548
- **Decision:** Static JSON graph file with a central files table, BMAD-skill-side emission, and a self-contained HTML renderer delivered as a BMAD extension skill
1549
-
1550
- **Problem:** BMAD generates a rich chain of artifacts (PRD → Architecture → Epics → Stories) but the relationships between them exist only implicitly in document content. There is no machine-readable record of why a decision was made, what requirement drove an epic, or which UX design shaped an acceptance criterion. Existing solutions (traceability matrices, Jira links) are hierarchical, manually maintained, and opaque to agents. We need an any-to-any knowledge graph that:
1551
- - Is built automatically as BMAD skills execute — no human curation
1552
- - Supports non-hierarchical references (a story AC can reference the epic, an architecture section, and a UX design simultaneously)
1553
- - Is not bound to files in the project repository — external documents (Confluence pages, remote URLs) must be first-class nodes
1554
- - Is readable and writable by any LLM without a schema reference document
1555
- - Renders as an interactive visual graph accessible from VSCode or browser
1556
-
1557
- **Architecture — Three-Layer Design:**
1558
-
1559
- ```
1560
- Layer 1: knowledge-graph.json — the graph (data, version-controlled)
1561
- Layer 2: BMAD skill emission hooks — populate the graph as artifacts are produced
1562
- Layer 3: knowledge-graph.html — the renderer (self-contained, generated by open-graph skill)
1563
- ```
1564
-
1565
- **Layer 1: Graph File Schema**
1566
-
1567
- `_bmad-output/knowledge-graph.json` — single file, flat structure, no nesting beyond 2 levels:
1568
-
1569
- ```json
1570
- {
1571
- "meta": {
1572
- "schema_version": "1.0",
1573
- "project": "agents",
1574
- "generated": "2026-04-07T10:00:00Z",
1575
- "last_updated": "2026-04-07T10:00:00Z",
1576
- "file_count": 4,
1577
- "node_count": 127,
1578
- "edge_count": 89
1579
- },
1580
- "files": {
1581
- "prd": {
1582
- "pointer": "_bmad-output/planning-artifacts/prd.md",
1583
- "title": "PRD",
1584
- "pointer_type": "relative_path"
1585
- },
1586
- "arch": {
1587
- "pointer": "_bmad-output/planning-artifacts/architecture.md",
1588
- "title": "Architecture",
1589
- "pointer_type": "relative_path"
1590
- },
1591
- "ux-conf": {
1592
- "pointer": "https://confluence.example.com/display/PROJ/UX+Design",
1593
- "title": "UX Design (Confluence)",
1594
- "pointer_type": "url"
1595
- },
1596
- "epics": {
1597
- "pointer": "_bmad-output/planning-artifacts/epics.md",
1598
- "title": "Epics",
1599
- "pointer_type": "relative_path"
1600
- }
1601
- },
1602
- "nodes": [
1603
- {
1604
- "id": "prd#functional-requirements",
1605
- "file": "prd",
1606
- "anchor": "functional-requirements",
1607
- "title": "Functional Requirements",
1608
- "type": "requirement"
1609
- },
1610
- {
1611
- "id": "arch#decision-p3-1-bmad-knowledge-graph",
1612
- "file": "arch",
1613
- "anchor": "decision-p3-1-bmad-knowledge-graph",
1614
- "title": "Decision P3-1: BMAD Knowledge Graph",
1615
- "type": "architecture"
1616
- }
1617
- ],
1618
- "edges": [
1619
- {
1620
- "id": "e-arch-p3-1-prd-fr141",
1621
- "from": "arch#decision-p3-1-bmad-knowledge-graph",
1622
- "to": "prd#fr141",
1623
- "type": "implements",
1624
- "label": "implements knowledge graph data model requirement",
1625
- "created_by": "Alon",
1626
- "agent": "claude-code",
1627
- "created_at": "2026-04-07T10:00:00Z"
1628
- }
1629
- ]
1630
- }
1631
- ```
1632
-
1633
- **Files table design rationale:**
1634
- - `file-id` (e.g., `prd`, `arch`, `ux-conf`) is a short stable identifier chosen by the skill at registration time. Skills use kebab-case slugs derived from the document type or filename
1635
- - `pointer_type` is one of `relative_path`, `absolute_path`, `url` — drives both navigation (how to open the file) and display (external icon for URLs)
1636
- - `relative_path` pointers are relative to the project root (same root as `_bmad-output/`)
1637
- - Once a `file-id` is registered, it is permanent — skills reference it in node and edge `from`/`to` fields. Renaming a file updates the `pointer` field only, not the `file-id`
1638
-
1639
- **Node and edge design rationale:**
1640
- - Anchors are derived from Markdown heading text using GitHub slug rules: lowercase, spaces → hyphens, punctuation stripped. This matches VSCode's internal link resolution — the same anchor used in `[text](file.md#anchor)` links
1641
- - Edge `type` vocabulary covers the full relationship space: `implements` (arch → req), `derives-from` (epic → req), `traces-to` (story → epic), `informed-by` (any cross-document influence without strict hierarchy), `validates` (review → artifact), `refines` (edit → earlier version)
1642
- - `informed-by` is the key non-hierarchical type — it records influence without asserting derivation or implementation
1643
- - Counts in `meta` are maintained by the writer. LLMs add the deltas after append; the counts enable quick integrity checks without array scanning
1644
-
1645
- **LLM-writability contract (NFR39):**
1646
- The JSON is designed so that a model with no prior knowledge of the schema can correctly add an entry by observing the existing structure:
1647
- 1. Read the `files` object — copy the pattern to register a new file
1648
- 2. Read the `nodes` array — copy the pattern to add a new node
1649
- 3. Read the `edges` array — copy the pattern to add a new edge
1650
- 4. Update the three counts in `meta`
1651
-
1652
- No external schema, no JSONSchema validation, no reserved keywords beyond the field names visible in the file.
1653
-
1654
- **Layer 2: BMAD Skill Emission**
1655
-
1656
- Skills emit to the graph as a post-artifact step — after writing the document, before returning to the user.
1657
-
1658
- **Emission contract:**
1659
- ```
1660
- 1. Register source file in `files` if not present — assign file-id, set pointer and pointer_type
1661
- 2. Register target file(s) in `files` if not present (for upstream artifacts referenced as edge targets)
1662
- 3. For each heading in the produced artifact: add node if not already present (update title if exists)
1663
- 4. For each relationship to an upstream artifact: add edge if not present (update created_at, agent if exists)
1664
- 5. Update meta.file_count, meta.node_count, meta.edge_count, meta.last_updated
1665
- 6. Atomic write: read current JSON → apply additions → write back
1666
- ```
1667
-
1668
- **Read-modify-write atomicity (FR149):** Each skill emits in a single read-modify-write cycle:
1669
- ```javascript
1670
- // In each emitting skill — pseudocode pattern
1671
- async function emitToGraph(projectRoot, emission) {
1672
- const graphPath = path.join(projectRoot, '_bmad-output', 'knowledge-graph.json');
1673
- const graph = fs.existsSync(graphPath)
1674
- ? JSON.parse(fs.readFileSync(graphPath, 'utf8'))
1675
- : { meta: initMeta(), files: {}, nodes: [], edges: [] };
1676
-
1677
- // Register files
1678
- for (const [fileId, fileEntry] of Object.entries(emission.files)) {
1679
- if (!graph.files[fileId]) graph.files[fileId] = fileEntry;
1680
- else { graph.files[fileId].pointer = fileEntry.pointer; graph.files[fileId].title = fileEntry.title; }
1681
- }
1682
- // Add nodes (no duplicates)
1683
- for (const node of emission.nodes) {
1684
- const existing = graph.nodes.find(n => n.id === node.id);
1685
- if (!existing) graph.nodes.push(node);
1686
- else existing.title = node.title;
1687
- }
1688
- // Add edges (no duplicates)
1689
- for (const edge of emission.edges) {
1690
- const existing = graph.edges.find(e => e.from === edge.from && e.to === edge.to && e.type === edge.type);
1691
- if (!existing) graph.edges.push(edge);
1692
- else { existing.created_at = edge.created_at; existing.agent = edge.agent; }
1693
- }
1694
- // Update counts
1695
- graph.meta.file_count = Object.keys(graph.files).length;
1696
- graph.meta.node_count = graph.nodes.length;
1697
- graph.meta.edge_count = graph.edges.length;
1698
- graph.meta.last_updated = new Date().toISOString();
1699
-
1700
- fs.writeFileSync(graphPath, JSON.stringify(graph, null, 2), 'utf8');
1701
- }
1702
- ```
1703
-
1704
- **Skills that emit (and what they emit):**
1705
-
1706
- | Skill | Source Nodes | Target Nodes | Edge Types |
1707
- |---|---|---|---|
1708
- | `bmad-create-prd` | All PRD headings | — | — (seeds nodes only; upstream source) |
1709
- | `bmad-create-architecture` | All architecture decision headings | Corresponding PRD requirement headings | `implements` |
1710
- | `bmad-create-ux-design` | All UX section headings | Corresponding PRD requirement headings | `derives-from` |
1711
- | `bmad-create-epics-and-stories` | All epic headings | PRD feature headings; architecture decision headings | `derives-from`, `informed-by` |
1712
- | `bmad-create-story` | Story heading + AC headings | Epic heading; architecture section headings; UX section headings | `traces-to`, `informed-by` |
1713
- | `bmad-dev-story` | Story implementation notes | Story spec heading | `refines` |
1714
- | `bmad-validate-prd`, `bmad-code-review` | Validation report heading | Validated artifact heading | `validates` |
1715
-
1716
- **Heading → anchor resolution:**
1717
- Skills derive anchors using the same slug algorithm as GitHub Markdown (lowercase, spaces → hyphens, strip non-alphanumeric except hyphens). This ensures `[text](file.md#anchor)` links constructed from graph data are valid clickable links in any Markdown renderer.
1718
-
1719
- ```javascript
1720
- function headingToAnchor(heading) {
1721
- return heading
1722
- .toLowerCase()
1723
- .replace(/[^\w\s-]/g, '')
1724
- .replace(/\s+/g, '-')
1725
- .replace(/-+/g, '-')
1726
- .trim();
1727
- }
1728
- // "Decision P3-1: BMAD Knowledge Graph" → "decision-p3-1-bmad-knowledge-graph"
1729
- ```
1730
-
1731
- **Non-hierarchical reference resolution:**
1732
- When a skill produces a story, it inspects all documents it was given as input — the epic, the architecture doc, any UX spec referenced in the task context — and emits `informed-by` edges for each. The skill does not assume a single upstream parent; all documents that shaped the output become edge targets. This makes the graph genuinely any-to-any rather than a tree with `derives-from` edges.
1733
-
1734
- **Layer 3: open-graph Skill and Renderer**
1735
-
1736
- The `open-graph` skill is a new BMAD extension skill in `lib/bmad-extension/skills/open-graph/`:
1737
- ```
1738
- lib/bmad-extension/skills/open-graph/
1739
- ├── SKILL.md — entrypoint: reads knowledge-graph.json, generates knowledge-graph.html, opens it
1740
- └── bmad-skill-manifest.yaml — type: skill
1741
- ```
1742
-
1743
- **Renderer generation (FR153):**
1744
- The skill reads `_bmad-output/knowledge-graph.json` and generates `_bmad-output/knowledge-graph.html` — a fully self-contained single-file web application. All JavaScript and CSS are inlined (no `<script src>` or `<link href>` tags pointing to external resources). The graph visualization library (a lightweight force-simulation implementation, ~30KB minified) is embedded directly in the HTML.
1745
-
1746
- **VSCode detection and opening (FR153):**
1747
- ```javascript
1748
- // In open-graph SKILL.md — detection logic
1749
- const isVSCode = process.env.TERM_PROGRAM === 'vscode' || process.env.VSCODE_PID !== undefined;
1750
- if (isVSCode) {
1751
- execSync(`code "${htmlPath}"`); // opens in VSCode Simple Browser / Live Preview
1752
- } else {
1753
- const openCmd = process.platform === 'win32' ? 'start' :
1754
- process.platform === 'darwin' ? 'open' : 'xdg-open';
1755
- execSync(`${openCmd} "${htmlPath}"`);
1756
- }
1757
- ```
1758
-
1759
- **Renderer features (FR154–FR156):**
1760
- - **Graph canvas:** Nodes rendered as labeled circles, color-coded by `type` (6 colors: requirement=blue, architecture=orange, epic=purple, story=green, design=teal, test=red). Edges rendered as directed arrows with arrowheads indicating direction
1761
- - **Click to navigate:** Clicking a node constructs a navigation action based on the file's `pointer_type`:
1762
- - `relative_path` / `absolute_path`: constructs `vscode://file/{absolute-path}#{anchor}` URI and navigates (VSCode opens directly to heading). Fallback: displays a copyable Markdown link `[title](file.md#anchor)`
1763
- - `url`: opens the registered URL in a new browser tab (Confluence pages, external docs)
1764
- - **Edge tooltip (FR155):** Hovering over an edge line shows: type, label (if set), created_by, agent, created_at
1765
- - **Filtering (FR156):** Checkboxes above canvas for node types and edge types. Selecting a node highlights its direct neighbors and their edges, dims all others
1766
- - **Self-contained (FR157, NFR41):** No CDN dependencies, no `fetch()` calls, no WebSockets. The HTML file works identically offline, on an intranet, and in an air-gapped environment
1767
-
1768
- **Renderer HTML structure:**
1769
- ```html
1770
- <!DOCTYPE html>
1771
- <html>
1772
- <head>
1773
- <meta charset="utf-8">
1774
- <title>Knowledge Graph — {project}</title>
1775
- <style>/* all CSS inlined */</style>
1776
- </head>
1777
- <body>
1778
- <div id="controls"><!-- filter checkboxes --></div>
1779
- <svg id="graph"><!-- D3-lite force simulation, fully inlined --></svg>
1780
- <div id="tooltip"><!-- edge hover panel --></div>
1781
- <script>
1782
- const graphData = /* JSON.stringify(graph) embedded here at generation time */;
1783
- /* all graph rendering logic inlined */
1784
- </script>
1785
- </body>
1786
- </html>
1787
- ```
1788
-
1789
- The graph data is embedded as an inline JSON literal at generation time — not fetched at runtime. This makes the file fully portable: copy it anywhere and it renders correctly with no server.
1790
-
1791
- **Performance contract (NFR38):**
1792
- Target: 500 nodes / 1000 edges render to first interactive frame in under 3 seconds. Achieved via:
1793
- - Force simulation with initial layout pre-computed for the first 100 ticks before display (no janky startup animation)
1794
- - Nodes and edges rendered as SVG elements (not Canvas) for interactive hit-testing without re-rendering
1795
- - Filtering implemented by CSS `display: none` on filtered elements — no re-layout on filter change
1796
-
1797
- **Extension module integration:**
1798
- The `open-graph` skill is registered in `lib/bmad-extension/module-help.csv` in the `anytime` phase. Total extension module skill count increases from 44 to 45:
1799
-
1800
- ```
1801
- lib/bmad-extension/skills/open-graph/ — new (graph visualization)
1802
- ```
1803
-
1804
- **`_bmad-output` additions:**
1805
- ```
1806
- _bmad-output/
1807
- ├── knowledge-graph.json — NEW: knowledge graph data (version-controlled)
1808
- └── knowledge-graph.html — NEW: renderer (generated artifact, can gitignore or commit)
1809
- ```
1810
-
1811
- `knowledge-graph.json` is version-controlled project knowledge — tracked like `prd.md` and `architecture.md`. `knowledge-graph.html` is a generated artifact from it — teams may choose to gitignore it (it can always be regenerated from the JSON) or commit it for quick access. This is a project-level convention, not enforced by the installer.
1812
-
1813
- **FR coverage for this decision:**
1814
-
1815
- | FR | Coverage |
1816
- |---|---|
1817
- | FR141 (nodes as file-id#anchor) | `nodes` array schema with `file`, `anchor`, `id` fields |
1818
- | FR142 (edges with type + provenance) | `edges` array schema with all provenance fields; `informed-by` edge type added |
1819
- | FR143 (bidirectional index) | Renderer builds forward + backward adjacency maps from flat edges array at load time — no separate index storage needed |
1820
- | FR144 (meta/files/nodes/edges structure) | Top-level JSON structure |
1821
- | FR145 (files table with pointer_type) | `files` object with `pointer`, `title`, `pointer_type` |
1822
- | FR146 (node schema) | Node object fields |
1823
- | FR147 (edge schema) | Edge object fields |
1824
- | FR148 (meta schema with counts) | Meta object with `file_count`, `node_count`, `edge_count` |
1825
- | FR149 (automatic emission, atomic write) | `emitToGraph()` pattern with read-modify-write |
1826
- | FR150 (file registration, external URL support) | `files` table pre-registration in `emitToGraph()` |
1827
- | FR151 (non-hierarchical multi-source emission) | Skills inspect all input docs; `informed-by` type for non-strict influence |
1828
- | FR152 (no duplicates, provenance preservation) | Duplicate check in `emitToGraph()` — title updates allowed, provenance fields never overwritten on existing edges |
1829
- | FR153 (open-graph skill, VSCode/browser) | VSCode env detection + platform-appropriate open command |
1830
- | FR154 (interactive viz, node navigation) | Color-coded nodes, directed edges, VSCode URI navigation, URL tab opening |
1831
- | FR155 (edge tooltip with provenance) | Hover tooltip with all edge fields |
1832
- | FR156 (filtering, neighbor highlight) | Filter checkboxes + neighbor highlight |
1833
- | FR157 (no external dependencies) | All JS/CSS inlined; graph data embedded at generation time |
1834
-
1835
- **NFR coverage:**
1836
-
1837
- | NFR | Coverage |
1838
- |---|---|
1839
- | NFR38 (≤3s for 500/1000) | Pre-computed initial layout, SVG hit-testing, CSS-based filtering |
1840
- | NFR39 (LLM-writable without schema) | Flat structure with copy-the-pattern writability; examples embedded in meta and first entries |
1841
- | NFR40 (additive-only emission) | `emitToGraph()` never deletes; updates only title (nodes) and created_at/agent (edges) |
1842
- | NFR41 (air-gapped, no server) | Data embedded as JSON literal; no fetch/CDN/WebSocket |
1843
-
1844
- **Affects:**
1845
- - `lib/bmad-extension/skills/open-graph/` (new skill — SKILL.md + bmad-skill-manifest.yaml)
1846
- - `lib/bmad-extension/module-help.csv` (new entry for open-graph in `anytime` phase)
1847
- - BMAD skills that emit: `bmad-create-architecture`, `bmad-create-epics-and-stories`, `bmad-create-story`, `bmad-dev-story`, `bmad-create-ux-design`, `bmad-validate-prd`, `bmad-code-review` (each gains an emit step in their workflow)
1848
- - `_bmad-output/knowledge-graph.json` (new version-controlled file, created on first skill emission)
1849
- - `_bmad-output/knowledge-graph.html` (new generated file, created/refreshed by open-graph skill)
1850
-
1851
- ### Decision P3-2: Software Quality Assurance (SQA) Agent — Gad (FR158–FR171, NFR42–NFR43) (2026-04-08)
1852
-
1853
- **Problem:** The platform has no structured mechanism for auditing project quality across multiple dimensions (process compliance, traceability, standards conformance). Quality Engineers need purpose-built workflows to assess whether a project complies with its own planning artifacts and with recognized lifecycle standards such as IEEE/ISO/IEC 12207.
1854
-
1855
- **Decision:** Add a fifth specialized agent persona — Gad, the SQA Engineer — built on the existing BMAD 6.2.0 skill-based agent pattern established by Epic 15. Gad uses the `bmm-qa` BMAD agent persona as its host and delivers quality workflows as discrete BMAD extension skills. Two workflows are defined for the initial release:
1856
-
1857
- 1. **Project Audit** (`sqa-audit`) — a five-dimension quality audit (code-to-story traceability, stories-to-architecture/PRD alignment, process compliance, sprint health, release state)
1858
- 2. **IEEE/ISO/IEC 12207 Compliance** (`sqa-ieee12207`) — a 23-process-area compliance assessment against the international software lifecycle standard
1859
-
1860
- **Architecture fit:**
1861
-
1862
- | Concern | Resolution |
1863
- |---------|-----------|
1864
- | Agent host | Binds to `bmm-qa` — the existing BMAD built-in QA persona. No new BMAD agent slot required; agent count stays at 11. Specialized agent count grows from 4 to 5 |
1865
- | Skill structure | Follows P2-9 (BMAD 6.2.0 Agent Architecture Migration) — `lib/bmad-extension/skills/bmad-ma-agent-sqa/` (agent) + `lib/bmad-extension/skills/sqa-audit/` + `lib/bmad-extension/skills/sqa-ieee12207/` (workflows) |
1866
- | Read pattern | Workflows are read-only against project artifacts — no new file structures introduced. Inputs: `prd.md`, `architecture.md`, `epics.md`, `sprint-status.yaml`, test files, git history |
1867
- | Write pattern | Each workflow produces one markdown report in `{output_folder}` using the `sqa-{workflow}-report-{YYYY-MM-DD}.md` naming convention — consistent with other agent report outputs |
1868
- | Gap remediation | After any compliance workflow, Gad offers to invoke `create-bug-story` for each P1 gap — reusing existing bug story infrastructure (FR171) |
1869
- | Registration | Both workflow skills and the agent skill are registered in `module-help.csv` under the `ma-skills` module, consistent with the registration pattern for all other specialized agent skills |
1870
- | Test coverage | `test/extension-module-restructure.test.js` tracks the new skills in `expectedSqaSkills` and updates skill and CSV entry counts |
1871
-
1872
- **Alternatives considered:**
1873
- - *Add quality workflows to the existing `bmm-qa` built-in agent directly:* Rejected — built-in agent modifications require BMAD upstream PRs, violating the override-via-extension policy (feedback memory).
1874
- - *Add audit capabilities to the existing Cyber agent (Yael):* Rejected — Cyber focuses on security threat modeling and hardening. SQA is a distinct discipline covering process compliance and traceability, warranting a dedicated persona.
1875
-
1876
- **IEEE/ISO/IEC 12207 coverage model:**
1877
- The workflow embeds all process area definitions and rating criteria inline in `SKILL.md` (air-gapped, NFR43). It does not attempt to formally certify compliance — it produces a compliance posture report based on evidence available in project artifacts. Organization-scope processes (HR, infrastructure management) are flagged as such and not evaluated from artifacts alone.
1878
-
1879
- **Files affected:**
1880
- - `lib/bmad-extension/skills/bmad-ma-agent-sqa/` (new — agent skill)
1881
- - `lib/bmad-extension/skills/sqa-audit/` (new — Project Audit workflow skill)
1882
- - `lib/bmad-extension/skills/sqa-ieee12207/` (new — IEEE 12207 compliance workflow skill)
1883
- - `lib/bmad-extension/module-help.csv` (new entries: `bmad-ma-agent-sqa`, `sqa-audit`, `sqa-ieee12207`)
1884
- - `test/extension-module-restructure.test.js` (updated skill counts: 58→61, CSV rows: 58→61, new `expectedSqaSkills` array)
1885
-
1886
- ---
1887
-
1888
- ### Decision P3-3: Local-LLM / On-Prem Agent Tuning Profile (FR172–FR179, NFR44–NFR47) (2026-04-13)
1889
-
1890
- **Problem:** The primary deployment target for ma-agents is air-gapped enterprise networks where teams use AI coding agents (Claude Code, Cline, Roo Code, OpenCode) against on-prem LLMs such as Nemotron Super 49B — not Anthropic's Claude. Field experience documented in `optimizing-local-llm-coding-agents-bmad.md` (2026-04 conversation) shows local LLMs misinterpret Claude-tuned system prompts: they create files when asked questions, dump output into `~/.claude/`, hallucinate Claude Code's `str_replace_editor` tool, skip BMAD planning to start coding, and overthink simple prompts because reasoning mode is on by default. The agent host tools (Roo Code, Cline, OpenCode) actually expose strong guardrail mechanisms — file-regex restrictions, Plan/Architect modes, permission gating — but ma-agents does not currently generate the configuration that activates them. Standards-profile installs (Claude on web, Anthropic API) do not need local-LLM-specific guardrails (`/no_think`, `str_replace_editor` warnings) and arguably regress when those are present.
1891
-
1892
- **Decision:** Introduce a two-layer install-time tuning model driven by a single user-facing choice — **profile** — captured during the install wizard and persisted in `.ma-agents.json`.
1893
-
1894
- 1. **Universal layer (all profiles):** Expand the existing per-tool instruction injection to enforce text-vs-file discipline and BMAD phase boundaries through richer templates — including a new `.roomodes` template for Roo Code that applies file-regex restrictions per BMAD phase. These guardrails benefit every install regardless of model, because they prevent premature implementation and out-of-scope writes that affect Claude users too.
1895
- 2. **On-prem layer (profile=on-prem only):** Layer model-specific guardrails on top of the universal block — `/no_think` planning prefix, no-home-dir-writes rule, no-`str_replace_editor` rule, reasoning-mode/sampling guidance, BMAD persona phase-aware prompt prefixes.
1896
-
1897
- The inference-server tuning (vLLM flags, quantization, context length) is documentation-only at `docs/deployment/vllm-nemotron.md` — the installer does not manage the serving stack.
1898
-
1899
- **Architecture fit:**
1900
-
1901
- | Concern | Resolution |
1902
- |---------|-----------|
1903
- | User-facing surface | One question added to the install wizard (`Is this an on-prem / air-gapped install using a local LLM?`). Persisted as `"profile": "on-prem"\|"standard"` in `.ma-agents.json`. `--yes` defaults to `standard` (no prompt) for CI/CD. No `--profile=` CLI flag is exposed — on-prem CI/CD is served by committing `.ma-agents.json` with the persisted value to the repo (same pattern repo-layout config already uses) |
1904
- | Universal injection extension | Existing marker-based injection in [lib/installer.js](lib/installer.js) is extended with richer content; agent registry in [lib/agents.js](lib/agents.js) gains an optional `extraInstructionTemplates` field per agent for tool-specific files (notably `.roomodes` for Roo Code) |
1905
- | Per-tool templates | New files under [lib/templates/](lib/templates/): `instruction-block-universal.template.md`, `instruction-block-onprem.template.md`, `roomodes.template.yaml`, `agents-md.template.md` (OpenCode), `clinerules.template.md` (Cline). The CLAUDE.md/`.clinerules`/`.roo/rules/` markdown injection composes universal + (optionally) on-prem block within the same `<!-- MA-AGENTS-START -->` markers. The `.roomodes` and `AGENTS.md` files are stamped as separate per-tool artifacts |
1906
- | Roo Code BMAD modes | The `.roomodes` template defines four custom modes (`bmad-pm`, `bmad-architect`, `bmad-techlead`, `bmad-dev`) with `groups` declaring `fileRegex` restrictions per BMAD phase. Enforcement happens at Roo Code's tool-call layer (`FileRestrictionError`) — not just in the prompt. This is the highest-leverage application-layer guardrail in the design |
1907
- | BMAD persona phase prefix | When profile=on-prem, [lib/bmad-customize/](lib/bmad-customize/) `*.customize.yaml` files gain an additional system-prompt prefix block keyed by phase. Planning personas (PM, Architect, SM, Analyst, Tech Writer, UX, SQA) get reasoning-OFF / text-response guidance; implementation personas (Dev Amelia, Solo Dev Barry) get reasoning-ON / careful-implementation guidance. The customize loader composes the prefix only when profile=on-prem; standard profile customizations are unchanged |
1908
- | Profile read site | A small new module [lib/profile.js](lib/profile.js) wraps profile read/write against `.ma-agents.json` with a single-source-of-truth API (`getProfile()`, `setProfile()`, `resolveProfile({ persisted, yesMode })`). All callers in installer/customize go through it |
1909
- | Log string formats | Canonical formats (pin these exactly): `Using profile: on-prem (from .ma-agents.json)` / `Using profile: standard (from .ma-agents.json)` / `Using profile: standard (from --yes default)` / `Using profile: <value> (from wizard)`. Tests and docs reference these strings verbatim |
1910
- | OpenCode JSON merge | OpenCode's existing JSON-merge injection into `opencode.json::instructions[]` is reused unchanged. The expanded `AGENTS.md` is added to the instructions array; on-prem block is appended only when profile=on-prem |
1911
- | Idempotency | Profile-driven content is rewritten only inside marker blocks (`<!-- MA-AGENTS-START -->`/`<!-- MA-AGENTS-END -->`) and inside ma-agents-owned `customModes` slugs in `.roomodes`. User content outside markers is preserved (NFR46) |
1912
- | Reference deployment doc | `docs/deployment/vllm-nemotron.md` ships in the repo, not under `lib/templates/`. It is not stamped into target projects. Linked from README's on-prem section |
1913
-
1914
- **Alternatives considered:**
1915
- - *CLI flag only (`--profile=on-prem`), no interactive prompt:* Rejected — most users run the wizard, won't pass the flag, and would lose the on-prem guardrails entirely.
1916
- - *Both interactive prompt AND `--profile=` CLI flag as override:* Rejected (2026-04-14 correction) — the product-owner decision is that profile is user-facing or team-facing, not per-invocation. Teams with on-prem CI/CD commit `.ma-agents.json` with the persisted value to the repo; this is the same pattern already used for repo-layout config and avoids the operational footgun of a CI job forgetting the flag. The user-feedback model is "ask once, persist forever," matching the existing wizard pattern.
1917
- - *Default everyone to on-prem guardrails:* Rejected — `/no_think` and `str_replace_editor` warnings are noise for Claude-on-web users and regress that path. Universal layer goes to everyone; model-specific layer is opt-in.
1918
- - *Manage the vLLM serving stack from the installer (e.g., generate `serve-nemotron.sh`):* Rejected — the installer runs on engineer dev machines, not inference servers. Mixing concerns. Reference doc is sufficient.
1919
- - *Generate per-tool config purely via prompt instruction (no `.roomodes`):* Rejected — Roo Code's `fileRegex` restriction is application-layer enforcement that catches violations the prompt cannot. NFR47 makes this enforcement contract testable.
1920
-
1921
- **Files affected:**
1922
- - `bin/cli.js` (new wizard prompt only; no CLI flag — correction applied 2026-04-14)
1923
- - `lib/installer.js` (read profile via `lib/profile.js`; compose universal + on-prem instruction blocks; stamp `.roomodes` and `AGENTS.md` per-tool artifacts)
1924
- - `lib/profile.js` (new — profile read/write API against `.ma-agents.json`)
1925
- - `lib/agents.js` (per-agent `extraInstructionTemplates` field for `.roomodes` and `AGENTS.md`)
1926
- - `lib/templates/instruction-block-universal.template.md` (new)
1927
- - `lib/templates/instruction-block-onprem.template.md` (new)
1928
- - `lib/templates/roomodes.template.yaml` (new — 4 BMAD modes with `fileRegex`)
1929
- - `lib/templates/agents-md.template.md` (new — OpenCode AGENTS.md)
1930
- - `lib/templates/clinerules.template.md` (new — extended Cline rules)
1931
- - `lib/bmad-customize/*.customize.yaml` (additive — phase-prefix block, applied only when profile=on-prem at customize-loader time)
1932
- - `lib/bmad-customize/customize-loader.js` (or equivalent — compose phase prefix when profile=on-prem)
1933
- - `docs/deployment/vllm-nemotron.md` (new — reference deployment guide; not stamped into projects)
1934
- - `README.md` (new on-prem section linking to the deployment guide and explaining the profile prompt)
1935
- - `test/profile.test.js` (new — read/write/resolve precedence)
1936
- - `test/onprem-injection.test.js` (new — standard vs on-prem produces correct instruction-block content; idempotency; `.roomodes` slug isolation)
1937
-
1938
- ---
1939
-
1940
- ### Implementation Readiness Validation
1941
-
1942
- **Decision Completeness:** HIGH
1943
- - 11 Phase 2 decisions documented (P2-1 through P2-11, with P2-3 superseded by P2-9)
1944
- - 2 Phase 3 decisions documented (P3-1: BMAD Knowledge Graph — FR141-FR157, NFR38-NFR41; P3-2: SQA Agent — FR158-FR171, NFR42-NFR43)
1945
- - P2-6 rev includes code example with full parameter mapping table
1946
- - P2-9 includes verified module structure from CIS, manifest examples, migration detection code
1947
- - P2-10 includes wizard flow, config storage format, cross-reference file schema
1948
- - P2-11 includes unified YAML schema, movement semantics, close-sprint lifecycle, Jira adapter pattern, 13-skill integration map
1949
-
1950
- **Pattern Completeness:** HIGH
1951
- - CIS module pattern verified against actual source code — not assumed
1952
- - Agent skill naming, manifest fields, module.yaml structure all confirmed
1953
- - `.customize.yaml` behavior (appends vs replaces) documented from BMAD 6.2.0 official docs
1954
- - `--custom-content` validation rules documented (requires module.yaml with code field)
1955
-
1956
- **Structure Completeness:** HIGH
1957
- - Full directory tree updated with 44-skill extension module layout (42 + close-sprint + remove-from-sprint)
1958
- - `lib/bmad-customize/` separated from `lib/bmad-extension/`
1959
- - Module boundary table still accurate — `bmad.js` handles both extension and customize deployment
1960
- - `_bmad-output/` structure updated with `sprint-status.yaml` and `done/` archive directory
1961
-
1962
- ### Gap Analysis Results
1963
-
1964
- **No Critical Gaps.** All 141 FRs and 37 NFRs have architectural support (excluding Phase 3 deferred items). P2-11 closes the sprint data consistency gap identified during skill development.
1965
-
1966
- **Important Gaps:**
1967
- - Testing framework not yet decided — blocks regression testing
1968
- - Visual Studio integration mechanism unknown — blocks new agent target (Phase 3)
1969
- - P2-3 should be marked as HISTORICAL in the document to avoid confusion with P2-9
1970
-
1971
- **Minor Gaps:**
1972
- - NFR33 (anti-zombie idempotency) depends on bmad-method behavior, not ma-agents architecture
1973
- - No formal error code catalog
1974
- - No formal logging strategy
1975
-
1976
- ### Architecture Completeness Checklist
1977
-
1978
- **Requirements Analysis**
1979
- - [x] Project context thoroughly analyzed (141 FRs, 37 NFRs)
1980
- - [x] Scale and complexity assessed
1981
- - [x] Technical constraints identified
1982
- - [x] Cross-cutting concerns mapped (enforcement, multi-repo path resolution, 6.2.0 migration)
1983
-
1984
- **Architectural Decisions**
1985
- - [x] Critical decisions documented with rationale (P2-1 through P2-10)
1986
- - [x] Technology stack fully specified (Node.js, bmad-method v6.2.0)
1987
- - [x] Pipeline architectures defined (5-stage install, 6-stage BMAD, 14-step Phase 2 implementation)
1988
- - [x] Extensibility model formalized (config-driven agents, directory-scanned skills, BMAD module pattern)
1989
- - [x] Module architecture verified against BMAD 6.2.0 source (CIS module reference)
1990
-
1991
- **Implementation Patterns**
1992
- - [x] Naming conventions established (agent skills follow CIS naming)
1993
- - [x] Structure patterns defined (skill folders, manifest files)
1994
- - [x] Format patterns specified (YAML array syntax for critical_actions)
1995
- - [x] Process patterns documented (adding agents, skills, workflows)
1996
- - [x] Anti-patterns explicitly listed (both Phase 1 and Phase 2)
1997
-
1998
- **Project Structure**
1999
- - [x] Complete directory structure defined (44-skill extension module)
2000
- - [x] Component boundaries established (extension module vs customize files)
2001
- - [x] Integration points mapped (--custom-content, config.yaml, project-layout.yaml)
2002
- - [x] Requirements to structure mapping complete (all FR groups mapped)
2003
-
2004
- ### Architecture Readiness Assessment
2005
-
2006
- **Overall Status:** READY FOR IMPLEMENTATION
2007
-
2008
- **Confidence Level:** High — architecture verified against BMAD 6.2.0 source code (CIS module pattern), official documentation (customize, non-interactive install), and bmad-method CLI flags
2009
-
2010
- **Key Strengths:**
2011
- - Configuration-driven extensibility eliminates code changes for the most common operations
2012
- - BMAD 6.2.0 module pattern verified against actual CIS module source — not assumed
2013
- - Explicit CLI parameter passing solves 3 known installer bugs with minimal code
2014
- - Clean separation: module-owned agents (SKILL.md) vs. built-in agent customizations (.customize.yaml)
2015
- - Multi-repo support is config-driven with no installer code changes for BMAD workflow path resolution
2016
- - Air-gapped operation preserved through bundled cache + explicit params
2017
-
2018
- **Areas for Future Enhancement:**
2019
- - Testing framework decision and test suite creation
2020
- - Error code standardization
2021
- - Structured logging for diagnostic purposes
2022
- - Visual Studio integration investigation (Phase 3)
2023
- - Agent Activity Dashboard architecture (Phase 3)