ma-agents 3.4.9 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1364) hide show
  1. package/AiAudit.md +7 -0
  2. package/README.md +78 -29
  3. package/_bmad-output/implementation-artifacts/16-4-validation-report.md +79 -0
  4. package/_bmad-output/implementation-artifacts/17-10-rework-generate-backlog.md +237 -0
  5. package/_bmad-output/implementation-artifacts/17-11-rework-add-to-sprint.md +339 -0
  6. package/_bmad-output/implementation-artifacts/17-12-rework-remove-from-sprint.md +348 -0
  7. package/_bmad-output/implementation-artifacts/17-13-rework-sprint-status-view.md +383 -0
  8. package/_bmad-output/implementation-artifacts/17-14-rework-cleanup-done.md +348 -0
  9. package/_bmad-output/implementation-artifacts/17-15-rework-bmad-sprint-planning.md +385 -0
  10. package/_bmad-output/implementation-artifacts/17-16-rework-add-sprint.md +362 -0
  11. package/_bmad-output/implementation-artifacts/17-17-rework-modify-sprint.md +477 -0
  12. package/_bmad-output/implementation-artifacts/17-18-rework-bmad-dev-story.md +377 -0
  13. package/_bmad-output/implementation-artifacts/17-19-rework-story-status-lookup.md +301 -0
  14. package/_bmad-output/implementation-artifacts/17-20-rework-bmad-sprint-status.md +508 -0
  15. package/_bmad-output/implementation-artifacts/17-21-new-close-sprint.md +455 -0
  16. package/_bmad-output/implementation-artifacts/17-22-jira-adapter-pattern.md +325 -0
  17. package/_bmad-output/implementation-artifacts/17-23-migration-deprecation-old-files.md +403 -0
  18. package/_bmad-output/implementation-artifacts/17-24-rework-prioritize-backlog.md +344 -0
  19. package/_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md +279 -0
  20. package/_bmad-output/implementation-artifacts/19-1-knowledge-graph-core-library.md +239 -0
  21. package/_bmad-output/implementation-artifacts/19-2-graph-emission-create-prd.md +171 -0
  22. package/_bmad-output/implementation-artifacts/19-3-graph-emission-create-architecture-epics.md +179 -0
  23. package/_bmad-output/implementation-artifacts/19-4-graph-emission-create-story-remaining.md +190 -0
  24. package/_bmad-output/implementation-artifacts/19-5-open-graph-skill.md +213 -0
  25. package/_bmad-output/implementation-artifacts/19-6-interactive-visualization-renderer.md +259 -0
  26. package/_bmad-output/implementation-artifacts/19-7-llm-writability-validation-tests.md +280 -0
  27. package/_bmad-output/implementation-artifacts/4-1-vs-agent-registry-entry.md +173 -0
  28. package/_bmad-output/implementation-artifacts/4-2-vs-skill-template-format.md +129 -0
  29. package/_bmad-output/implementation-artifacts/5-5-explicit-parameter-passing.md +274 -0
  30. package/_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md +186 -0
  31. package/_bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md +144 -0
  32. package/_bmad-output/implementation-artifacts/7-2-installer-pipeline-tests.md +132 -0
  33. package/_bmad-output/implementation-artifacts/7-3-bmad-pipeline-tests.md +119 -0
  34. package/_bmad-output/implementation-artifacts/7-4-cli-command-routing-tests.md +162 -0
  35. package/_bmad-output/implementation-artifacts/deferred-work.md +9 -0
  36. package/_bmad-output/implementation-artifacts/done/1-1-ci-cd-yes-flag.md +200 -0
  37. package/_bmad-output/implementation-artifacts/done/10-1-ensure-bmad-output-not-gitignored.md +172 -0
  38. package/_bmad-output/implementation-artifacts/done/10-2-document-bmad-output-policy.md +102 -0
  39. package/_bmad-output/implementation-artifacts/done/11-1-auto-bug-detection-skill.md +119 -0
  40. package/_bmad-output/implementation-artifacts/done/11-2-bug-story-extension-workflow.md +132 -0
  41. package/_bmad-output/implementation-artifacts/done/11-3-integrate-bug-detection-code-review.md +111 -0
  42. package/_bmad-output/implementation-artifacts/done/12-1-add-sprint-workflow.md +126 -0
  43. package/_bmad-output/implementation-artifacts/done/12-2-add-to-sprint-workflow.md +137 -0
  44. package/_bmad-output/implementation-artifacts/done/12-3-modify-sprint-workflow.md +127 -0
  45. package/_bmad-output/implementation-artifacts/done/12-4-sprint-status-assigned-items.md +129 -0
  46. package/_bmad-output/implementation-artifacts/done/13-1-project-context-template-and-generator.md +179 -0
  47. package/_bmad-output/implementation-artifacts/done/13-2-install-pipeline-integration.md +138 -0
  48. package/_bmad-output/implementation-artifacts/done/13-3-bmad-critical-actions-update.md +150 -0
  49. package/_bmad-output/implementation-artifacts/done/13-4-retrospective-expansion-trigger.md +128 -0
  50. package/_bmad-output/implementation-artifacts/done/13-5-document-project-context-generation.md +118 -0
  51. package/_bmad-output/implementation-artifacts/done/15-1-bump-bmad-method-to-6-2-1.md +132 -0
  52. package/_bmad-output/implementation-artifacts/done/15-2-restructure-extension-module.md +174 -0
  53. package/_bmad-output/implementation-artifacts/done/15-3-convert-custom-agents-to-skill-folders.md +183 -0
  54. package/_bmad-output/implementation-artifacts/done/15-4-convert-mil498-workflows-to-skill-md.md +252 -0
  55. package/_bmad-output/implementation-artifacts/done/15-5-convert-sre-devops-cyber-workflows.md +232 -0
  56. package/_bmad-output/implementation-artifacts/done/15-6-separate-built-in-agent-customizations.md +163 -0
  57. package/_bmad-output/implementation-artifacts/done/15-7-migration-detection-and-upgrade-path.md +133 -0
  58. package/_bmad-output/implementation-artifacts/done/15-8-validate-migrated-agents-and-workflows.md +172 -0
  59. package/_bmad-output/implementation-artifacts/done/15-8-validation-report.md +342 -0
  60. package/_bmad-output/implementation-artifacts/done/16-1-repository-layout-wizard.md +223 -0
  61. package/_bmad-output/implementation-artifacts/done/16-2-config-storage-and-cross-reference.md +180 -0
  62. package/_bmad-output/implementation-artifacts/done/16-3-project-context-multi-repo-section.md +136 -0
  63. package/_bmad-output/implementation-artifacts/done/16-4-validate-cross-repo-path-resolution.md +137 -0
  64. package/_bmad-output/implementation-artifacts/done/16-4-validation-report.md +79 -0
  65. package/_bmad-output/implementation-artifacts/done/16-5-fix-config-lost-on-update.md +110 -0
  66. package/_bmad-output/implementation-artifacts/done/16-6-repo-sync-check-skill.md +116 -0
  67. package/_bmad-output/implementation-artifacts/done/16-7-portable-path-storage.md +109 -0
  68. package/_bmad-output/implementation-artifacts/done/16-8-cicd-remote-mode.md +97 -0
  69. package/_bmad-output/implementation-artifacts/done/16-9-reconfigure-layout-workflow.md +125 -0
  70. package/_bmad-output/implementation-artifacts/done/17-1-sprint-entity-model.md +322 -0
  71. package/_bmad-output/implementation-artifacts/done/17-2-flat-backlog-model.md +264 -0
  72. package/_bmad-output/implementation-artifacts/done/17-3-bug-as-story-type.md +208 -0
  73. package/_bmad-output/implementation-artifacts/done/17-4-backlog-to-sprint-workflow.md +209 -0
  74. package/_bmad-output/implementation-artifacts/done/17-5-sprint-to-backlog-workflow.md +221 -0
  75. package/_bmad-output/implementation-artifacts/done/17-6-done-item-cleanup.md +273 -0
  76. package/_bmad-output/implementation-artifacts/done/17-7-multi-criteria-prioritization.md +235 -0
  77. package/_bmad-output/implementation-artifacts/done/17-8-rework-sprint-status-display.md +285 -0
  78. package/_bmad-output/implementation-artifacts/done/2-1-cpp-coding-standards-skill.md +188 -0
  79. package/_bmad-output/implementation-artifacts/done/2-2-csharp-coding-standards-skill.md +211 -0
  80. package/_bmad-output/implementation-artifacts/done/2-3-python-coding-standards-skill.md +189 -0
  81. package/_bmad-output/implementation-artifacts/done/3-1-skill-scaffolding-tool.md +184 -0
  82. package/_bmad-output/implementation-artifacts/done/3-2-skill-validation-tool.md +178 -0
  83. package/_bmad-output/implementation-artifacts/done/3-3-mandatory-skill-designation.md +136 -0
  84. package/_bmad-output/implementation-artifacts/done/3-4-bmad-persona-customization-tooling.md +141 -0
  85. package/_bmad-output/implementation-artifacts/done/3-5-specialized-agent-development-tooling.md +145 -0
  86. package/_bmad-output/implementation-artifacts/done/5-1-bmad-method-direct-dependency.md +188 -0
  87. package/_bmad-output/implementation-artifacts/done/5-2-bmad-cache-build-script.md +219 -0
  88. package/_bmad-output/implementation-artifacts/done/5-3-pre-populate-bmad-cache.md +234 -0
  89. package/_bmad-output/implementation-artifacts/done/5-4-validate-bundled-installation.md +274 -0
  90. package/_bmad-output/implementation-artifacts/done/6-1-methodology-presentation-bundle.md +173 -0
  91. package/_bmad-output/implementation-artifacts/done/8-1-move-instruction-injection-to-top.md +131 -0
  92. package/_bmad-output/implementation-artifacts/done/8-2-agent-aware-injection-strategy.md +124 -0
  93. package/_bmad-output/implementation-artifacts/done/8-3-create-bmad-extension-module.md +187 -0
  94. package/_bmad-output/implementation-artifacts/done/8-4-integration-verification.md +102 -0
  95. package/_bmad-output/implementation-artifacts/done/8-5-per-agent-enforcement-hooks-research.md +126 -0
  96. package/_bmad-output/implementation-artifacts/done/8-6-context-persistence-research.md +101 -0
  97. package/_bmad-output/implementation-artifacts/done/9-1-register-opencode-agent.md +73 -0
  98. package/_bmad-output/implementation-artifacts/done/9-2-json-merge-injection.md +91 -0
  99. package/_bmad-output/implementation-artifacts/done/9-3-json-merge-existing.md +113 -0
  100. package/_bmad-output/implementation-artifacts/done/9-4-json-error-handling.md +90 -0
  101. package/_bmad-output/implementation-artifacts/epic-11-12-shared-guardrails.md +53 -0
  102. package/_bmad-output/implementation-artifacts/epic-15-adversarial-fixes.md +287 -0
  103. package/_bmad-output/implementation-artifacts/epic-16-adversarial-review.md +49 -0
  104. package/_bmad-output/implementation-artifacts/epic-16-edge-case-review.md +230 -0
  105. package/_bmad-output/implementation-artifacts/epic-17-adversarial-review.md +37 -0
  106. package/_bmad-output/implementation-artifacts/epic-17-edge-case-review.md +140 -0
  107. package/_bmad-output/implementation-artifacts/sprint-status.yaml +96 -0
  108. package/_bmad-output/methodology/BMAD_AI_Development_Training.pptx +0 -0
  109. package/_bmad-output/methodology/version.json +7 -0
  110. package/_bmad-output/planning-artifacts/adapter-pattern-spec.md +508 -0
  111. package/_bmad-output/planning-artifacts/architecture.md +1971 -0
  112. package/_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md +295 -0
  113. package/_bmad-output/planning-artifacts/epics.md +3835 -0
  114. package/_bmad-output/planning-artifacts/mil498-workflow-audit.md +290 -0
  115. package/_bmad-output/planning-artifacts/prd.md +766 -0
  116. package/_bmad-output/planning-artifacts/product-brief-agents-2026-03-08.md +214 -0
  117. package/_bmad-output/planning-artifacts/sprint-status-schema.md +506 -0
  118. package/_bmad-output/planning-artifacts/validation-report-prd-2026-04-07.md +330 -0
  119. package/_bmad-output/project-context.md +47 -0
  120. package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +38 -4
  121. package/lib/bmad-cache/bmb/README.md +39 -27
  122. package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
  123. package/lib/bmad-cache/bmb/_git_preserved/logs/HEAD +1 -1
  124. package/lib/bmad-cache/bmb/_git_preserved/logs/refs/heads/main +1 -1
  125. package/lib/bmad-cache/bmb/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
  126. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-5e915049d8459481e4aa7be8d5959643fa68a981.idx +0 -0
  127. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-5e915049d8459481e4aa7be8d5959643fa68a981.pack +0 -0
  128. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-5e915049d8459481e4aa7be8d5959643fa68a981.rev +0 -0
  129. package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
  130. package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
  131. package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
  132. package/lib/bmad-cache/bmb/package.json +1 -9
  133. package/lib/bmad-cache/bmb/samples/bmad-agent-code-coach/scripts/init-sanctum.py +288 -0
  134. package/lib/bmad-cache/bmb/samples/bmad-agent-creative-muse/scripts/init-sanctum.py +274 -0
  135. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/assets/module-help.csv +9 -0
  136. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/assets/module.yaml +8 -0
  137. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/merge-help-csv.py +218 -0
  138. package/lib/bmad-cache/bmb/samples/bmad-agent-sentinel/scripts/init-sanctum.py +285 -0
  139. package/lib/bmad-cache/bmb/samples/bmad-agent-sentinel/scripts/tests/test-init-sanctum.py +174 -0
  140. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/init-sanctum-template.py +277 -0
  141. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/references/sample-init-sanctum.py +274 -0
  142. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-execution-deps.py +4 -4
  143. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-prompt-metrics.py +22 -0
  144. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-sanctum-architecture.py +385 -0
  145. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-structure-capabilities.py +64 -27
  146. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/process-template.py +190 -0
  147. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/scan-path-standards.py +17 -32
  148. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/scan-scripts.py +5 -3
  149. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/assets/module-help.csv +10 -0
  150. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-config.py +408 -0
  151. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-help-csv.py +218 -0
  152. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/assets/module-help.csv +1 -0
  153. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/assets/module.yaml +6 -0
  154. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/cleanup-legacy.py +259 -0
  155. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-config.py +408 -0
  156. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-help-csv.py +218 -0
  157. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-config.py +408 -0
  158. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-help-csv.py +218 -0
  159. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/scaffold-setup-skill.py +124 -0
  160. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/scaffold-standalone-module.py +190 -0
  161. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-scaffold-setup-skill.py +223 -0
  162. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-scaffold-standalone-module.py +266 -0
  163. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-validate-module.py +314 -0
  164. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/validate-module.py +293 -0
  165. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-convert-report.py +406 -0
  166. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/prepass-workflow-integrity.py +1 -6
  167. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/scan-path-standards.py +14 -16
  168. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_generate_convert_report.py +243 -0
  169. package/lib/bmad-cache/bmb/skills/module-help.csv +10 -5
  170. package/lib/bmad-cache/bmb/tools/validate-file-refs.mjs +1 -1
  171. package/lib/bmad-cache/bmb/website/astro.config.mjs +10 -6
  172. package/lib/bmad-cache/bmb/website/src/components/Banner.astro +6 -5
  173. package/lib/bmad-cache/bmb/website/src/styles/custom.css +60 -42
  174. package/lib/bmad-cache/cache-manifest.json +11 -11
  175. package/lib/bmad-cache/cis/README.md +9 -0
  176. package/lib/bmad-cache/cis/_git_preserved/index +0 -0
  177. package/lib/bmad-cache/cis/_git_preserved/logs/HEAD +1 -1
  178. package/lib/bmad-cache/cis/_git_preserved/logs/refs/heads/main +1 -1
  179. package/lib/bmad-cache/cis/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
  180. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.idx +0 -0
  181. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.pack +0 -0
  182. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.rev +0 -0
  183. package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
  184. package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
  185. package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
  186. package/lib/bmad-cache/cis/src/module-help.csv +1 -0
  187. package/lib/bmad-cache/cis/website/astro.config.mjs +14 -6
  188. package/lib/bmad-cache/cis/website/src/components/Banner.astro +26 -11
  189. package/lib/bmad-cache/cis/website/src/styles/custom.css +60 -41
  190. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +1 -1
  191. package/lib/bmad-cache/gds/README.md +9 -0
  192. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  193. package/lib/bmad-cache/gds/_git_preserved/logs/HEAD +1 -1
  194. package/lib/bmad-cache/gds/_git_preserved/logs/refs/heads/main +1 -1
  195. package/lib/bmad-cache/gds/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
  196. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.idx +0 -0
  197. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.pack +0 -0
  198. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.rev +0 -0
  199. package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
  200. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
  201. package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
  202. package/lib/bmad-cache/gds/package.json +1 -1
  203. package/lib/bmad-cache/gds/src/module-help.csv +1 -0
  204. package/lib/bmad-cache/gds/website/astro.config.mjs +14 -6
  205. package/lib/bmad-cache/gds/website/src/components/Banner.astro +26 -11
  206. package/lib/bmad-cache/gds/website/src/styles/custom.css +60 -41
  207. package/lib/bmad-cache/tea/README.md +14 -0
  208. package/lib/bmad-cache/tea/_git_preserved/index +0 -0
  209. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-c79805bb3fee27fa6d8c612a971af7fc86fc80e1.idx +0 -0
  210. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-c79805bb3fee27fa6d8c612a971af7fc86fc80e1.pack +0 -0
  211. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-c79805bb3fee27fa6d8c612a971af7fc86fc80e1.rev +0 -0
  212. package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
  213. package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
  214. package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
  215. package/lib/bmad-cache/tea/docs/index.md +4 -14
  216. package/lib/bmad-cache/tea/package-lock.json +2 -2
  217. package/lib/bmad-cache/tea/package.json +1 -1
  218. package/lib/bmad-cache/tea/src/agents/bmad-tea/SKILL.md +6 -6
  219. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/playwright-cli.md +119 -4
  220. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/playwright-config.md +8 -4
  221. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/visual-debugging.md +34 -31
  222. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +1 -1
  223. package/lib/bmad-cache/tea/src/module-help.csv +1 -0
  224. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/atdd-checklist-template.md +1 -1
  225. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +0 -1
  226. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  227. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/api-request.md +563 -0
  228. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/api-testing-patterns.md +915 -0
  229. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/auth-session.md +548 -0
  230. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/burn-in.md +273 -0
  231. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/ci-burn-in.md +717 -0
  232. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/component-tdd.md +486 -0
  233. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/contract-testing.md +1050 -0
  234. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/data-factories.md +500 -0
  235. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/email-auth.md +721 -0
  236. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/error-handling.md +725 -0
  237. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/feature-flags.md +750 -0
  238. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/file-utils.md +456 -0
  239. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/fixture-architecture.md +401 -0
  240. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/fixtures-composition.md +382 -0
  241. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/intercept-network-call.md +426 -0
  242. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/log.md +426 -0
  243. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/network-error-monitor.md +401 -0
  244. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/network-first.md +486 -0
  245. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/network-recorder.md +527 -0
  246. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/nfr-criteria.md +670 -0
  247. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/overview.md +286 -0
  248. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-di.md +310 -0
  249. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  250. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-mcp.md +204 -0
  251. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  252. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-overview.md +216 -0
  253. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  254. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  255. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/playwright-cli.md +280 -0
  256. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/playwright-config.md +734 -0
  257. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/probability-impact.md +601 -0
  258. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/recurse.md +421 -0
  259. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/risk-governance.md +615 -0
  260. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/selective-testing.md +732 -0
  261. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/selector-resilience.md +527 -0
  262. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-healing-patterns.md +644 -0
  263. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-levels-framework.md +473 -0
  264. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-priorities-matrix.md +373 -0
  265. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/test-quality.md +664 -0
  266. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/timing-debugging.md +372 -0
  267. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/visual-debugging.md +527 -0
  268. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +43 -0
  269. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +1 -1
  270. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +0 -1
  271. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  272. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/api-request.md +563 -0
  273. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/api-testing-patterns.md +915 -0
  274. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/auth-session.md +548 -0
  275. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/burn-in.md +273 -0
  276. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/ci-burn-in.md +717 -0
  277. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/component-tdd.md +486 -0
  278. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/contract-testing.md +1050 -0
  279. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/data-factories.md +500 -0
  280. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/email-auth.md +721 -0
  281. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/error-handling.md +725 -0
  282. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/feature-flags.md +750 -0
  283. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/file-utils.md +456 -0
  284. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/fixture-architecture.md +401 -0
  285. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/fixtures-composition.md +382 -0
  286. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/intercept-network-call.md +426 -0
  287. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/log.md +426 -0
  288. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/network-error-monitor.md +401 -0
  289. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/network-first.md +486 -0
  290. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/network-recorder.md +527 -0
  291. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/nfr-criteria.md +670 -0
  292. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/overview.md +286 -0
  293. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-di.md +310 -0
  294. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  295. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-mcp.md +204 -0
  296. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  297. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-overview.md +216 -0
  298. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  299. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  300. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/playwright-cli.md +280 -0
  301. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/playwright-config.md +734 -0
  302. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/probability-impact.md +601 -0
  303. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/recurse.md +421 -0
  304. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/risk-governance.md +615 -0
  305. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/selective-testing.md +732 -0
  306. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/selector-resilience.md +527 -0
  307. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-healing-patterns.md +644 -0
  308. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-levels-framework.md +473 -0
  309. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-priorities-matrix.md +373 -0
  310. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/test-quality.md +664 -0
  311. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/timing-debugging.md +372 -0
  312. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/visual-debugging.md +527 -0
  313. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +43 -0
  314. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +1 -1
  315. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +8 -3
  316. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/harness-pipeline-template.yaml +7 -6
  317. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +0 -1
  318. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  319. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/api-request.md +563 -0
  320. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/api-testing-patterns.md +915 -0
  321. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/auth-session.md +548 -0
  322. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/burn-in.md +273 -0
  323. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/ci-burn-in.md +717 -0
  324. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/component-tdd.md +486 -0
  325. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/contract-testing.md +1050 -0
  326. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/data-factories.md +500 -0
  327. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/email-auth.md +721 -0
  328. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/error-handling.md +725 -0
  329. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/feature-flags.md +750 -0
  330. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/file-utils.md +456 -0
  331. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/fixture-architecture.md +401 -0
  332. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/fixtures-composition.md +382 -0
  333. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/intercept-network-call.md +426 -0
  334. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/log.md +426 -0
  335. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/network-error-monitor.md +401 -0
  336. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/network-first.md +486 -0
  337. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/network-recorder.md +527 -0
  338. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/nfr-criteria.md +670 -0
  339. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/overview.md +286 -0
  340. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-di.md +310 -0
  341. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  342. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-mcp.md +204 -0
  343. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  344. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-overview.md +216 -0
  345. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  346. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  347. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/playwright-cli.md +280 -0
  348. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/playwright-config.md +734 -0
  349. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/probability-impact.md +601 -0
  350. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/recurse.md +421 -0
  351. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/risk-governance.md +615 -0
  352. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/selective-testing.md +732 -0
  353. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/selector-resilience.md +527 -0
  354. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-healing-patterns.md +644 -0
  355. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-levels-framework.md +473 -0
  356. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-priorities-matrix.md +373 -0
  357. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/test-quality.md +664 -0
  358. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/timing-debugging.md +372 -0
  359. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/visual-debugging.md +527 -0
  360. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +43 -0
  361. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +1 -1
  362. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +1 -1
  363. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/checklist.md +1 -1
  364. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +0 -1
  365. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  366. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/api-request.md +563 -0
  367. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/api-testing-patterns.md +915 -0
  368. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/auth-session.md +548 -0
  369. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/burn-in.md +273 -0
  370. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/ci-burn-in.md +717 -0
  371. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/component-tdd.md +486 -0
  372. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/contract-testing.md +1050 -0
  373. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/data-factories.md +500 -0
  374. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/email-auth.md +721 -0
  375. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/error-handling.md +725 -0
  376. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/feature-flags.md +750 -0
  377. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/file-utils.md +456 -0
  378. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/fixture-architecture.md +401 -0
  379. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/fixtures-composition.md +382 -0
  380. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/intercept-network-call.md +426 -0
  381. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/log.md +426 -0
  382. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/network-error-monitor.md +401 -0
  383. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/network-first.md +486 -0
  384. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/network-recorder.md +527 -0
  385. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/nfr-criteria.md +670 -0
  386. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/overview.md +286 -0
  387. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-di.md +310 -0
  388. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  389. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-mcp.md +204 -0
  390. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  391. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-overview.md +216 -0
  392. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  393. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  394. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/playwright-cli.md +280 -0
  395. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/playwright-config.md +734 -0
  396. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/probability-impact.md +601 -0
  397. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/recurse.md +421 -0
  398. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/risk-governance.md +615 -0
  399. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/selective-testing.md +732 -0
  400. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/selector-resilience.md +527 -0
  401. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-healing-patterns.md +644 -0
  402. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-levels-framework.md +473 -0
  403. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-priorities-matrix.md +373 -0
  404. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/test-quality.md +664 -0
  405. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/timing-debugging.md +372 -0
  406. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/visual-debugging.md +527 -0
  407. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +43 -0
  408. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +2 -2
  409. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  410. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/api-request.md +563 -0
  411. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/api-testing-patterns.md +915 -0
  412. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/auth-session.md +548 -0
  413. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/burn-in.md +273 -0
  414. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/ci-burn-in.md +717 -0
  415. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/component-tdd.md +486 -0
  416. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/contract-testing.md +1050 -0
  417. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/data-factories.md +500 -0
  418. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/email-auth.md +721 -0
  419. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/error-handling.md +725 -0
  420. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/feature-flags.md +750 -0
  421. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/file-utils.md +456 -0
  422. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/fixture-architecture.md +401 -0
  423. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/fixtures-composition.md +382 -0
  424. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/intercept-network-call.md +426 -0
  425. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/log.md +426 -0
  426. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/network-error-monitor.md +401 -0
  427. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/network-first.md +486 -0
  428. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/network-recorder.md +527 -0
  429. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/nfr-criteria.md +670 -0
  430. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/overview.md +286 -0
  431. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-di.md +310 -0
  432. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  433. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-mcp.md +204 -0
  434. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  435. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-overview.md +216 -0
  436. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  437. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  438. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/playwright-cli.md +280 -0
  439. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/playwright-config.md +734 -0
  440. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/probability-impact.md +601 -0
  441. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/recurse.md +421 -0
  442. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/risk-governance.md +615 -0
  443. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/selective-testing.md +732 -0
  444. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/selector-resilience.md +527 -0
  445. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-healing-patterns.md +644 -0
  446. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-levels-framework.md +473 -0
  447. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-priorities-matrix.md +373 -0
  448. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/test-quality.md +664 -0
  449. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/timing-debugging.md +372 -0
  450. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/visual-debugging.md +527 -0
  451. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +43 -0
  452. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
  453. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +0 -1
  454. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  455. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/api-request.md +563 -0
  456. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/api-testing-patterns.md +915 -0
  457. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/auth-session.md +548 -0
  458. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/burn-in.md +273 -0
  459. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/ci-burn-in.md +717 -0
  460. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/component-tdd.md +486 -0
  461. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/contract-testing.md +1050 -0
  462. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/data-factories.md +500 -0
  463. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/email-auth.md +721 -0
  464. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/error-handling.md +725 -0
  465. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/feature-flags.md +750 -0
  466. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/file-utils.md +456 -0
  467. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/fixture-architecture.md +401 -0
  468. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/fixtures-composition.md +382 -0
  469. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/intercept-network-call.md +426 -0
  470. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/log.md +426 -0
  471. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/network-error-monitor.md +401 -0
  472. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/network-first.md +486 -0
  473. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/network-recorder.md +527 -0
  474. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/nfr-criteria.md +670 -0
  475. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/overview.md +286 -0
  476. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-di.md +310 -0
  477. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  478. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-mcp.md +204 -0
  479. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  480. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-overview.md +216 -0
  481. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  482. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  483. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/playwright-cli.md +280 -0
  484. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/playwright-config.md +734 -0
  485. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/probability-impact.md +601 -0
  486. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/recurse.md +421 -0
  487. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/risk-governance.md +615 -0
  488. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/selective-testing.md +732 -0
  489. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/selector-resilience.md +527 -0
  490. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-healing-patterns.md +644 -0
  491. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-levels-framework.md +473 -0
  492. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-priorities-matrix.md +373 -0
  493. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/test-quality.md +664 -0
  494. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/timing-debugging.md +372 -0
  495. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/visual-debugging.md +527 -0
  496. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +43 -0
  497. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +1 -1
  498. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +1 -1
  499. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +1 -1
  500. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/checklist.md +1 -1
  501. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  502. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/api-request.md +563 -0
  503. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/api-testing-patterns.md +915 -0
  504. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/auth-session.md +548 -0
  505. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/burn-in.md +273 -0
  506. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/ci-burn-in.md +717 -0
  507. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/component-tdd.md +486 -0
  508. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/contract-testing.md +1050 -0
  509. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/data-factories.md +500 -0
  510. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/email-auth.md +721 -0
  511. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/error-handling.md +725 -0
  512. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/feature-flags.md +750 -0
  513. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/file-utils.md +456 -0
  514. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/fixture-architecture.md +401 -0
  515. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/fixtures-composition.md +382 -0
  516. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/intercept-network-call.md +426 -0
  517. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/log.md +426 -0
  518. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/network-error-monitor.md +401 -0
  519. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/network-first.md +486 -0
  520. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/network-recorder.md +527 -0
  521. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/nfr-criteria.md +670 -0
  522. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/overview.md +286 -0
  523. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-di.md +310 -0
  524. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  525. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-mcp.md +204 -0
  526. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  527. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-overview.md +216 -0
  528. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  529. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  530. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/playwright-cli.md +280 -0
  531. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/playwright-config.md +734 -0
  532. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/probability-impact.md +601 -0
  533. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/recurse.md +421 -0
  534. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/risk-governance.md +615 -0
  535. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/selective-testing.md +732 -0
  536. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/selector-resilience.md +527 -0
  537. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-healing-patterns.md +644 -0
  538. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-levels-framework.md +473 -0
  539. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-priorities-matrix.md +373 -0
  540. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/test-quality.md +664 -0
  541. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/timing-debugging.md +372 -0
  542. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/visual-debugging.md +527 -0
  543. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +43 -0
  544. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +1 -1
  545. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +7 -0
  546. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +1 -1
  547. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/adr-quality-readiness-checklist.md +377 -0
  548. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/api-request.md +563 -0
  549. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/api-testing-patterns.md +915 -0
  550. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/auth-session.md +548 -0
  551. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/burn-in.md +273 -0
  552. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/ci-burn-in.md +717 -0
  553. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/component-tdd.md +486 -0
  554. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/contract-testing.md +1050 -0
  555. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/data-factories.md +500 -0
  556. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/email-auth.md +721 -0
  557. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/error-handling.md +725 -0
  558. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/feature-flags.md +750 -0
  559. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/file-utils.md +456 -0
  560. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/fixture-architecture.md +401 -0
  561. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/fixtures-composition.md +382 -0
  562. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/intercept-network-call.md +426 -0
  563. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/log.md +426 -0
  564. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/network-error-monitor.md +401 -0
  565. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/network-first.md +486 -0
  566. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/network-recorder.md +527 -0
  567. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/nfr-criteria.md +670 -0
  568. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/overview.md +286 -0
  569. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-di.md +310 -0
  570. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-framework-setup.md +635 -0
  571. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-mcp.md +204 -0
  572. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  573. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-overview.md +216 -0
  574. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-provider-verifier.md +315 -0
  575. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-request-filter.md +224 -0
  576. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/playwright-cli.md +280 -0
  577. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/playwright-config.md +734 -0
  578. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/probability-impact.md +601 -0
  579. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/recurse.md +421 -0
  580. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/risk-governance.md +615 -0
  581. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/selective-testing.md +732 -0
  582. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/selector-resilience.md +527 -0
  583. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-healing-patterns.md +644 -0
  584. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-levels-framework.md +473 -0
  585. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-priorities-matrix.md +373 -0
  586. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/test-quality.md +664 -0
  587. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/timing-debugging.md +372 -0
  588. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/visual-debugging.md +527 -0
  589. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +43 -0
  590. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +1 -1
  591. package/lib/bmad-cache/tea/website/astro.config.mjs +10 -6
  592. package/lib/bmad-cache/tea/website/src/components/Banner.astro +28 -13
  593. package/lib/bmad-cache/tea/website/src/components/Header.astro +1 -1
  594. package/lib/bmad-cache/tea/website/src/components/MobileMenuFooter.astro +1 -1
  595. package/lib/bmad-cache/tea/website/src/styles/custom.css +60 -41
  596. package/lib/bmad-cache/wds/README.md +13 -0
  597. package/lib/bmad-cache/wds/_git_preserved/index +0 -0
  598. package/lib/bmad-cache/wds/_git_preserved/logs/HEAD +1 -1
  599. package/lib/bmad-cache/wds/_git_preserved/logs/refs/heads/main +1 -1
  600. package/lib/bmad-cache/wds/_git_preserved/logs/refs/remotes/origin/HEAD +1 -1
  601. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.idx +0 -0
  602. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.pack +0 -0
  603. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.rev +0 -0
  604. package/lib/bmad-cache/wds/_git_preserved/packed-refs +1 -1
  605. package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +1 -1
  606. package/lib/bmad-cache/wds/_git_preserved/shallow +1 -1
  607. package/lib/bmad-cache/wds/src/module-help.csv +3 -2
  608. package/lib/bmad-cache/wds/src/module.yaml +1 -4
  609. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-1-project-brief/templates/platform-requirements.template.yaml +69 -0
  610. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-7-design-system/templates/catalog.template.html +363 -0
  611. package/lib/bmad-customize/bmm-qa.customize.yaml +19 -1
  612. package/lib/bmad-extension/module-help.csv +30 -4
  613. package/lib/bmad-extension/skills/add-sprint/SKILL.md +126 -72
  614. package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +124 -96
  615. package/lib/bmad-extension/skills/bmad-dev-story/bmad-skill-manifest.yaml +3 -0
  616. package/lib/bmad-extension/skills/bmad-dev-story/checklist.md +80 -0
  617. package/lib/bmad-extension/skills/bmad-dev-story/workflow.md +509 -0
  618. package/lib/bmad-extension/skills/bmad-ma-agent-mil498/SKILL.md +2 -1
  619. package/lib/bmad-extension/skills/bmad-ma-agent-sqa/SKILL.md +46 -0
  620. package/lib/bmad-extension/skills/bmad-ma-agent-sqa/bmad-skill-manifest.yaml +11 -0
  621. package/lib/bmad-extension/skills/bmad-sprint-planning/SKILL.md +6 -0
  622. package/lib/bmad-extension/skills/bmad-sprint-planning/bmad-skill-manifest.yaml +3 -0
  623. package/lib/bmad-extension/skills/bmad-sprint-planning/checklist.md +74 -0
  624. package/lib/bmad-extension/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
  625. package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +372 -0
  626. package/lib/bmad-extension/skills/bmad-sprint-status/SKILL.md +6 -0
  627. package/lib/bmad-extension/skills/bmad-sprint-status/bmad-skill-manifest.yaml +3 -0
  628. package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +434 -0
  629. package/lib/bmad-extension/skills/cleanup-done/SKILL.md +215 -0
  630. package/lib/bmad-extension/skills/close-sprint/SKILL.md +379 -0
  631. package/lib/bmad-extension/skills/close-sprint/bmad-skill-manifest.yaml +3 -0
  632. package/lib/bmad-extension/skills/generate-backlog/SKILL.md +195 -0
  633. package/lib/bmad-extension/skills/mil498-requirement-quality/SKILL.md +105 -0
  634. package/lib/bmad-extension/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
  635. package/lib/bmad-extension/skills/mil498-ssdd/prompts/05-validate.md +4 -0
  636. package/lib/bmad-extension/skills/modify-sprint/SKILL.md +227 -175
  637. package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +217 -0
  638. package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +184 -0
  639. package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +165 -190
  640. package/lib/bmad-extension/skills/sqa-audit/SKILL.md +279 -0
  641. package/lib/bmad-extension/skills/sqa-audit/bmad-skill-manifest.yaml +3 -0
  642. package/lib/bmad-extension/skills/sqa-ieee12207/SKILL.md +374 -0
  643. package/lib/bmad-extension/skills/sqa-ieee12207/bmad-skill-manifest.yaml +3 -0
  644. package/lib/bmad-extension/skills/sqa-requirements-quality/SKILL.md +244 -0
  645. package/lib/bmad-extension/skills/sqa-requirements-quality/bmad-skill-manifest.yaml +3 -0
  646. package/lib/bmad-extension/workflows/add-sprint/workflow.md +125 -71
  647. package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +123 -95
  648. package/lib/bmad-extension/workflows/modify-sprint/workflow.md +228 -176
  649. package/lib/bmad-extension/workflows/remove-from-sprint/workflow.md +164 -0
  650. package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +162 -189
  651. package/mil498/README.md +4 -0
  652. package/out.txt +0 -0
  653. package/package.json +1 -1
  654. package/skills/add-sprint/SKILL.md +165 -0
  655. package/skills/add-sprint/skill.json +7 -0
  656. package/skills/add-to-sprint/SKILL.md +231 -0
  657. package/skills/add-to-sprint/skill.json +7 -0
  658. package/skills/bmad-sprint-planning/SKILL.md +321 -0
  659. package/skills/bmad-sprint-planning/skill.json +7 -0
  660. package/skills/bmad-sprint-status/SKILL.md +273 -0
  661. package/skills/bmad-sprint-status/skill.json +7 -0
  662. package/skills/cleanup-done/SKILL.md +203 -0
  663. package/skills/cleanup-done/skill.json +7 -0
  664. package/skills/close-sprint/SKILL.md +370 -0
  665. package/skills/close-sprint/skill.json +7 -0
  666. package/skills/generate-backlog/SKILL.md +178 -0
  667. package/skills/generate-backlog/skill.json +7 -0
  668. package/skills/modify-sprint/SKILL.md +302 -0
  669. package/skills/modify-sprint/skill.json +7 -0
  670. package/skills/prioritize-backlog/SKILL.md +203 -0
  671. package/skills/prioritize-backlog/skill.json +7 -0
  672. package/skills/remove-from-sprint/SKILL.md +174 -0
  673. package/skills/remove-from-sprint/skill.json +7 -0
  674. package/skills/sprint-status-view/SKILL.md +173 -0
  675. package/skills/sprint-status-view/skill.json +7 -0
  676. package/skills/story-status-lookup/SKILL.md +21 -6
  677. package/skills/story-status-lookup/skill.json +2 -2
  678. package/test/extension-module-restructure.test.js +36 -12
  679. package/test/migration-validation.test.js +11 -11
  680. package/.opencode/skills/.ma-agents.json +0 -241
  681. package/.opencode/skills/MANIFEST.yaml +0 -254
  682. package/.opencode/skills/add-sprint/SKILL.md +0 -207
  683. package/.opencode/skills/add-sprint/bmad-skill-manifest.yaml +0 -3
  684. package/.opencode/skills/add-to-sprint/SKILL.md +0 -189
  685. package/.opencode/skills/add-to-sprint/bmad-skill-manifest.yaml +0 -3
  686. package/.opencode/skills/ai-audit-trail/SKILL.md +0 -23
  687. package/.opencode/skills/auto-bug-detection/SKILL.md +0 -169
  688. package/.opencode/skills/bmad-advanced-elicitation/SKILL.md +0 -137
  689. package/.opencode/skills/bmad-advanced-elicitation/methods.csv +0 -51
  690. package/.opencode/skills/bmad-agent-analyst/SKILL.md +0 -56
  691. package/.opencode/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -11
  692. package/.opencode/skills/bmad-agent-architect/SKILL.md +0 -52
  693. package/.opencode/skills/bmad-agent-architect/bmad-skill-manifest.yaml +0 -11
  694. package/.opencode/skills/bmad-agent-dev/SKILL.md +0 -62
  695. package/.opencode/skills/bmad-agent-dev/bmad-skill-manifest.yaml +0 -11
  696. package/.opencode/skills/bmad-agent-pm/SKILL.md +0 -57
  697. package/.opencode/skills/bmad-agent-pm/bmad-skill-manifest.yaml +0 -11
  698. package/.opencode/skills/bmad-agent-qa/SKILL.md +0 -59
  699. package/.opencode/skills/bmad-agent-qa/bmad-skill-manifest.yaml +0 -11
  700. package/.opencode/skills/bmad-agent-quick-flow-solo-dev/SKILL.md +0 -51
  701. package/.opencode/skills/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +0 -11
  702. package/.opencode/skills/bmad-agent-sm/SKILL.md +0 -53
  703. package/.opencode/skills/bmad-agent-sm/bmad-skill-manifest.yaml +0 -11
  704. package/.opencode/skills/bmad-agent-tech-writer/SKILL.md +0 -55
  705. package/.opencode/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
  706. package/.opencode/skills/bmad-agent-tech-writer/explain-concept.md +0 -20
  707. package/.opencode/skills/bmad-agent-tech-writer/mermaid-gen.md +0 -20
  708. package/.opencode/skills/bmad-agent-tech-writer/validate-doc.md +0 -19
  709. package/.opencode/skills/bmad-agent-tech-writer/write-document.md +0 -20
  710. package/.opencode/skills/bmad-agent-ux-designer/SKILL.md +0 -53
  711. package/.opencode/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -11
  712. package/.opencode/skills/bmad-brainstorming/SKILL.md +0 -6
  713. package/.opencode/skills/bmad-brainstorming/brain-methods.csv +0 -62
  714. package/.opencode/skills/bmad-brainstorming/steps/step-01-session-setup.md +0 -214
  715. package/.opencode/skills/bmad-brainstorming/steps/step-01b-continue.md +0 -124
  716. package/.opencode/skills/bmad-brainstorming/steps/step-02a-user-selected.md +0 -229
  717. package/.opencode/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -239
  718. package/.opencode/skills/bmad-brainstorming/steps/step-02c-random-selection.md +0 -211
  719. package/.opencode/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -266
  720. package/.opencode/skills/bmad-brainstorming/steps/step-03-technique-execution.md +0 -401
  721. package/.opencode/skills/bmad-brainstorming/steps/step-04-idea-organization.md +0 -305
  722. package/.opencode/skills/bmad-brainstorming/template.md +0 -15
  723. package/.opencode/skills/bmad-brainstorming/workflow.md +0 -53
  724. package/.opencode/skills/bmad-check-implementation-readiness/SKILL.md +0 -6
  725. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
  726. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
  727. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
  728. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
  729. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
  730. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -126
  731. package/.opencode/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
  732. package/.opencode/skills/bmad-check-implementation-readiness/workflow.md +0 -49
  733. package/.opencode/skills/bmad-cis-design-thinking/SKILL.md +0 -6
  734. package/.opencode/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
  735. package/.opencode/skills/bmad-cis-design-thinking/design-methods.csv +0 -31
  736. package/.opencode/skills/bmad-cis-design-thinking/template.md +0 -111
  737. package/.opencode/skills/bmad-cis-design-thinking/workflow.md +0 -242
  738. package/.opencode/skills/bmad-cis-innovation-strategy/SKILL.md +0 -6
  739. package/.opencode/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
  740. package/.opencode/skills/bmad-cis-innovation-strategy/innovation-frameworks.csv +0 -31
  741. package/.opencode/skills/bmad-cis-innovation-strategy/template.md +0 -189
  742. package/.opencode/skills/bmad-cis-innovation-strategy/workflow.md +0 -315
  743. package/.opencode/skills/bmad-cis-problem-solving/SKILL.md +0 -6
  744. package/.opencode/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
  745. package/.opencode/skills/bmad-cis-problem-solving/solving-methods.csv +0 -31
  746. package/.opencode/skills/bmad-cis-problem-solving/template.md +0 -165
  747. package/.opencode/skills/bmad-cis-problem-solving/workflow.md +0 -291
  748. package/.opencode/skills/bmad-cis-storytelling/SKILL.md +0 -6
  749. package/.opencode/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
  750. package/.opencode/skills/bmad-cis-storytelling/story-types.csv +0 -26
  751. package/.opencode/skills/bmad-cis-storytelling/template.md +0 -113
  752. package/.opencode/skills/bmad-cis-storytelling/workflow.md +0 -321
  753. package/.opencode/skills/bmad-code-review/SKILL.md +0 -6
  754. package/.opencode/skills/bmad-code-review/steps/step-01-gather-context.md +0 -62
  755. package/.opencode/skills/bmad-code-review/steps/step-02-review.md +0 -34
  756. package/.opencode/skills/bmad-code-review/steps/step-03-triage.md +0 -49
  757. package/.opencode/skills/bmad-code-review/steps/step-04-present.md +0 -129
  758. package/.opencode/skills/bmad-code-review/workflow.md +0 -55
  759. package/.opencode/skills/bmad-correct-course/SKILL.md +0 -6
  760. package/.opencode/skills/bmad-correct-course/checklist.md +0 -288
  761. package/.opencode/skills/bmad-correct-course/workflow.md +0 -267
  762. package/.opencode/skills/bmad-create-architecture/SKILL.md +0 -6
  763. package/.opencode/skills/bmad-create-architecture/architecture-decision-template.md +0 -12
  764. package/.opencode/skills/bmad-create-architecture/data/domain-complexity.csv +0 -13
  765. package/.opencode/skills/bmad-create-architecture/data/project-types.csv +0 -7
  766. package/.opencode/skills/bmad-create-architecture/steps/step-01-init.md +0 -153
  767. package/.opencode/skills/bmad-create-architecture/steps/step-01b-continue.md +0 -173
  768. package/.opencode/skills/bmad-create-architecture/steps/step-02-context.md +0 -224
  769. package/.opencode/skills/bmad-create-architecture/steps/step-03-starter.md +0 -329
  770. package/.opencode/skills/bmad-create-architecture/steps/step-04-decisions.md +0 -318
  771. package/.opencode/skills/bmad-create-architecture/steps/step-05-patterns.md +0 -359
  772. package/.opencode/skills/bmad-create-architecture/steps/step-06-structure.md +0 -379
  773. package/.opencode/skills/bmad-create-architecture/steps/step-07-validation.md +0 -359
  774. package/.opencode/skills/bmad-create-architecture/steps/step-08-complete.md +0 -76
  775. package/.opencode/skills/bmad-create-architecture/workflow.md +0 -38
  776. package/.opencode/skills/bmad-create-epics-and-stories/SKILL.md +0 -6
  777. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -255
  778. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -212
  779. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -255
  780. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -131
  781. package/.opencode/skills/bmad-create-epics-and-stories/templates/epics-template.md +0 -61
  782. package/.opencode/skills/bmad-create-epics-and-stories/workflow.md +0 -53
  783. package/.opencode/skills/bmad-create-prd/SKILL.md +0 -6
  784. package/.opencode/skills/bmad-create-prd/data/domain-complexity.csv +0 -15
  785. package/.opencode/skills/bmad-create-prd/data/prd-purpose.md +0 -197
  786. package/.opencode/skills/bmad-create-prd/data/project-types.csv +0 -11
  787. package/.opencode/skills/bmad-create-prd/steps-c/step-01-init.md +0 -178
  788. package/.opencode/skills/bmad-create-prd/steps-c/step-01b-continue.md +0 -161
  789. package/.opencode/skills/bmad-create-prd/steps-c/step-02-discovery.md +0 -208
  790. package/.opencode/skills/bmad-create-prd/steps-c/step-02b-vision.md +0 -142
  791. package/.opencode/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -158
  792. package/.opencode/skills/bmad-create-prd/steps-c/step-03-success.md +0 -214
  793. package/.opencode/skills/bmad-create-prd/steps-c/step-04-journeys.md +0 -201
  794. package/.opencode/skills/bmad-create-prd/steps-c/step-05-domain.md +0 -194
  795. package/.opencode/skills/bmad-create-prd/steps-c/step-06-innovation.md +0 -211
  796. package/.opencode/skills/bmad-create-prd/steps-c/step-07-project-type.md +0 -222
  797. package/.opencode/skills/bmad-create-prd/steps-c/step-08-scoping.md +0 -216
  798. package/.opencode/skills/bmad-create-prd/steps-c/step-09-functional.md +0 -219
  799. package/.opencode/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -230
  800. package/.opencode/skills/bmad-create-prd/steps-c/step-11-polish.md +0 -221
  801. package/.opencode/skills/bmad-create-prd/steps-c/step-12-complete.md +0 -115
  802. package/.opencode/skills/bmad-create-prd/templates/prd-template.md +0 -10
  803. package/.opencode/skills/bmad-create-prd/workflow.md +0 -62
  804. package/.opencode/skills/bmad-create-story/SKILL.md +0 -6
  805. package/.opencode/skills/bmad-create-story/checklist.md +0 -357
  806. package/.opencode/skills/bmad-create-story/discover-inputs.md +0 -88
  807. package/.opencode/skills/bmad-create-story/template.md +0 -49
  808. package/.opencode/skills/bmad-create-story/workflow.md +0 -380
  809. package/.opencode/skills/bmad-create-ux-design/SKILL.md +0 -6
  810. package/.opencode/skills/bmad-create-ux-design/steps/step-01-init.md +0 -135
  811. package/.opencode/skills/bmad-create-ux-design/steps/step-01b-continue.md +0 -127
  812. package/.opencode/skills/bmad-create-ux-design/steps/step-02-discovery.md +0 -190
  813. package/.opencode/skills/bmad-create-ux-design/steps/step-03-core-experience.md +0 -217
  814. package/.opencode/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -220
  815. package/.opencode/skills/bmad-create-ux-design/steps/step-05-inspiration.md +0 -235
  816. package/.opencode/skills/bmad-create-ux-design/steps/step-06-design-system.md +0 -253
  817. package/.opencode/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -255
  818. package/.opencode/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -225
  819. package/.opencode/skills/bmad-create-ux-design/steps/step-09-design-directions.md +0 -225
  820. package/.opencode/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -242
  821. package/.opencode/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -249
  822. package/.opencode/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -238
  823. package/.opencode/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -265
  824. package/.opencode/skills/bmad-create-ux-design/steps/step-14-complete.md +0 -171
  825. package/.opencode/skills/bmad-create-ux-design/ux-design-template.md +0 -13
  826. package/.opencode/skills/bmad-create-ux-design/workflow.md +0 -36
  827. package/.opencode/skills/bmad-dev-story/checklist.md +0 -80
  828. package/.opencode/skills/bmad-dev-story/workflow.md +0 -450
  829. package/.opencode/skills/bmad-distillator/SKILL.md +0 -178
  830. package/.opencode/skills/bmad-distillator/agents/distillate-compressor.md +0 -116
  831. package/.opencode/skills/bmad-distillator/agents/round-trip-reconstructor.md +0 -68
  832. package/.opencode/skills/bmad-distillator/resources/compression-rules.md +0 -51
  833. package/.opencode/skills/bmad-distillator/resources/distillate-format-reference.md +0 -227
  834. package/.opencode/skills/bmad-distillator/resources/splitting-strategy.md +0 -78
  835. package/.opencode/skills/bmad-distillator/scripts/analyze_sources.py +0 -300
  836. package/.opencode/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -204
  837. package/.opencode/skills/bmad-document-project/SKILL.md +0 -6
  838. package/.opencode/skills/bmad-document-project/checklist.md +0 -245
  839. package/.opencode/skills/bmad-document-project/documentation-requirements.csv +0 -12
  840. package/.opencode/skills/bmad-document-project/instructions.md +0 -128
  841. package/.opencode/skills/bmad-document-project/templates/deep-dive-template.md +0 -345
  842. package/.opencode/skills/bmad-document-project/templates/index-template.md +0 -169
  843. package/.opencode/skills/bmad-document-project/templates/project-overview-template.md +0 -103
  844. package/.opencode/skills/bmad-document-project/templates/project-scan-report-schema.json +0 -160
  845. package/.opencode/skills/bmad-document-project/templates/source-tree-template.md +0 -135
  846. package/.opencode/skills/bmad-document-project/workflow.md +0 -27
  847. package/.opencode/skills/bmad-document-project/workflows/deep-dive-instructions.md +0 -299
  848. package/.opencode/skills/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
  849. package/.opencode/skills/bmad-document-project/workflows/full-scan-instructions.md +0 -1107
  850. package/.opencode/skills/bmad-document-project/workflows/full-scan-workflow.md +0 -34
  851. package/.opencode/skills/bmad-domain-research/SKILL.md +0 -6
  852. package/.opencode/skills/bmad-domain-research/domain-steps/step-01-init.md +0 -137
  853. package/.opencode/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -229
  854. package/.opencode/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -238
  855. package/.opencode/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -206
  856. package/.opencode/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -234
  857. package/.opencode/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -444
  858. package/.opencode/skills/bmad-domain-research/research.template.md +0 -29
  859. package/.opencode/skills/bmad-domain-research/workflow.md +0 -49
  860. package/.opencode/skills/bmad-edit-prd/SKILL.md +0 -6
  861. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  862. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  863. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
  864. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
  865. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -165
  866. package/.opencode/skills/bmad-edit-prd/workflow.md +0 -63
  867. package/.opencode/skills/bmad-editorial-review-prose/SKILL.md +0 -86
  868. package/.opencode/skills/bmad-editorial-review-structure/SKILL.md +0 -179
  869. package/.opencode/skills/bmad-generate-project-context/SKILL.md +0 -6
  870. package/.opencode/skills/bmad-generate-project-context/project-context-template.md +0 -21
  871. package/.opencode/skills/bmad-generate-project-context/steps/step-01-discover.md +0 -186
  872. package/.opencode/skills/bmad-generate-project-context/steps/step-02-generate.md +0 -321
  873. package/.opencode/skills/bmad-generate-project-context/steps/step-03-complete.md +0 -278
  874. package/.opencode/skills/bmad-generate-project-context/workflow.md +0 -43
  875. package/.opencode/skills/bmad-help/SKILL.md +0 -73
  876. package/.opencode/skills/bmad-index-docs/SKILL.md +0 -66
  877. package/.opencode/skills/bmad-init/SKILL.md +0 -100
  878. package/.opencode/skills/bmad-init/resources/core-module.yaml +0 -25
  879. package/.opencode/skills/bmad-init/scripts/bmad_init.py +0 -593
  880. package/.opencode/skills/bmad-init/scripts/tests/test_bmad_init.py +0 -329
  881. package/.opencode/skills/bmad-ma-agent-cyber/SKILL.md +0 -49
  882. package/.opencode/skills/bmad-ma-agent-cyber/bmad-skill-manifest.yaml +0 -11
  883. package/.opencode/skills/bmad-ma-agent-devops/SKILL.md +0 -49
  884. package/.opencode/skills/bmad-ma-agent-devops/bmad-skill-manifest.yaml +0 -11
  885. package/.opencode/skills/bmad-ma-agent-mil498/SKILL.md +0 -53
  886. package/.opencode/skills/bmad-ma-agent-mil498/bmad-skill-manifest.yaml +0 -11
  887. package/.opencode/skills/bmad-ma-agent-ml/SKILL.md +0 -59
  888. package/.opencode/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +0 -11
  889. package/.opencode/skills/bmad-ma-agent-sre/SKILL.md +0 -49
  890. package/.opencode/skills/bmad-ma-agent-sre/bmad-skill-manifest.yaml +0 -11
  891. package/.opencode/skills/bmad-market-research/SKILL.md +0 -6
  892. package/.opencode/skills/bmad-market-research/research.template.md +0 -29
  893. package/.opencode/skills/bmad-market-research/steps/step-01-init.md +0 -184
  894. package/.opencode/skills/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
  895. package/.opencode/skills/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
  896. package/.opencode/skills/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
  897. package/.opencode/skills/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
  898. package/.opencode/skills/bmad-market-research/steps/step-06-research-completion.md +0 -478
  899. package/.opencode/skills/bmad-market-research/workflow.md +0 -49
  900. package/.opencode/skills/bmad-party-mode/SKILL.md +0 -6
  901. package/.opencode/skills/bmad-party-mode/steps/step-01-agent-loading.md +0 -138
  902. package/.opencode/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -187
  903. package/.opencode/skills/bmad-party-mode/steps/step-03-graceful-exit.md +0 -167
  904. package/.opencode/skills/bmad-party-mode/workflow.md +0 -190
  905. package/.opencode/skills/bmad-product-brief/SKILL.md +0 -87
  906. package/.opencode/skills/bmad-product-brief/agents/artifact-analyzer.md +0 -60
  907. package/.opencode/skills/bmad-product-brief/agents/opportunity-reviewer.md +0 -44
  908. package/.opencode/skills/bmad-product-brief/agents/skeptic-reviewer.md +0 -44
  909. package/.opencode/skills/bmad-product-brief/agents/web-researcher.md +0 -49
  910. package/.opencode/skills/bmad-product-brief/bmad-manifest.json +0 -17
  911. package/.opencode/skills/bmad-product-brief/prompts/contextual-discovery.md +0 -57
  912. package/.opencode/skills/bmad-product-brief/prompts/draft-and-review.md +0 -86
  913. package/.opencode/skills/bmad-product-brief/prompts/finalize.md +0 -75
  914. package/.opencode/skills/bmad-product-brief/prompts/guided-elicitation.md +0 -70
  915. package/.opencode/skills/bmad-product-brief/resources/brief-template.md +0 -60
  916. package/.opencode/skills/bmad-qa-generate-e2e-tests/SKILL.md +0 -6
  917. package/.opencode/skills/bmad-qa-generate-e2e-tests/checklist.md +0 -33
  918. package/.opencode/skills/bmad-qa-generate-e2e-tests/workflow.md +0 -136
  919. package/.opencode/skills/bmad-quick-dev/SKILL.md +0 -6
  920. package/.opencode/skills/bmad-quick-dev/spec-template.md +0 -88
  921. package/.opencode/skills/bmad-quick-dev/step-01-clarify-and-route.md +0 -64
  922. package/.opencode/skills/bmad-quick-dev/step-02-plan.md +0 -35
  923. package/.opencode/skills/bmad-quick-dev/step-03-implement.md +0 -37
  924. package/.opencode/skills/bmad-quick-dev/step-04-review.md +0 -49
  925. package/.opencode/skills/bmad-quick-dev/step-05-present.md +0 -63
  926. package/.opencode/skills/bmad-quick-dev/step-oneshot.md +0 -49
  927. package/.opencode/skills/bmad-quick-dev/workflow.md +0 -79
  928. package/.opencode/skills/bmad-retrospective/SKILL.md +0 -6
  929. package/.opencode/skills/bmad-retrospective/workflow.md +0 -1479
  930. package/.opencode/skills/bmad-review-adversarial-general/SKILL.md +0 -37
  931. package/.opencode/skills/bmad-review-edge-case-hunter/SKILL.md +0 -67
  932. package/.opencode/skills/bmad-shard-doc/SKILL.md +0 -105
  933. package/.opencode/skills/bmad-sprint-planning/SKILL.md +0 -6
  934. package/.opencode/skills/bmad-sprint-planning/checklist.md +0 -33
  935. package/.opencode/skills/bmad-sprint-planning/sprint-status-template.yaml +0 -56
  936. package/.opencode/skills/bmad-sprint-planning/workflow.md +0 -263
  937. package/.opencode/skills/bmad-sprint-status/SKILL.md +0 -6
  938. package/.opencode/skills/bmad-sprint-status/workflow.md +0 -261
  939. package/.opencode/skills/bmad-technical-research/SKILL.md +0 -6
  940. package/.opencode/skills/bmad-technical-research/research.template.md +0 -29
  941. package/.opencode/skills/bmad-technical-research/technical-steps/step-01-init.md +0 -137
  942. package/.opencode/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
  943. package/.opencode/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
  944. package/.opencode/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
  945. package/.opencode/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
  946. package/.opencode/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -487
  947. package/.opencode/skills/bmad-technical-research/workflow.md +0 -50
  948. package/.opencode/skills/bmad-validate-prd/SKILL.md +0 -6
  949. package/.opencode/skills/bmad-validate-prd/data/domain-complexity.csv +0 -15
  950. package/.opencode/skills/bmad-validate-prd/data/prd-purpose.md +0 -197
  951. package/.opencode/skills/bmad-validate-prd/data/project-types.csv +0 -11
  952. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -221
  953. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
  954. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
  955. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
  956. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
  957. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
  958. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
  959. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
  960. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
  961. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
  962. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
  963. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
  964. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
  965. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -229
  966. package/.opencode/skills/bmad-validate-prd/workflow.md +0 -62
  967. package/.opencode/skills/cleanup-done/SKILL.md +0 -159
  968. package/.opencode/skills/cmake-best-practices/SKILL.md +0 -64
  969. package/.opencode/skills/cmake-best-practices/examples/cmake.md +0 -59
  970. package/.opencode/skills/code-documentation/SKILL.md +0 -57
  971. package/.opencode/skills/code-documentation/examples/cpp.md +0 -29
  972. package/.opencode/skills/code-documentation/examples/csharp.md +0 -28
  973. package/.opencode/skills/code-documentation/examples/javascript_typescript.md +0 -28
  974. package/.opencode/skills/code-documentation/examples/python.md +0 -57
  975. package/.opencode/skills/code-review/SKILL.md +0 -43
  976. package/.opencode/skills/commit-message/SKILL.md +0 -79
  977. package/.opencode/skills/cpp-best-practices/SKILL.md +0 -234
  978. package/.opencode/skills/cpp-best-practices/examples/modern-idioms.md +0 -189
  979. package/.opencode/skills/cpp-best-practices/examples/naming-and-organization.md +0 -102
  980. package/.opencode/skills/cpp-concurrency-safety/SKILL.md +0 -60
  981. package/.opencode/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
  982. package/.opencode/skills/cpp-const-correctness/SKILL.md +0 -63
  983. package/.opencode/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
  984. package/.opencode/skills/cpp-memory-handling/SKILL.md +0 -42
  985. package/.opencode/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
  986. package/.opencode/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
  987. package/.opencode/skills/cpp-modern-composition/SKILL.md +0 -64
  988. package/.opencode/skills/cpp-modern-composition/examples/composition.md +0 -51
  989. package/.opencode/skills/cpp-robust-interfaces/SKILL.md +0 -55
  990. package/.opencode/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
  991. package/.opencode/skills/create-bug-story/SKILL.md +0 -263
  992. package/.opencode/skills/create-bug-story/bmad-skill-manifest.yaml +0 -3
  993. package/.opencode/skills/create-hardened-docker-skill/SKILL.md +0 -637
  994. package/.opencode/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
  995. package/.opencode/skills/csharp-best-practices/SKILL.md +0 -278
  996. package/.opencode/skills/cyber-generate-certs/SKILL.md +0 -27
  997. package/.opencode/skills/cyber-generate-certs/bmad-skill-manifest.yaml +0 -3
  998. package/.opencode/skills/cyber-immunity-estimation/SKILL.md +0 -29
  999. package/.opencode/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +0 -3
  1000. package/.opencode/skills/cyber-security-audit/SKILL.md +0 -27
  1001. package/.opencode/skills/cyber-security-audit/bmad-skill-manifest.yaml +0 -3
  1002. package/.opencode/skills/cyber-vault-secrets/SKILL.md +0 -28
  1003. package/.opencode/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +0 -3
  1004. package/.opencode/skills/cyber-verify-docker-users/.gitkeep +0 -0
  1005. package/.opencode/skills/cyber-verify-docker-users/SKILL.md +0 -23
  1006. package/.opencode/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +0 -3
  1007. package/.opencode/skills/cyber-verify-image-signature/.gitkeep +0 -0
  1008. package/.opencode/skills/cyber-verify-image-signature/SKILL.md +0 -22
  1009. package/.opencode/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +0 -3
  1010. package/.opencode/skills/cyber-vulnerability-scan/.gitkeep +0 -0
  1011. package/.opencode/skills/cyber-vulnerability-scan/SKILL.md +0 -28
  1012. package/.opencode/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +0 -3
  1013. package/.opencode/skills/devops-configure-infrastructure/.gitkeep +0 -0
  1014. package/.opencode/skills/devops-configure-infrastructure/SKILL.md +0 -27
  1015. package/.opencode/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +0 -3
  1016. package/.opencode/skills/devops-disconnected-deployment/.gitkeep +0 -0
  1017. package/.opencode/skills/devops-disconnected-deployment/SKILL.md +0 -27
  1018. package/.opencode/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +0 -3
  1019. package/.opencode/skills/devops-docker-compose-setup/.gitkeep +0 -0
  1020. package/.opencode/skills/devops-docker-compose-setup/SKILL.md +0 -26
  1021. package/.opencode/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +0 -3
  1022. package/.opencode/skills/devops-manage-helm/.gitkeep +0 -0
  1023. package/.opencode/skills/devops-manage-helm/SKILL.md +0 -28
  1024. package/.opencode/skills/devops-manage-helm/bmad-skill-manifest.yaml +0 -3
  1025. package/.opencode/skills/devops-sign-docker-image/.gitkeep +0 -0
  1026. package/.opencode/skills/devops-sign-docker-image/SKILL.md +0 -24
  1027. package/.opencode/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +0 -3
  1028. package/.opencode/skills/docker-hardening-verification/SKILL.md +0 -28
  1029. package/.opencode/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
  1030. package/.opencode/skills/docker-image-signing/SKILL.md +0 -28
  1031. package/.opencode/skills/docker-image-signing/scripts/sign-image.sh +0 -33
  1032. package/.opencode/skills/document-revision-history/SKILL.md +0 -104
  1033. package/.opencode/skills/generate-backlog/.gitkeep +0 -0
  1034. package/.opencode/skills/generate-backlog/SKILL.md +0 -183
  1035. package/.opencode/skills/git-workflow-skill/SKILL.md +0 -194
  1036. package/.opencode/skills/git-workflow-skill/hooks/commit-msg +0 -61
  1037. package/.opencode/skills/git-workflow-skill/hooks/pre-commit +0 -38
  1038. package/.opencode/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
  1039. package/.opencode/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
  1040. package/.opencode/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
  1041. package/.opencode/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
  1042. package/.opencode/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
  1043. package/.opencode/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
  1044. package/.opencode/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
  1045. package/.opencode/skills/js-ts-security-skill/SKILL.md +0 -64
  1046. package/.opencode/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
  1047. package/.opencode/skills/logging-best-practices/SKILL.md +0 -50
  1048. package/.opencode/skills/logging-best-practices/examples/cpp.md +0 -36
  1049. package/.opencode/skills/logging-best-practices/examples/csharp.md +0 -49
  1050. package/.opencode/skills/logging-best-practices/examples/javascript.md +0 -77
  1051. package/.opencode/skills/logging-best-practices/examples/python.md +0 -57
  1052. package/.opencode/skills/logging-best-practices/references/logging-standards.md +0 -29
  1053. package/.opencode/skills/mil498-ocd/.gitkeep +0 -0
  1054. package/.opencode/skills/mil498-ocd/SKILL.md +0 -30
  1055. package/.opencode/skills/mil498-ocd/bmad-skill-manifest.yaml +0 -5
  1056. package/.opencode/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +0 -26
  1057. package/.opencode/skills/mil498-ocd/prompts/02-load-template.md +0 -10
  1058. package/.opencode/skills/mil498-ocd/prompts/03-generate-document.md +0 -90
  1059. package/.opencode/skills/mil498-ocd/prompts/04-validate.md +0 -14
  1060. package/.opencode/skills/mil498-ocd/prompts/05-review.md +0 -15
  1061. package/.opencode/skills/mil498-ocd/prompts/06-save.md +0 -15
  1062. package/.opencode/skills/mil498-sdd/.gitkeep +0 -0
  1063. package/.opencode/skills/mil498-sdd/SKILL.md +0 -30
  1064. package/.opencode/skills/mil498-sdd/bmad-skill-manifest.yaml +0 -5
  1065. package/.opencode/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +0 -50
  1066. package/.opencode/skills/mil498-sdd/prompts/02-load-template.md +0 -10
  1067. package/.opencode/skills/mil498-sdd/prompts/03-generate-document.md +0 -98
  1068. package/.opencode/skills/mil498-sdd/prompts/04-validate.md +0 -16
  1069. package/.opencode/skills/mil498-sdd/prompts/05-review.md +0 -15
  1070. package/.opencode/skills/mil498-sdd/prompts/06-save.md +0 -19
  1071. package/.opencode/skills/mil498-sdd/template.md +0 -163
  1072. package/.opencode/skills/mil498-sdp/.gitkeep +0 -0
  1073. package/.opencode/skills/mil498-sdp/SKILL.md +0 -30
  1074. package/.opencode/skills/mil498-sdp/bmad-skill-manifest.yaml +0 -5
  1075. package/.opencode/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +0 -32
  1076. package/.opencode/skills/mil498-sdp/prompts/02-load-template.md +0 -10
  1077. package/.opencode/skills/mil498-sdp/prompts/03-generate-document.md +0 -187
  1078. package/.opencode/skills/mil498-sdp/prompts/04-validate.md +0 -13
  1079. package/.opencode/skills/mil498-sdp/prompts/05-review.md +0 -15
  1080. package/.opencode/skills/mil498-sdp/prompts/06-save.md +0 -14
  1081. package/.opencode/skills/mil498-srs/.gitkeep +0 -0
  1082. package/.opencode/skills/mil498-srs/SKILL.md +0 -30
  1083. package/.opencode/skills/mil498-srs/bmad-skill-manifest.yaml +0 -5
  1084. package/.opencode/skills/mil498-srs/prompts/01-discover-project-artifacts.md +0 -42
  1085. package/.opencode/skills/mil498-srs/prompts/02-load-template.md +0 -10
  1086. package/.opencode/skills/mil498-srs/prompts/03-generate-document.md +0 -100
  1087. package/.opencode/skills/mil498-srs/prompts/04-validate.md +0 -16
  1088. package/.opencode/skills/mil498-srs/prompts/05-review.md +0 -15
  1089. package/.opencode/skills/mil498-srs/prompts/06-save.md +0 -18
  1090. package/.opencode/skills/mil498-ssdd/.gitkeep +0 -0
  1091. package/.opencode/skills/mil498-ssdd/SKILL.md +0 -32
  1092. package/.opencode/skills/mil498-ssdd/bmad-skill-manifest.yaml +0 -5
  1093. package/.opencode/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +0 -32
  1094. package/.opencode/skills/mil498-ssdd/prompts/02-load-template.md +0 -10
  1095. package/.opencode/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +0 -43
  1096. package/.opencode/skills/mil498-ssdd/prompts/04-generate-document.md +0 -96
  1097. package/.opencode/skills/mil498-ssdd/prompts/05-validate.md +0 -14
  1098. package/.opencode/skills/mil498-ssdd/prompts/06-review.md +0 -16
  1099. package/.opencode/skills/mil498-ssdd/prompts/07-save.md +0 -16
  1100. package/.opencode/skills/mil498-sss/.gitkeep +0 -0
  1101. package/.opencode/skills/mil498-sss/SKILL.md +0 -31
  1102. package/.opencode/skills/mil498-sss/bmad-skill-manifest.yaml +0 -5
  1103. package/.opencode/skills/mil498-sss/prompts/01-discover-project-artifacts.md +0 -31
  1104. package/.opencode/skills/mil498-sss/prompts/02-load-template.md +0 -10
  1105. package/.opencode/skills/mil498-sss/prompts/03-generate-document.md +0 -108
  1106. package/.opencode/skills/mil498-sss/prompts/04-validate.md +0 -16
  1107. package/.opencode/skills/mil498-sss/prompts/05-review.md +0 -15
  1108. package/.opencode/skills/mil498-sss/prompts/06-save.md +0 -15
  1109. package/.opencode/skills/mil498-std/.gitkeep +0 -0
  1110. package/.opencode/skills/mil498-std/SKILL.md +0 -30
  1111. package/.opencode/skills/mil498-std/bmad-skill-manifest.yaml +0 -5
  1112. package/.opencode/skills/mil498-std/prompts/01-discover-project-artifacts.md +0 -42
  1113. package/.opencode/skills/mil498-std/prompts/02-load-template.md +0 -10
  1114. package/.opencode/skills/mil498-std/prompts/03-generate-document.md +0 -117
  1115. package/.opencode/skills/mil498-std/prompts/04-validate.md +0 -15
  1116. package/.opencode/skills/mil498-std/prompts/05-review.md +0 -15
  1117. package/.opencode/skills/mil498-std/prompts/06-save.md +0 -15
  1118. package/.opencode/skills/ml-advise/.gitkeep +0 -0
  1119. package/.opencode/skills/ml-advise/SKILL.md +0 -76
  1120. package/.opencode/skills/ml-advise/bmad-skill-manifest.yaml +0 -3
  1121. package/.opencode/skills/ml-advise/skill.json +0 -7
  1122. package/.opencode/skills/ml-analysis/.gitkeep +0 -0
  1123. package/.opencode/skills/ml-analysis/SKILL.md +0 -60
  1124. package/.opencode/skills/ml-analysis/bmad-skill-manifest.yaml +0 -3
  1125. package/.opencode/skills/ml-analysis/skill.json +0 -7
  1126. package/.opencode/skills/ml-architecture/.gitkeep +0 -0
  1127. package/.opencode/skills/ml-architecture/SKILL.md +0 -55
  1128. package/.opencode/skills/ml-architecture/bmad-skill-manifest.yaml +0 -3
  1129. package/.opencode/skills/ml-architecture/skill.json +0 -7
  1130. package/.opencode/skills/ml-detailed-design/.gitkeep +0 -0
  1131. package/.opencode/skills/ml-detailed-design/SKILL.md +0 -67
  1132. package/.opencode/skills/ml-detailed-design/bmad-skill-manifest.yaml +0 -3
  1133. package/.opencode/skills/ml-detailed-design/skill.json +0 -7
  1134. package/.opencode/skills/ml-eda/.gitkeep +0 -0
  1135. package/.opencode/skills/ml-eda/SKILL.md +0 -56
  1136. package/.opencode/skills/ml-eda/bmad-skill-manifest.yaml +0 -3
  1137. package/.opencode/skills/ml-eda/scripts/baseline_classifier.py +0 -522
  1138. package/.opencode/skills/ml-eda/scripts/class_weights_calculator.py +0 -295
  1139. package/.opencode/skills/ml-eda/scripts/clustering_explorer.py +0 -383
  1140. package/.opencode/skills/ml-eda/scripts/eda_analyzer.py +0 -654
  1141. package/.opencode/skills/ml-eda/skill.json +0 -7
  1142. package/.opencode/skills/ml-experiment/.gitkeep +0 -0
  1143. package/.opencode/skills/ml-experiment/SKILL.md +0 -74
  1144. package/.opencode/skills/ml-experiment/assets/advanced_trainer_configs.py +0 -430
  1145. package/.opencode/skills/ml-experiment/assets/quick_trainer_setup.py +0 -233
  1146. package/.opencode/skills/ml-experiment/assets/template_datamodule.py +0 -219
  1147. package/.opencode/skills/ml-experiment/assets/template_gnn_module.py +0 -341
  1148. package/.opencode/skills/ml-experiment/assets/template_lightning_module.py +0 -158
  1149. package/.opencode/skills/ml-experiment/bmad-skill-manifest.yaml +0 -3
  1150. package/.opencode/skills/ml-experiment/skill.json +0 -7
  1151. package/.opencode/skills/ml-hparam/.gitkeep +0 -0
  1152. package/.opencode/skills/ml-hparam/SKILL.md +0 -81
  1153. package/.opencode/skills/ml-hparam/bmad-skill-manifest.yaml +0 -3
  1154. package/.opencode/skills/ml-hparam/skill.json +0 -7
  1155. package/.opencode/skills/ml-ideation/.gitkeep +0 -0
  1156. package/.opencode/skills/ml-ideation/SKILL.md +0 -50
  1157. package/.opencode/skills/ml-ideation/bmad-skill-manifest.yaml +0 -3
  1158. package/.opencode/skills/ml-ideation/scripts/validate_ml_prd.py +0 -287
  1159. package/.opencode/skills/ml-ideation/skill.json +0 -7
  1160. package/.opencode/skills/ml-infra/.gitkeep +0 -0
  1161. package/.opencode/skills/ml-infra/SKILL.md +0 -58
  1162. package/.opencode/skills/ml-infra/bmad-skill-manifest.yaml +0 -3
  1163. package/.opencode/skills/ml-infra/skill.json +0 -7
  1164. package/.opencode/skills/ml-retrospective/.gitkeep +0 -0
  1165. package/.opencode/skills/ml-retrospective/SKILL.md +0 -63
  1166. package/.opencode/skills/ml-retrospective/bmad-skill-manifest.yaml +0 -3
  1167. package/.opencode/skills/ml-retrospective/skill.json +0 -7
  1168. package/.opencode/skills/ml-revision/.gitkeep +0 -0
  1169. package/.opencode/skills/ml-revision/SKILL.md +0 -82
  1170. package/.opencode/skills/ml-revision/bmad-skill-manifest.yaml +0 -3
  1171. package/.opencode/skills/ml-revision/skill.json +0 -7
  1172. package/.opencode/skills/ml-techspec/.gitkeep +0 -0
  1173. package/.opencode/skills/ml-techspec/SKILL.md +0 -80
  1174. package/.opencode/skills/ml-techspec/bmad-skill-manifest.yaml +0 -3
  1175. package/.opencode/skills/ml-techspec/skill.json +0 -7
  1176. package/.opencode/skills/modify-sprint/.gitkeep +0 -0
  1177. package/.opencode/skills/modify-sprint/SKILL.md +0 -322
  1178. package/.opencode/skills/modify-sprint/bmad-skill-manifest.yaml +0 -3
  1179. package/.opencode/skills/open-presentation/SKILL.md +0 -35
  1180. package/.opencode/skills/opentelemetry-best-practices/SKILL.md +0 -34
  1181. package/.opencode/skills/opentelemetry-best-practices/examples/go.md +0 -32
  1182. package/.opencode/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
  1183. package/.opencode/skills/opentelemetry-best-practices/examples/python.md +0 -37
  1184. package/.opencode/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
  1185. package/.opencode/skills/prioritize-backlog/.gitkeep +0 -0
  1186. package/.opencode/skills/prioritize-backlog/SKILL.md +0 -195
  1187. package/.opencode/skills/project-context-expansion/.gitkeep +0 -0
  1188. package/.opencode/skills/project-context-expansion/SKILL.md +0 -238
  1189. package/.opencode/skills/project-context-expansion/bmad-skill-manifest.yaml +0 -3
  1190. package/.opencode/skills/python-best-practices/SKILL.md +0 -385
  1191. package/.opencode/skills/python-dependency-mgmt/SKILL.md +0 -42
  1192. package/.opencode/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
  1193. package/.opencode/skills/python-security-skill/SKILL.md +0 -56
  1194. package/.opencode/skills/python-security-skill/examples/security.md +0 -56
  1195. package/.opencode/skills/remove-from-sprint/.gitkeep +0 -0
  1196. package/.opencode/skills/remove-from-sprint/SKILL.md +0 -163
  1197. package/.opencode/skills/self-signed-cert/SKILL.md +0 -42
  1198. package/.opencode/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
  1199. package/.opencode/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
  1200. package/.opencode/skills/skill-creator/SKILL.md +0 -196
  1201. package/.opencode/skills/skill-creator/references/output-patterns.md +0 -82
  1202. package/.opencode/skills/skill-creator/references/workflows.md +0 -28
  1203. package/.opencode/skills/skill-creator/scripts/init_skill.py +0 -208
  1204. package/.opencode/skills/skill-creator/scripts/package_skill.py +0 -99
  1205. package/.opencode/skills/skill-creator/scripts/quick_validate.py +0 -113
  1206. package/.opencode/skills/sprint-status-view/.gitkeep +0 -0
  1207. package/.opencode/skills/sprint-status-view/SKILL.md +0 -263
  1208. package/.opencode/skills/sprint-status-view/bmad-skill-manifest.yaml +0 -3
  1209. package/.opencode/skills/sre-check-deployment-status/.gitkeep +0 -0
  1210. package/.opencode/skills/sre-check-deployment-status/SKILL.md +0 -32
  1211. package/.opencode/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +0 -3
  1212. package/.opencode/skills/sre-check-secrets/.gitkeep +0 -0
  1213. package/.opencode/skills/sre-check-secrets/SKILL.md +0 -23
  1214. package/.opencode/skills/sre-check-secrets/bmad-skill-manifest.yaml +0 -3
  1215. package/.opencode/skills/sre-check-system-status/.gitkeep +0 -0
  1216. package/.opencode/skills/sre-check-system-status/SKILL.md +0 -27
  1217. package/.opencode/skills/sre-check-system-status/bmad-skill-manifest.yaml +0 -3
  1218. package/.opencode/skills/sre-day-2-ops/.gitkeep +0 -0
  1219. package/.opencode/skills/sre-day-2-ops/SKILL.md +0 -26
  1220. package/.opencode/skills/sre-day-2-ops/bmad-skill-manifest.yaml +0 -3
  1221. package/.opencode/skills/sre-deployment-strategies/.gitkeep +0 -0
  1222. package/.opencode/skills/sre-deployment-strategies/SKILL.md +0 -28
  1223. package/.opencode/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +0 -3
  1224. package/.opencode/skills/sre-fix-deployments/.gitkeep +0 -0
  1225. package/.opencode/skills/sre-fix-deployments/SKILL.md +0 -25
  1226. package/.opencode/skills/sre-fix-deployments/bmad-skill-manifest.yaml +0 -3
  1227. package/.opencode/skills/sre-gitops-status/.gitkeep +0 -0
  1228. package/.opencode/skills/sre-gitops-status/SKILL.md +0 -25
  1229. package/.opencode/skills/sre-gitops-status/bmad-skill-manifest.yaml +0 -3
  1230. package/.opencode/skills/story-status-lookup/SKILL.md +0 -78
  1231. package/.opencode/skills/test-accompanied-development/SKILL.md +0 -50
  1232. package/.opencode/skills/test-generator/SKILL.md +0 -65
  1233. package/.opencode/skills/vercel-react-best-practices/SKILL.md +0 -109
  1234. package/.opencode/skills/verify-hardened-docker-skill/SKILL.md +0 -442
  1235. package/.opencode/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
  1236. package/.roo/rules/00-ma-agents.md +0 -13
  1237. package/.roo/skills/.ma-agents.json +0 -241
  1238. package/.roo/skills/MANIFEST.yaml +0 -254
  1239. package/.roo/skills/ai-audit-trail/SKILL.md +0 -23
  1240. package/.roo/skills/auto-bug-detection/SKILL.md +0 -169
  1241. package/.roo/skills/cmake-best-practices/SKILL.md +0 -64
  1242. package/.roo/skills/cmake-best-practices/examples/cmake.md +0 -59
  1243. package/.roo/skills/code-documentation/SKILL.md +0 -57
  1244. package/.roo/skills/code-documentation/examples/cpp.md +0 -29
  1245. package/.roo/skills/code-documentation/examples/csharp.md +0 -28
  1246. package/.roo/skills/code-documentation/examples/javascript_typescript.md +0 -28
  1247. package/.roo/skills/code-documentation/examples/python.md +0 -57
  1248. package/.roo/skills/code-review/SKILL.md +0 -43
  1249. package/.roo/skills/commit-message/SKILL.md +0 -79
  1250. package/.roo/skills/cpp-best-practices/SKILL.md +0 -234
  1251. package/.roo/skills/cpp-best-practices/examples/modern-idioms.md +0 -189
  1252. package/.roo/skills/cpp-best-practices/examples/naming-and-organization.md +0 -102
  1253. package/.roo/skills/cpp-concurrency-safety/SKILL.md +0 -60
  1254. package/.roo/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
  1255. package/.roo/skills/cpp-const-correctness/SKILL.md +0 -63
  1256. package/.roo/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
  1257. package/.roo/skills/cpp-memory-handling/SKILL.md +0 -42
  1258. package/.roo/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
  1259. package/.roo/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
  1260. package/.roo/skills/cpp-modern-composition/SKILL.md +0 -64
  1261. package/.roo/skills/cpp-modern-composition/examples/composition.md +0 -51
  1262. package/.roo/skills/cpp-robust-interfaces/SKILL.md +0 -55
  1263. package/.roo/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
  1264. package/.roo/skills/create-hardened-docker-skill/SKILL.md +0 -637
  1265. package/.roo/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
  1266. package/.roo/skills/csharp-best-practices/SKILL.md +0 -278
  1267. package/.roo/skills/docker-hardening-verification/SKILL.md +0 -28
  1268. package/.roo/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
  1269. package/.roo/skills/docker-image-signing/SKILL.md +0 -28
  1270. package/.roo/skills/docker-image-signing/scripts/sign-image.sh +0 -33
  1271. package/.roo/skills/document-revision-history/SKILL.md +0 -104
  1272. package/.roo/skills/git-workflow-skill/SKILL.md +0 -194
  1273. package/.roo/skills/git-workflow-skill/hooks/commit-msg +0 -61
  1274. package/.roo/skills/git-workflow-skill/hooks/pre-commit +0 -38
  1275. package/.roo/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
  1276. package/.roo/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
  1277. package/.roo/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
  1278. package/.roo/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
  1279. package/.roo/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
  1280. package/.roo/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
  1281. package/.roo/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
  1282. package/.roo/skills/js-ts-security-skill/SKILL.md +0 -64
  1283. package/.roo/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
  1284. package/.roo/skills/logging-best-practices/SKILL.md +0 -50
  1285. package/.roo/skills/logging-best-practices/examples/cpp.md +0 -36
  1286. package/.roo/skills/logging-best-practices/examples/csharp.md +0 -49
  1287. package/.roo/skills/logging-best-practices/examples/javascript.md +0 -77
  1288. package/.roo/skills/logging-best-practices/examples/python.md +0 -57
  1289. package/.roo/skills/logging-best-practices/references/logging-standards.md +0 -29
  1290. package/.roo/skills/open-presentation/SKILL.md +0 -35
  1291. package/.roo/skills/opentelemetry-best-practices/SKILL.md +0 -34
  1292. package/.roo/skills/opentelemetry-best-practices/examples/go.md +0 -32
  1293. package/.roo/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
  1294. package/.roo/skills/opentelemetry-best-practices/examples/python.md +0 -37
  1295. package/.roo/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
  1296. package/.roo/skills/python-best-practices/SKILL.md +0 -385
  1297. package/.roo/skills/python-dependency-mgmt/SKILL.md +0 -42
  1298. package/.roo/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
  1299. package/.roo/skills/python-security-skill/SKILL.md +0 -56
  1300. package/.roo/skills/python-security-skill/examples/security.md +0 -56
  1301. package/.roo/skills/self-signed-cert/SKILL.md +0 -42
  1302. package/.roo/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
  1303. package/.roo/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
  1304. package/.roo/skills/skill-creator/SKILL.md +0 -196
  1305. package/.roo/skills/skill-creator/references/output-patterns.md +0 -82
  1306. package/.roo/skills/skill-creator/references/workflows.md +0 -28
  1307. package/.roo/skills/skill-creator/scripts/init_skill.py +0 -208
  1308. package/.roo/skills/skill-creator/scripts/package_skill.py +0 -99
  1309. package/.roo/skills/skill-creator/scripts/quick_validate.py +0 -113
  1310. package/.roo/skills/story-status-lookup/SKILL.md +0 -78
  1311. package/.roo/skills/test-accompanied-development/SKILL.md +0 -50
  1312. package/.roo/skills/test-generator/SKILL.md +0 -65
  1313. package/.roo/skills/vercel-react-best-practices/SKILL.md +0 -109
  1314. package/.roo/skills/verify-hardened-docker-skill/SKILL.md +0 -442
  1315. package/.roo/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
  1316. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-0de89e0854d5b2b3b3b0c1ee56eee73a739f15e7.idx +0 -0
  1317. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-0de89e0854d5b2b3b3b0c1ee56eee73a739f15e7.pack +0 -0
  1318. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-0de89e0854d5b2b3b3b0c1ee56eee73a739f15e7.rev +0 -0
  1319. package/lib/bmad-cache/bmb/skills/bmad-builder-setup/assets/module-help.csv +0 -6
  1320. package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/merge-help-csv.py +0 -220
  1321. package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/tests/test-cleanup-legacy.py +0 -429
  1322. package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/tests/test-merge-config.py +0 -644
  1323. package/lib/bmad-cache/bmb/skills/bmad-builder-setup/scripts/tests/test-merge-help-csv.py +0 -237
  1324. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-9d60aae6b09bbea0d0c5e79fdbe96e8f66de84e6.idx +0 -0
  1325. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-9d60aae6b09bbea0d0c5e79fdbe96e8f66de84e6.pack +0 -0
  1326. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-9d60aae6b09bbea0d0c5e79fdbe96e8f66de84e6.rev +0 -0
  1327. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-8099a88fca0ad946a573316a00887a2921ca1712.idx +0 -0
  1328. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-8099a88fca0ad946a573316a00887a2921ca1712.pack +0 -0
  1329. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-8099a88fca0ad946a573316a00887a2921ca1712.rev +0 -0
  1330. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-d243f64f83b36190434d68872a69a40870c53030.idx +0 -0
  1331. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-d243f64f83b36190434d68872a69a40870c53030.pack +0 -0
  1332. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-d243f64f83b36190434d68872a69a40870c53030.rev +0 -0
  1333. package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.7.3 +0 -1
  1334. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-92d32f26e3a97a0786dcea5cb2c24bf90384521c.idx +0 -0
  1335. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-92d32f26e3a97a0786dcea5cb2c24bf90384521c.pack +0 -0
  1336. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-92d32f26e3a97a0786dcea5cb2c24bf90384521c.rev +0 -0
  1337. package/opencode.json +0 -5
  1338. /package/lib/bmad-cache/bmb/{skills/bmad-builder-setup → samples/bmad-agent-dream-weaver}/scripts/merge-config.py +0 -0
  1339. /package/lib/bmad-cache/bmb/skills/{bmad-builder-setup → bmad-bmb-setup}/assets/module.yaml +0 -0
  1340. /package/lib/bmad-cache/bmb/skills/{bmad-builder-setup → bmad-bmb-setup}/scripts/cleanup-legacy.py +0 -0
  1341. /package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/bmad-dev-story}/.gitkeep +0 -0
  1342. /package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/SKILL.md +0 -0
  1343. /package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-ma-agent-sqa}/.gitkeep +0 -0
  1344. /package/{.opencode/skills/bmad-ma-agent-cyber → lib/bmad-extension/skills/bmad-sprint-planning}/.gitkeep +0 -0
  1345. /package/{.opencode/skills/bmad-ma-agent-devops → lib/bmad-extension/skills/bmad-sprint-status}/.gitkeep +0 -0
  1346. /package/{.opencode/skills/bmad-ma-agent-mil498 → lib/bmad-extension/skills/cleanup-done}/.gitkeep +0 -0
  1347. /package/{.opencode → lib/bmad-extension}/skills/cleanup-done/bmad-skill-manifest.yaml +0 -0
  1348. /package/{.opencode/skills/bmad-ma-agent-ml → lib/bmad-extension/skills/close-sprint}/.gitkeep +0 -0
  1349. /package/{.opencode/skills/bmad-ma-agent-sre → lib/bmad-extension/skills/generate-backlog}/.gitkeep +0 -0
  1350. /package/{.opencode → lib/bmad-extension}/skills/generate-backlog/bmad-skill-manifest.yaml +0 -0
  1351. /package/{.opencode/skills/cleanup-done → lib/bmad-extension/skills/mil498-requirement-quality}/.gitkeep +0 -0
  1352. /package/{.opencode/skills/create-bug-story → lib/bmad-extension/skills/prioritize-backlog}/.gitkeep +0 -0
  1353. /package/{.opencode → lib/bmad-extension}/skills/prioritize-backlog/bmad-skill-manifest.yaml +0 -0
  1354. /package/{.opencode/skills/cyber-generate-certs → lib/bmad-extension/skills/remove-from-sprint}/.gitkeep +0 -0
  1355. /package/{.opencode → lib/bmad-extension}/skills/remove-from-sprint/bmad-skill-manifest.yaml +0 -0
  1356. /package/{.opencode/skills/cyber-immunity-estimation → lib/bmad-extension/skills/sqa-audit}/.gitkeep +0 -0
  1357. /package/{.opencode/skills/cyber-security-audit → lib/bmad-extension/skills/sqa-ieee12207}/.gitkeep +0 -0
  1358. /package/{.opencode/skills/cyber-vault-secrets → lib/bmad-extension/skills/sqa-requirements-quality}/.gitkeep +0 -0
  1359. /package/{.opencode/skills/mil498-ocd/template.md → mil498/OCD.md} +0 -0
  1360. /package/{.opencode/skills/mil498-sdp/template.md → mil498/SDP.md} +0 -0
  1361. /package/{.opencode/skills/mil498-srs/template.md → mil498/SRS.md} +0 -0
  1362. /package/{.opencode/skills/mil498-ssdd/template.md → mil498/SSDD.md} +0 -0
  1363. /package/{.opencode/skills/mil498-sss/template.md → mil498/SSS.md} +0 -0
  1364. /package/{.opencode/skills/mil498-std/template.md → mil498/STD.md} +0 -0
@@ -0,0 +1,3835 @@
1
+ ---
2
+ stepsCompleted: [1, 2, 3, 4, 'phase2-step-01', 'phase2-step-02', 'phase2-step-03', 'phase2-step-04']
3
+ workflowStatus: 'complete'
4
+ completedDate: '2026-03-08'
5
+ lastEdited: '2026-04-07'
6
+ phase3EditHistory:
7
+ - date: '2026-04-07'
8
+ changes: 'Added Epic 19: BMAD Knowledge Graph (Phase 3). 7 stories (19.1-19.7): core emitToGraph() library, graph emission for 7 BMAD skills (create-prd, create-architecture, create-epics-and-stories, create-story, validate-prd, dev-story, bmad-sprint-planning), open-graph skill with VSCode/browser detection, and interactive HTML renderer. Added FR141-FR157 to Requirements Inventory and FR Coverage Map. Added NFR38-NFR41. Updated Epic List and Development Execution Order. Fixed duplicate FR141 entry in Epic 17 coverage map (was remove-from-sprint, correctly FR129). Updated Roo Code Epic 18 proposed FRs to FR156-FR159 to avoid conflict with new Knowledge Graph FRs.'
9
+ phase2EditHistory:
10
+ - date: '2026-04-03'
11
+ changes: 'Major rework of Epic 17: Sprint Management Model Rework. Replaced 3-file model (backlog.yaml, sprints/sprint-N.yaml, sprint-status.yaml) with unified single sprint-status.yaml approach. Stories rewritten: 17.9 (unified schema), 17.10 (generate-backlog rework), 17.11 (add-to-sprint movement semantics), 17.12 (remove-from-sprint movement semantics), 17.13 (sprint-status-view single-source read), 17.14 (cleanup-done single-source), 17.15 (bmad-sprint-planning bootstrap), 17.16 (add-sprint section-based), 17.17 (modify-sprint section-based), 17.18 (bmad-dev-story cross-section update), 17.19 (story-status-lookup cross-section search), 17.20 (bmad-sprint-status structured sections), 17.21 (close-sprint new skill), 17.22 (Jira adapter pattern), 17.23 (migration/deprecation of old files). Added FR133-FR140. Updated FR Coverage Map. Updated Epic 17 description in Epic List. Updated Development Execution Order.'
12
+ - date: '2026-03-26'
13
+ changes: 'Added Stories 5.5 (explicit parameter passing) and 5.6 (space-in-path fix) to Epic 5. Added Epic 15: BMAD 6.2.1 Agent Architecture Migration (8 stories: version bump, module restructure, 4 agent conversions, 11 MIL-498 workflow conversions, 23 SRE/DevOps/Cyber conversions, built-in agent separation, migration detection, validation). Added Epic 16: Multi-Repository Project Layout (4 stories: wizard, config+cross-ref, project-context section, validation). Updated FR coverage map with FR87-FR127. Updated development execution order with Phase A/B/C priority grouping. Updated cross-epic bmad.js coordination for 4 epics.'
14
+ - date: '2026-03-20'
15
+ changes: 'Added Epic 14: External Tooling Integration (Phase 3). 5 stories: analyst research for Jira (14.1) and Confluence/knowledge (14.2), architect abstraction layer design (14.3), and stub stories for Jira (14.4) and Confluence (14.5) implementations blocked on 14.3. Proposed FRs to be added to PRD after architecture is approved.'
16
+ - date: '2026-03-19'
17
+ changes: 'Added Epic 13: Project Context Auto-Generation (FR77-FR84, NFR22-NFR24). 4 stories: template+generator, install pipeline integration, BMAD critical_actions update, retrospective expansion trigger. Added FR77-FR84 to FR Coverage Map.'
18
+ - date: '2026-03-15'
19
+ changes: 'Adversarial review fixes: Removed deleted FR77/FR78 strikethrough lines and standalone binary strikethrough. Added FR44/FR45 to FR Coverage Map. Updated Epic 6 dependency note to reference Epic 5. Added determinism/git-fetch acceptance criteria and technical note to Story 5.3.'
20
+ - date: '2026-03-15'
21
+ changes: 'Deleted old Epic 5 (Self-Contained Installer / standalone binary). Renumbered Epic 13 (Self-Contained BMAD Installation) to Epic 5, renamed to Bundled BMAD Installation. Removed --offline flag story (13.4). Reordered remaining stories to fix circular dependency. Added cross-epic bmad.js coordination and development execution order sections. Updated FR Coverage Map.'
22
+ - date: '2026-03-15'
23
+ changes: 'Adding Epic 13: Self-Contained BMAD Installation (FR74-FR78, NFR20-NFR21). Marked as highest priority — first epic to develop.'
24
+ - date: '2026-03-12'
25
+ changes: 'Adding Phase 2 epics for FR51-FR71 (Skill Enforcement, OpenCode, Project Knowledge, Bug Management, Sprint Management)'
26
+ inputDocuments: ['_bmad-output/planning-artifacts/prd.md', '_bmad-output/planning-artifacts/architecture.md', '_bmad-output/planning-artifacts/implementation-readiness-report-2026-03-11.md']
27
+ ---
28
+
29
+ # agents - Epic Breakdown
30
+
31
+ ## Overview
32
+
33
+ This document provides the complete epic and story breakdown for agents, decomposing the requirements from the PRD and Architecture into implementable stories. Focus: implementation gaps identified in v2.19.2 gap analysis — Phase 1 remaining work and Phase 2 planned features.
34
+
35
+ ## Requirements Inventory
36
+
37
+ ### Functional Requirements
38
+
39
+ - FR1: Engineers can install one or more skills into any supported AI agent with a single command
40
+ - FR2: Engineers can uninstall previously installed skills from an agent
41
+ - FR3: Engineers can view the list of all available skills with descriptions and categories
42
+ - FR4: Engineers can view the installation status of skills for a specific agent
43
+ - FR5: Engineers can upgrade skills when a newer version is available, with upgrade detection
44
+ - FR6: Engineers can install skills in non-interactive mode for CI/CD pipeline automation
45
+ - FR7: Engineers can install skills across multiple agents simultaneously from one manifest
46
+ - FR8: Engineers can install the BMAD-METHOD framework alongside skills in a single workflow
47
+ - FR9: Engineers can update an existing BMAD installation to a newer version
48
+ - FR10: Engineers can apply organization-specific customizations to BMAD that persist across updates
49
+ - FR11: Engineers can register MIL-STD-498 workflows into an existing BMAD installation
50
+ - FR12: Engineers can trigger BMAD recompile after customization changes
51
+ - FR13: Systems engineers can generate SSS (System/Subsystem Specification) documents from project artifacts
52
+ - FR14: Systems engineers can generate SSDD (System/Subsystem Design Description) documents
53
+ - FR15: Systems engineers can generate OCD (Operational Concept Description) documents
54
+ - FR16: Project managers can generate SDP (Software Development Plan) documents
55
+ - FR17: Product managers can generate SRS (Software Requirements Specification) documents
56
+ - FR18: Product managers can generate SDD (Software Design Description) documents
57
+ - FR19: Architects can generate IDD (Interface Design Description) documents
58
+ - FR20: Architects can generate IRS (Interface Requirements Specification) documents
59
+ - FR21: Architects can generate HRS (Hardware Requirements Specification) documents
60
+ - FR22: Test engineers can generate STD (Software Test Description) documents
61
+ - FR23: Test engineers can generate STR (Software Test Report) documents
62
+ - FR24: Product managers can create PRDs through guided collaborative workflows
63
+ - FR25: Product managers can break PRDs into epics and user stories
64
+ - FR26: Product managers can run sprint planning from epics
65
+ - FR27: Architects can create architecture documents through guided workflows
66
+ - FR28: Architects can create UX design specifications
67
+ - FR29: Engineers can check implementation readiness across PRD, architecture, and epics
68
+ - FR30: Engineers can run code reviews against established standards
69
+ - FR31: Test engineers can generate automated E2E tests from feature specifications
70
+ - FR32: Project managers can track sprint status and surface risks
71
+ - FR33: Teams can run retrospectives at epic boundaries
72
+ - FR34: Engineers can target any of the supported IDE agents (Claude Code, Cursor, Cline, Copilot, Gemini, Kilocode, OpenCode) for skill installation
73
+ - FR35: Engineers can target BMAD specialized agents (SRE, DevOps, Cyber, MIL-STD-498) for persona installation
74
+ - FR36: Skills produce functionally equivalent behavior regardless of which agent they are installed into
75
+ - FR37: Engineers can switch between AI agents and retain the same methodology framework
76
+ - FR38: The system translates skill content into each agent's native configuration format automatically
77
+ - FR39: The Chief Architect can author new skills using the skill format (skill.json + SKILL.md + agent templates)
78
+ - FR40: The Chief Architect can designate skills as mandatory (`always_load: true`) for organizational enforcement
79
+ - FR41: The Chief Architect can customize BMAD agent personas to fit organizational processes
80
+ - FR42: The Chief Architect can develop new specialized agent personas for enterprise-specific roles
81
+ - FR43: The system generates MANIFEST.yaml from installed skills for agent consumption
82
+ - FR44: Engineers can install and use skills in air-gapped environments without internet access
83
+ - FR45: Engineers can use ma-agents on Windows, macOS, and Linux
84
+ - FR46: Engineers can use ma-agents with on-premise AI agents running against local models
85
+ - FR47: The system tracks installed skill versions per agent via manifest for upgrade/downgrade detection
86
+ - FR48: The system maintains an audit trail of AI agent activities via the ai-audit-trail skill
87
+ - FR49: Document generation workflows maintain traceability across inter-role handoffs (SSS → SRS → SDD → STD)
88
+ - FR50: Engineers can validate PRDs and other documents against established standards
89
+
90
+ ### Functional Requirements (Phase 2 — added 2026-03-12)
91
+
92
+ - FR51: The installer injects the planning instruction at the TOP of agent instruction files, not the bottom — ensuring highest priority during LLM context processing
93
+ - FR52: The installer deploys a BMAD extension module (`extends-module: bmm`) that injects skill-loading `critical_actions` into BMAD agents — skills are loaded before any menu or workflow executes
94
+ - FR53: All 11 BMAD agents (4 custom + 7 built-in) include skill-loading `critical_actions` in their `.customize.yaml` files
95
+ - FR54: Per-agent enforcement mechanisms are implemented where the agent supports them (e.g., Claude Code hooks that verify manifest was read)
96
+ - FR55: Context persistence strategies ensure skills survive LLM context compression and session restoration (via BMAD sidecar memory or equivalent)
97
+ - FR56: Engineers can target OpenCode for skill installation with skills placed in `.opencode/skills/`
98
+ - FR57: The installer injects skill references into `opencode.json` via the instructions array using JSON config merging (not replacement)
99
+ - FR58: The installer does not add `_bmad-output` to `.gitignore` — this folder is tracked as version-controlled project knowledge
100
+ - FR59: The `_bmad-output` policy is documented in README and installation guidance
101
+ - FR60: Bugs are structured entities with required fields: problem description, reproduction steps, bug type, version found, environment constraints, severity, and status
102
+ - FR61: A BMAD extension workflow (deployed via `extends-module: bmm`) generates a structured bug story from a bug report
103
+ - FR62: The `auto-bug-detection` skill instructs coding agents to propose a bug issue to the user when they detect a problem in already-delivered code
104
+ - FR63: During BMAD code-review workflows, agents suggest generating bug issues when relevant problems are found in delivered features
105
+ - FR64: Bugs exist in the backlog as standalone items — never assigned to an epic
106
+ - FR65: The backlog is a flat list containing both stories and bugs, not grouped by epic
107
+ - FR66: Sprint capacity is defined by number of items (stories + bugs), configured by the Scrum Master during sprint planning
108
+ - FR67: Story/bug prioritization supports multiple criteria beyond epic precedence
109
+ - FR68: A BMAD extension workflow enables adding a new sprint with defined capacity and iteration identifier
110
+ - FR69: A BMAD extension workflow enables adding stories and bugs to a sprint from the backlog
111
+ - FR70: A BMAD extension workflow enables changing/modifying a sprint (reorder items, swap items, adjust capacity)
112
+ - FR71: Sprint status displays real sprint definitions with assigned items, not just a list of epics
113
+
114
+ ### Functional Requirements (Phase 2 — added 2026-03-15)
115
+
116
+ - FR74: The ma-agents npm package bundles bmad-method v6.0.4 as a direct dependency — no `npx` download at install time
117
+ - FR75: The ma-agents npm package bundles pre-cloned BMAD external modules (bmb, cis, tea, gds) under `lib/bmad-cache/` — no git clone at install time
118
+ - FR76: Before invoking bmad-method install, the installer pre-populates `~/.bmad/cache/external-modules/` from the bundled cache so bmad-method finds modules locally
119
+
120
+ ### Functional Requirements (Phase 2 — added 2026-03-26)
121
+
122
+ #### Bundled Installation Update (FR123-FR127)
123
+ - FR123: The installer passes all collected config to bmad-method as explicit CLI flags (`--tools`, `--modules`, `--directory`, `--user-name`, etc.)
124
+ - FR124: bmad-method performs full configuration using explicit parameters — `--yes` suppresses prompts for already-supplied flags only
125
+ - FR125: When bmad-method introduces new CLI params that ma-agents hasn't mapped, `--yes` causes bmad-method to apply defaults
126
+ - FR126: Single unified wizard — no separate BMAD interactive prompt
127
+ - FR127: CI/CD mode uses same explicit flag mechanism with pre-determined answers
128
+
129
+ #### BMAD 6.2.0 Agent Architecture Migration (FR94-FR110)
130
+ - FR94: Each custom agent (SRE, DevOps, Cyber, MIL-498) rebuilt as BMAD 6.2.0 skill-based agent (SKILL.md + bmad-skill-manifest.yaml)
131
+ - FR95: Agent capabilities migrated from `.customize.yaml` critical_actions to internal commands in agent SKILL.md
132
+ - FR96: Agent persona/identity defined in SKILL.md — replacing legacy XML `<agent>` definitions
133
+ - FR97: Agent menu/routing via SKILL.md triggers and dynamic routing — replacing XML `<menu-handlers>`
134
+ - FR98: All 11 MIL-498 DID workflows converted from YAML to SKILL.md Complex Workflow packages
135
+ - FR99: MIL-498 instructions restructured as progressive disclosure step files in prompts/
136
+ - FR100: MIL-498 template output checkpoints reimplemented as skill-level confirmation gates
137
+ - FR101: 9 SRE playbooks packaged as SKILL.md skill packages
138
+ - FR102: 6 DevOps playbooks packaged as SKILL.md skill packages
139
+ - FR103: 8 Cyber playbooks packaged as SKILL.md skill packages
140
+ - FR104: Extension module restructured with module.yaml `code` field
141
+ - FR105: Module setup skill created for config management (anti-zombie pattern)
142
+ - FR106: Dual-layer agent definition consolidated into single agent skill folder
143
+ - FR107: Installer detects BMAD version and performs in-place migration during normal installation
144
+ - FR108: Migration preserves user customizations
145
+ - FR109: Legacy artifacts removed after successful migration
146
+ - FR110: Fresh installations deploy directly in 6.2.0 format
147
+
148
+ #### Multi-Repository Project Layout (FR111-FR122)
149
+ - FR111: Installer asks where knowledgebase is managed (current repo / local / remote)
150
+ - FR112: Installer asks where sprint management is managed
151
+ - FR113: Remote option: ask git URL + local destination, confirm if exists
152
+ - FR114: Remote: clone if destination doesn't exist
153
+ - FR115: Local: validate path exists, alert if not
154
+ - FR116: Same-repo default: no additional config
155
+ - FR117: Paths stored in config.yaml (`knowledgebase_path`, `sprint_management_path`)
156
+ - FR118: project-context.md includes configured paths as mandatory agent rules
157
+ - FR119: Planning workflows resolve output from `{knowledgebase_path}`
158
+ - FR120: Sprint workflows resolve paths from `{sprint_management_path}`
159
+ - FR121: Dashboard (Phase 3) resolves from `{sprint_management_path}`
160
+ - FR122: Multi-repo mode creates `project-layout.yaml` cross-reference file
161
+
162
+ ### Functional Requirements (Phase 2 — added 2026-04-03)
163
+
164
+ #### Unified Sprint-Status Management (FR133-FR140)
165
+ - FR133: Sprint management uses a single unified `sprint-status.yaml` with three sections: `epics` (reference), `backlog` (unassigned items), and `sprints` (sprint definitions with assigned items)
166
+ - FR134: Stories and bugs MOVE between the `backlog` and `sprints` sections — an item exists in exactly one location at any time
167
+ - FR135: Each item carries its own `status` field, updated in-place within the section where it resides
168
+ - FR136: Items reaching `done` status are removed from `sprint-status.yaml` and archived to `done/` folder
169
+ - FR137: A close-sprint workflow transitions a sprint from `active` to `closed`, archiving all done items and returning incomplete items to backlog
170
+ - FR138: When `tracking_system` is configured as `jira`, sprint management skills read/write from Jira API using the same data model (adapter pattern)
171
+ - FR139: The unified schema replaces the previous three-file model (`backlog.yaml`, `sprints/sprint-N.yaml`, `sprint-status.yaml`) — deprecated files are migrated or removed
172
+ - FR140: All 12 sprint-related skills are reworked to operate against the single unified file
173
+
174
+ ### Functional Requirements (Phase 3 — added 2026-04-07)
175
+
176
+ #### BMAD Knowledge Graph (FR141-FR157)
177
+ - FR141: Each node in the knowledge graph is identified by `file-id#heading-anchor` where `file-id` is a short stable key that resolves to a file pointer via the `files` table
178
+ - FR142: Each directed edge carries full provenance: `from` (node id), `to` (node id), `type` (edge type), `label` (human description), `created_by` (user), `agent` (AI agent identity), `created_at` (ISO timestamp); edge types include `implements`, `derives-from`, `validates`, `traces-to`, `refines`, `informed-by`
179
+ - FR143: The graph maintains a bidirectional index — for each node, the system can resolve both inbound (nodes that reference it) and outbound (nodes it references) edges in O(1) time
180
+ - FR144: The knowledge graph JSON file uses a flat four-section structure: `meta` (file statistics), `files` (file registry), `nodes` (node list), `edges` (edge list) — maximum two levels of nesting throughout
181
+ - FR145: The `files` section maps each `file-id` to an object with `pointer` (the file reference), `title` (display name), and `pointer_type` (one of: `relative_path`, `absolute_path`, `url`) — enabling nodes in the same graph to address local files, files in other repos, and external URLs (Confluence, Jira, etc.) uniformly
182
+ - FR146: Each node object carries: `id` (`file-id#anchor`), `file` (the `file-id` from the files table), `anchor` (the heading slug), `title` (human-readable heading text), `type` (document type: `prd`, `architecture`, `epic`, `story`, `decision`, `validation`)
183
+ - FR147: Each edge object carries: `from`, `to`, `type`, `label`, `created_by`, `agent`, `created_at` — all fields required, no optional fields
184
+ - FR148: The `meta` section carries: `schema_version`, `generated_at`, `project`, `file_count`, `node_count`, `edge_count`
185
+ - FR149: BMAD skills emit nodes and edges automatically on artifact completion — no user prompt, no opt-in — as a silent post-artifact step
186
+ - FR150: When emitting, if a file is not yet in the `files` table, it is registered automatically; external URLs (e.g., Confluence page) are registered with `pointer_type: url`
187
+ - FR151: Any node may derive from multiple source documents simultaneously — a story AC can carry `informed-by` edges from both the architecture and a UX design doc, not just from its parent epic
188
+ - FR152: The emit operation is additive-only: new nodes and edges are appended; existing nodes and edges are never deleted or overwritten; duplicate detection uses the full `(from, to, type)` triple for edges and `id` for nodes
189
+ - FR153: The `open-graph` skill detects the execution environment (VSCode vs. terminal) and opens `knowledge-graph.html` via the appropriate mechanism — VSCode webview API when inside VSCode, `open`/`start` shell command otherwise
190
+ - FR154: The visualization renders nodes as color-coded circles by document type and supports click-to-navigate (opens the source document at the specific heading anchor in the IDE or browser)
191
+ - FR155: Hovering over an edge displays a tooltip with the full provenance record: type, label, created_by, agent, created_at
192
+ - FR156: The visualization provides interactive filtering by node type and edge type, and highlights the immediate neighbors of any selected node
193
+ - FR157: The visualization has no external CDN, font, or script dependencies — all rendering code and graph data are self-contained in a single HTML file suitable for air-gapped environments
194
+
195
+ ### NonFunctional Requirements
196
+
197
+ - NFR1: Skills must not transmit project data externally — all content is static instruction delivery, not data collection
198
+ - NFR2: Installation process must function fully offline for air-gapped environments
199
+ - NFR3: Skill content must be inspectable (plain text markdown/JSON) — no obfuscated or compiled instructions
200
+ - NFR4: BMAD customizations must not be overwritten by updates without explicit user action
201
+ - NFR5: Skill installation must not corrupt or remove existing agent configurations — additive-only operations
202
+ - NFR6: Agent format translation must produce valid configuration for each target agent's expected format
203
+ - NFR7: Manifest operations (read/write/update) must be atomic — no partial manifest states on failure
204
+ - NFR8: BMAD install/update/customize pipeline must execute steps in strict order with rollback on failure
205
+ - NFR9: CLI must produce identical results on Windows, macOS, and Linux for the same inputs
206
+ - NFR10: Skills authored once must install without modification across all supported agents
207
+ - NFR11: Adding a new agent target must not require changes to existing skills — only a new template mapping
208
+ - NFR12: The tool must function with Node.js LTS versions (current and previous)
209
+ - NFR13: Adding a new agent to the registry must require only a configuration entry, not code changes to the installer core
210
+ - NFR14: Adding a new skill must require only the skill package files (skill.json + SKILL.md + templates), not installer modifications
211
+ - NFR15: Skill format must remain backward-compatible — older skills must install correctly with newer tool versions
212
+
213
+ ### NonFunctional Requirements (Phase 2 — added 2026-03-12)
214
+
215
+ - NFR16: The BMAD extension module must survive `npx bmad-method install --action update` without losing functionality
216
+ - NFR17: All BMAD-facing changes must use official BMAD Builder extension APIs only — zero bmad-method core modifications
217
+ - NFR18: OpenCode JSON instruction injection must not corrupt existing `opencode.json` configuration — additive-only
218
+ - NFR19: Bug and sprint extension workflows must function identically whether invoked via BMAD agent menu or direct slash command
219
+ - NFR20: The bundled BMAD cache must be version-pinned (v6.0.4 initial) — upgrading the bundled version is a deliberate, tested release operation
220
+ - NFR21: The bundled installation must produce a complete, deterministic `_bmad/` output from the bundled npm package
221
+
222
+ ### NonFunctional Requirements (Phase 2 — added 2026-03-26)
223
+
224
+ - NFR29: Migration from 6.0.4 to 6.2.0 must be atomic — all succeed or rollback
225
+ - NFR30: Migrated agents must produce functionally equivalent behavior
226
+ - NFR31: Migrated agent skill folders must pass BMAD Builder lint gate
227
+ - NFR32: All 34 converted workflows must produce identical output artifacts
228
+ - NFR33: Module setup skill anti-zombie cleanup must be idempotent
229
+ - NFR34: Multi-repo config must be backward-compatible with single-repo mode
230
+ - NFR35: Remote repo cloning must work with internal git URLs (air-gapped)
231
+ - NFR36: project-layout.yaml must be deterministic
232
+ - NFR37: All BMAD workflows must resolve paths through config, no hardcoded `_bmad-output/`
233
+
234
+ ### NonFunctional Requirements (Phase 3 — added 2026-04-07)
235
+
236
+ - NFR38: The `open-graph` skill must render the knowledge graph visualization within 3 seconds for graphs up to 500 nodes and 1000 edges, measured from skill invocation to first interactive frame
237
+ - NFR39: The knowledge graph JSON format must be writable by any LLM without external schema — structure is self-describing; an LLM can add a new node or edge by copying an existing pattern with no external reference
238
+ - NFR40: The `emitToGraph()` operation must never delete or overwrite existing graph data — additive-only semantics are enforced at the function level, verified by the absence of delete/overwrite operations during emission
239
+ - NFR41: The knowledge graph visualization (`knowledge-graph.html`) must function fully without network access — verified by disabling network access and confirming the graph renders identically
240
+
241
+ ### Additional Requirements
242
+
243
+ - Testing framework needs formalization — Node.js built-in test runner recommended per architecture
244
+ - Visual Studio agent integration mechanism needs investigation (VS Copilot Chat, .vs/ directory)
245
+ - Error code catalog — standardize currently ad-hoc error strings
246
+ - Structured logging for diagnostic purposes beyond console output
247
+ - Methodology presentation to be bundled with installation for team onboarding
248
+ - `--yes` flag support for non-interactive CI/CD mode (currently only `--force` exists)
249
+
250
+ ### FR Coverage Map
251
+
252
+ | FR | Epic | Description |
253
+ |----|------|-------------|
254
+ | FR6 | Epic 1 | `--yes` flag for non-interactive CI/CD mode |
255
+ | FR36 | Epic 2 | Equivalent behavior for new language skills across agents |
256
+ | FR39 | Epic 2 & 3 | Skill authoring for new language skills + tooling |
257
+ | FR10 | Epic 2 | New language skills install across all agents |
258
+ | FR40 | Epic 3 | Mandatory skill designation for authored skills |
259
+ | FR41 | Epic 3 | BMAD persona customization tooling |
260
+ | FR42 | Epic 3 | Specialized agent development tooling |
261
+ | FR43 | Epic 3 | MANIFEST.yaml generation validation |
262
+ | FR34 (VS gap) | Epic 4 | Visual Studio agent target |
263
+ | FR38 (VS) | Epic 4 | VS format translation |
264
+ | All other Phase 1 FRs | Implemented | v2.19.2 baseline — no epic needed |
265
+ | FR51 | Epic 8 | TOP injection placement |
266
+ | FR52 | Epic 8 | BMAD extension module with critical_actions |
267
+ | FR53 | Epic 8 | All 11 BMAD agent critical_actions |
268
+ | FR54 | Epic 8 | Per-agent enforcement (Claude Code hooks) |
269
+ | FR55 | Epic 8 | Context persistence research |
270
+ | FR56 | Epic 9 | OpenCode skill installation path |
271
+ | FR57 | Epic 9 | OpenCode JSON injection |
272
+ | FR58 | Epic 10 | _bmad-output not gitignored |
273
+ | FR59 | Epic 10 | _bmad-output policy documentation |
274
+ | FR60 | Epic 11 | Bug entity structure |
275
+ | FR61 | Epic 11 | Bug story workflow |
276
+ | FR62 | Epic 11 | auto-bug-detection skill |
277
+ | FR63 | Epic 11 | Code-review bug detection |
278
+ | FR64 | Epic 11 | Bugs as standalone backlog items |
279
+ | FR65 | Epic 12 | Flat backlog (stories + bugs) |
280
+ | FR66 | Epic 12 | Sprint capacity by item count |
281
+ | FR67 | Epic 12 | Multi-criteria prioritization |
282
+ | FR68 | Epic 12 | Add sprint workflow |
283
+ | FR69 | Epic 12 | Add to sprint workflow |
284
+ | FR70 | Epic 12 | Modify sprint workflow |
285
+ | FR71 | Epic 12 | Sprint status with assigned items |
286
+ | FR72 | Epic 6 | Methodology presentation bundled with BMAD install |
287
+ | FR73 | Epic 7 | Automated regression tests for 4 core modules |
288
+ | FR74 | Epic 5 | Bundle bmad-method as dependency |
289
+ | FR75 | Epic 5 | Bundle pre-cloned external modules |
290
+ | FR76 | Epic 5 | Pre-populate bmad cache before install |
291
+ | FR44 | Epic 5 | Air-gapped environment support via bundled installation |
292
+ | FR45 | Implemented | Cross-platform support (Windows, macOS, Linux) |
293
+ | FR79 | Epic 13 | Generate project-context.md at project-level install |
294
+ | FR80 | Epic 13 | Mandatory rules: MANIFEST, always_load skills, git worktrees |
295
+ | FR81 | Epic 13 | Platform-aware manifest path resolution (from full manifest) |
296
+ | FR82 | Epic 13 | Multi-platform manifest path listing |
297
+ | FR83 | Epic 13 | Full 8-step agent mission lifecycle documented |
298
+ | FR84 | Epic 13 | Idempotent generation — skip if exists |
299
+ | FR85 | Epic 13 | Inline expansion comments + template version comment |
300
+ | FR86 | Epic 13 | BMAD critical_actions updated for 12 BMM+master agents |
301
+ | FR87-FR93 | Phase 3 | Agent Activity Dashboard (deferred) |
302
+ | FR94-FR97 | Epic 15 | Custom agent conversion to SKILL.md skill folders |
303
+ | FR98-FR100 | Epic 15 | MIL-498 workflow conversion to SKILL.md |
304
+ | FR101-FR103 | Epic 15 | SRE/DevOps/Cyber workflow conversion to SKILL.md |
305
+ | FR104-FR106 | Epic 15 | Module architecture update (module.yaml code field, setup skill) |
306
+ | FR107-FR110 | Epic 15 | Migration detection, upgrade path, legacy cleanup |
307
+ | FR111-FR116 | Epic 16 | Multi-repo wizard (local/remote/same prompts) |
308
+ | FR117-FR118 | Epic 16 | Config storage + project-context stamping |
309
+ | FR119-FR122 | Epic 16 | Cross-repo path resolution + project-layout.yaml |
310
+ | FR123-FR127 | Epic 5 | Explicit parameter passing replacing silent install |
311
+ | FR65 (rework) | Epic 17 | Flat backlog model (not epic-grouped) |
312
+ | FR66 (rework) | Epic 17 | Sprint capacity with first-class sprint entity |
313
+ | FR67 (rework) | Epic 17 | Multi-criteria prioritization |
314
+ | FR128 | Epic 17 | Bug as story type in backlog |
315
+ | FR129 | Epic 17 | Move items from sprint back to backlog (remove-from-sprint skill) |
316
+ | FR130 | Epic 17 | Done items removed from sprint status file |
317
+ | FR131 | Epic 17 | Done story files moved to done/ subfolder |
318
+ | FR132 | Epic 17 | Sprints as first-class YAML entities |
319
+ | FR133 | Epic 17 | Unified sprint-status.yaml with three sections |
320
+ | FR134 | Epic 17 | Movement semantics — items move between backlog and sprint sections |
321
+ | FR135 | Epic 17 | In-place status updates on each item |
322
+ | FR136 | Epic 17 | Done items removed from file, archived to done/ |
323
+ | FR137 | Epic 17 | Close-sprint workflow for sprint lifecycle closure |
324
+ | FR138 | Epic 17 / Epic 14 | Jira adapter pattern (tracking_system switch) |
325
+ | FR139 | Epic 17 | Migration/removal of deprecated 3-file model |
326
+ | FR140 | Epic 17 | All 12 sprint skills reworked for unified file |
327
+ | FR141 | Epic 19 | Graph node identity: file-id#heading-anchor |
328
+ | FR142 | Epic 19 | Directed typed edges with full provenance (6 edge types) |
329
+ | FR143 | Epic 19 | Bidirectional index per node |
330
+ | FR144 | Epic 19 | Flat four-section JSON structure (meta/files/nodes/edges) |
331
+ | FR145 | Epic 19 | Files table with pointer_type (relative_path, absolute_path, url) |
332
+ | FR146 | Epic 19 | Node schema (id, file, anchor, title, type) |
333
+ | FR147 | Epic 19 | Edge schema (from, to, type, label, created_by, agent, created_at) |
334
+ | FR148 | Epic 19 | Meta schema (schema_version, generated_at, project, counts) |
335
+ | FR149 | Epic 19 | Automatic silent emission on artifact completion (7 BMAD skills) |
336
+ | FR150 | Epic 19 | Auto-registration of new files; external URL support |
337
+ | FR151 | Epic 19 | Non-hierarchical multi-source emission (any-to-any informed-by edges) |
338
+ | FR152 | Epic 19 | Additive-only emit; duplicate detection by (from,to,type) for edges and id for nodes |
339
+ | FR153 | Epic 19 | open-graph skill with VSCode/browser detection |
340
+ | FR154 | Epic 19 | Interactive visualization: color-coded nodes by type, click-to-navigate |
341
+ | FR155 | Epic 19 | Edge tooltip with full provenance record |
342
+ | FR156 | Epic 19 | Interactive filtering by node/edge type; neighbor highlight |
343
+ | FR157 | Epic 19 | No external dependencies — fully self-contained HTML (air-gap compatible) |
344
+ | FR158 | Epic 18 | Roo Code custom modes from BMAD agents (proposed — pending PRD addition) |
345
+ | FR159 | Epic 18 | Roo Code rules from BMAD instructions (proposed — pending PRD addition) |
346
+ | FR160 | Epic 18 | Roo Code slash commands from BMAD workflows (proposed — pending PRD addition) |
347
+ | FR161 | Epic 18 | Cline-to-Roo Code migration (proposed — pending PRD addition) |
348
+
349
+ ## Epic List
350
+
351
+ ### Epic 1: CI/CD Non-Interactive Mode
352
+ Engineers can run `npx ma-agents install --yes` for fully automated, non-interactive skill installation in CI/CD pipelines without human prompts.
353
+ **FRs covered:** FR6
354
+ **NFRs addressed:** NFR9 (cross-platform identical results)
355
+
356
+ ### Epic 2: Language-Specific Skill Expansion
357
+ Engineers working in C++, C#, and Python have dedicated coding standards and best practices skills installed through ma-agents, expanding the skill library with language-specific methodology content.
358
+ **FRs covered:** FR36, FR39, FR10
359
+ **NFRs addressed:** NFR10 (write-once skills), NFR14 (no installer changes for new skills)
360
+
361
+ ### Epic 3: Skill Authoring Tooling
362
+ The Chief Architect has tooling to scaffold, validate, and test new skills, lowering the barrier for organizational skill creators and ensuring consistency across the skill library.
363
+ **FRs covered:** FR39, FR40, FR41, FR42, FR43
364
+ **NFRs addressed:** NFR14 (skill format contract), NFR15 (backward compatibility)
365
+
366
+ ### Epic 4: Visual Studio Agent Integration
367
+ Engineers can target Visual Studio's AI assistant for skill installation, expanding agent coverage to the VS ecosystem and closing the last major agent gap.
368
+ **FRs covered:** FR34 (VS gap), FR38 (VS format translation)
369
+ **NFRs addressed:** NFR11 (new agent = template mapping only), NFR13 (config-driven registry)
370
+
371
+ ### Epic 5: Bundled BMAD Installation
372
+ The ma-agents npm package bundles bmad-method and all external BMAD modules (bmb, cis, tea, gds) so that `npx ma-agents install` never performs runtime git clone or npm registry fetch for BMAD components. Installation is deterministic and works in air-gapped environments where the npm package is available.
373
+ **FRs covered:** FR74, FR75, FR76
374
+ **NFRs addressed:** NFR2 (offline operation), NFR20 (version pinning), NFR21 (deterministic output)
375
+ **Dependencies:** Coordination with Epics 6, 8 (shared `bmad.js` modifications). Epic 8 creates extension module deployment in `bmad.js`. Epic 6 adds methodology deployment step. All three epics modify `bmad.js` — implementation must coordinate merge order.
376
+ **Version pin:** bmad-method v6.0.4
377
+
378
+ ### Epic 6: Methodology Onboarding Package
379
+ Teams receive a methodology presentation bundled with installation, enabling organizational onboarding to BMAD-METHOD without separate training materials.
380
+ **FRs covered:** FR72
381
+ **Standalone:** Adds content to existing install pipeline
382
+ **Phase 2 dependencies:** Epic 5 modifies `bmad.js` invocation pattern (must ship first). Epic 8 modifies `bmad.js` for extension module deployment — coordinate insertion point for methodology deployment step.
383
+
384
+ ### Epic 7: Test Suite Foundation
385
+ Contributors have automated regression tests verifying architectural contracts across the 4 core modules (cli.js, installer.js, agents.js, bmad.js), catching pipeline ordering violations, registry inconsistencies, and template resolution bugs before release.
386
+ **FRs covered:** FR73 (developer infrastructure)
387
+ **NFRs verified:** NFR5 (additive-only), NFR7 (atomic manifests), NFR8 (strict pipeline ordering), NFR9 (cross-platform)
388
+ **Dependencies:** Testing framework architectural decision must be finalized before Story 7.1
389
+ **Test isolation:** All stories use temp directories for file operations; module-level tests use dependency injection or function-level mocking to avoid triggering real installs, BMAD operations, or file system side effects
390
+ **Coverage targets:** All public functions in the 4 modules; minimum one happy-path and one error-path test per function; template resolution edge cases (missing template, all fallbacks fail)
391
+
392
+ ### Epic 8: Skill Enforcement Architecture (Phase 2)
393
+ Engineers' installed skills are reliably enforced by all agents — agents load and follow skills automatically without user reminders (zero-reminder workflow).
394
+ **FRs covered:** FR51, FR52, FR53, FR54, FR55
395
+ **NFRs addressed:** NFR16 (extension survives updates), NFR17 (zero core modifications)
396
+ **Note:** FR53 scope is all 11 BMAD agents per architecture decision P2-4 (4 custom full + 7 built-in minimal)
397
+
398
+ ### Epic 9: OpenCode Agent Support (Phase 2)
399
+ Engineers can target OpenCode as the 12th supported agent for skill installation, with JSON-based instruction injection.
400
+ **FRs covered:** FR56, FR57
401
+ **NFRs addressed:** NFR18 (additive-only JSON merge), NFR13 (config-driven registry)
402
+
403
+ ### Epic 10: Project Knowledge Preservation (Phase 2)
404
+ Engineers' planning and implementation artifacts (`_bmad-output`) are version-controlled project knowledge, never gitignored.
405
+ **FRs covered:** FR58, FR59
406
+
407
+ ### Epic 11: Bug Management System (Phase 2)
408
+ Agents detect defects in already-delivered code and generate structured bug reports that enter the backlog for sprint prioritization.
409
+ **FRs covered:** FR60, FR61, FR62, FR63, FR64
410
+ **NFRs addressed:** NFR19 (menu + slash command invocation)
411
+ **Dependency:** Uses extension module from Epic 8 for workflow deployment
412
+
413
+ ### Epic 12: Realistic Sprint Management (Phase 2) **[SUPERSEDED by Epic 17]**
414
+ Project managers work with flat backlogs containing stories and bugs, capacity-based sprints, and multi-criteria prioritization.
415
+ **FRs covered:** FR65, FR66, FR67, FR68, FR69, FR70, FR71
416
+ **NFRs addressed:** NFR19 (menu + slash command invocation)
417
+
418
+ ### Epic 13: Project Context Auto-Generation (Phase 2)
419
+ At project-level installation, ma-agents generates `_bmad-output/project-context.md` — a platform-agnostic constitutional document that mandates skill loading, fresh-worktree git workflow, and the full agent mission lifecycle for all installed agents and BMAD workflows.
420
+ **FRs covered:** FR79, FR80, FR81, FR82, FR83, FR84, FR85, FR86
421
+ **NFRs addressed:** NFR22 (template has no hardcoded paths), NFR23 (additive-only), NFR24 (template as separate file), NFR25 (version comment for upgrade detection)
422
+ **Dependency:** Uses extension module from Epic 8 for critical_actions update; `_bmad-output/` policy from Epic 10
423
+ **Dependency:** Uses extension module from Epic 8 for workflow deployment
424
+
425
+ ### Epic 17: Sprint Management Model Rework (Phase 2)
426
+ Sprint management is redesigned around a **single unified `sprint-status.yaml`** file with three sections: `epics` (reference), `backlog` (unassigned items), and `sprints` (sprint definitions with assigned items). Stories and bugs MOVE between sections using movement semantics. Each item carries its own status, updated in-place. Done items are removed from the file and archived. A new close-sprint skill handles sprint lifecycle closure. A Jira adapter pattern enables the same data model to read/write from Jira API when `tracking_system` is configured as `jira`. All 12 sprint-related skills are reworked for the unified file, and the deprecated 3-file model is migrated/removed.
427
+ **FRs covered:** FR65, FR66, FR67, FR128, FR129, FR130, FR131, FR132, FR133, FR134, FR135, FR136, FR137, FR138, FR139, FR140 (plus rework of FR68-FR71 workflows to work with new model)
428
+ **NFRs addressed:** NFR19 (menu + slash command invocation)
429
+ **Dependencies:** Epic 11 (bug entity structure). Reworks Epic 12's workflow shells to use the new model. Epic 14 (Jira adapter architecture — Story 14.3 must be approved before Story 17.22 implementation).
430
+ **Note:** Epic 12 delivered workflow files but not the underlying sprint data model. This epic builds the unified model, rewires all workflows, and provides the Jira adapter pattern.
431
+ **Skills affected:** Heavy rework (6): generate-backlog, add-to-sprint, remove-from-sprint, sprint-status-view, cleanup-done, bmad-sprint-planning. Moderate rework (3): add-sprint, modify-sprint, bmad-dev-story. Light rework (3): story-status-lookup, bmad-sprint-status, prioritize-backlog. New skill (1): close-sprint.
432
+
433
+ ### Epic 19: BMAD Knowledge Graph (Phase 3)
434
+ Every planning and implementation artifact generated by BMAD skills is automatically woven into a non-hierarchical knowledge graph stored as `_bmad-output/knowledge-graph.json`. Any-to-any directed relationships (not just parent-child traceability) are captured with full provenance. Engineers can open an interactive visualization of the entire project knowledge graph — navigating to any document at the specific heading where a concept is defined — via the `open-graph` skill.
435
+ **FRs covered:** FR141–FR157
436
+ **NFRs addressed:** NFR38 (render performance), NFR39 (LLM-writability), NFR40 (additive-only), NFR41 (air-gapped)
437
+ **Architecture:** Decision P3-1 (BMAD Knowledge Graph) in `_bmad-output/planning-artifacts/architecture.md`
438
+ **Dependencies:** Epic 15 (extension module structure) must be complete — `open-graph` skill deploys as a BMAD extension skill. Epic 17 complete (sprint skill structure settled before wiring emission).
439
+ **New skill:** `open-graph` (45th total skill) in `lib/bmad-extension/skills/open-graph/`
440
+ **Skills modified:** create-prd, create-architecture, create-epics-and-stories, create-story, validate-prd, dev-story, bmad-sprint-planning — each gains a silent `emitToGraph()` post-artifact call
441
+ **Output artifacts:** `_bmad-output/knowledge-graph.json` (graph data), `_bmad-output/knowledge-graph.html` (self-contained renderer)
442
+
443
+ ### Epic 15: BMAD 6.2.1 Agent Architecture Migration (Phase 2)
444
+ ma-agents upgrades from bmad-method 6.0.4 to 6.2.1, restructures the extension module to follow BMAD 6.2.0 module conventions (agents as skill folders, workflows as skill folders, module.yaml with code field), and provides an installer-driven migration path for existing installations.
445
+ **FRs covered:** FR94, FR95, FR96, FR97, FR98, FR99, FR100, FR101, FR102, FR103, FR104, FR105, FR106, FR107, FR108, FR109, FR110
446
+ **NFRs addressed:** NFR29 (atomic migration), NFR30 (functional equivalence), NFR31 (lint gate), NFR32 (output equivalence), NFR33 (anti-zombie idempotency)
447
+ **Dependencies:** Epic 5 must be complete first (explicit param passing is the foundation). Epic 8's extension module concept is restructured by this epic.
448
+
449
+ ### Epic 16: Multi-Repository Project Layout (Phase 2)
450
+ Enterprise projects that separate planning knowledge, sprint management, and code across repositories are fully supported. The installer discovers repo locations, stores paths in config, and stamps them into project-context.md so agents resolve artifacts to the correct repository.
451
+ **FRs covered:** FR111, FR112, FR113, FR114, FR115, FR116, FR117, FR118, FR119, FR120, FR121, FR122
452
+ **NFRs addressed:** NFR34 (backward compat), NFR35 (air-gapped remote clone), NFR36 (deterministic), NFR37 (no hardcoded paths)
453
+ **Dependencies:** Epic 15 must be complete (module restructure). Epic 13 (project-context) provides the template that gains multi-repo section.
454
+
455
+ ### Cross-Epic Coordination: `bmad.js`
456
+
457
+ Four epics modify `bmad.js`. Implementation order matters:
458
+ 1. **Epic 5** (Bundled BMAD + Explicit Params) — changes invocation from `npx bmad-method` to vendored `node <resolved-path>` with explicit CLI flags, adds cache pre-population
459
+ 2. **Epic 15** (6.2.1 Migration) — changes `--custom-content` deployment, adds migration detection, restructures extension module deployment
460
+ 3. **Epic 6** (Methodology Onboarding) — adds methodology deployment step
461
+ 4. **Epic 8** (Skill Enforcement) — adds extension module deployment (restructured by Epic 15)
462
+
463
+ Stories in Epics 6, 8, and 15 that touch `bmad.js` must build on Epic 5's vendored invocation + explicit parameter pattern.
464
+
465
+ ### Development Execution Order
466
+
467
+ **Phase A — Installation Fixes (release version after completion):**
468
+ 1. **Epic 5** (Bundled BMAD + Explicit Params) — fix installation bugs, explicit parameter passing → **release**
469
+
470
+ **Phase B — BMAD 6.2.1 Alignment (release version after completion):**
471
+ 2. **Epic 15** (BMAD 6.2.1 Migration) — version bump, module restructure, agent/workflow conversion → **release**
472
+
473
+ **Phase C — Remaining Features:**
474
+ 3. **Epic 17** (Sprint Management Model Rework) — unified sprint-status.yaml, reworks Epic 12 workflows, depends on Epic 11. Stories 17.9-17.24 can proceed independently (except 17.22). Story 17.22 (Jira adapter) blocked on Epic 14 Story 14.3 architecture approval.
475
+ 4. **Epic 16** (Multi-Repo Layout) — depends on Epic 15 module restructure
476
+ 5. **Epics 4, 7** (VS Integration, Test Suite) — on hold, can resume in parallel
477
+ 6. **Epic 14** (External Tooling) — Phase 3, depends on Epics 12, 13. Story 14.3 architecture is prerequisite for Epic 17 Story 17.22 (Jira adapter).
478
+
479
+ **Phase D — Phase 3 Features:**
480
+ 7. **Epic 19** (BMAD Knowledge Graph) — depends on Epic 15 (extension module structure) and Epic 17 (sprint skill structure settled). Story execution order: 19.1 (core library) → 19.2 (PRD emission) → 19.3 (architecture + epics emission) → 19.4 (story + remaining emission) → 19.5 (open-graph skill) → 19.6 (visualization renderer) → 19.7 (LLM contract validation + tests). Stories 19.2-19.4 can proceed in parallel once 19.1 is done.
481
+ 8. **Epic 18** (Roo Code IDE Support) — no dependencies, can proceed independently at any point in Phase C or D.
482
+
483
+ ---
484
+
485
+ ## Epic 5: Bundled BMAD Installation (Phase 2)
486
+
487
+ The ma-agents npm package bundles bmad-method and all external BMAD modules (bmb, cis, tea, gds) so that `npx ma-agents install` never performs runtime git clone or npm registry fetch for BMAD components. Installation is deterministic and works in air-gapped environments where the npm package is available.
488
+
489
+ ### Story 5.1: Add bmad-method as Direct Dependency
490
+
491
+ As a **DevOps engineer**,
492
+ I want bmad-method included as a direct npm dependency in ma-agents,
493
+ So that BMAD installation does not require fetching bmad-method from the npm registry at runtime.
494
+
495
+ **Acceptance Criteria:**
496
+
497
+ **Given** `package.json` includes `"bmad-method": "6.0.4"` as a dependency
498
+ **When** `npm install` or `npm pack` is run
499
+ **Then** bmad-method v6.0.4 is installed in `node_modules/bmad-method/`
500
+
501
+ **Given** bmad-method is available in `node_modules/`
502
+ **When** `bmad.js` needs to invoke bmad-method
503
+ **Then** it uses `require.resolve('bmad-method/tools/bmad-npx-wrapper.js')` to find the local copy
504
+ **And** invokes it via `execSync('node <resolved-path> install ...')` instead of `execSync('npx bmad-method install ...')`
505
+
506
+ **Given** the vendored bmad-method is used
507
+ **When** any install, update, or recompile operation runs
508
+ **Then** the behavior is identical to the previous `npx bmad-method` invocation
509
+ **And** no npm registry network call is made for bmad-method
510
+
511
+ **Given** a project with an existing BMAD installation (installed via previous ma-agents version using `npx bmad-method`),
512
+ **When** the project upgrades to this version and runs `npx ma-agents install` or update,
513
+ **Then** existing `_bmad/` content is preserved, BMAD workflows continue to function, and no corruption occurs.
514
+
515
+ **Technical notes:**
516
+ - All 3 `execSync('npx bmad-method ...')` calls in `bmad.js` (lines 14, 37, 112) must be updated
517
+ - The resolved path must work cross-platform (use `path.join()`)
518
+
519
+ ### Story 5.2: Create BMAD Cache Build Script
520
+
521
+ As a **Chief Architect**,
522
+ I want a build script that clones all BMAD external modules and their dependencies into `lib/bmad-cache/`,
523
+ So that the external modules can be bundled inside the ma-agents npm package for deterministic installation.
524
+
525
+ **Acceptance Criteria:**
526
+
527
+ **Given** the developer runs `npm run build:bmad-cache` on a connected machine
528
+ **When** the script executes
529
+ **Then** it clones each module listed in bmad-method's `external-official-modules.yaml` (bmb, cis, tea, gds) into `lib/bmad-cache/<module-code>/` using `git clone --depth 1`
530
+ **And** runs `npm install --omit=dev` inside each cloned module directory
531
+ **And** removes `.git/` directories from each cloned module to reduce package size
532
+ **And** creates a `lib/bmad-cache/cache-manifest.json` recording module versions, clone date, and source URLs
533
+
534
+ **Given** the script has already been run and `lib/bmad-cache/` exists
535
+ **When** the script is run again with `--force`
536
+ **Then** it removes the existing cache and rebuilds from scratch
537
+
538
+ **Given** the script is run without `--force` and `lib/bmad-cache/` exists
539
+ **When** a module's cached version matches the upstream HEAD
540
+ **Then** that module is skipped (incremental update)
541
+
542
+ **Given** the npm package is built with `npm pack`,
543
+ **When** the resulting tarball is inspected,
544
+ **Then** `lib/bmad-cache/` and all module directories are included in the package.
545
+
546
+ **Technical notes:**
547
+ - The script reads module definitions from bmad-method's `external-official-modules.yaml` (from the bmad-method npm dependency at `node_modules/bmad-method/`)
548
+ - The `.npmignore` or `package.json` `files` field must include `lib/bmad-cache/` to ensure it ships with the npm package
549
+ - Target bmad-method version: v6.0.4
550
+
551
+ ### Story 5.3: Pre-populate BMAD External Module Cache
552
+
553
+ As a **DevOps engineer**,
554
+ I want the installer to pre-populate `~/.bmad/cache/external-modules/` from the bundled cache before invoking bmad-method,
555
+ So that bmad-method finds the external modules locally and skips git clone.
556
+
557
+ **Acceptance Criteria:**
558
+
559
+ **Given** `lib/bmad-cache/` contains pre-cloned modules (bmb, cis, tea, gds)
560
+ **When** the installer runs BMAD installation (install or update)
561
+ **Then** before invoking bmad-method, it copies each module from `lib/bmad-cache/<code>/` to `~/.bmad/cache/external-modules/<code>/`
562
+ **And** only copies if the target directory does not already exist (or `--force` is set)
563
+
564
+ **Given** the target cache directory `~/.bmad/cache/external-modules/bmb/` already exists
565
+ **When** the installer runs without `--force`
566
+ **Then** the existing cache is preserved (no overwrite)
567
+ **And** bmad-method uses the existing cached copy
568
+
569
+ **Given** the target cache directory exists
570
+ **When** the installer runs with `--force`
571
+ **Then** the existing cache is replaced with the bundled version
572
+
573
+ **Given** the cache is pre-populated from the bundled copy
574
+ **When** bmad-method's `cloneExternalModule()` runs
575
+ **Then** the installer sets `GIT_TERMINAL_PROMPT=0` in the child process environment to prevent interactive git prompts
576
+ **And** even if `git fetch` succeeds on a connected machine, the installation result remains deterministic because bmad-method uses the existing cache directory without overwriting bundled content
577
+
578
+ **Given** the cache is pre-populated
579
+ **When** bmad-method's `cloneExternalModule()` runs
580
+ **Then** it detects `fs.pathExists(moduleCacheDir)` is true
581
+ **And** attempts `git fetch` internally (succeeds silently on connected machines, fails silently in air-gapped environments — either way, the pre-populated cache is used)
582
+ **And** proceeds with the cached copy
583
+
584
+ **Technical notes:**
585
+ - Cache pre-population runs BEFORE any `bmad.installBmad()` or `bmad.updateBmad()` call
586
+ - Use `fs.copy()` (from fs-extra) for directory copy
587
+ - Create `~/.bmad/cache/external-modules/` directory structure if it doesn't exist
588
+ - This is the critical step that makes air-gapped BMAD installation work
589
+ - Note: bmad-method's internal git fetch on existing cache directories does a `git fetch` + `git reset --hard origin/main` only if fetch succeeds. To guarantee deterministic output per NFR20/NFR21, the pre-population step should set the cache directories as read-only or the installer should re-copy bundled cache after bmad-method completes. This is a design decision to resolve during implementation.
590
+
591
+ ### Story 5.4: Validate Bundled Installation Completeness
592
+
593
+ As a **Chief Architect**,
594
+ I want to verify that installation from the bundled npm package produces a complete, functional BMAD environment,
595
+ So that deterministic installation is validated (NFR21).
596
+
597
+ **Acceptance Criteria:**
598
+
599
+ **Given** the ma-agents npm package is installed (via `npm install` or `npx`)
600
+ **When** `npx ma-agents install` is run with BMAD installation
601
+ **Then** the resulting `_bmad/` directory structure is complete
602
+ **And** all BMAD modules are present: core, bmm, bmb, cis, tea, gds
603
+ **And** all BMAD workflows, agents, and tasks function correctly
604
+ **And** all ma-agents customizations are applied (agent personas, MIL-STD-498 workflows, extension module)
605
+
606
+ **Given** the installation is complete
607
+ **When** the user runs any BMAD workflow (e.g., `/bmad-bmm-create-prd`)
608
+ **Then** the workflow executes correctly
609
+
610
+ **Given** the installation is complete
611
+ **When** the user runs `npx ma-agents status`
612
+ **Then** the status shows all installed skills and BMAD modules correctly
613
+
614
+ **Technical notes:**
615
+ - This is a validation/testing story, not a code implementation story
616
+ - Create a test procedure document verifying installation completeness
617
+ - Verify that no git clone or npm registry fetch occurs during BMAD installation
618
+ - Document any environment-specific considerations (e.g., cache-manifest.json dates)
619
+
620
+ ### Story 5.5: Explicit Parameter Passing to bmad-method
621
+
622
+ As a **DevOps engineer**,
623
+ I want ma-agents to pass all collected installation parameters to bmad-method as explicit CLI flags,
624
+ So that BMAD is fully configured for all selected platforms (including OpenCode) without relying on the broken silent install mode.
625
+
626
+ **Acceptance Criteria:**
627
+
628
+ **Given** the user selects platforms during the ma-agents wizard (e.g., claude-code, cursor, opencode)
629
+ **When** bmad.js invokes bmad-method
630
+ **Then** it passes `--tools claude-code,cursor,opencode` explicitly
631
+ **And** bmad-method configures all selected platforms correctly
632
+
633
+ **Given** the user provides their name and language preference during the ma-agents wizard
634
+ **When** bmad.js invokes bmad-method
635
+ **Then** it passes `--user-name`, `--communication-language`, `--document-output-language`, and `--output-folder` as explicit flags
636
+ **And** bmad-method uses these values without prompting
637
+
638
+ **Given** all BMAD-relevant parameters are passed as explicit CLI flags
639
+ **When** the `--yes` flag is also included
640
+ **Then** bmad-method skips prompts only for parameters already supplied via flags
641
+ **And** applies its own defaults for any new parameters ma-agents hasn't mapped (FR125)
642
+ **And** no interactive BMAD prompt appears to the user (FR126)
643
+
644
+ **Given** the installer runs in CI/CD mode (`--yes --force`)
645
+ **When** bmad.js constructs the bmad-method command
646
+ **Then** it uses the same `buildBmadArgs()` function with pre-determined default answers
647
+ **And** produces identical BMAD configuration as interactive mode (FR127)
648
+
649
+ **Given** the extension module exists at `lib/bmad-extension/`
650
+ **When** bmad.js invokes bmad-method
651
+ **Then** it passes `--custom-content` with the quoted path to the extension module
652
+ **And** bmad-method validates the module.yaml and deploys the extension
653
+
654
+ **Given** bmad-method is invoked with `--action update` for existing installations
655
+ **When** the update completes
656
+ **Then** all explicit parameters are applied to the update
657
+ **And** existing customizations are preserved per bmad-method's update behavior
658
+
659
+ **Technical notes:**
660
+ - Create `buildBmadArgs(installContext)` function in `bmad.js` that constructs the full parameter list
661
+ - All path arguments must be quoted: `--directory "${projectRoot}"` (fixes space-in-path bug)
662
+ - The `--modules` flag always passes the full set: `bmm,bmb,cis,tea,gds`
663
+ - The `--custom-content` flag points to the extension module: `lib/bmad-extension/`
664
+ - Replaces all 3 existing `execSync('npx bmad-method ...')` calls
665
+ - Must work with bmad-method v6.0.4 CLI flag interface
666
+
667
+ ### Story 5.6: Fix Space-in-Path Bug
668
+
669
+ As an **engineer**,
670
+ I want ma-agents installation to work in directories containing spaces,
671
+ So that I can install in any project location without path-related failures.
672
+
673
+ **Acceptance Criteria:**
674
+
675
+ **Given** the project is located at a path with spaces (e.g., `d:\My Projects\agents`)
676
+ **When** `npx ma-agents install` is run
677
+ **Then** the installation completes without errors
678
+ **And** all file paths are properly quoted in `execSync` calls
679
+
680
+ **Given** any `execSync` call in `bmad.js` that constructs shell commands with paths
681
+ **When** the path contains spaces, parentheses, or other shell-special characters
682
+ **Then** the path is enclosed in double quotes in the command string
683
+
684
+ **Given** `require.resolve()` returns a path with spaces
685
+ **When** the resolved path is used in an `execSync` call
686
+ **Then** the path is quoted: `execSync('node "${resolvedPath}" install ...')`
687
+
688
+ **Technical notes:**
689
+ - Audit all `execSync` calls in `bmad.js` for unquoted path interpolation
690
+ - The `buildBmadArgs()` function from Story 5.5 should handle quoting for all path arguments
691
+ - Test on Windows with paths like `C:\Users\John Smith\Documents\project`
692
+ - This is a bug fix — can be combined with Story 5.5 implementation since both touch the same code
693
+
694
+ ---
695
+
696
+ ## Epic 1: CI/CD Non-Interactive Mode
697
+
698
+ Engineers can run `npx ma-agents install --yes` for fully automated, non-interactive skill installation in CI/CD pipelines without human prompts.
699
+
700
+ ### Story 1.1: Add --yes Flag for Non-Interactive Skill Installation
701
+
702
+ As a **DevOps engineer**,
703
+ I want to run `npx ma-agents install --yes` to skip all interactive prompts,
704
+ So that I can automate skill installation in CI/CD pipelines without human intervention.
705
+
706
+ **Acceptance Criteria:**
707
+
708
+ **Given** the CLI is invoked with `--yes` flag
709
+ **When** the install command executes
710
+ **Then** all interactive prompts (skill selection, agent selection, confirmations) are bypassed with default selections
711
+ **And** the installation completes without requiring stdin input
712
+ **And** exit code 0 is returned on success, non-zero on failure
713
+
714
+ **Given** the CLI is invoked with `--yes --force` flags together
715
+ **When** the install command executes
716
+ **Then** prompts are skipped AND existing files are overwritten
717
+ **And** the behavior is equivalent to answering "yes" to every prompt plus forcing overwrites
718
+
719
+ **Given** the CLI is invoked with `--yes` and a specific agent target (e.g., `--agent claude-code`)
720
+ **When** the install command executes
721
+ **Then** only the specified agent is targeted without prompting for agent selection
722
+ **And** all skills are installed to that agent without skill selection prompts
723
+
724
+ ---
725
+
726
+ ## Epic 2: Language-Specific Skill Expansion
727
+
728
+ Engineers working in C++, C#, and Python have dedicated coding standards and best practices skills installed through ma-agents, expanding the skill library with language-specific methodology content.
729
+
730
+ ### Story 2.1: Create C++ Best Practices Skill
731
+
732
+ As a **C++ engineer**,
733
+ I want a C++ coding standards and best practices skill available in ma-agents,
734
+ So that my AI coding agent follows our organization's C++ methodology consistently.
735
+
736
+ **Acceptance Criteria:**
737
+
738
+ **Given** the C++ skill directory exists at `skills/cpp-best-practices/`
739
+ **When** the skill is listed via `npx ma-agents list`
740
+ **Then** it appears with category "language" and description referencing C++ standards
741
+
742
+ **Given** the C++ skill is installed to any supported agent
743
+ **When** the agent receives the skill content
744
+ **Then** it contains C++ coding standards, naming conventions, memory management patterns, and best practices
745
+ **And** the content is applicable to modern C++ (C++17/20/23)
746
+
747
+ **Given** the skill directory contains `skill.json`, `SKILL.md`, and optionally `templates/`
748
+ **When** no agent-specific template exists for a target agent
749
+ **Then** the `SKILL.md` canonical content is used as fallback per template resolution priority
750
+
751
+ ### Story 2.2: Create C# Best Practices Skill
752
+
753
+ As a **C# engineer**,
754
+ I want a C# coding standards and best practices skill available in ma-agents,
755
+ So that my AI coding agent follows our organization's C# methodology consistently.
756
+
757
+ **Acceptance Criteria:**
758
+
759
+ **Given** the C# skill directory exists at `skills/csharp-best-practices/`
760
+ **When** the skill is listed via `npx ma-agents list`
761
+ **Then** it appears with category "language" and description referencing C# standards
762
+
763
+ **Given** the C# skill is installed to any supported agent
764
+ **When** the agent receives the skill content
765
+ **Then** it contains C# coding standards, .NET patterns, async/await best practices, and LINQ guidelines
766
+ **And** the content covers .NET 8+ modern patterns
767
+
768
+ **Given** the skill follows the standard skill schema contract
769
+ **When** installed across multiple agents
770
+ **Then** it produces functionally equivalent behavior regardless of target agent (FR36)
771
+
772
+ ### Story 2.3: Create Python Best Practices Skill
773
+
774
+ As a **Python engineer**,
775
+ I want a Python coding standards and best practices skill available in ma-agents,
776
+ So that my AI coding agent follows our organization's Python methodology consistently.
777
+
778
+ **Acceptance Criteria:**
779
+
780
+ **Given** the Python skill directory exists at `skills/python-best-practices/`
781
+ **When** the skill is listed via `npx ma-agents list`
782
+ **Then** it appears with category "language" and description referencing Python standards
783
+
784
+ **Given** the Python skill is installed to any supported agent
785
+ **When** the agent receives the skill content
786
+ **Then** it contains Python coding standards, PEP 8 conventions, type hinting patterns, and packaging best practices
787
+ **And** the content covers Python 3.10+ modern patterns
788
+
789
+ **Given** all three language skills (C++, C#, Python) are installed
790
+ **When** the manifest is checked via `npx ma-agents status`
791
+ **Then** all three appear with correct versions and installation status per agent
792
+
793
+ ---
794
+
795
+ ## Epic 3: Skill Authoring Tooling
796
+
797
+ The Chief Architect has tooling to scaffold, validate, and test new skills, lowering the barrier for organizational skill creators and ensuring consistency across the skill library.
798
+
799
+ ### Story 3.1: Skill Scaffolding Command
800
+
801
+ As a **Chief Architect**,
802
+ I want to run `npx ma-agents create-skill <skill-name>` to generate a new skill directory with all required files,
803
+ So that I can author new skills quickly without manually creating the directory structure.
804
+
805
+ **Acceptance Criteria:**
806
+
807
+ **Given** the user runs `npx ma-agents create-skill my-new-skill`
808
+ **When** the command executes
809
+ **Then** a directory `skills/my-new-skill/` is created with:
810
+ - `skill.json` populated with name, version "1.0.0", empty description, default category, empty tags, `always_load: false`
811
+ - `SKILL.md` with a template structure including frontmatter and placeholder content sections
812
+ - `templates/` directory (empty, ready for agent-specific templates)
813
+ - `references/` directory (empty)
814
+ - `assets/` directory (empty)
815
+
816
+ **Given** a skill with the same name already exists
817
+ **When** the create-skill command is run
818
+ **Then** the command fails with an error message and does not overwrite the existing skill
819
+ **And** a hint suggests using a different name or removing the existing skill first
820
+
821
+ **Given** the skill name contains invalid characters (spaces, uppercase, special chars)
822
+ **When** the create-skill command is run
823
+ **Then** the command fails with an error explaining kebab-case naming requirement
824
+
825
+ ### Story 3.2: Skill Validation Command
826
+
827
+ As a **Chief Architect**,
828
+ I want to run `npx ma-agents validate-skill <skill-name>` to check a skill for schema compliance,
829
+ So that I can catch skill format errors before distribution.
830
+
831
+ **Acceptance Criteria:**
832
+
833
+ **Given** the user runs `npx ma-agents validate-skill my-skill`
834
+ **When** the skill directory exists and contains valid files
835
+ **Then** the command reports "VALID" with a summary of skill metadata
836
+
837
+ **Given** the skill is missing `skill.json`
838
+ **When** the validate command runs
839
+ **Then** it reports "INVALID: missing required file skill.json"
840
+
841
+ **Given** the skill is missing `SKILL.md`
842
+ **When** the validate command runs
843
+ **Then** it reports "INVALID: missing required file SKILL.md"
844
+
845
+ **Given** the `skill.json` has missing or invalid fields (no name, no version, invalid category)
846
+ **When** the validate command runs
847
+ **Then** it reports each validation error with the field name and expected format
848
+
849
+ **Given** the skill has agent-specific templates in `templates/`
850
+ **When** the validate command runs
851
+ **Then** it verifies each template filename matches a known agent registry key
852
+ **And** warns about templates targeting unknown agents
853
+
854
+ ### Story 3.3: Skill Test Install Command
855
+
856
+ As a **Chief Architect**,
857
+ I want to run `npx ma-agents test-skill <skill-name>` to perform a dry-run installation across all agents,
858
+ So that I can verify the skill installs correctly before publishing.
859
+
860
+ **Acceptance Criteria:**
861
+
862
+ **Given** the user runs `npx ma-agents test-skill my-skill`
863
+ **When** the command executes
864
+ **Then** it simulates installation to each supported agent without writing files
865
+ **And** reports which template would be used per agent (agent-specific, generic, or SKILL.md fallback)
866
+ **And** shows the resolved content that would be installed (with frontmatter injection)
867
+
868
+ **Given** a template has syntax errors or missing frontmatter
869
+ **When** the test-skill command runs
870
+ **Then** it reports the specific issue per agent target
871
+
872
+ **Given** the `--write` flag is provided
873
+ **When** the test-skill command runs
874
+ **Then** it writes the resolved output to a `test-output/` directory within the skill (gitignored) for manual review
875
+ **And** does NOT install to actual agent directories
876
+
877
+ ---
878
+
879
+ ## Epic 4: Visual Studio Agent Integration
880
+
881
+ Engineers can target Visual Studio's AI assistant for skill installation, expanding agent coverage to the VS ecosystem and closing the last major agent gap.
882
+
883
+ ### Story 4.1: Research Visual Studio AI Agent Configuration
884
+
885
+ As a **Chief Architect**,
886
+ I want to understand how Visual Studio exposes AI agent configuration,
887
+ So that we can determine the correct injection mechanism for skill installation.
888
+
889
+ **Acceptance Criteria:**
890
+
891
+ **Given** Visual Studio has GitHub Copilot integration
892
+ **When** the integration mechanism is investigated
893
+ **Then** a technical note is produced documenting:
894
+ - Where VS stores AI agent instructions (file paths, config directories)
895
+ - What format VS expects (markdown, JSON, YAML, or other)
896
+ - How VS Copilot Chat extensions handle custom instructions
897
+ - Whether `.vs/` directory, `.editorconfig`, or another mechanism is used
898
+ - Platform path differences (Windows-only or cross-platform VS Code distinction)
899
+
900
+ **Given** the research is complete
901
+ **When** the findings are documented
902
+ **Then** a clear recommendation exists for the agent registry configuration object fields
903
+
904
+ ### Story 4.2: Add Visual Studio Agent to Registry
905
+
906
+ As an **engineer**,
907
+ I want Visual Studio listed as a target agent in ma-agents,
908
+ So that I can install skills into Visual Studio's AI assistant.
909
+
910
+ **Acceptance Criteria:**
911
+
912
+ **Given** the VS agent configuration is understood from Story 4.1
913
+ **When** a new agent object is added to `lib/agents.js`
914
+ **Then** it includes: name, category, platform paths, instruction file, and resource map
915
+ **And** no changes are needed to `installer.js` or other modules (NFR13)
916
+
917
+ **Given** the VS agent is registered
918
+ **When** `npx ma-agents list --agents` is run
919
+ **Then** Visual Studio appears in the agent list
920
+
921
+ **Given** a skill is installed targeting the VS agent
922
+ **When** the install completes
923
+ **Then** skill content is placed in the correct VS configuration directory
924
+ **And** the manifest tracks the VS agent installation
925
+
926
+ ---
927
+
928
+ ## Epic 6: Methodology Onboarding Package
929
+
930
+ Teams receive a methodology presentation bundled with installation, enabling organizational onboarding to BMAD-METHOD without separate training materials.
931
+
932
+ ### Story 6.1: Bundle Methodology Presentation with Installation
933
+
934
+ As a **team lead**,
935
+ I want the BMAD-METHOD presentation included when ma-agents is installed,
936
+ So that new team members can learn the methodology without needing separate training materials.
937
+
938
+ **Acceptance Criteria:**
939
+
940
+ **Given** a methodology presentation file exists in the ma-agents package
941
+ **When** `npx ma-agents install` is run with BMAD installation
942
+ **Then** the presentation is copied to the project's BMAD output directory (e.g., `_bmad-output/methodology/`)
943
+ **And** the user is informed of the presentation location in the install summary
944
+
945
+ **Given** the presentation already exists in the target directory
946
+ **When** a subsequent install or update is run
947
+ **Then** the presentation is updated only if a newer version exists
948
+ **And** existing copies are not overwritten without the `--force` flag
949
+
950
+ ### Story 6.2: Add Methodology Overview Command
951
+
952
+ As an **engineer**,
953
+ I want to run `npx ma-agents methodology` to see an overview of the BMAD-METHOD,
954
+ So that I can quickly understand the methodology without opening the full presentation.
955
+
956
+ **Acceptance Criteria:**
957
+
958
+ **Given** the user runs `npx ma-agents methodology`
959
+ **When** the command executes
960
+ **Then** a concise CLI summary of BMAD-METHOD is displayed:
961
+ - What it is (one paragraph)
962
+ - The SDLC phases covered
963
+ - The agent personas available
964
+ - Where to find the full presentation
965
+
966
+ **Given** BMAD is not installed in the current project
967
+ **When** the methodology command is run
968
+ **Then** it still displays the overview (it's part of ma-agents, not dependent on BMAD install)
969
+ **And** suggests running `npx ma-agents install` to get started
970
+
971
+ **Status: DEFERRED** — Story 6.2 is not in the current sprint plan. Epic 6's MVP is deliverable with Story 6.1 alone (methodology content is deployed to a known location). Story 6.2 (discoverability command) can be added via correct-course if desired after 6.1 ships. No implementation artifact file exists for this story.
972
+
973
+ ---
974
+
975
+ ## Epic 7: Test Suite Foundation
976
+
977
+ Contributors have automated regression tests verifying architectural contracts across the 4 core modules (cli.js, installer.js, agents.js, bmad.js), catching pipeline ordering violations, registry inconsistencies, and template resolution bugs before release.
978
+
979
+ **FRs covered:** FR73
980
+ **Dependencies:** Testing framework decision (Architecture, Phase 2 Decisions table) must be finalized before Story 7.1 begins. Epic 9 (OpenCode) affects agent count — tests must use dynamic assertions.
981
+ **Test isolation strategy:** All stories use temp directories for file I/O. Module tests use dependency injection or function-level stubs to prevent real BMAD operations, real installs, or real file system writes outside temp. Each story must document its isolation approach in its acceptance criteria.
982
+ **Coverage targets:** All exported/public functions in the 4 modules. Minimum one happy-path and one error-path assertion per function. Template resolution priority chain requires dedicated edge-case coverage (missing agent template, missing generic template, all fallbacks exhausted).
983
+ **Audience:** Contributors and maintainers — not end users. This epic protects internal code quality.
984
+
985
+ ### Story 7.1: Set Up Test Framework and First Tests for agents.js
986
+
987
+ As a **contributor**,
988
+ I want a test framework configured with initial tests for the agent registry module,
989
+ So that agent configuration changes are verified automatically.
990
+
991
+ **Prerequisites:** Testing framework architectural decision finalized (Architecture, Phase 2 Decisions table). The chosen framework is used throughout — do not assume a specific framework in acceptance criteria.
992
+
993
+ **Acceptance Criteria:**
994
+
995
+ **Given** the chosen test framework is configured in `package.json`
996
+ **When** `npm test` is executed
997
+ **Then** tests run and report results with pass/fail counts
998
+
999
+ **Given** tests exist for `agents.js`
1000
+ **When** the test suite runs
1001
+ **Then** it verifies:
1002
+ - All agents returned by the registry are present with required fields (name, category, paths, instruction file) — assert dynamically against the registry, not a hardcoded count
1003
+ - Each agent has a valid `injectionStrategy` object with `position` defined
1004
+ - Platform path resolution returns valid paths for the current OS
1005
+ - Resource maps are defined for agents that need them (e.g., Cline)
1006
+ - No duplicate agent names exist in the registry
1007
+ - OpenCode agent (if registered) has `position: 'json-merge'` injection strategy
1008
+
1009
+ **Test isolation:** `agents.js` is a pure data + path module with no side effects — tests can call its functions directly without mocking. No file system writes occur.
1010
+
1011
+ ### Story 7.2: Add Tests for installer.js Core Operations
1012
+
1013
+ As a **contributor**,
1014
+ I want tests covering the installer engine's core operations,
1015
+ So that skill installation, manifest management, and MANIFEST.yaml generation are protected against regressions.
1016
+
1017
+ **Acceptance Criteria:**
1018
+
1019
+ **Given** tests exist for `installer.js`
1020
+ **When** the test suite runs
1021
+ **Then** it verifies:
1022
+ - Skill discovery scans the `skills/` directory and finds all valid skills (assert count matches actual directory contents, not a hardcoded number)
1023
+ - MANIFEST.yaml generation produces valid YAML from installed skills
1024
+ - Manifest read/write operations are atomic (simulate write failure mid-operation — manifest remains in last valid state) (NFR7)
1025
+
1026
+ **Given** a test skill directory and a test agent config directory are set up in a temp directory
1027
+ **When** install operations are tested
1028
+ **Then** files are written to the temp directory, not actual agent config directories
1029
+
1030
+ **Template resolution priority chain (dedicated coverage):**
1031
+
1032
+ **Given** a test skill with all three template levels (agent-specific, generic, SKILL.md)
1033
+ **When** resolution runs for an agent with an agent-specific template
1034
+ **Then** the agent-specific template is selected
1035
+
1036
+ **Given** a test skill with only generic and SKILL.md (no agent-specific template)
1037
+ **When** resolution runs
1038
+ **Then** the generic template is selected
1039
+
1040
+ **Given** a test skill with only SKILL.md (no templates directory)
1041
+ **When** resolution runs
1042
+ **Then** SKILL.md is used as fallback
1043
+
1044
+ **Given** a test skill where SKILL.md is also missing or empty
1045
+ **When** resolution runs
1046
+ **Then** a clear error is raised (not a silent failure)
1047
+
1048
+ **Given** an agent that has no templates directory in the test skill
1049
+ **When** resolution runs for that agent
1050
+ **Then** the chain falls through correctly to generic → SKILL.md
1051
+
1052
+ **Additive-only verification (NFR5):**
1053
+
1054
+ **Given** a temp agent config directory with pre-existing files
1055
+ **When** a skill install operation completes
1056
+ **Then** all pre-existing files remain untouched — only new skill files are added
1057
+ **And** no files are deleted or overwritten unless the same skill is being updated
1058
+
1059
+ **Test isolation:** All file operations target temp directories. Installer functions that call `agents.js` for path resolution are called with overridden paths pointing to temp. No real agent config directories are read or written.
1060
+
1061
+ ### Story 7.3: Add Tests for bmad.js Pipeline Ordering
1062
+
1063
+ As a **contributor**,
1064
+ I want tests verifying the BMAD pipeline executes stages in strict order,
1065
+ So that customization ordering bugs are caught before release.
1066
+
1067
+ **Acceptance Criteria:**
1068
+
1069
+ **Stage ordering verification:**
1070
+
1071
+ **Given** `bmad.js` pipeline functions are instrumented with a call-order recorder (e.g., each stage function is wrapped to push its name onto an array)
1072
+ **When** the full pipeline executes against a temp directory
1073
+ **Then** the recorded call order is exactly:
1074
+ 1. Install BMAD core files
1075
+ 2. Apply YAML config customizations
1076
+ 3. Trigger recompile
1077
+ 4. Apply workflow customizations
1078
+ 5. Apply template customizations
1079
+ 6. Apply agent customizations
1080
+ **And** no stage is skipped or reordered
1081
+
1082
+ **Stage failure halts pipeline:**
1083
+
1084
+ **Given** stage 2 (Apply YAML configs) is stubbed to throw an error
1085
+ **When** the pipeline executes
1086
+ **Then** stages 3–6 do not execute
1087
+ **And** the error is propagated to the caller
1088
+
1089
+ **Given** stage 3 (Trigger recompile) is stubbed to throw an error
1090
+ **When** the pipeline executes
1091
+ **Then** stages 4–6 do not execute
1092
+ **And** the error is propagated to the caller
1093
+
1094
+ **Given** stage 5 (Apply template customizations) is stubbed to throw an error
1095
+ **When** the pipeline executes
1096
+ **Then** stage 6 does not execute
1097
+
1098
+ **Note:** Testing failure at stages 2, 3, and 5 covers all three boundary types: pre-recompile failure, recompile failure, and post-recompile failure. If the pipeline uses a sequential executor pattern, these three cases are sufficient to prove halt-on-failure behavior.
1099
+
1100
+ **Test isolation:** Pipeline functions that perform file system operations are stubbed or pointed at temp directories. The recompile step must NOT trigger an actual BMAD recompile — stub it to record the call and return success (or throw, for failure tests). No real BMAD installation is required.
1101
+
1102
+ ### Story 7.4: Add Tests for cli.js Command Routing
1103
+
1104
+ As a **contributor**,
1105
+ I want tests covering CLI command parsing and routing,
1106
+ So that command-line argument handling is verified automatically.
1107
+
1108
+ **Acceptance Criteria:**
1109
+
1110
+ **Command routing — dynamic verification:**
1111
+
1112
+ **Given** `cli.js` has a set of registered commands
1113
+ **When** the test suite runs
1114
+ **Then** every registered command routes to its expected handler function — assert against the actual command registry, not a hardcoded list
1115
+ **And** unknown commands produce a helpful error message suggesting valid commands
1116
+
1117
+ **BMAD-specific commands:**
1118
+
1119
+ **Given** BMAD commands exist (e.g., install-bmad, update-bmad, or equivalent routing through `bmad.js`)
1120
+ **When** BMAD commands are invoked
1121
+ **Then** they route to `bmad.js` handler functions correctly
1122
+ **Note:** Inspect `cli.js` to identify all command routes including BMAD-specific ones — do not assume only install/list/status/uninstall exist
1123
+
1124
+ **Flag parsing:**
1125
+
1126
+ **Given** CLI arguments include flags (`--yes`, `--force`, `--agent <name>`, `--help`, `--version`)
1127
+ **When** arguments are parsed
1128
+ **Then** boolean flags (`--yes`, `--force`) are extracted as `true`
1129
+ **And** value flags (`--agent`) capture their argument
1130
+ **And** `--help` triggers help output without executing a command
1131
+ **And** `--version` displays the version from `package.json`
1132
+
1133
+ **Interactive vs non-interactive boundary:**
1134
+
1135
+ **Given** no `--yes` flag is provided and stdin is a TTY
1136
+ **When** the CLI starts
1137
+ **Then** it enters interactive wizard mode (inquirer-based)
1138
+
1139
+ **Given** `--yes` flag is provided
1140
+ **When** the CLI starts
1141
+ **Then** it skips all interactive prompts and uses defaults (CI/CD mode per FR6)
1142
+
1143
+ **Note:** These tests verify the boundary detection logic, not the full wizard flow. Assert that the correct code path is selected, not that inquirer renders correctly.
1144
+
1145
+ **Test isolation:** CLI tests stub the handler functions (`installer.js`, `bmad.js`) so that command routing is tested without triggering real installs or BMAD operations. Stdin/TTY detection is stubbed to test both interactive and non-interactive paths.
1146
+
1147
+ ---
1148
+
1149
+ ## Epic 8: Skill Enforcement Architecture (Phase 2)
1150
+
1151
+ **Goal:** Engineers' installed skills are reliably enforced by all agents — zero-reminder workflow.
1152
+ **FRs covered:** FR51, FR52, FR53, FR54, FR55
1153
+ **NFRs addressed:** NFR16 (extension survives updates), NFR17 (zero core modifications)
1154
+
1155
+ ### Story 8.1: Move Instruction Injection to TOP Priority Position
1156
+
1157
+ As a **Chief Architect**,
1158
+ I want the `<!-- MA-AGENTS-START -->` instruction block injected at the TOP of agent instruction files (after any file headers),
1159
+ So that skills have the highest priority during LLM context processing and are not ignored.
1160
+
1161
+ **Acceptance Criteria:**
1162
+
1163
+ **Given** the installer runs for any markdown-based agent (Claude Code, Cursor, Copilot, etc.)
1164
+ **When** the instruction block is injected into the agent's instruction file
1165
+ **Then** the block is placed at the TOP of the file, after any file headers (e.g., YAML frontmatter delimited by `---`)
1166
+ **And** the `skipPatterns` from the agent's `injectionStrategy` in `agents.js` are respected
1167
+
1168
+ **Given** an instruction file already has an `<!-- MA-AGENTS-START -->` block
1169
+ **When** the installer runs again
1170
+ **Then** the existing block is found and replaced in-place at its current position
1171
+ **And** no duplicate blocks are created
1172
+
1173
+ **Given** an instruction file has no existing ma-agents block
1174
+ **When** the installer injects for the first time
1175
+ **Then** the block is inserted after skipped headers but before all other content
1176
+
1177
+ ### Story 8.2: Add Agent-Aware Injection Strategy to Registry
1178
+
1179
+ As a **Chief Architect**,
1180
+ I want each agent in `agents.js` to have an `injectionStrategy` property specifying format, position, and skip patterns,
1181
+ So that the installer can inject instructions correctly for each agent's file format without hardcoding per-agent logic in `installer.js`.
1182
+
1183
+ **Acceptance Criteria:**
1184
+
1185
+ **Given** the `agents.js` registry
1186
+ **When** any agent entry is reviewed
1187
+ **Then** each agent has an `injectionStrategy` object with `position` and optional `skipPatterns`
1188
+ **And** markdown agents have `position: 'top'` with appropriate skip patterns
1189
+
1190
+ **Given** `installer.js` performs injection
1191
+ **When** it processes any agent
1192
+ **Then** it reads `injectionStrategy` from the agent's registry entry
1193
+ **And** all format-awareness logic lives in `agents.js`, not in `installer.js`
1194
+
1195
+ ### Story 8.3: Create BMAD Extension Module Structure
1196
+
1197
+ As a **Chief Architect**,
1198
+ I want the installer to deploy a BMAD extension module (`extends-module: bmm`) with `critical_actions` for skill loading,
1199
+ So that all BMAD agents automatically load skills on activation before any menu or workflow executes.
1200
+
1201
+ **Acceptance Criteria:**
1202
+
1203
+ **Given** `npx ma-agents install` is run with BMAD installation
1204
+ **When** the BMAD pipeline completes
1205
+ **Then** `lib/bmad-extension/module.yaml` exists with `extends-module: bmm`
1206
+ **And** `lib/bmad-extension/module-help.csv` exists with registered phases
1207
+ **And** `lib/bmad-extension/agents/` contains 11 `.customize.yaml` files
1208
+
1209
+ **Given** the 4 custom agents (SRE, DevOps, Cyber, MIL-498)
1210
+ **When** their `.customize.yaml` files are deployed
1211
+ **Then** each contains full customization: persona, menu, and `critical_actions` steps 1-3 for skill loading
1212
+
1213
+ **Given** the 7 built-in BMM agents (PM, Architect, Dev, QA, SM, Tech Writer, UX Designer)
1214
+ **When** their `.customize.yaml` files are deployed
1215
+ **Then** each contains only `critical_actions` steps 1-3 for skill loading (no persona or menu overrides)
1216
+
1217
+ **Given** the extension module is deployed
1218
+ **When** `npx bmad-method install --action update` is run
1219
+ **Then** the extension module survives the update without losing functionality (NFR16)
1220
+
1221
+ ### Story 8.4: Integration Verification
1222
+
1223
+ As a **Chief Architect**,
1224
+ I want to verify that Stories 8.1, 8.2, and 8.3 work together end-to-end,
1225
+ So that the skill enforcement architecture is validated as a complete pipeline before research stories proceed.
1226
+
1227
+ **Acceptance Criteria:**
1228
+
1229
+ **Given** Stories 8.1, 8.2, and 8.3 are all implemented
1230
+ **When** `npx ma-agents install` runs for Claude Code
1231
+ **Then** the MA-AGENTS block is injected at TOP of `.claude/CLAUDE.md` (after frontmatter)
1232
+ **And** `injectionStrategy` from agents.js was read and used
1233
+
1234
+ **Given** install runs with BMAD
1235
+ **When** BMAD pipeline completes
1236
+ **Then** extension module is deployed with correct per-agent MANIFEST paths
1237
+ **And** MA-AGENTS block is injected at TOP of BMAD agent .md files
1238
+
1239
+ **Given** a second install runs (update scenario)
1240
+ **When** injection runs on files that already have MA-AGENTS blocks
1241
+ **Then** blocks are replaced in-place (no duplicates)
1242
+
1243
+ ### Story 8.5: Research and Implement Per-Agent Enforcement Hooks
1244
+
1245
+ As a **Chief Architect**,
1246
+ I want per-agent enforcement mechanisms researched and implemented where agents support them,
1247
+ So that skill compliance is enforced at multiple layers beyond instruction placement.
1248
+
1249
+ **Acceptance Criteria:**
1250
+
1251
+ **Given** Claude Code supports hooks (pre-tool-use, post-tool-use)
1252
+ **When** enforcement hooks are researched
1253
+ **Then** a technical note documents: hook types available, how they can verify manifest was read, implementation approach
1254
+ **And** if feasible, a Claude Code hook is implemented that checks skill loading
1255
+
1256
+ **Given** other agents may have enforcement mechanisms
1257
+ **When** the research is conducted
1258
+ **Then** findings document which agents support hooks/verification and which don't
1259
+ **And** recommendations for future implementation are provided
1260
+
1261
+ ### Story 8.6: Research Context Persistence Strategies
1262
+
1263
+ As a **Chief Architect**,
1264
+ I want context persistence strategies researched to ensure skills survive LLM context compression,
1265
+ So that long sessions don't lose skill directives.
1266
+
1267
+ **Acceptance Criteria:**
1268
+
1269
+ **Given** BMAD supports sidecar memory (`hasSidecar`/`sidecar-folder`)
1270
+ **When** context persistence is researched
1271
+ **Then** a technical note documents: how sidecar memory works, whether it can store skill state, restoration patterns
1272
+ **And** recommendations for implementation are provided
1273
+
1274
+ **Given** the research is complete
1275
+ **When** findings are documented
1276
+ **Then** a clear recommendation exists for whether to implement persistence now or defer to a future phase
1277
+
1278
+ ---
1279
+
1280
+ ## Epic 9: OpenCode Agent Support (Phase 2)
1281
+
1282
+ **Goal:** Engineers can target OpenCode as the 12th supported agent for skill installation with JSON-based instruction injection.
1283
+ **FRs covered:** FR56, FR57
1284
+ **NFRs addressed:** NFR18 (additive-only JSON merge), NFR13 (config-driven registry)
1285
+
1286
+ ### Story 9.1: Register OpenCode Agent in Registry
1287
+
1288
+ As a **Chief Architect**,
1289
+ I want OpenCode added to `agents.js` as the 12th agent with its configuration, skill directory, and JSON injection strategy,
1290
+ So that the installer can target OpenCode using the same config-driven pattern as all other agents.
1291
+
1292
+ **Acceptance Criteria:**
1293
+
1294
+ **Given** the `agents.js` registry
1295
+ **When** the OpenCode agent entry is added
1296
+ **Then** it includes: `name: 'opencode'`, `category: 'ide'`, `configDir: '.opencode'`, `skillsDir: '.opencode/skills'`, `instructionFile: 'opencode.json'`
1297
+ **And** `injectionStrategy` is `{ position: 'json-merge', targetKey: 'instructions' }`
1298
+
1299
+ **Given** the installer runs with `--agent opencode`
1300
+ **When** agent resolution occurs
1301
+ **Then** OpenCode is found in the registry and processed like any other agent
1302
+ **And** no code changes to `installer.js` were needed (NFR13)
1303
+
1304
+ ### Story 9.2: Implement JSON Merge Injection for OpenCode
1305
+
1306
+ As a **Chief Architect**,
1307
+ I want the installer to support JSON-merge injection that creates or additively merges `opencode.json`,
1308
+ So that skill instructions reach OpenCode without corrupting existing user configuration (NFR18).
1309
+
1310
+ **Acceptance Criteria:**
1311
+
1312
+ **Given** no `opencode.json` exists in the project
1313
+ **When** the installer runs for OpenCode
1314
+ **Then** a new `opencode.json` is created with the ma-agents `instructions` array entries tagged with `[ma-agents]`
1315
+
1316
+ **Given** an existing `opencode.json` with user-defined instructions and other configuration keys
1317
+ **When** the installer runs for OpenCode
1318
+ **Then** existing non-ma-agents instructions are preserved
1319
+ **And** existing ma-agents entries (identified by `[ma-agents]` tag) are replaced with fresh entries
1320
+ **And** all other JSON keys (not `instructions`) are preserved exactly as-is
1321
+
1322
+ **Given** an existing `opencode.json` with invalid JSON
1323
+ **When** the installer attempts injection
1324
+ **Then** a clear error message is displayed and the file is NOT modified
1325
+ **And** the installer continues with other agents (non-fatal)
1326
+
1327
+ ---
1328
+
1329
+ ## Epic 10: Project Knowledge Preservation (Phase 2)
1330
+
1331
+ **Goal:** `_bmad-output` is version-controlled project knowledge, never gitignored.
1332
+ **FRs covered:** FR58, FR59
1333
+
1334
+ ### Story 10.1: Ensure _bmad-output Is Not Gitignored
1335
+
1336
+ As a **Chief Architect**,
1337
+ I want the installer to remove `_bmad-output` from `.gitignore` if present and never add it,
1338
+ So that planning artifacts are tracked as version-controlled project knowledge.
1339
+
1340
+ **Acceptance Criteria:**
1341
+
1342
+ **Given** a project with `_bmad-output` listed in `.gitignore`
1343
+ **When** the installer runs (install or update)
1344
+ **Then** the `_bmad-output` line is removed from `.gitignore`
1345
+ **And** a message is displayed: `"_bmad-output is now tracked as project knowledge (not gitignored)"`
1346
+
1347
+ **Given** a project with no `_bmad-output` in `.gitignore`
1348
+ **When** the installer runs
1349
+ **Then** `.gitignore` is not modified for this concern
1350
+
1351
+ **Given** no `.gitignore` file exists
1352
+ **When** the installer runs
1353
+ **Then** no `.gitignore` is created for this purpose
1354
+
1355
+ **Given** the installer creates or updates `.gitignore` for other entries (e.g., `node_modules`, `_bmad/`)
1356
+ **When** it writes the file
1357
+ **Then** `_bmad-output` is never included in any gitignore entries
1358
+
1359
+ ### Story 10.2: Document _bmad-output Policy in README and Installation Guidance
1360
+
1361
+ As a **Chief Architect**,
1362
+ I want the `_bmad-output` folder policy documented in the README and installation guidance,
1363
+ So that developers understand why `_bmad-output` is version-controlled and do not add it back to `.gitignore`.
1364
+
1365
+ **Acceptance Criteria:**
1366
+
1367
+ **Given** the project README
1368
+ **When** a developer reads it
1369
+ **Then** it contains a section explaining that `_bmad-output/` is intentionally tracked in version control as project knowledge
1370
+ **And** the section explains what the folder contains (planning artifacts: PRDs, architecture, epics, stories, sprint plans)
1371
+ **And** the section explains why it is tracked (team alignment, AI context continuity, project history)
1372
+
1373
+ **Given** the installation or getting-started documentation
1374
+ **When** a developer sets up the tool
1375
+ **Then** the guidance explicitly states that `_bmad-output/` must not be added to `.gitignore` and explains that the installer will remove it if found
1376
+
1377
+ **Dependency:** Story 10.1 (documents the installer behavior introduced there)
1378
+
1379
+ ---
1380
+
1381
+ ## Epic 11: Bug Management System (Phase 2)
1382
+
1383
+ **Goal:** Agents detect defects in already-delivered code and generate structured bug reports that enter the backlog for sprint prioritization.
1384
+ **FRs covered:** FR60, FR61, FR62, FR63, FR64
1385
+ **NFRs addressed:** NFR19 (menu + slash command invocation)
1386
+ **Dependency:** Uses extension module from Epic 8 for workflow deployment
1387
+
1388
+ ### Story 11.1: Create auto-bug-detection Skill
1389
+
1390
+ As a **Chief Architect**,
1391
+ I want an `auto-bug-detection` skill that instructs agents to identify and report defects in already-delivered code,
1392
+ So that bugs are caught proactively during all agent sessions.
1393
+
1394
+ **Acceptance Criteria:**
1395
+
1396
+ **Given** the `auto-bug-detection` skill is authored
1397
+ **When** it is installed via ma-agents
1398
+ **Then** `skills/auto-bug-detection/skill.json` exists with `always_load: true`
1399
+ **And** `skills/auto-bug-detection/SKILL.md` contains detection criteria and reporting instructions
1400
+
1401
+ **Given** the skill is loaded by an agent via `critical_actions`
1402
+ **When** the agent encounters a defect in already-delivered code during any session
1403
+ **Then** the skill directives instruct the agent to report the defect using a structured format
1404
+ **And** the skill distinguishes between bugs in delivered code vs. work-in-progress
1405
+
1406
+ **Given** the skill follows standard skill schema
1407
+ **When** validated against skill.json contract
1408
+ **Then** it passes all existing skill validation rules
1409
+
1410
+ ### Story 11.2: Create Bug Story Extension Workflow
1411
+
1412
+ As a **Scrum Master**,
1413
+ I want a BMAD extension workflow that creates structured bug stories from detected defects,
1414
+ So that bugs enter the backlog with consistent format and are actionable for sprint planning.
1415
+
1416
+ **Acceptance Criteria:**
1417
+
1418
+ **Given** the `create-bug-story` workflow exists in `lib/bmad-extension/workflows/create-bug-story/workflow.md`
1419
+ **When** invoked via BMAD agent menu or slash command (NFR19)
1420
+ **Then** it guides the agent through creating a bug story with: title, reproduction steps, expected vs actual behavior, severity, affected component
1421
+
1422
+ **Given** a bug story is created
1423
+ **When** it is saved
1424
+ **Then** it exists as a standalone backlog item alongside user stories (FR64)
1425
+ **And** it follows a consistent template format
1426
+
1427
+ **Given** the workflow is registered in `module-help.csv`
1428
+ **When** a BMAD agent loads the extension module
1429
+ **Then** the workflow appears in the agent's available workflows
1430
+
1431
+ ### Story 11.3: Integrate Bug Detection into Code Review
1432
+
1433
+ As a **Developer**,
1434
+ I want the code review workflow to include explicit bug detection checks,
1435
+ So that defects in delivered code are caught during review and routed to the bug management system.
1436
+
1437
+ **Acceptance Criteria:**
1438
+
1439
+ **Given** a code review is in progress
1440
+ **When** the `auto-bug-detection` skill is loaded (via `critical_actions`)
1441
+ **Then** the reviewing agent evaluates delivered code for defects as part of the review
1442
+ **And** detected bugs are flagged separately from code review feedback
1443
+
1444
+ **Given** a bug is detected during code review
1445
+ **When** the reviewer documents it
1446
+ **Then** the reviewer recommends creating a bug story via the `create-bug-story` workflow
1447
+ **And** the bug is tracked independently from the story being reviewed
1448
+
1449
+ ---
1450
+
1451
+ ## Epic 12: Realistic Sprint Management (Phase 2) **[SUPERSEDED by Epic 17]**
1452
+
1453
+ > **DEPRECATION NOTICE:** Epic 12 delivered workflow shell files but NOT the underlying sprint data model. Epic 17 (Sprint Management Model Rework) builds the unified `sprint-status.yaml` model and rewires all workflows. All FR65-FR71 functionality is now delivered through Epic 17's reworked stories. Epic 12 stories below are retained for historical context only — do not implement them.
1454
+
1455
+ **Goal:** Project managers work with flat backlogs containing stories and bugs, capacity-based sprints, and multi-criteria prioritization.
1456
+ **FRs covered:** FR65, FR66, FR67, FR68, FR69, FR70, FR71
1457
+ **NFRs addressed:** NFR19 (menu + slash command invocation)
1458
+ **Dependency:** Uses extension module from Epic 8 for workflow deployment
1459
+
1460
+ ### Story 12.1: Create Add Sprint Extension Workflow
1461
+
1462
+ As a **Scrum Master**,
1463
+ I want an extension workflow to create new sprints with capacity limits,
1464
+ So that sprint planning uses realistic capacity-based constraints rather than unbounded scope.
1465
+
1466
+ **Acceptance Criteria:**
1467
+
1468
+ **Given** the `add-sprint` workflow exists in `lib/bmad-extension/workflows/add-sprint/workflow.md`
1469
+ **When** invoked via BMAD agent menu or slash command (NFR19)
1470
+ **Then** it guides creation of a sprint with: sprint name/number, capacity (item count), start/end context
1471
+ **And** the sprint is created as a trackable artifact
1472
+
1473
+ **Given** sprint capacity is defined by item count (FR66)
1474
+ **When** a sprint is created
1475
+ **Then** capacity is expressed as maximum number of items (stories + bugs)
1476
+ **And** the workflow validates capacity is a positive integer
1477
+
1478
+ ### Story 12.2: Create Add-to-Sprint Extension Workflow
1479
+
1480
+ As a **Scrum Master**,
1481
+ I want an extension workflow to assign backlog items to a sprint using multi-criteria prioritization,
1482
+ So that the highest-value items are selected within sprint capacity.
1483
+
1484
+ **Acceptance Criteria:**
1485
+
1486
+ **Given** the `add-to-sprint` workflow exists in `lib/bmad-extension/workflows/add-to-sprint/workflow.md`
1487
+ **When** invoked via BMAD agent menu or slash command (NFR19)
1488
+ **Then** it presents the flat backlog (stories + bugs) for selection (FR65)
1489
+ **And** items can be assigned to a sprint
1490
+
1491
+ **Given** items are being prioritized for sprint assignment (FR67)
1492
+ **When** the workflow guides prioritization
1493
+ **Then** multiple criteria are considered (business value, technical dependencies, severity for bugs)
1494
+ **And** the agent assists in ranking items within the sprint capacity
1495
+
1496
+ **Given** a sprint is at capacity
1497
+ **When** an attempt is made to add another item
1498
+ **Then** the workflow warns that capacity would be exceeded
1499
+ **And** suggests removing an item or increasing capacity
1500
+
1501
+ ### Story 12.3: Create Modify Sprint Extension Workflow
1502
+
1503
+ As a **Scrum Master**,
1504
+ I want an extension workflow to modify existing sprints,
1505
+ So that sprint scope can be adjusted when priorities change mid-sprint.
1506
+
1507
+ **Acceptance Criteria:**
1508
+
1509
+ **Given** the `modify-sprint` workflow exists in `lib/bmad-extension/workflows/modify-sprint/workflow.md`
1510
+ **When** invoked via BMAD agent menu or slash command (NFR19)
1511
+ **Then** it allows: adding items, removing items, changing capacity, updating sprint metadata
1512
+
1513
+ **Given** a sprint modification is requested
1514
+ **When** items are added or removed
1515
+ **Then** the sprint status reflects the updated item list and remaining capacity (FR71)
1516
+
1517
+ ### Story 12.4: Update Sprint Status with Assigned Items
1518
+
1519
+ As a **Scrum Master**,
1520
+ I want the sprint status workflow to show assigned items per sprint,
1521
+ So that sprint progress is visible with all stories and bugs listed.
1522
+
1523
+ **Acceptance Criteria:**
1524
+
1525
+ **Given** the existing sprint status workflow
1526
+ **When** it displays sprint information
1527
+ **Then** it shows all assigned items (stories + bugs) with their current status (FR71)
1528
+ **And** remaining capacity is visible
1529
+ **And** bugs and stories are distinguishable in the listing
1530
+
1531
+ ---
1532
+
1533
+ ## Epic 13: Project Context Auto-Generation (Phase 2)
1534
+
1535
+ **Goal:** Every ma-agents project-level installation produces a platform-agnostic `_bmad-output/project-context.md` that acts as a constitutional document — mandating skill loading, fresh-worktree git workflow, and full mission lifecycle for all agents and BMAD workflows.
1536
+ **FRs covered:** FR79, FR80, FR81, FR82, FR83, FR84, FR85, FR86
1537
+ **NFRs addressed:** NFR22 (template has no hardcoded paths), NFR23 (additive-only), NFR24 (template as separate file), NFR25 (version comment for upgrade detection)
1538
+ **Dependency:** Epic 8 (BMAD extension module with critical_actions infrastructure), Epic 10 (`_bmad-output/` version-controlled policy)
1539
+
1540
+ **Execution order:** 13.1 → 13.2 → 13.3 → 13.4 (prerequisite investigation required first) → 13.5
1541
+
1542
+ ### Story 13.1: Create Project-Context Template and Generator Function
1543
+
1544
+ As a **Chief Architect**,
1545
+ I want a standalone project-context template and a `generateProjectContext()` function in the installer,
1546
+ So that a constitutional document can be generated with correct platform-specific content at install time.
1547
+
1548
+ **Acceptance Criteria:**
1549
+
1550
+ **Given** `lib/templates/project-context.template.md` is created (NFR24)
1551
+ **When** a developer reads it
1552
+ **Then** it contains all mandatory rule sections: pre-task MANIFEST loading, git worktree workflow, and full 8-step mission lifecycle (FR80, FR83)
1553
+ **And** it contains a `{{MANIFEST_PATHS_LIST}}` placeholder — no hardcoded platform paths in the template source (NFR22)
1554
+ **And** it contains a machine-readable template version comment `<!-- ma-agents-template-version: 1.0 -->` (NFR25)
1555
+ **And** it contains inline expansion comments for `bmad-generate-project-context`, `bmad-retrospective`, and manual updates (FR85)
1556
+ **And** it contains empty `## Technology Stack` and `## Project-Specific Rules` placeholder sections
1557
+
1558
+ **Given** `generateProjectContext(projectRoot, installedAgents)` is implemented in `installer.js`
1559
+ **When** called with a project root and ALL agents from the project manifest (not just current-run agents)
1560
+ **Then** it reads the template from `lib/templates/project-context.template.md`
1561
+ **And** it resolves relative MANIFEST.yaml paths for each agent's `skillsDir` (relative to project root — no absolute paths)
1562
+ **And** it replaces `{{MANIFEST_PATHS_LIST}}` with a formatted markdown bullet list of all resolved paths (FR81, FR82)
1563
+ **And** it returns the stamped content string — it does NOT write any file (writing is Story 13.2's responsibility)
1564
+ **And** when the template file is missing or unreadable it throws a descriptive Error with the cause
1565
+
1566
+ **Given** only one platform is installed
1567
+ **When** paths are stamped
1568
+ **Then** one MANIFEST path appears in the list (FR81)
1569
+
1570
+ **Given** multiple platforms are installed
1571
+ **When** paths are stamped
1572
+ **Then** all platform MANIFEST paths from the manifest appear in the list (FR82)
1573
+
1574
+ ### Story 13.2: Integrate Generation into Install Pipeline
1575
+
1576
+ As a **DevOps Engineer**,
1577
+ I want project-context.md generated automatically at the end of every project-level skill installation,
1578
+ So that every ma-agents project has the constitutional document without any manual step.
1579
+
1580
+ **Acceptance Criteria:**
1581
+
1582
+ **Given** `npx ma-agents install` completes a project-level installation
1583
+ **When** skills and/or BMAD have been installed
1584
+ **Then** `generateProjectContext()` is called at the end of the install pipeline
1585
+ **And** `_bmad-output/project-context.md` exists after installation
1586
+
1587
+ **Given** `_bmad-output/project-context.md` does not exist before installation
1588
+ **When** the installer runs
1589
+ **Then** the file is created with correct platform-stamped content (FR77, FR79)
1590
+ **And** a success message is logged: `✓ project-context.md generated at _bmad-output/project-context.md`
1591
+
1592
+ **Given** `_bmad-output/project-context.md` already exists before installation (FR82, NFR23)
1593
+ **When** the installer runs
1594
+ **Then** the existing file is NOT modified or overwritten
1595
+ **And** an info message is logged: `ℹ project-context.md already exists — skipping generation`
1596
+
1597
+ **Given** the install is a global install (targeting `~/.config/<agent>/`)
1598
+ **When** the pipeline runs
1599
+ **Then** project-context generation is skipped — no file is created (generation is project-level only)
1600
+
1601
+ **Given** the install is non-interactive CI/CD mode (`--yes` flag)
1602
+ **When** the pipeline runs
1603
+ **Then** project-context generation behaves identically to interactive mode — no interactive prompts required
1604
+
1605
+ ### Story 13.3: Update BMAD Extension Critical_Actions to Load Project-Context
1606
+
1607
+ As a **Chief Architect**,
1608
+ I want all BMAD agent `critical_actions` to load `_bmad-output/project-context.md` at activation,
1609
+ So that BMAD workflow agents follow project-context rules in every session, not just IDE agents reading CLAUDE.md.
1610
+
1611
+ **Acceptance Criteria:**
1612
+
1613
+ **Given** all 11 agent `.customize.yaml` files in `lib/bmad-extension/agents/`
1614
+ **When** updated for this story
1615
+ **Then** each file's `critical_actions` includes a new step: `"If _bmad-output/project-context.md exists, read it completely"` — placed after the MANIFEST read step and before the skill-loading step (FR84)
1616
+
1617
+ **Given** a BMAD agent activates with the updated `critical_actions`
1618
+ **When** `_bmad-output/project-context.md` exists in the project
1619
+ **Then** the agent reads it as part of initialization and follows all rules therein
1620
+ **And** the agent applies the git worktree mandate, mission lifecycle, and skill-loading rules from the file
1621
+
1622
+ **Given** a BMAD agent activates with the updated `critical_actions`
1623
+ **When** `_bmad-output/project-context.md` does NOT exist (e.g., first install before generation, or global install)
1624
+ **Then** the agent skips that step gracefully — the `if exists` phrasing ensures no error
1625
+
1626
+ **Given** `bmad.js` deploys the updated extension module
1627
+ **When** `npx bmad-method install --action update` is run after deployment
1628
+ **Then** the updated `critical_actions` survive the BMAD update (NFR16 — extension module independence)
1629
+
1630
+ **Dev Note:** The 4 custom agent customize files (SRE, DevOps, Cyber, MIL-498) have full persona + menu + critical_actions. The 7 built-in agent files (PM, Architect, Dev, QA, SM, Tech Writer, UX Designer, BMad Master) have critical_actions only. All 11 must be updated.
1631
+
1632
+ ### Story 13.4: Add Project-Context Expansion Trigger to Retrospective Workflow
1633
+
1634
+ As a **Scrum Master**,
1635
+ I want the BMAD retrospective workflow to include a project-context update step,
1636
+ So that conventions and patterns discovered during a sprint are captured in the living document automatically.
1637
+
1638
+ **Acceptance Criteria:**
1639
+
1640
+ **Given** the retrospective workflow at `_bmad/bmm/workflows/bmad-retrospective/` (or equivalent extension path)
1641
+ **When** a retrospective completes
1642
+ **Then** the workflow includes a final step: *"Review `_bmad-output/project-context.md` — identify any new conventions, patterns, or agent failures from this sprint that should be captured. Propose specific additions to the `## Project-Specific Rules` section."*
1643
+
1644
+ **Given** the Scrum Master runs `/bmad-retrospective` after a sprint
1645
+ **When** the retrospective reaches the expansion step
1646
+ **Then** the agent presents the current `## Project-Specific Rules` section of project-context.md
1647
+ **And** proposes additions based on patterns observed during the sprint
1648
+ **And** waits for human confirmation before writing any changes to the file
1649
+
1650
+ **Given** `_bmad-output/project-context.md` does not exist when retrospective runs
1651
+ **When** the expansion step executes
1652
+ **Then** the step is skipped gracefully with a note: *"No project-context.md found — consider running the install or bmad-generate-project-context first."*
1653
+
1654
+ **Dev Note:** This story modifies a BMAD extension workflow. The retrospective workflow may live in `lib/bmad-extension/workflows/` (if it is a custom extension workflow) or in the installed `_bmad/bmm/workflows/` (if it is a built-in BMAD workflow). Investigate the actual location before implementation — if it is a built-in BMAD workflow, create an override or companion extension workflow rather than modifying the core. Never modify bmad-method core files (NFR17). **This story requires prerequisite investigation and should not be started until the workflow location is confirmed.**
1655
+
1656
+ ### Story 13.5: Document Project-Context Generation in README and Installation Guidance
1657
+
1658
+ As a **DevOps Engineer**,
1659
+ I want project-context generation documented in the README and QUICK_START guide,
1660
+ So that users understand what the generated file is, why it appeared, and how to expand it over time.
1661
+
1662
+ **Acceptance Criteria:**
1663
+
1664
+ **Given** the README.md at project root
1665
+ **When** updated for this story
1666
+ **Then** it includes a "Project Context" section explaining: what `_bmad-output/project-context.md` is, when it is generated (project-level install only), that it is intentionally not overwritten on reinstall, and how to expand it (via `/bmad-generate-project-context` and retrospectives)
1667
+
1668
+ **Given** a user runs `npx ma-agents install` and sees `_bmad-output/project-context.md` appear
1669
+ **When** they check the README
1670
+ **Then** they find an explanation of the file without needing to search elsewhere
1671
+
1672
+ **Given** the QUICK_START.md guide
1673
+ **When** updated
1674
+ **Then** it mentions project-context.md as a post-install artifact with a pointer to the README for details
1675
+
1676
+ **Given** the generated project-context.md template (Story 13.1)
1677
+ **When** reviewed alongside the README section
1678
+ **Then** the expansion instructions in the README match the inline comments in the file — no contradictions between the two
1679
+
1680
+ ---
1681
+
1682
+ ## Epic 14: External Tooling Integration (Phase 3)
1683
+
1684
+ **Goal:** ma-agents can connect to external project management and knowledge management platforms (Jira, Confluence) as alternatives to the default file-system backends. The backend is configured at installation time via `project-context.md` or the root directives file (`CLAUDE.md` / equivalent), so agents and skills resolve data against the configured system without code changes.
1685
+ **FRs covered:** Proposed — to be formally added to PRD after Story 14.3 architecture is approved
1686
+ **Dependency:** Epic 12 (Sprint Management workflows), Epic 10 (Project Knowledge Preservation), Epic 13 (Project Context Auto-Generation — provides the config schema and installation pipeline)
1687
+ **Phase:** 3 — analyst research and architecture design must complete before any implementation story is detailed
1688
+ **Analyst + Architect required:** Yes — Stories 14.1, 14.2, and 14.3 are prerequisites for all implementation work
1689
+
1690
+ ---
1691
+
1692
+ ### Story 14.1: Analyst Research — Jira Sprint Management Integration
1693
+
1694
+ As a **Product Manager / Analyst**,
1695
+ I want a research report on integrating Jira as a sprint management backend for ma-agents,
1696
+ So that the architect has clear requirements before designing the abstraction layer.
1697
+
1698
+ **Acceptance Criteria:**
1699
+
1700
+ **Given** the current file-system sprint management model (`sprint-status.yaml`, story files)
1701
+ **When** the analyst completes the research report
1702
+ **Then** it documents: Jira REST API capabilities, authentication models (API token, OAuth, service account), field mapping (Jira status → ma-agents story status), rate limits, and offline/air-gapped scenarios
1703
+ **And** it defines the proposed configuration schema to be set in `project-context.md` at installation time
1704
+ **And** it identifies the minimum viable Jira integration scope (read story status) vs full bidirectional sync (write back story state)
1705
+ **And** it covers both Jira Cloud and Jira Server/Data Center
1706
+
1707
+ **Given** the `story-status-lookup` skill (implemented in Epic 11 review cycle) has a reserved Jira extension point
1708
+ **When** the report addresses credential handling
1709
+ **Then** it proposes how credentials are stored (env vars vs `project-context.md` vs OS keychain)
1710
+ **And** it clarifies what must be configured at install time vs at runtime
1711
+
1712
+ **Technical notes:**
1713
+ - Output artifact: `_bmad-output/planning-artifacts/research-external-tooling-sprint-management.md`
1714
+ - This report is the primary input for Story 14.3 (architecture design)
1715
+ - Consider: what happens if Jira is unavailable mid-session (network failure, rate limit)?
1716
+
1717
+ ---
1718
+
1719
+ ### Story 14.2: Analyst Research — Knowledge Management Integration (Confluence)
1720
+
1721
+ As a **Product Manager / Analyst**,
1722
+ I want a research report on integrating Confluence (and similar tools) as a knowledge management backend for ma-agents,
1723
+ So that the architect can design a unified external tooling abstraction that covers both sprint and knowledge management.
1724
+
1725
+ **Acceptance Criteria:**
1726
+
1727
+ **Given** the current file-system knowledge model (markdown files in `_bmad-output/`)
1728
+ **When** the analyst completes the research report
1729
+ **Then** it documents: Confluence REST API capabilities, space/page model mapping to ma-agents artifact types (PRD, architecture, epics, retrospectives), read vs write requirements, and versioning model
1730
+ **And** it identifies which ma-agents artifacts benefit most from Confluence sync and which should remain file-system-only
1731
+ **And** it flags risks: bidirectional sync conflicts, Confluence markup vs markdown conversion, large attachment handling
1732
+
1733
+ **Given** agents read from knowledge artifacts during sessions
1734
+ **When** the report covers the user experience
1735
+ **Then** it proposes how agents know to read from Confluence vs the local file system
1736
+ **And** it clarifies whether the integration is read-only, write-only, or bidirectional
1737
+
1738
+ **Technical notes:**
1739
+ - Output artifact: `_bmad-output/planning-artifacts/research-external-tooling-knowledge-management.md`
1740
+ - Input for Story 14.3 (architecture design)
1741
+ - Consider other platforms (Notion, Obsidian vaults, SharePoint) — flag capability gaps vs Confluence
1742
+
1743
+ ---
1744
+
1745
+ ### Story 14.3: Architecture Design — External Tooling Abstraction Layer
1746
+
1747
+ As an **Architect**,
1748
+ I want to design the abstraction layer that decouples ma-agents sprint and knowledge operations from their backend implementation,
1749
+ So that future backends (Jira, Confluence, Linear, Notion) can be added without changing core workflows or skills.
1750
+
1751
+ **Acceptance Criteria:**
1752
+
1753
+ **Given** the research reports from Stories 14.1 and 14.2
1754
+ **When** the architecture design is complete
1755
+ **Then** it defines: backend interface contracts, the configuration schema in `project-context.md`, credential handling pattern, and how skills resolve their configured backend at runtime
1756
+ **And** it specifies exactly how the `story-status-lookup` skill's Jira extension point (reserved during implementation) is fulfilled — including the configuration key names that `project-context.md` / root directives must contain
1757
+ **And** it addresses: offline/air-gapped scenarios, partial configuration (only sprint management configured, or only knowledge management), and graceful degradation to file-system defaults
1758
+
1759
+ **Given** the installation pipeline (Epic 13)
1760
+ **When** the architecture covers installation-time configuration
1761
+ **Then** it defines which configuration questions are asked at install time vs deferred to first use
1762
+ **And** it specifies how the installer writes the backend configuration into `project-context.md`
1763
+
1764
+ **Technical notes:**
1765
+ - Output artifact: ADR in `_bmad-output/planning-artifacts/adr-external-tooling-abstraction.md`
1766
+ - Stories 14.4 and 14.5 are fully blocked on this story
1767
+ - After this story is approved, add formal FRs to the PRD and create detailed implementation stories for 14.4 and 14.5
1768
+
1769
+ ---
1770
+
1771
+ ### Story 14.4: Implement Jira Sprint Management Backend
1772
+
1773
+ *(Blocked on Stories 14.1 + 14.3 — full story spec to be written after architecture ADR is approved and FRs are added to PRD)*
1774
+
1775
+ ---
1776
+
1777
+ ### Story 14.5: Implement Confluence Knowledge Management Backend
1778
+
1779
+ *(Blocked on Stories 14.2 + 14.3 — full story spec to be written after architecture ADR is approved and FRs are added to PRD)*
1780
+
1781
+ ---
1782
+
1783
+ ## Epic 15: BMAD 6.2.1 Agent Architecture Migration (Phase 2)
1784
+
1785
+ ma-agents upgrades from bmad-method 6.0.4 to 6.2.1, restructures the extension module to follow BMAD 6.2.0 module conventions (agents as skill folders, workflows as skill folders, module.yaml with code field), converts all 34 operational workflows to SKILL.md packages, and provides an installer-driven migration path for existing installations.
1786
+
1787
+ ### Story 15.1: Bump bmad-method to 6.2.1 and Update Cache
1788
+
1789
+ As a **Chief Architect**,
1790
+ I want bmad-method updated from 6.0.4 to 6.2.1 and the cache build script updated to include wds,
1791
+ So that the bundled BMAD installation uses the current stable version with all official modules.
1792
+
1793
+ **Acceptance Criteria:**
1794
+
1795
+ **Given** `package.json` currently pins `"bmad-method": "6.0.4"`
1796
+ **When** the version is updated to `"6.2.1"`
1797
+ **Then** `npm install` fetches bmad-method v6.2.1 into `node_modules/`
1798
+ **And** `require.resolve('bmad-method/tools/bmad-npx-wrapper.js')` resolves correctly
1799
+
1800
+ **Given** the cache build script (`npm run build:bmad-cache`) currently clones 4 modules (bmb, cis, tea, gds)
1801
+ **When** the script is updated
1802
+ **Then** it clones 5 modules: bmb, cis, tea, gds, **wds** (bmad-whiteport-design-studio)
1803
+ **And** `lib/bmad-cache/wds/` is populated with the cloned module and pre-installed dependencies
1804
+
1805
+ **Given** the bundled installation runs with bmad-method 6.2.1
1806
+ **When** `npx ma-agents install` completes
1807
+ **Then** the resulting `_bmad/` directory structure is valid for 6.2.1
1808
+ **And** all BMAD workflows execute correctly against the 6.2.1 core
1809
+
1810
+ **Given** a project previously installed with bmad-method 6.0.4
1811
+ **When** the new version runs `npx ma-agents install`
1812
+ **Then** `buildBmadArgs()` passes `--action update` (detected from existing `_bmad/`)
1813
+ **And** bmad-method 6.2.1 handles the upgrade from 6.0.4
1814
+
1815
+ **Technical notes:**
1816
+ - Update `package.json`: `"bmad-method": "6.2.1"`
1817
+ - Update `build:bmad-cache` script to read the updated `external-official-modules.yaml` from bmad-method 6.2.1 (which includes wds)
1818
+ - Verify that bmad-method 6.2.1's CLI accepts the same flags used in `buildBmadArgs()` (Story 5.5)
1819
+ - Test that `--custom-content` validation still works with our module.yaml
1820
+
1821
+ ### Story 15.2: Restructure Extension Module for 6.2.0 Conventions
1822
+
1823
+ As a **Chief Architect**,
1824
+ I want the extension module restructured to follow the BMAD 6.2.0 module pattern (verified from CIS module source),
1825
+ So that `--custom-content` deployment works correctly and the module integrates natively with BMAD's module system.
1826
+
1827
+ **Acceptance Criteria:**
1828
+
1829
+ **Given** the current `lib/bmad-extension/module.yaml` contains `extends-module: bmm` but no `code` field
1830
+ **When** the module.yaml is updated
1831
+ **Then** it contains: `code: ma-skills`, `name`, `description`, and optionally `extends-module: bmm`
1832
+ **And** `--custom-content lib/bmad-extension/` passes bmad-method's validation (requires `module.yaml` with `code` field)
1833
+
1834
+ **Given** the current module has `agents/*.customize.yaml` and `workflows/*/workflow.md`
1835
+ **When** the module is restructured
1836
+ **Then** all content moves under a `skills/` directory following the CIS pattern
1837
+ **And** the old `agents/` and `workflows/` directories are removed from the module
1838
+
1839
+ **Given** the restructured module contains `module-help.csv`
1840
+ **When** bmad-method processes the module
1841
+ **Then** all 42 skills (4 agents + 38 workflows) are registered in the capability system
1842
+
1843
+ **Technical notes:**
1844
+ - Create `lib/bmad-extension/skills/` directory
1845
+ - Move and convert content in subsequent stories (15.3-15.5)
1846
+ - The `module-help.csv` must list all skills with their type and trigger information
1847
+ - Verify `--custom-content` deployment with the new structure by running a test installation
1848
+
1849
+ ### Story 15.3: Convert 4 Custom Agents to Skill Folders
1850
+
1851
+ As a **Chief Architect**,
1852
+ I want the 4 custom agents (SRE, DevOps, Cyber, MIL-498) converted from `.customize.yaml` files to BMAD 6.2.0 agent skill folders,
1853
+ So that they are delivered as native module agents following the verified CIS pattern.
1854
+
1855
+ **Acceptance Criteria:**
1856
+
1857
+ **Given** each agent currently exists as a `.customize.yaml` file with persona, menu, and critical_actions
1858
+ **When** the agent is converted
1859
+ **Then** a skill folder is created at `lib/bmad-extension/skills/bmad-ma-agent-{role}/`
1860
+ **And** it contains `SKILL.md` with the full agent definition (persona, menu, activation, critical_actions)
1861
+ **And** it contains `bmad-skill-manifest.yaml` with `type: agent`, `name`, `displayName`, `role`, `identity`, `communicationStyle`, `principles`, `module: ma-skills`
1862
+
1863
+ **Given** the SRE agent (Alex) has persona fields, 9 menu items referencing SRE playbooks, and skill-loading critical_actions
1864
+ **When** converted to `bmad-ma-agent-sre/SKILL.md`
1865
+ **Then** the SKILL.md contains the complete persona, all menu items with trigger phrases, activation sequence, and critical_actions
1866
+ **And** menu items reference the SRE workflow skills by their new skill names (e.g., `sre-health-check`)
1867
+
1868
+ **Given** the same conversion for DevOps (Amit), Cyber (Yael), and MIL-498 (Joseph)
1869
+ **When** all 4 agents are converted
1870
+ **Then** each has a valid skill folder under `lib/bmad-extension/skills/`
1871
+ **And** the `bmad-skill-manifest.yaml` fields match the agent's established persona
1872
+
1873
+ **Given** the converted agents are deployed via `--custom-content`
1874
+ **When** a user activates any of the 4 agents
1875
+ **Then** the agent behaves identically to its pre-conversion behavior — same persona, same menu, same workflows (NFR30)
1876
+
1877
+ **Technical notes:**
1878
+ - Source material: `lib/bmad-customizations/bmm-{agent}.customize.yaml` (base) + `lib/bmad-extension/agents/bmm-{agent}.customize.yaml` (extended) + `_bmad/custom/agents/{agent}.md` (XML definition)
1879
+ - Consolidate all three sources into a single SKILL.md per agent
1880
+ - Critical_actions in SKILL.md should use the BMAD 6.2.0 format observed in the customize docs
1881
+ - After conversion, the old `.customize.yaml` files for custom agents are no longer needed (removed in Story 15.6)
1882
+
1883
+ ### Story 15.4: Convert 11 MIL-498 Workflows to SKILL.md Packages
1884
+
1885
+ As a **MIL-STD-498 expert**,
1886
+ I want all 11 DID workflows converted from legacy YAML format to BMAD 6.2.0 SKILL.md packages,
1887
+ So that they function without the removed legacy workflow engine.
1888
+
1889
+ **Acceptance Criteria:**
1890
+
1891
+ **Given** each MIL-498 workflow currently exists as `workflow.yaml` + `instructions.md` in `lib/bmad-workflows/mil498/`
1892
+ **When** converted to a SKILL.md package
1893
+ **Then** a skill folder is created at `lib/bmad-extension/skills/mil498-{did}/` (e.g., `mil498-srs/`)
1894
+ **And** it contains `SKILL.md` (workflow entrypoint with routing logic), `bmad-skill-manifest.yaml` (type: skill), `template.md` (DID output template), and `prompts/` (step files for progressive disclosure)
1895
+
1896
+ **Given** a MIL-498 workflow has sequential steps that must execute in strict order (compliance-critical)
1897
+ **When** the workflow is converted
1898
+ **Then** each step becomes a separate file in `prompts/` (Layer 4 progressive disclosure)
1899
+ **And** the step files preserve the exact same sequence and content as the original instructions.md
1900
+ **And** template output checkpoints (previously `<template-output>` XML tags) become explicit user confirmation gates in step files
1901
+
1902
+ **Given** all 11 DID workflows (SSS, SSDD, OCD, SDP, SRS, SDD, STD, STR, IDD, IRS, HRS) are converted
1903
+ **When** a user invokes any DID workflow
1904
+ **Then** it produces the same document output as before conversion (NFR32)
1905
+ **And** the same pause-and-confirm behavior for document section approval is preserved
1906
+
1907
+ **Technical notes:**
1908
+ - 11 workflows: mil498-sss, mil498-ssdd, mil498-ocd, mil498-sdp, mil498-srs, mil498-sdd, mil498-std, mil498-str, mil498-idd, mil498-irs, mil498-hrs
1909
+ - These are Complex Workflow skill type — the most structured form in BMAD 6.2.0
1910
+ - The step file naming should follow a consistent pattern: `01-discovery.md`, `02-requirements.md`, etc.
1911
+ - Templates must be carried over verbatim — no content changes during conversion
1912
+
1913
+ ### Story 15.5: Convert 23 SRE/DevOps/Cyber Workflows to SKILL.md Packages
1914
+
1915
+ As a **Chief Architect**,
1916
+ I want all SRE, DevOps, and Cyber operational playbooks converted to SKILL.md skill packages,
1917
+ So that they integrate with the BMAD 6.2.0 skill system consistently.
1918
+
1919
+ **Acceptance Criteria:**
1920
+
1921
+ **Given** SRE playbooks currently exist as standalone `.md` files in `lib/bmad-workflows/sre/` (9 workflows)
1922
+ **When** each is converted to a SKILL.md package
1923
+ **Then** a skill folder is created at `lib/bmad-extension/skills/sre-{workflow}/`
1924
+ **And** it contains `SKILL.md` (wrapping the existing workflow content with proper frontmatter) and `bmad-skill-manifest.yaml` (type: skill)
1925
+
1926
+ **Given** DevOps playbooks in `lib/bmad-workflows/devops/` (6 workflows) and Cyber playbooks in `lib/bmad-workflows/cyber/` (8 workflows)
1927
+ **When** converted following the same pattern
1928
+ **Then** each gets its own skill folder under `lib/bmad-extension/skills/`
1929
+
1930
+ **Given** a multi-step workflow (e.g., `sre-health-check` with discovery → diagnosis → remediation)
1931
+ **When** it is complex enough to benefit from progressive disclosure
1932
+ **Then** it uses `prompts/` for step files (Complex Workflow type)
1933
+ **Otherwise** single-pass playbooks remain as simple `SKILL.md` files (Simple Workflow type)
1934
+
1935
+ **Given** all 23 workflows are converted
1936
+ **When** the agent menu references them
1937
+ **Then** agents can invoke them by the new skill name
1938
+ **And** the workflow behavior is identical to pre-conversion (NFR32)
1939
+
1940
+ **Technical notes:**
1941
+ - 9 SRE: health-check, fix-deployments, performance-opt, check-deployment-status, check-secrets, day-2-ops, deployment-strategies, gitops-status, + 1 more
1942
+ - 6 DevOps: configure-infrastructure, optimize-pipelines, manage-helm, disconnected-deployment, docker-compose-setup, sign-docker-image
1943
+ - 8 Cyber: vulnerability-scan, security-audit, threat-modeling, generate-certs, immunity-estimation, vault-secrets, verify-docker-users, verify-image-signature
1944
+ - Conversion is lighter than MIL-498 — existing .md content wraps into SKILL.md with frontmatter
1945
+ - Also convert the 4 extension workflows (create-bug-story, add-sprint, modify-sprint, add-to-sprint) to skill format
1946
+
1947
+ ### Story 15.6: Separate Built-in Agent Customizations
1948
+
1949
+ As a **Chief Architect**,
1950
+ I want the `.customize.yaml` files for 8 built-in BMM agents moved from `lib/bmad-extension/agents/` to `lib/bmad-customize/`,
1951
+ So that module-owned agents (in skill folders) are cleanly separated from customizations of other modules' agents.
1952
+
1953
+ **Acceptance Criteria:**
1954
+
1955
+ **Given** the 8 built-in agent `.customize.yaml` files (bmm-pm, bmm-architect, bmm-dev, bmm-qa, bmm-sm, bmm-tech-writer, bmm-ux-designer, core-bmad-master)
1956
+ **When** moved to `lib/bmad-customize/`
1957
+ **Then** each file contains only `critical_actions` (skill loading + project-context loading)
1958
+ **And** no persona, menu, or other overrides are present
1959
+
1960
+ **Given** the `.customize.yaml` files use BMAD 6.2.0 syntax
1961
+ **When** the critical_actions are written
1962
+ **Then** they use array syntax (list of strings) per current BMAD documentation:
1963
+ ```yaml
1964
+ critical_actions:
1965
+ - "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
1966
+ - "For each skill marked always_load: true, read the skill file completely"
1967
+ - "If _bmad-output/project-context.md exists, read it completely"
1968
+ - "Follow all skill directives and project-context rules during this session"
1969
+ ```
1970
+
1971
+ **Given** `bmad.js` deploys these files
1972
+ **When** installation runs
1973
+ **Then** files are copied from `lib/bmad-customize/` to `_bmad/_config/agents/` AFTER `--custom-content` deploys the extension module
1974
+
1975
+ **Given** the old `lib/bmad-extension/agents/` directory contained both custom and built-in agent files
1976
+ **When** the separation is complete
1977
+ **Then** `lib/bmad-extension/agents/` no longer exists (custom agents are now in `skills/`, built-ins are in `lib/bmad-customize/`)
1978
+
1979
+ **Technical notes:**
1980
+ - `bmad.js` needs two deployment steps: (1) `--custom-content lib/bmad-extension/` for the module, (2) file copy from `lib/bmad-customize/*.customize.yaml` to `_bmad/_config/agents/`
1981
+ - The old `lib/bmad-customizations/` directory (base configs) is also eliminated — its content was merged into agent skill folders in Story 15.3
1982
+
1983
+ ### Story 15.7: Migration Detection and Upgrade Path
1984
+
1985
+ As a **DevOps engineer**,
1986
+ I want the installer to automatically detect and upgrade from 6.0.4 to 6.2.1 during normal installation,
1987
+ So that I don't need a separate upgrade command and my existing customizations are preserved.
1988
+
1989
+ **Acceptance Criteria:**
1990
+
1991
+ **Given** an existing project with bmad-method 6.0.4 installed (detected from `_bmad/core/config.yaml` version field)
1992
+ **When** `npx ma-agents install` runs with the new version
1993
+ **Then** the installer detects the old version and logs: `"Upgrading BMAD from 6.0.4 to 6.2.1..."`
1994
+ **And** passes `--action update` to bmad-method
1995
+
1996
+ **Given** the user had customized agent personas (e.g., changed SRE agent's name from Alex to Sasha)
1997
+ **When** the migration runs
1998
+ **Then** the installer backs up existing `_bmad/_config/agents/*.customize.yaml` before updating
1999
+ **And** after the module deploys, it checks backed-up files for user-added `memories`, extra `critical_actions`, or persona overrides
2000
+ **And** carries forward user customizations that don't conflict with the new structure
2001
+
2002
+ **Given** legacy artifacts exist (old `.customize.yaml` for custom agents in `_bmad/_config/agents/`, XML agent definitions in `_bmad/custom/agents/`, YAML workflow files)
2003
+ **When** migration completes successfully
2004
+ **Then** legacy artifacts are removed
2005
+ **And** a migration log is printed listing what was cleaned up
2006
+
2007
+ **Given** the bmad-method update fails (e.g., file permission error, corrupted state)
2008
+ **When** the error is caught
2009
+ **Then** the installer restores backed-up `.customize.yaml` files
2010
+ **And** logs the error with a recovery suggestion
2011
+ **And** the project remains functional on the old version (NFR29)
2012
+
2013
+ **Given** a fresh project with no existing BMAD installation
2014
+ **When** `npx ma-agents install` runs
2015
+ **Then** it deploys directly in 6.2.1 format with skill-based agents and workflows
2016
+ **And** no migration logic executes (FR110)
2017
+
2018
+ **Technical notes:**
2019
+ - `detectMigrationNeed()` function reads `_bmad/core/config.yaml` for version
2020
+ - Backup directory: `_bmad/_config/agents/.backup-pre-migration/`
2021
+ - Customization merge is best-effort — if a user customized something that no longer exists in the new format, log a warning
2022
+ - The migration sequence: back up → invoke bmad-method update → deploy new extension module → deploy built-in customizes → merge user customizations → clean up legacy
2023
+
2024
+ ### Story 15.8: Validate Migrated Agents and Workflows
2025
+
2026
+ As a **Chief Architect**,
2027
+ I want to verify that all migrated agents and workflows function identically to their pre-migration behavior,
2028
+ So that functional equivalence (NFR30) and output equivalence (NFR32) are confirmed.
2029
+
2030
+ **Acceptance Criteria:**
2031
+
2032
+ **Given** all 4 custom agents have been converted to skill folders
2033
+ **When** each agent is activated
2034
+ **Then** the agent displays the same persona, same greeting, and same menu items as before
2035
+ **And** every menu item routes to the correct workflow
2036
+
2037
+ **Given** all 11 MIL-498 workflows have been converted
2038
+ **When** each DID workflow is invoked
2039
+ **Then** it produces the same document structure with the same template sections
2040
+ **And** the progressive disclosure step files execute in the same order
2041
+
2042
+ **Given** all 23 SRE/DevOps/Cyber workflows have been converted
2043
+ **When** each playbook is invoked
2044
+ **Then** it produces the same output as the pre-conversion `.md` version
2045
+
2046
+ **Given** the migrated extension module is deployed
2047
+ **When** BMAD Builder lint gate scripts are run against the skill folders
2048
+ **Then** `scan-path-standards.py` passes without critical violations
2049
+ **And** `scan-scripts.py` passes without critical violations (NFR31)
2050
+
2051
+ **Technical notes:**
2052
+ - This is a validation/testing story
2053
+ - Create a checklist document: each agent menu item → expected behavior → actual behavior
2054
+ - Compare MIL-498 DID output before/after conversion using diff
2055
+ - Run BMAD Builder QO (Quality Optimize) if available against the module
2056
+
2057
+ ---
2058
+
2059
+ ## Epic 16: Multi-Repository Project Layout (Phase 2)
2060
+
2061
+ Enterprise projects that separate planning knowledge, sprint management, and code across repositories are fully supported. The installer discovers repo locations, stores paths in config, and stamps them into project-context.md so agents resolve artifacts to the correct repository.
2062
+
2063
+ ### Story 16.1: Repository Layout Wizard
2064
+
2065
+ As a **Chief Architect**,
2066
+ I want the installer to ask where the knowledgebase and sprint management are managed during installation,
2067
+ So that the project layout is configured correctly for multi-repo environments.
2068
+
2069
+ **Acceptance Criteria:**
2070
+
2071
+ **Given** the user runs `npx ma-agents install`
2072
+ **When** the wizard reaches the repository layout section
2073
+ **Then** it asks: "Where is your knowledgebase managed?" with options: Current repository (default), Local path, Remote git repository
2074
+ **And** it asks: "Where is your sprint management managed?" with the same options
2075
+
2076
+ **Given** the user selects "Remote git repository" for knowledgebase
2077
+ **When** prompted for details
2078
+ **Then** the wizard asks for the git URL
2079
+ **And** asks for the local destination path for cloning
2080
+ **And** if the destination already exists, displays its contents summary and asks the user to confirm (FR113)
2081
+ **And** if the destination does not exist, clones the repository to that path (FR114)
2082
+
2083
+ **Given** the user selects "Local path" for sprint management
2084
+ **When** prompted for the path
2085
+ **Then** the wizard validates the path exists
2086
+ **And** if it does not exist, alerts the user and asks to confirm or correct (FR115)
2087
+
2088
+ **Given** the user selects "Current repository" for both concerns
2089
+ **When** the wizard completes
2090
+ **Then** no additional configuration is needed — single-repo mode preserved (FR116)
2091
+
2092
+ **Given** the user runs with `--yes` flag (CI/CD mode)
2093
+ **When** the wizard reaches the repository layout section
2094
+ **Then** both concerns default to "Current repository" without prompting
2095
+
2096
+ **Technical notes:**
2097
+ - New section in `cli.js` wizard, after agent selection
2098
+ - Use existing inquirer prompts pattern
2099
+ - `git clone` command must quote the URL and destination path for space-safety
2100
+
2101
+ ### Story 16.2: Config Storage and Cross-Reference File
2102
+
2103
+ As a **DevOps engineer**,
2104
+ I want the configured repo paths stored persistently and a cross-reference file created in the code repo,
2105
+ So that agents and BMAD workflows can discover the correct paths without re-running installation.
2106
+
2107
+ **Acceptance Criteria:**
2108
+
2109
+ **Given** the user configured knowledgebase at `d:/Code/kb-repo` and sprint management at `d:/Code/sprint-repo`
2110
+ **When** the installation completes
2111
+ **Then** `_bmad/core/config.yaml` contains:
2112
+ ```yaml
2113
+ knowledgebase_path: "d:/Code/kb-repo"
2114
+ sprint_management_path: "d:/Code/sprint-repo"
2115
+ ```
2116
+
2117
+ **Given** multi-repo mode is configured
2118
+ **When** the installation completes
2119
+ **Then** `_bmad-output/project-layout.yaml` is created in the CODE repository containing:
2120
+ ```yaml
2121
+ generated: '2026-03-26'
2122
+ knowledgebase:
2123
+ mode: remote
2124
+ path: "d:/Code/kb-repo"
2125
+ gitUrl: "https://..."
2126
+ sprint_management:
2127
+ mode: local
2128
+ path: "d:/Code/sprint-repo"
2129
+ ```
2130
+
2131
+ **Given** single-repo mode is configured (both set to "current repository")
2132
+ **When** the installation completes
2133
+ **Then** config.yaml contains `knowledgebase_path: "."` and `sprint_management_path: "."`
2134
+ **And** no `project-layout.yaml` is created (NFR34)
2135
+
2136
+ **Given** the installation runs multiple times with the same multi-repo configuration
2137
+ **When** `project-layout.yaml` is regenerated
2138
+ **Then** the output is identical except for the `generated` date field (NFR36)
2139
+
2140
+ **Technical notes:**
2141
+ - Write config values after bmad-method installation completes
2142
+ - `project-layout.yaml` is generated by ma-agents installer, not by bmad-method
2143
+ - The file is created in `_bmad-output/` which is version-controlled (per F3)
2144
+
2145
+ ### Story 16.3: Project-Context Multi-Repo Section
2146
+
2147
+ As an **AI agent**,
2148
+ I want project-context.md to include the configured repository paths,
2149
+ So that I know where to read and write planning and sprint artifacts.
2150
+
2151
+ **Acceptance Criteria:**
2152
+
2153
+ **Given** multi-repo is configured with knowledgebase at `/path/to/kb` and sprint at `/path/to/sprint`
2154
+ **When** project-context.md is generated (or regenerated)
2155
+ **Then** it includes a "Repository Layout" section:
2156
+ ```markdown
2157
+ ### Repository Layout
2158
+ - **Knowledgebase:** /path/to/kb
2159
+ - **Sprint Management:** /path/to/sprint
2160
+ - When creating or reading planning artifacts, use the knowledgebase path
2161
+ - When creating or reading sprint/story artifacts, use the sprint management path
2162
+ ```
2163
+
2164
+ **Given** single-repo mode is configured
2165
+ **When** project-context.md is generated
2166
+ **Then** the "Repository Layout" section is omitted entirely (NFR34 backward compatibility)
2167
+
2168
+ **Given** project-context.md already exists when the installer runs
2169
+ **When** multi-repo is configured for the first time
2170
+ **Then** project-context.md is NOT modified (idempotency per FR84)
2171
+ **And** the installer logs: "project-context.md exists — add Repository Layout section manually or run /bmad-generate-project-context"
2172
+
2173
+ **Technical notes:**
2174
+ - Update `lib/templates/project-context.template.md` to include conditional multi-repo section
2175
+ - Add `{{REPO_LAYOUT_SECTION}}` placeholder that resolves to the section or empty string
2176
+ - The generator function needs the repo layout config as input alongside installedAgents
2177
+
2178
+ ### Story 16.4: Validate Cross-Repo Path Resolution
2179
+
2180
+ As a **Chief Architect**,
2181
+ I want to verify that BMAD workflows correctly resolve artifact paths from the configured repo layout,
2182
+ So that planning and sprint artifacts are read from and written to the correct repositories.
2183
+
2184
+ **Acceptance Criteria:**
2185
+
2186
+ **Given** a multi-repo configuration where knowledgebase is at a different path than the code repo
2187
+ **When** a BMAD planning workflow (e.g., `/bmad-bmm-create-prd`) runs
2188
+ **Then** it reads existing planning artifacts from `{knowledgebase_path}/_bmad-output/planning-artifacts/`
2189
+ **And** writes output to the same path
2190
+
2191
+ **Given** a multi-repo configuration where sprint management is at a different path
2192
+ **When** a BMAD sprint workflow (e.g., `/bmad-bmm-sprint-planning`) runs
2193
+ **Then** it reads/writes sprint artifacts from `{sprint_management_path}/_bmad-output/sprints/`
2194
+
2195
+ **Given** single-repo configuration
2196
+ **When** any BMAD workflow runs
2197
+ **Then** artifacts are read from and written to the current project's `_bmad-output/` as before (NFR34)
2198
+
2199
+ **Given** an agent is working in the code repository with multi-repo configured
2200
+ **When** the agent needs planning context (e.g., reading the PRD during story implementation)
2201
+ **Then** it discovers the knowledgebase path from `_bmad-output/project-layout.yaml` or `_bmad/core/config.yaml`
2202
+ **And** reads the PRD from the knowledgebase repository
2203
+
2204
+ **Technical notes:**
2205
+ - This is a validation/testing story
2206
+ - Verify that BMAD workflows use config values for path resolution, not hardcoded `_bmad-output/`
2207
+ - If BMAD workflows don't natively support configurable output paths, this story identifies the gap and documents what workflow changes are needed
2208
+ - Test both directions: writing artifacts to external repo AND reading artifacts from external repo
2209
+
2210
+ ### Story 16.5: Fix Config Lost on Update (Bug)
2211
+
2212
+ As a **user with a multi-repo layout configured**,
2213
+ I want my repo layout configuration to be preserved when I update ma-agents,
2214
+ So that I don't silently lose my multi-repo paths every time I add a skill or update agents.
2215
+
2216
+ **Acceptance Criteria:**
2217
+
2218
+ **Given** an existing installation with multi-repo layout configured in `project-layout.yaml`
2219
+ **When** the user runs `ma-agents` again and selects "Update"
2220
+ **Then** the repo layout prompts are pre-populated with the existing configuration
2221
+
2222
+ **Given** an update with `--yes` flag and no env vars
2223
+ **When** `project-layout.yaml` exists with multi-repo paths
2224
+ **Then** the existing layout is preserved instead of defaulting to single-repo
2225
+
2226
+ **Given** an update with `--yes` flag and env vars set
2227
+ **When** `project-layout.yaml` also exists
2228
+ **Then** the env vars take precedence over the file (explicit override wins)
2229
+
2230
+ **Technical notes:**
2231
+ - BUG: `collectRepoLayout()` runs unconditionally on every install/update — no `isUpdate` guard
2232
+ - Implement `readExistingLayout()` to parse `project-layout.yaml` and pre-populate prompts
2233
+ - In `--yes` mode without env vars, preserve existing config from file
2234
+ - Origin: Adversarial Review Finding #1
2235
+
2236
+ ### Story 16.6: Repository Sync Check Skill
2237
+
2238
+ As a **developer using multi-repo layout**,
2239
+ I want a skill that checks whether external repos are in sync and properly scaffolded,
2240
+ So that I catch stale clones and missing directory structures before agents fail at runtime.
2241
+
2242
+ **Acceptance Criteria:**
2243
+
2244
+ **Given** a multi-repo layout is configured
2245
+ **When** the user or agent runs the repo-sync-check skill
2246
+ **Then** it reads config.yaml, checks each external path exists, verifies expected directory structure, and checks git sync status
2247
+
2248
+ **Given** an external path missing `_bmad-output/planning-artifacts/`
2249
+ **When** the skill runs
2250
+ **Then** it reports the missing structure and offers to scaffold it
2251
+
2252
+ **Given** an external git repo where local is behind remote
2253
+ **When** the skill runs
2254
+ **Then** it reports how many commits behind and advises `git pull`
2255
+
2256
+ **Given** a single-repo layout
2257
+ **When** the skill runs
2258
+ **Then** it reports "no external repos to check" and exits cleanly
2259
+
2260
+ **Technical notes:**
2261
+ - Covers both scaffolding gap (external repo never initialized) and sync gap (no pull after clone)
2262
+ - Read-only git operations: `git fetch`, `git rev-list --count`, `git status --porcelain`
2263
+ - Implemented as a skill (not workflow) — short, self-contained check
2264
+ - Origin: Adversarial Review Findings #3 and #4
2265
+
2266
+ ### Story 16.7: Portable Path Storage
2267
+
2268
+ As a **team member cloning a project with multi-repo layout**,
2269
+ I want stored paths to be relative rather than absolute,
2270
+ So that `project-layout.yaml` and `config.yaml` work across different machines.
2271
+
2272
+ **Acceptance Criteria:**
2273
+
2274
+ **Given** a local multi-repo path that is relative to the project root
2275
+ **When** the config is written
2276
+ **Then** the path is stored as relative (e.g., `../kb-repo` instead of `d:/Code/kb-repo`)
2277
+
2278
+ **Given** a path that cannot be expressed as a relative path (cross-drive on Windows)
2279
+ **When** the config is written
2280
+ **Then** the absolute path is stored with a portability warning comment
2281
+
2282
+ **Given** stored relative paths
2283
+ **When** `readExistingLayout()` reads them back
2284
+ **Then** it resolves to absolute paths using `path.resolve(projectRoot, storedPath)`
2285
+
2286
+ **Technical notes:**
2287
+ - Add `toPortablePath(absolutePath, projectRoot)` utility using `path.relative()`
2288
+ - Update `writeProjectLayoutYaml()` and `writeRepoLayoutConfig()` to use portable paths
2289
+ - Backward compatible: existing absolute paths still work when read back
2290
+ - Origin: Adversarial Review Finding #7
2291
+
2292
+ ### Story 16.8: CI/CD Remote Repository Mode
2293
+
2294
+ As a **CI/CD pipeline operator**,
2295
+ I want to configure remote git repositories headlessly via env vars,
2296
+ So that automated pipelines can set up multi-repo remote layouts without prompts.
2297
+
2298
+ **Acceptance Criteria:**
2299
+
2300
+ **Given** `--yes` flag and `MA_KNOWLEDGEBASE_GIT_URL` env var set
2301
+ **When** `collectRepoLayout()` runs
2302
+ **Then** it clones the repo to `MA_KNOWLEDGEBASE_PATH` and returns `mode: 'remote'`
2303
+
2304
+ **Given** git URL env var set but corresponding path env var missing
2305
+ **When** `collectRepoLayout()` runs
2306
+ **Then** it exits with error: "MA_KNOWLEDGEBASE_GIT_URL requires MA_KNOWLEDGEBASE_PATH"
2307
+
2308
+ **Given** clone destination already exists with `.git` directory
2309
+ **When** clone is attempted
2310
+ **Then** it skips cloning (idempotent for CI re-runs)
2311
+
2312
+ **Given** clone failure in CI mode
2313
+ **When** the error occurs
2314
+ **Then** it exits non-zero with clear error (no silent fallback to same mode)
2315
+
2316
+ **Technical notes:**
2317
+ - New env vars: `MA_KNOWLEDGEBASE_GIT_URL`, `MA_SPRINT_GIT_URL`
2318
+ - CI mode must fail loudly — no fallback to `same` on error
2319
+ - Idempotent: existing valid clone at destination is reused
2320
+ - Origin: Adversarial Review Finding #8
2321
+
2322
+ ### Story 16.9: Reconfigure Layout Workflow
2323
+
2324
+ As a **user who needs to change repo layout after installation**,
2325
+ I want a dedicated command and workflow to reconfigure repo layout,
2326
+ So that I can change paths without re-running the full installer.
2327
+
2328
+ **Acceptance Criteria:**
2329
+
2330
+ **Given** the user runs `ma-agents config layout`
2331
+ **When** the command starts
2332
+ **Then** it displays current layout and presents the layout wizard pre-populated with current values
2333
+
2334
+ **Given** the user runs `ma-agents config layout --show`
2335
+ **Then** it displays current configuration in read-only mode (no prompts)
2336
+
2337
+ **Given** reconfiguration completes
2338
+ **When** new paths are confirmed
2339
+ **Then** `config.yaml`, `project-layout.yaml`, and `project-context.md` are all updated
2340
+
2341
+ **Given** reconfiguration from multi-repo to single-repo
2342
+ **When** update completes
2343
+ **Then** `project-layout.yaml` is deleted and config reverts to single-repo defaults
2344
+
2345
+ **Technical notes:**
2346
+ - Reuses all existing functions: `readExistingLayout()`, `collectRepoLayout()`, `writeRepoLayoutConfig()`, `writeProjectLayoutYaml()`, `updateProjectContextRepoLayout()`
2347
+ - Also create a BMAD skill so agents can guide users to the command
2348
+ - Depends on Stories 16.5, 16.7, 16.8
2349
+ - Origin: Adversarial Review Finding #10
2350
+
2351
+ ---
2352
+
2353
+ ## Epic 17: Sprint Management Model Rework (Phase 2)
2354
+
2355
+ Sprint management is redesigned around a **single unified `sprint-status.yaml`** file that replaces the previous three-file model (`backlog.yaml`, `sprints/sprint-N.yaml`, `sprint-status.yaml`). The unified file has three sections: `epics` (reference data from epics.md), `backlog` (unassigned items in priority order), and `sprints` (sprint definitions with their assigned items inline). Stories and bugs MOVE between the `backlog` and `sprints` sections — an item exists in exactly one location at any time. Each item carries its own `status` field, updated in-place. Done items are removed from the file and archived to `done/`. A new close-sprint skill handles sprint lifecycle closure. When `tracking_system` is `jira`, the same data model reads/writes from Jira API via an adapter pattern. All 12 sprint-related skills are reworked to operate against this single file. Epic 12 delivered workflow shells — this epic rebuilds the underlying model and rewires everything.
2356
+
2357
+ **Execution order:** 17.9 (schema) → 17.15 (bootstrap) → 17.10 (generate-backlog) → 17.16 (add-sprint) → 17.11 (add-to-sprint) → 17.12 (remove-from-sprint) → 17.13 (sprint-status-view) → 17.14 (cleanup-done) → 17.17 (modify-sprint) → 17.18 (bmad-dev-story) → 17.19 (story-status-lookup) → 17.20 (bmad-sprint-status) → 17.24 (prioritize-backlog rework) → 17.21 (close-sprint) → 17.22 (Jira adapter) → 17.23 (migration)
2358
+
2359
+ ### Story 17.9: Unified sprint-status.yaml Schema
2360
+
2361
+ As a **Scrum Master**,
2362
+ I want all sprint management data consolidated into a single `sprint-status.yaml` file with three structured sections,
2363
+ So that there is one source of truth for epics, backlog, and sprints — eliminating data duplication across multiple files.
2364
+
2365
+ **Acceptance Criteria:**
2366
+
2367
+ **Given** the unified schema is defined
2368
+ **When** `sprint-status.yaml` is created or updated
2369
+ **Then** it contains exactly three top-level sections:
2370
+ ```yaml
2371
+ epics:
2372
+ epic-5:
2373
+ status: in-progress
2374
+ retrospective: null
2375
+ epic-17:
2376
+ status: planning
2377
+ retrospective: null
2378
+
2379
+ backlog:
2380
+ - id: "15-2-restructure-extension-module"
2381
+ type: story
2382
+ epic: 15
2383
+ title: "Restructure Extension Module"
2384
+ priority: 1
2385
+ status: ready-for-dev
2386
+ - id: "BUG-path-spaces"
2387
+ type: bug
2388
+ epic: null
2389
+ title: "Fix space-in-path bug"
2390
+ priority: 2
2391
+ status: backlog
2392
+ severity: high
2393
+
2394
+ sprints:
2395
+ - id: sprint-3
2396
+ name: "Sprint 3"
2397
+ status: active # planning | active | closed
2398
+ capacity: 6 # max items (stories + bugs)
2399
+ start: "2026-04-01"
2400
+ end: "2026-04-14"
2401
+ items:
2402
+ - id: "5-5-explicit-parameter-passing"
2403
+ type: story
2404
+ epic: 5
2405
+ title: "Explicit Parameter Passing"
2406
+ status: in-progress
2407
+ - id: "5-6-fix-space-in-path-bug"
2408
+ type: story
2409
+ epic: 5
2410
+ title: "Fix Space-in-Path Bug"
2411
+ status: review
2412
+ ```
2413
+
2414
+ **Given** an item is in the `backlog` section
2415
+ **When** it is assigned to a sprint
2416
+ **Then** it is REMOVED from `backlog` and ADDED to the target sprint's `items` array (FR134 — movement semantics)
2417
+ **And** the item exists in exactly one location at any time
2418
+
2419
+ **Given** an item's status changes (e.g., `ready-for-dev` to `in-progress`)
2420
+ **When** the status is updated
2421
+ **Then** the `status` field is updated in-place on the item, wherever it currently resides (FR135)
2422
+
2423
+ **Given** an item reaches `done` status
2424
+ **When** cleanup runs
2425
+ **Then** the item is REMOVED from `sprint-status.yaml` entirely (FR136)
2426
+ **And** archived to the `done/` folder
2427
+
2428
+ **Given** a sprint transitions from `planning` to `active`
2429
+ **When** the sprint is activated
2430
+ **Then** only one sprint can have `status: active` at a time
2431
+ **And** the previous active sprint must be closed first
2432
+
2433
+ **Technical notes:**
2434
+ - File location: `{sprint_management_path}/sprint-status.yaml` (resolves via config, defaults to `_bmad-output/implementation-artifacts/sprint-status.yaml`)
2435
+ - The `epics` section is a MAP keyed by epic ID (e.g., `epic-5:`), with `status` and optional `retrospective` — derived data like title, story_count, done_count are computed from `backlog`/`sprints` sections at display time
2436
+ - The `epics` section is reference data — regenerated from `epics.md` by the sprint-planning skill
2437
+ - The `backlog` section contains ONLY items not assigned to any sprint
2438
+ - The `sprints` section contains sprint definitions with their assigned items inline (no separate sprint files)
2439
+ - Item schema: `id`, `type` (story|bug), `epic` (number|null), `title`, `status`, `priority` (in backlog only), plus optional `severity` for bugs
2440
+ - Sprint schema: `id`, `name`, `status`, `capacity`, `start`, `end`, `items` array
2441
+ - This replaces the old 3-file model: `backlog.yaml` (removed), `sprints/sprint-N.yaml` (removed), `sprint-status.yaml` (repurposed with new schema)
2442
+
2443
+ ### Story 17.10: Rework generate-backlog Skill (Heavy Rework)
2444
+
2445
+ As a **Scrum Master**,
2446
+ I want the `generate-backlog` skill to populate the `backlog` section of the unified `sprint-status.yaml`,
2447
+ So that all unassigned stories and bugs are maintained in a single file rather than a separate `backlog.yaml`.
2448
+
2449
+ **Acceptance Criteria:**
2450
+
2451
+ **Given** the `generate-backlog` skill is invoked
2452
+ **When** it parses the epics document
2453
+ **Then** it writes all unassigned stories and bugs to the `backlog` section of `sprint-status.yaml` in priority order
2454
+ **And** it updates the `epics` section with current epic metadata (title, status, story counts)
2455
+ **And** it does NOT touch the `sprints` section — sprint-assigned items are preserved
2456
+
2457
+ **Given** items already exist in the `sprints` section of `sprint-status.yaml`
2458
+ **When** the backlog is regenerated
2459
+ **Then** items currently assigned to sprints are NOT duplicated in the `backlog` section
2460
+ **And** new stories from `epics.md` that don't exist anywhere in `sprint-status.yaml` are added to `backlog`
2461
+
2462
+ **Given** a story exists in `backlog` but has been removed from `epics.md`
2463
+ **When** the backlog is regenerated
2464
+ **Then** the orphaned item is flagged with a warning but NOT automatically removed (human review required)
2465
+
2466
+ **Given** bugs exist as standalone story files (FR64)
2467
+ **When** the backlog is regenerated
2468
+ **Then** bugs are included in the `backlog` section with `type: bug` and `epic: null`
2469
+ **And** bug-specific fields (`severity`, `version_found`, `bug_type`) are preserved
2470
+
2471
+ **Technical notes:**
2472
+ - Reworks the existing `generate-backlog` skill to write to `sprint-status.yaml` `backlog` section instead of standalone `backlog.yaml`
2473
+ - Must merge with existing `sprint-status.yaml` content (preserve `sprints` section)
2474
+ - Priority ordering: bugs with `severity: critical` float to top, then by explicit `priority` field, then by epic order
2475
+ - Items with status `done` are excluded (they live in `done/` archive)
2476
+ - The old `backlog.yaml` file is no longer written (see Story 17.23 for migration)
2477
+
2478
+ ### Story 17.11: Rework add-to-sprint Skill (Heavy Rework — Movement Semantics)
2479
+
2480
+ As a **Scrum Master**,
2481
+ I want the `add-to-sprint` skill to MOVE items from the `backlog` section to a sprint's `items` array within the same file,
2482
+ So that sprint assignment is a single-file atomic operation with movement semantics.
2483
+
2484
+ **Acceptance Criteria:**
2485
+
2486
+ **Given** the `backlog` section contains unassigned items
2487
+ **When** the Scrum Master invokes `add-to-sprint`
2488
+ **Then** it displays the target sprint (active or planning) and its current capacity usage (items.length / capacity)
2489
+ **And** shows the top N unassigned items from the `backlog` section in priority order
2490
+ **And** the Scrum Master selects which items to add
2491
+
2492
+ **Given** the Scrum Master selects items for the sprint
2493
+ **When** the items are assigned
2494
+ **Then** each selected item is REMOVED from the `backlog` array (FR134)
2495
+ **And** ADDED to the target sprint's `items` array in the `sprints` section
2496
+ **And** the item's `priority` field is dropped (priority only applies in backlog)
2497
+ **And** the item's other fields (`id`, `type`, `epic`, `title`, `status`) are preserved
2498
+
2499
+ **Given** assigning items would exceed sprint capacity
2500
+ **When** the assignment is attempted
2501
+ **Then** the skill warns that capacity would be exceeded
2502
+ **And** suggests removing items or increasing capacity before proceeding
2503
+
2504
+ **Given** the skill is invoked via menu or slash command
2505
+ **When** it executes
2506
+ **Then** it works identically in both invocation modes (NFR19)
2507
+
2508
+ **Technical notes:**
2509
+ - Reworks the existing `add-to-sprint` skill (Story 12.2)
2510
+ - Single file read-modify-write on `sprint-status.yaml`
2511
+ - Must validate the target sprint exists and is in `planning` or `active` status
2512
+ - Atomic operation: both the removal from backlog and addition to sprint happen in one file write
2513
+
2514
+ ### Story 17.12: Rework remove-from-sprint Skill (Heavy Rework — Movement Semantics)
2515
+
2516
+ As a **Scrum Master**,
2517
+ I want the `remove-from-sprint` skill to MOVE items from a sprint's `items` array back to the `backlog` section,
2518
+ So that sprint scope adjustments are clean, reversible, single-file operations.
2519
+
2520
+ **Acceptance Criteria:**
2521
+
2522
+ **Given** a sprint has assigned items
2523
+ **When** the Scrum Master invokes `remove-from-sprint`
2524
+ **Then** it displays the sprint's currently assigned items with their statuses
2525
+ **And** the Scrum Master selects which items to remove
2526
+
2527
+ **Given** items are removed from the sprint
2528
+ **When** the removal completes
2529
+ **Then** each selected item is REMOVED from the sprint's `items` array (FR134)
2530
+ **And** ADDED back to the `backlog` array with a `priority` field set to position 1 (top of backlog — Scrum Master can reprioritize later)
2531
+ **And** the item's `status` is NOT changed — it retains its current status (e.g., stays `ready-for-dev`)
2532
+
2533
+ **Given** a sprint's capacity was full (e.g., 6/6 items)
2534
+ **When** an item is removed
2535
+ **Then** the sprint's effective capacity usage decreases (e.g., 5/6)
2536
+
2537
+ **Technical notes:**
2538
+ - Reworks the existing `remove-from-sprint` skill
2539
+ - Single file read-modify-write on `sprint-status.yaml`
2540
+ - This is the inverse of Story 17.11
2541
+ - Removed items re-enter backlog at priority 1 by default; the Scrum Master should reprioritize after bulk removals
2542
+
2543
+ ### Story 17.13: Rework sprint-status-view Skill (Heavy Rework — Single Source Read)
2544
+
2545
+ As a **Project Manager**,
2546
+ I want the `sprint-status-view` skill to read all sprint data from the single `sprint-status.yaml` file,
2547
+ So that sprint status display is fast and consistent with no cross-file reconciliation needed.
2548
+
2549
+ **Acceptance Criteria:**
2550
+
2551
+ **Given** the `sprint-status-view` skill is invoked
2552
+ **When** it reads `sprint-status.yaml`
2553
+ **Then** it displays a formatted view from the three sections:
2554
+ ```
2555
+ === Epics ===
2556
+ Epic 5: Bundled BMAD Installation [in-progress] (2/6 done)
2557
+ Epic 17: Sprint Management Model Rework [planning] (0/15 done)
2558
+
2559
+ === Sprint 3 (active) — 4/6 items ===
2560
+ * 5-5-explicit-parameter-passing [story] — in-progress
2561
+ * 5-6-fix-space-in-path-bug [story] — review
2562
+ * BUG-path-spaces [bug, high] — ready-for-dev
2563
+ * 15-1-bump-bmad-method [story] — backlog
2564
+
2565
+ === Backlog — 12 items ===
2566
+ 1. 15-2-restructure-extension-module [story] — ready-for-dev
2567
+ 2. 15-3-convert-custom-agents [story] — backlog
2568
+ ...
2569
+ ```
2570
+
2571
+ **Given** no `sprint-status.yaml` file exists
2572
+ **When** the skill is invoked
2573
+ **Then** it reports: "No sprint-status.yaml found. Run sprint planning to initialize."
2574
+
2575
+ **Given** the file contains multiple sprints (one active, others closed or planning)
2576
+ **When** the status is displayed
2577
+ **Then** the active sprint is shown first, followed by planning sprints, then a summary of closed sprints
2578
+
2579
+ **Technical notes:**
2580
+ - Reworks the existing `sprint-status-view` skill
2581
+ - Single file read — no cross-file reconciliation needed (previously had to merge backlog.yaml + sprint files + sprint-status.yaml)
2582
+ - The display format should work well for both human reading and LLM parsing
2583
+ - Does NOT write to the file — read-only operation
2584
+
2585
+ ### Story 17.14: Rework cleanup-done Skill (Heavy Rework — Single Source)
2586
+
2587
+ As a **Scrum Master**,
2588
+ I want the `cleanup-done` skill to scan the unified `sprint-status.yaml` for done items, remove them from the file, and archive their story files,
2589
+ So that the active sprint view stays clean and done work is preserved in the archive.
2590
+
2591
+ **Acceptance Criteria:**
2592
+
2593
+ **Given** items with `status: done` exist in the `sprints` section of `sprint-status.yaml`
2594
+ **When** the `cleanup-done` skill is invoked
2595
+ **Then** each done item is REMOVED from its sprint's `items` array (FR136)
2596
+ **And** the corresponding story/bug file is moved to `{implementation_artifacts}/done/` (FR131)
2597
+ **And** if the `done/` subfolder doesn't exist, it is created
2598
+
2599
+ **Given** items with `status: done` exist in the `backlog` section (edge case — done but never sprint-assigned)
2600
+ **When** the `cleanup-done` skill is invoked
2601
+ **Then** those items are also REMOVED from the `backlog` array and their files archived
2602
+
2603
+ **Given** a story file exists at `{implementation_artifacts}/{story-id}.md`
2604
+ **When** the story reaches `done` status and cleanup runs
2605
+ **Then** the file is moved to `{implementation_artifacts}/done/{story-id}.md`
2606
+
2607
+ **Given** a bug file exists at `{implementation_artifacts}/BUG-{title}.md`
2608
+ **When** the bug reaches `done` status and cleanup runs
2609
+ **Then** the file is moved to `{implementation_artifacts}/done/BUG-{title}.md`
2610
+
2611
+ **Given** all items in a sprint reach `done` status and are cleaned up
2612
+ **When** the sprint has zero remaining items
2613
+ **Then** the sprint's `items` array is empty but the sprint definition is preserved (historical record)
2614
+ **And** the skill suggests closing the sprint (see Story 17.21)
2615
+
2616
+ **Technical notes:**
2617
+ - Reworks the existing `cleanup-done` skill
2618
+ - Single file read-modify-write on `sprint-status.yaml`
2619
+ - File move uses `fs.rename()` — not copy+delete
2620
+ - The `done/` subfolder already exists at `_bmad-output/implementation-artifacts/done/` — this story formalizes its use
2621
+ - Cleanup can be triggered explicitly or as part of sprint-status-view and sprint-planning workflows
2622
+
2623
+ ### Story 17.15: Rework bmad-sprint-planning Skill (Heavy Rework — Bootstrap Unified File)
2624
+
2625
+ As a **Scrum Master**,
2626
+ I want the `bmad-sprint-planning` skill to bootstrap or update the unified `sprint-status.yaml` from the epics document,
2627
+ So that sprint planning always starts from a complete, consistent single file.
2628
+
2629
+ **Acceptance Criteria:**
2630
+
2631
+ **Given** no `sprint-status.yaml` exists (first-time setup)
2632
+ **When** the Scrum Master invokes `bmad-sprint-planning`
2633
+ **Then** it creates `sprint-status.yaml` with:
2634
+ - `epics` section populated from `epics.md` (all epics with title, status, story counts)
2635
+ - `backlog` section populated with all non-done stories and bugs in priority order
2636
+ - `sprints` section initialized as an empty array `[]`
2637
+
2638
+ **Given** `sprint-status.yaml` already exists
2639
+ **When** the Scrum Master invokes `bmad-sprint-planning`
2640
+ **Then** the `epics` section is refreshed from `epics.md` (new epics added, counts updated)
2641
+ **And** new stories from `epics.md` that don't exist in `backlog` or any `sprints` section are added to `backlog`
2642
+ **And** existing items in `backlog` and `sprints` sections are NOT modified (preserves status, priority, sprint assignments)
2643
+ **And** done items are NOT reintroduced (they stay in the `done/` archive)
2644
+
2645
+ **Given** the sprint-planning workflow includes cleanup
2646
+ **When** it detects items with `status: done` still in the file
2647
+ **Then** it runs the cleanup-done logic (Story 17.14) as part of the planning workflow
2648
+
2649
+ **Technical notes:**
2650
+ - Reworks the existing `bmad-sprint-planning` skill
2651
+ - This is the primary bootstrap entry point for the unified file
2652
+ - Must handle the merge carefully: new items go to backlog, existing items stay where they are
2653
+ - The `epics` section is always fully regenerated (it's reference data, not user-managed)
2654
+ - Should be run at the start of each sprint planning session
2655
+
2656
+ ### Story 17.16: Rework add-sprint Skill (Moderate Rework — Section-Based)
2657
+
2658
+ As a **Scrum Master**,
2659
+ I want the `add-sprint` skill to create a new sprint entry in the `sprints` section of `sprint-status.yaml`,
2660
+ So that new sprints are defined within the unified file rather than as separate files.
2661
+
2662
+ **Acceptance Criteria:**
2663
+
2664
+ **Given** the Scrum Master invokes `add-sprint`
2665
+ **When** the sprint details are provided (name, capacity, optional ISO start/end dates)
2666
+ **Then** a new sprint entry is appended to the `sprints` array in `sprint-status.yaml`:
2667
+ ```yaml
2668
+ sprints:
2669
+ - id: sprint-4
2670
+ name: "Sprint 4"
2671
+ status: planning
2672
+ capacity: 6
2673
+ start: "2026-04-15"
2674
+ end: "2026-04-28"
2675
+ items: []
2676
+ ```
2677
+ **And** the sprint ID is auto-incremented from the highest existing sprint ID
2678
+
2679
+ **Given** a sprint with `status: planning` already exists
2680
+ **When** a new sprint is created
2681
+ **Then** the new sprint is also created with `status: planning` (multiple planning sprints are allowed)
2682
+ **And** only one sprint can be `active` at a time
2683
+
2684
+ **Given** `sprint-status.yaml` does not exist
2685
+ **When** `add-sprint` is invoked
2686
+ **Then** the skill reports: "No sprint-status.yaml found. Run sprint planning first to initialize the file."
2687
+
2688
+ **Technical notes:**
2689
+ - Reworks the existing `add-sprint` skill (Story 12.1)
2690
+ - Writes to the `sprints` section of `sprint-status.yaml` instead of creating a separate `sprints/sprint-N.yaml` file
2691
+ - Sprint ID format: `sprint-{number}` (kebab-case, auto-incremented)
2692
+ - Capacity is defined by number of items (stories + bugs) per FR66
2693
+
2694
+ ### Story 17.17: Rework modify-sprint Skill (Moderate Rework — Section-Based)
2695
+
2696
+ As a **Scrum Master**,
2697
+ I want the `modify-sprint` skill to update sprint metadata within the `sprints` section of `sprint-status.yaml`,
2698
+ So that sprint adjustments (capacity, dates, name, status) are made in the unified file.
2699
+
2700
+ **Acceptance Criteria:**
2701
+
2702
+ **Given** the Scrum Master invokes `modify-sprint` with a target sprint ID
2703
+ **When** the sprint exists in the `sprints` section
2704
+ **Then** the skill allows modification of: `name`, `capacity`, `start`, `end`, `status`
2705
+ **And** the updated sprint is written back to `sprint-status.yaml`
2706
+
2707
+ **Given** the Scrum Master changes a sprint's `status` to `active`
2708
+ **When** another sprint is already `active`
2709
+ **Then** the skill warns that only one sprint can be active
2710
+ **And** requires the existing active sprint to be closed first (or offers to close it)
2711
+
2712
+ **Given** the Scrum Master reduces capacity below the current item count
2713
+ **When** the modification is attempted
2714
+ **Then** the skill warns: "Sprint has N items but new capacity is M (M < N). Remove items first."
2715
+ **And** does NOT apply the capacity change until items are removed
2716
+
2717
+ **Technical notes:**
2718
+ - Reworks the existing `modify-sprint` skill (Story 12.3)
2719
+ - Modifies the sprint entry in-place within the `sprints` array of `sprint-status.yaml`
2720
+ - Status transitions: `planning` -> `active` -> `closed`. No backward transitions except via the Scrum Master explicitly overriding.
2721
+
2722
+ ### Story 17.18: Rework bmad-dev-story Skill (Moderate Rework — Cross-Section Status Update)
2723
+
2724
+ As a **Developer**,
2725
+ I want the `bmad-dev-story` skill to update story status in-place within `sprint-status.yaml` regardless of which section the story resides in,
2726
+ So that development progress is reflected in the unified file without manual status updates.
2727
+
2728
+ **Acceptance Criteria:**
2729
+
2730
+ **Given** a developer starts working on a story via `bmad-dev-story`
2731
+ **When** the story transitions from `ready-for-dev` to `in-progress`
2732
+ **Then** the skill finds the item in `sprint-status.yaml` (searching both `backlog` and all `sprints[].items`)
2733
+ **And** updates the item's `status` field in-place (FR135)
2734
+
2735
+ **Given** a developer completes a story
2736
+ **When** the story transitions to `review` or `done`
2737
+ **Then** the status is updated in-place in whichever section the item currently resides
2738
+ **And** if the status becomes `done`, the cleanup-done logic can be triggered (or deferred to explicit cleanup)
2739
+
2740
+ **Given** the story ID is not found in `sprint-status.yaml`
2741
+ **When** the skill attempts to update status
2742
+ **Then** it reports: "Story {id} not found in sprint-status.yaml. It may have been archived to done/ or not yet added to the backlog."
2743
+
2744
+ **Technical notes:**
2745
+ - Reworks the existing `bmad-dev-story` skill
2746
+ - Must search across both `backlog` and all `sprints[].items` sections to find the item by `id`
2747
+ - Write is a targeted update — only the `status` field changes, all other fields preserved
2748
+ - Cross-section search is needed because a developer may work on a story whether or not it's sprint-assigned
2749
+
2750
+ ### Story 17.19: Rework story-status-lookup Skill (Light Rework — Cross-Section Search)
2751
+
2752
+ As a **Developer**,
2753
+ I want the `story-status-lookup` skill to search the unified `sprint-status.yaml` for any story's current status,
2754
+ So that code can be classified as delivered or work-in-progress from a single data source.
2755
+
2756
+ **Acceptance Criteria:**
2757
+
2758
+ **Given** the `story-status-lookup` skill is invoked with a story ID
2759
+ **When** the story exists in the `backlog` section of `sprint-status.yaml`
2760
+ **Then** it returns the item's status and notes it is "in backlog (unassigned)"
2761
+
2762
+ **Given** the story exists in a sprint's `items` array
2763
+ **When** the lookup completes
2764
+ **Then** it returns the item's status and notes which sprint it is assigned to (e.g., "in sprint-3")
2765
+
2766
+ **Given** the story is not found in `sprint-status.yaml`
2767
+ **When** the lookup checks the `done/` archive folder
2768
+ **Then** it reports: "Story {id} is archived (done)" if the file exists in `done/`
2769
+ **Or** reports: "Story {id} not found in sprint-status.yaml or done/ archive"
2770
+
2771
+ **Technical notes:**
2772
+ - Reworks the existing `story-status-lookup` skill
2773
+ - Single file search across `backlog` + all `sprints[].items` sections
2774
+ - Fallback: check `done/` folder for archived stories
2775
+ - The `always_load: true` flag in MANIFEST.yaml remains — this skill is loaded every session
2776
+ - The Jira extension point reserved in this skill is activated by Story 17.22
2777
+
2778
+ ### Story 17.20: Rework bmad-sprint-status Skill (Light Rework — Structured Sections)
2779
+
2780
+ As a **Project Manager**,
2781
+ I want the `bmad-sprint-status` skill to produce a concise risk-focused summary from the structured sections of `sprint-status.yaml`,
2782
+ So that sprint health and risks are surfaced quickly from the single source of truth.
2783
+
2784
+ **Acceptance Criteria:**
2785
+
2786
+ **Given** the `bmad-sprint-status` skill is invoked
2787
+ **When** it reads the `sprints` section of `sprint-status.yaml`
2788
+ **Then** it identifies the active sprint and calculates:
2789
+ - Items by status: how many `in-progress`, `review`, `ready-for-dev`, `backlog`
2790
+ - Capacity usage: items.length / capacity
2791
+ - Blocked items: items with `status: blocked` (if any)
2792
+
2793
+ **Given** the active sprint has items with concerning statuses
2794
+ **When** the summary is generated
2795
+ **Then** it flags risks:
2796
+ - "3 of 6 items still in `backlog` status — not yet started"
2797
+ - "Sprint at 100% capacity with 2 items in `ready-for-dev`"
2798
+ - "No items in `review` or `done` — sprint may be at risk"
2799
+
2800
+ **Given** the `epics` section contains epic-level data
2801
+ **When** the summary is generated
2802
+ **Then** it includes epic progress: "Epic 5: 2/6 done, Epic 17: 0/15 done"
2803
+
2804
+ **Technical notes:**
2805
+ - Reworks the existing `bmad-sprint-status` skill
2806
+ - Reads from the structured sections of `sprint-status.yaml` — no cross-file joins needed
2807
+ - Output is optimized for LLM context (concise, structured) and human readability
2808
+ - This is the quick-summary variant; `sprint-status-view` (Story 17.13) is the detailed view
2809
+
2810
+ ### Story 17.21: New close-sprint Skill
2811
+
2812
+ As a **Scrum Master**,
2813
+ I want a `close-sprint` skill that transitions a sprint from `active` to `closed`, archives all done items, and returns incomplete items to the backlog,
2814
+ So that sprint closure is a clean, well-defined workflow.
2815
+
2816
+ **Acceptance Criteria:**
2817
+
2818
+ **Given** the Scrum Master invokes `close-sprint`
2819
+ **When** an active sprint exists
2820
+ **Then** the skill displays the sprint summary: total items, done count, incomplete count
2821
+
2822
+ **Given** the sprint has items with `status: done`
2823
+ **When** the sprint is closed
2824
+ **Then** all done items are REMOVED from the sprint's `items` array
2825
+ **And** their story/bug files are moved to `{implementation_artifacts}/done/` (same as cleanup-done)
2826
+
2827
+ **Given** the sprint has incomplete items (status != `done`)
2828
+ **When** the sprint is closed
2829
+ **Then** the skill presents three options for handling incomplete items (FR137):
2830
+ (a) **Move all to the next sprint** — all incomplete items are MOVED from the current sprint's `items` array to the next sprint's `items` array (the next sprint must exist in `planning` status; if no next sprint exists, the skill prompts to create one or falls back to option b)
2831
+ (b) **Return all to backlog** — all incomplete items are MOVED from the sprint's `items` array back to the `backlog` section (FR134 — movement semantics), each receiving a `priority` value placing it at the top of the backlog (to be reprioritized)
2832
+ (c) **Decide per item** — the skill iterates through each incomplete item and asks whether to move it to the next sprint or return it to the backlog
2833
+ **And** regardless of option chosen, each item's status is preserved (e.g., `in-progress` items stay `in-progress`)
2834
+
2835
+ **Given** all items have been archived or returned to backlog
2836
+ **When** the sprint is fully processed
2837
+ **Then** the sprint's `status` is set to `closed`
2838
+ **And** the sprint's `items` array is empty `[]`
2839
+ **And** the sprint definition is preserved in the `sprints` section (historical record)
2840
+ **And** a summary is displayed: "Sprint N closed. X items archived, Y items returned to backlog."
2841
+
2842
+ **Given** no active sprint exists
2843
+ **When** `close-sprint` is invoked
2844
+ **Then** it reports: "No active sprint found. Nothing to close."
2845
+
2846
+ **Technical notes:**
2847
+ - NEW skill: `lib/bmad-extension/skills/close-sprint/`
2848
+ - Combines done-item archival (Story 17.14 logic) with incomplete-item return to backlog (Story 17.12 inverse)
2849
+ - Single file read-modify-write on `sprint-status.yaml` plus file moves for archived stories
2850
+ - After close-sprint, the Scrum Master typically runs `add-sprint` to create the next sprint
2851
+
2852
+ ### Story 17.22: Jira Adapter Pattern (tracking_system Switch)
2853
+
2854
+ As a **Project Manager**,
2855
+ I want sprint management skills to read/write from Jira when `tracking_system` is configured as `jira`,
2856
+ So that teams using Jira for project tracking can use the same BMAD sprint skills with their Jira instance.
2857
+
2858
+ **Acceptance Criteria:**
2859
+
2860
+ **Given** `project-context.md` (or root directives) contains `tracking_system: file-system` (default)
2861
+ **When** any sprint management skill is invoked
2862
+ **Then** it reads/writes `sprint-status.yaml` on the local file system (current behavior)
2863
+
2864
+ **Given** `project-context.md` contains `tracking_system: jira` with Jira connection config
2865
+ **When** any sprint management skill is invoked
2866
+ **Then** it reads/writes from the Jira API using the same data model (epics, backlog items, sprint items)
2867
+ **And** the Jira adapter maps: Jira Sprint -> `sprints[]` entries, Jira Backlog -> `backlog[]` entries, Jira Epic -> `epics[]` entries
2868
+ **And** Jira status fields are mapped to the same status vocabulary: `backlog`, `ready-for-dev`, `in-progress`, `review`, `done`
2869
+
2870
+ **Given** the Jira adapter is active
2871
+ **When** an item is moved from backlog to sprint (Story 17.11 logic)
2872
+ **Then** the adapter calls the Jira REST API to move the issue to the target sprint
2873
+ **And** the local `sprint-status.yaml` is NOT written (Jira is the source of truth)
2874
+
2875
+ **Given** the Jira connection fails (network error, auth failure, rate limit)
2876
+ **When** the skill detects the failure
2877
+ **Then** it reports the error clearly and suggests checking credentials/connectivity
2878
+ **And** does NOT fall back to file-system silently (explicit fail, no silent data divergence)
2879
+
2880
+ **Given** the adapter pattern is implemented
2881
+ **When** a new backend is added in the future (e.g., Linear, Azure DevOps)
2882
+ **Then** only a new adapter module is needed — no changes to skill logic
2883
+
2884
+ **Technical notes:**
2885
+ - Blocked on Epic 14 Story 14.3 (External Tooling Abstraction Layer architecture) — the adapter interface contract must be designed first
2886
+ - The adapter pattern uses a `resolveBackend(config)` function that returns either a `FilesystemBackend` or `JiraBackend` object implementing the same interface
2887
+ - Interface methods: `readSprintStatus()`, `writeSprintStatus(data)`, `moveItem(itemId, fromSection, toSection)`, `updateItemStatus(itemId, newStatus)`, `archiveItem(itemId)`
2888
+ - Credentials: environment variables (`JIRA_BASE_URL`, `JIRA_API_TOKEN`, `JIRA_USER_EMAIL`) as proposed by Epic 14 research
2889
+ - All 12 sprint skills call through the backend interface — they never read/write files directly
2890
+ - FR138 scope: same data model, different storage backend. Skills do NOT expose Jira-specific UI or fields.
2891
+
2892
+ ### Story 17.23: Migration and Deprecation of Old Files
2893
+
2894
+ As a **DevOps Engineer**,
2895
+ I want the old three-file sprint model (`backlog.yaml`, `sprints/sprint-N.yaml`, `sprint-status.yaml` with old schema) automatically migrated to the unified `sprint-status.yaml`,
2896
+ So that existing projects transition cleanly without data loss.
2897
+
2898
+ **Acceptance Criteria:**
2899
+
2900
+ **Given** a project has the old `backlog.yaml` file
2901
+ **When** `bmad-sprint-planning` is run (Story 17.15) and `sprint-status.yaml` does not yet exist (or has the old schema)
2902
+ **Then** the migration reads `backlog.yaml` and imports all items into the `backlog` section of the new unified `sprint-status.yaml`
2903
+ **And** priority ordering from the old file is preserved
2904
+
2905
+ **Given** a project has old `sprints/sprint-N.yaml` files
2906
+ **When** the migration runs
2907
+ **Then** each sprint file is imported as an entry in the `sprints` section of `sprint-status.yaml`
2908
+ **And** items referenced in old sprint files are matched to backlog items and moved to the sprint's `items` array
2909
+
2910
+ **Given** the old `sprint-status.yaml` exists with the old schema (flat `development_status` list)
2911
+ **When** the migration detects the old format
2912
+ **Then** it extracts item statuses from the old file and applies them to the corresponding items in the new schema
2913
+ **And** the old file is backed up to `sprint-status.yaml.bak` before overwriting with the new schema
2914
+
2915
+ **Given** the migration completes successfully
2916
+ **When** the new `sprint-status.yaml` is verified
2917
+ **Then** the old files are removed:
2918
+ - `backlog.yaml` is deleted
2919
+ - `sprints/` directory is deleted (if empty after migration)
2920
+ - `sprint-status.yaml.bak` is preserved for 1 sprint cycle (manual deletion)
2921
+
2922
+ **Given** the migration encounters conflicts (e.g., item in old backlog with different status than old sprint-status)
2923
+ **When** the conflict is detected
2924
+ **Then** the migration logs the conflict and uses the most recent status (from sprint-status.yaml or sprint file, whichever was modified last)
2925
+ **And** a migration report is generated listing all conflicts and resolutions
2926
+
2927
+ **Technical notes:**
2928
+ - Migration runs as part of `bmad-sprint-planning` (Story 17.15) — not a separate skill
2929
+ - Old schema detection: if `sprint-status.yaml` has a `development_status` top-level key (old) vs `epics`/`backlog`/`sprints` keys (new)
2930
+ - The migration is idempotent — running it twice produces the same result
2931
+ - After one successful migration, subsequent `bmad-sprint-planning` runs skip migration logic (new schema detected)
2932
+
2933
+ ### Story 17.24: Rework `prioritize-backlog` Skill for Unified File
2934
+
2935
+ As a **Scrum Master**,
2936
+ I want the `prioritize-backlog` skill to read and write the `backlog` section of the unified `sprint-status.yaml`,
2937
+ So that backlog reprioritization works against the single source of truth instead of the deprecated standalone `backlog.yaml` file.
2938
+
2939
+ **Acceptance Criteria:**
2940
+
2941
+ **Given** the `prioritize-backlog` skill is invoked
2942
+ **When** the unified `sprint-status.yaml` exists
2943
+ **Then** it reads items from the `backlog` section only (items already assigned to a sprint keep their priority and are NOT reprioritized)
2944
+
2945
+ **Given** the Scrum Master reorders or adjusts priority values
2946
+ **When** the reprioritization is applied
2947
+ **Then** the skill writes updated `priority` values back to the `backlog` section of `sprint-status.yaml`
2948
+ **And** all other sections (`epics`, `sprints`) are preserved unchanged
2949
+
2950
+ **Given** items exist in both `backlog` and `sprints` sections
2951
+ **When** the skill displays items for prioritization
2952
+ **Then** only `backlog` items are shown — sprint-assigned items are excluded from the prioritization view
2953
+
2954
+ **Given** the old `backlog.yaml` file exists but `sprint-status.yaml` also exists
2955
+ **When** the skill is invoked
2956
+ **Then** it operates on `sprint-status.yaml` only (the old file is ignored; see Story 17.23 for migration)
2957
+
2958
+ **Technical notes:**
2959
+ - Reworks the existing `prioritize-backlog` skill to read/write `sprint-status.yaml` `backlog` section instead of standalone `backlog.yaml`
2960
+ - Rework level: Light — the core prioritization logic (multi-criteria sorting, severity, business value, dependencies, type, age) remains unchanged; only the file I/O layer changes
2961
+ - Single file read-modify-write on `sprint-status.yaml`
2962
+ - Depends on Story 17.9 (unified schema definition)
2963
+ - FRs: FR133 (unified file), FR134 (movement semantics — prioritization respects section boundaries)
2964
+
2965
+ ---
2966
+
2967
+ ## Epic 18: Roo Code IDE Support (Phase 2)
2968
+
2969
+ **Goal:** Full Roo Code integration — ma-agents skill installation, BMAD agent personas as custom modes, planning instructions as rules, and BMAD workflows as slash commands.
2970
+ **FRs covered:** FR34 (extended to include Roo Code), FR36, FR38
2971
+ **Proposed FRs:** FR158 (Roo Code custom modes from BMAD agents), FR159 (Roo Code rules from BMAD instructions), FR160 (Roo Code slash commands from BMAD workflows), FR161 (Cline-to-Roo migration) — renumbered from FR142-145; FR141-FR157 are now reserved for Epic 19 (Knowledge Graph)
2972
+ **Research:** `_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md`
2973
+ **Dependency:** None (can proceed independently; upstream `bmad-method` already has `roo` in `platform-codes.yaml`)
2974
+
2975
+ ### Story 18.1: Add Roo Code Agent Entry to ma-agents
2976
+
2977
+ As a **Chief Architect**,
2978
+ I want Roo Code registered as a supported IDE in `lib/agents.js`,
2979
+ So that ma-agents CLI can install skills into Roo Code's `.roo/skills/` directory.
2980
+
2981
+ **Acceptance Criteria:**
2982
+
2983
+ **Given** the `lib/agents.js` file
2984
+ **When** a developer adds Roo Code support
2985
+ **Then** a new entry is added with:
2986
+ ```javascript
2987
+ {
2988
+ id: 'roo-code',
2989
+ name: 'Roo Code',
2990
+ version: '1.0.0',
2991
+ category: 'ide',
2992
+ description: 'Roo Code AI Assistant (Enhanced Cline fork)',
2993
+ skillsDir: '.roo/skills',
2994
+ getProjectPath: () => path.join(process.cwd(), '.roo', 'skills'),
2995
+ getGlobalPath: () => { /* VS Code globalStorage: Code/User/globalStorage/rooveterinaryinc.roo-cline/skills */ },
2996
+ fileExtension: '.md',
2997
+ template: 'generic',
2998
+ instructionFiles: ['.roo/rules/00-ma-agents.md'],
2999
+ injectionStrategy: { position: 'top', skipPatterns: ['---'] }
3000
+ }
3001
+ ```
3002
+
3003
+ **Given** `ma-agents install --agent roo-code` is run
3004
+ **When** a skill is selected
3005
+ **Then** the skill is installed to `.roo/skills/{skill-id}/SKILL.md`
3006
+ **And** a `MANIFEST.yaml` is generated in `.roo/skills/`
3007
+
3008
+ **Given** `ma-agents list --agent roo-code` is run
3009
+ **When** the agent is targeted
3010
+ **Then** skills and their status are displayed correctly
3011
+
3012
+ **Technical notes:**
3013
+ - The `instructionFiles` points to `.roo/rules/00-ma-agents.md` (not a top-level instruction file) because Roo Code loads rules from the `.roo/rules/` directory, not a single instruction file
3014
+ - The `00-` prefix ensures the ma-agents planning instruction loads first (alphabetical order)
3015
+ - Unlike Cline, Roo Code does NOT use `.clinerules` as primary — it uses `.roo/rules/`
3016
+ - Global path should use `RooCode` (matching VS Code extension storage conventions)
3017
+
3018
+ ### Story 18.2: Create BMAD IDE Config and Manifest Entry
3019
+
3020
+ As a **Chief Architect**,
3021
+ I want Roo Code recognized in the BMAD configuration system,
3022
+ So that the BMAD installer includes Roo Code in IDE setup and customization flows.
3023
+
3024
+ **Acceptance Criteria:**
3025
+
3026
+ **Given** the BMAD configuration directory `_bmad/_config/ides/`
3027
+ **When** Roo Code is added
3028
+ **Then** a file `roo-code.yaml` is created:
3029
+ ```yaml
3030
+ ide: roo-code
3031
+ configured_date: 2026-03-31
3032
+ last_updated: 2026-03-31
3033
+ configuration:
3034
+ _noConfigNeeded: true
3035
+ ```
3036
+
3037
+ **Given** the BMAD manifest at `_bmad/_config/manifest.yaml`
3038
+ **When** Roo Code is added
3039
+ **Then** `roo-code` appears in the `ides` list:
3040
+ ```yaml
3041
+ ides:
3042
+ - claude-code
3043
+ - gemini
3044
+ - cline
3045
+ - cursor
3046
+ - antigravity
3047
+ - roo-code
3048
+ ```
3049
+
3050
+ **Given** the agent customization directory `_bmad/_config/agents/`
3051
+ **When** Roo Code is added
3052
+ **Then** a file `roo-code.customize.yaml` is created with the standard customization template (persona, principles, menu overrides)
3053
+
3054
+ **Technical notes:**
3055
+ - Follow the exact same pattern as existing IDE configs
3056
+ - The customize.yaml should have the same structure as `cline.customize.yaml`
3057
+
3058
+ ### Story 18.3: Update Installer to Handle Roo Code Rules Injection
3059
+
3060
+ As a **Chief Architect**,
3061
+ I want the ma-agents installer to inject planning instructions into Roo Code's `.roo/rules/` directory,
3062
+ So that the MANIFEST-based skill loading instruction is automatically applied when Roo Code starts.
3063
+
3064
+ **Acceptance Criteria:**
3065
+
3066
+ **Given** `ma-agents install --agent roo-code` runs
3067
+ **When** skills are installed
3068
+ **Then** a file `.roo/rules/00-ma-agents.md` is created with:
3069
+ ```markdown
3070
+ <!-- MA-AGENTS-START -->
3071
+ # AI Agent Skills - Planning Instruction
3072
+
3073
+ You have access to a library of skills in your skills directory. Before starting any task:
3074
+
3075
+ 1. Read the skill manifest at .roo/skills/MANIFEST.yaml
3076
+ 2. Based on the task description, select which skills are relevant
3077
+ 3. Read only the selected skill files
3078
+ 4. Then proceed with the task
3079
+
3080
+ Always load skills marked with always_load: true.
3081
+ Do not load skills that are not relevant to the current task.
3082
+ <!-- MA-AGENTS-END -->
3083
+ ```
3084
+
3085
+ **Given** the file `.roo/rules/00-ma-agents.md` already exists with MA-AGENTS markers
3086
+ **When** the installer runs again
3087
+ **Then** the content between markers is updated in place (idempotent)
3088
+
3089
+ **Given** `ma-agents uninstall --agent roo-code` runs
3090
+ **When** skills are removed
3091
+ **Then** the `00-ma-agents.md` file is removed from `.roo/rules/`
3092
+
3093
+ **Technical notes:**
3094
+ - The `updateAgentInstructions()` function in `installer.js` already handles marker-based injection — this story extends it to support directory-based instruction files (Roo Code puts rules in a directory, not a single file)
3095
+ - The `00-` prefix ensures this loads before any user rules (alphabetical order)
3096
+ - Must handle the case where `.roo/rules/` directory doesn't exist yet (create it)
3097
+
3098
+ ### Story 18.4: Generate .roomodes with BMAD Agent Personas
3099
+
3100
+ As a **Chief Architect**,
3101
+ I want the BMAD installer to generate a `.roomodes` file with BMAD agent personas as Roo Code custom modes,
3102
+ So that users can switch between BMAD roles (PM, Analyst, Architect, Dev, QA, SM) directly from the Roo Code mode selector.
3103
+
3104
+ **Acceptance Criteria:**
3105
+
3106
+ **Given** the BMAD installer runs `bmad install --ide roo`
3107
+ **When** agent artifacts are processed
3108
+ **Then** a `.roomodes` file is generated in YAML format with BMAD agents as custom modes:
3109
+ ```yaml
3110
+ customModes:
3111
+ - slug: bmad-analyst
3112
+ name: "Analyst (Mary)"
3113
+ description: "Strategic business analysis, market research, requirements elicitation"
3114
+ roleDefinition: |
3115
+ You are Mary, a Senior Business Analyst with deep expertise in market research,
3116
+ competitive analysis, and requirements elicitation...
3117
+ whenToUse: |
3118
+ Use this mode when conducting market research, creating product briefs,
3119
+ competitive analysis, or domain research.
3120
+ customInstructions: |
3121
+ Load and follow the BMAD agent activation protocol from
3122
+ {project-root}/_bmad/bmm/agents/analyst.md
3123
+ groups:
3124
+ - read
3125
+ - mcp
3126
+ - slug: bmad-pm
3127
+ name: "PM (Patricia)"
3128
+ ...
3129
+ ```
3130
+
3131
+ **Given** BMAD agent personas include tool restrictions
3132
+ **When** the mode is generated
3133
+ **Then** each mode's `groups` field reflects appropriate tool permissions:
3134
+ - Analyst/PM/SM: `[read, mcp]` (no edit, no command)
3135
+ - Architect: `[read, edit, mcp]` (can edit architecture docs)
3136
+ - Dev: `[read, edit, command, mcp]` (full access)
3137
+ - QA: `[read, edit, command, mcp]` (full access for test writing)
3138
+
3139
+ **Given** a `.roomodes` file already exists with user-defined modes
3140
+ **When** the installer runs
3141
+ **Then** BMAD modes (slug starting with `bmad-`) are replaced/updated
3142
+ **And** user-defined modes are preserved untouched
3143
+
3144
+ **Technical notes:**
3145
+ - This requires a new function in the Roo Code IDE handler (or config-driven installer extension)
3146
+ - BMAD agent slugs use `bmad-` prefix for safe identification and cleanup
3147
+ - The `roleDefinition` should be extracted from the agent's `<persona>` section
3148
+ - The `customInstructions` should reference the full agent file path for runtime loading
3149
+ - Read agent data from `_bmad/bmm/agents/*.md` at install time
3150
+ - `.roomodes` supports both YAML and JSON — prefer YAML for readability
3151
+
3152
+ ### Story 18.5: Deploy BMAD Workflows as Roo Code Slash Commands
3153
+
3154
+ As a **Chief Architect**,
3155
+ I want BMAD workflows deployed as Roo Code slash commands in `.roo/commands/`,
3156
+ So that users can trigger BMAD workflows (create-prd, sprint-planning, code-review, etc.) directly from the chat input.
3157
+
3158
+ **Acceptance Criteria:**
3159
+
3160
+ **Given** the BMAD installer runs for Roo Code
3161
+ **When** workflow artifacts are processed
3162
+ **Then** markdown files are created in `.roo/commands/` for each BMAD workflow:
3163
+ ```markdown
3164
+ ---
3165
+ description: Create a PRD from scratch through guided collaborative workflow
3166
+ mode: bmad-pm
3167
+ ---
3168
+ You must fully embody the PM agent persona and follow all activation instructions.
3169
+
3170
+ <agent-activation CRITICAL="TRUE">
3171
+ 1. LOAD the FULL agent file from {project-root}/_bmad/bmm/agents/pm.md
3172
+ 2. READ its entire contents
3173
+ 3. FOLLOW every step in the <activation> section precisely
3174
+ 4. Execute the Create PRD menu item
3175
+ </agent-activation>
3176
+ ```
3177
+
3178
+ **Given** a workflow has a natural target mode (e.g., create-prd → PM, create-architecture → Architect)
3179
+ **When** the slash command is generated
3180
+ **Then** the frontmatter `mode` field maps to the corresponding `bmad-*` custom mode (from Story 18.4)
3181
+
3182
+ **Given** slash commands are generated
3183
+ **When** they are listed
3184
+ **Then** all BMAD workflows appear as `/bmad-*` commands in Roo Code's command palette:
3185
+ - `/bmad-create-prd`
3186
+ - `/bmad-create-architecture`
3187
+ - `/bmad-sprint-planning`
3188
+ - `/bmad-code-review`
3189
+ - `/bmad-create-story`
3190
+ - `/bmad-dev-story`
3191
+ - etc.
3192
+
3193
+ **Given** BMAD agent launchers exist
3194
+ **When** slash commands are generated
3195
+ **Then** each BMAD agent also gets a launcher slash command:
3196
+ - `/bmad-analyst` → activates Analyst agent
3197
+ - `/bmad-pm` → activates PM agent
3198
+ - etc.
3199
+
3200
+ **Technical notes:**
3201
+ - Slash command filenames become the command name (auto-slugified)
3202
+ - Use `bmad-` prefix for all commands for clean namespacing
3203
+ - The `mode` field triggers automatic mode switching when the command is run
3204
+ - This leverages the same agent artifact data used by other IDEs (`.claude/commands/`, `.cursor/commands/`, etc.)
3205
+ - The config-driven installer's `cleanup()` already handles `legacy_targets: [.roo/commands]` for removing old artifacts
3206
+
3207
+ ### Story 18.6: Mode-Specific Rules for BMAD Agents
3208
+
3209
+ As a **Chief Architect**,
3210
+ I want mode-specific BMAD rules deployed to `.roo/rules-{bmad-modeSlug}/` directories,
3211
+ So that each BMAD agent mode receives its specific planning instructions and behavioral guidelines.
3212
+
3213
+ **Acceptance Criteria:**
3214
+
3215
+ **Given** the BMAD installer generates custom modes (Story 18.4)
3216
+ **When** mode-specific rules are deployed
3217
+ **Then** directories are created for each BMAD mode:
3218
+ ```
3219
+ .roo/
3220
+ ├── rules/
3221
+ │ └── 00-ma-agents.md (from Story 18.3)
3222
+ ├── rules-bmad-analyst/
3223
+ │ └── 01-analyst-instructions.md
3224
+ ├── rules-bmad-pm/
3225
+ │ └── 01-pm-instructions.md
3226
+ ├── rules-bmad-architect/
3227
+ │ └── 01-architect-instructions.md
3228
+ ├── rules-bmad-dev/
3229
+ │ └── 01-dev-instructions.md
3230
+ ├── rules-bmad-qa/
3231
+ │ └── 01-qa-instructions.md
3232
+ └── rules-bmad-sm/
3233
+ └── 01-sm-instructions.md
3234
+ ```
3235
+
3236
+ **Given** a BMAD mode is activated in Roo Code
3237
+ **When** the mode loads
3238
+ **Then** both the general rules (`.roo/rules/`) AND the mode-specific rules (`.roo/rules-bmad-{slug}/`) are loaded into the system prompt
3239
+
3240
+ **Given** mode-specific rules already exist
3241
+ **When** the installer re-runs
3242
+ **Then** BMAD-generated rule files are updated in place
3243
+ **And** user-added rule files in the same directory are preserved
3244
+
3245
+ **Technical notes:**
3246
+ - Mode-specific rules complement the `customInstructions` in `.roomodes` — they provide additional context without bloating the mode definition
3247
+ - Each rule file should contain the BMAD planning instruction specific to that agent's role
3248
+ - Use `01-` prefix for BMAD rules to allow users to add `00-` or `02-` for their own rules
3249
+ - Files should be prefixed with BMAD markers for clean identification and update
3250
+
3251
+ ### Story 18.7: Cline-to-Roo Code Migration Path
3252
+
3253
+ As a **Developer**,
3254
+ I want an automated migration from Cline to Roo Code configuration,
3255
+ So that my existing BMAD/Cline setup transfers seamlessly when I switch to Roo Code.
3256
+
3257
+ **Acceptance Criteria:**
3258
+
3259
+ **Given** a project has Cline configuration (`.cline/skills/`, `.clinerules/`)
3260
+ **When** the user runs `ma-agents migrate cline-to-roo`
3261
+ **Then** skills from `.cline/skills/` are copied to `.roo/skills/`
3262
+ **And** `.clinerules` content is converted to `.roo/rules/` files
3263
+ **And** MANIFEST.yaml is regenerated for `.roo/skills/`
3264
+ **And** a summary of migrated items is displayed
3265
+
3266
+ **Given** a project has both Cline and Roo Code configurations
3267
+ **When** migration is attempted
3268
+ **Then** the CLI warns about existing Roo Code config
3269
+ **And** prompts the user to confirm overwrite or skip
3270
+
3271
+ **Given** the migration completes
3272
+ **When** the user opens Roo Code
3273
+ **Then** all previously-installed BMAD skills are available
3274
+ **And** planning instructions are loaded from `.roo/rules/`
3275
+
3276
+ **Technical notes:**
3277
+ - Roo Code natively supports `.clinerules` fallback, but migrating explicitly to `.roo/` is cleaner
3278
+ - Migration should update the ma-agents manifest (`.ma-agents.json`) to replace `cline` with `roo-code` in the agents list
3279
+ - The `bmad-method` installer's cleanup for Cline already removes `.clinerules/workflows` — migration should run before cleanup
3280
+
3281
+ ### Story 18.8: End-to-End Validation and Test Coverage
3282
+
3283
+ As a **QA Engineer**,
3284
+ I want comprehensive test coverage for the Roo Code integration,
3285
+ So that all Roo Code integration points are validated and regression-protected.
3286
+
3287
+ **Acceptance Criteria:**
3288
+
3289
+ **Given** the Roo Code agent is registered in `agents.js`
3290
+ **When** unit tests run
3291
+ **Then** tests verify:
3292
+ - `getAgent('roo-code')` returns the correct agent object
3293
+ - `getProjectPath()` returns `.roo/skills` path
3294
+ - `getGlobalPath()` returns OS-specific paths
3295
+ - `fileExtension` is `.md`
3296
+ - `template` is `generic`
3297
+ - `instructionFiles` contains `.roo/rules/00-ma-agents.md`
3298
+
3299
+ **Given** the installer targets Roo Code
3300
+ **When** integration tests run
3301
+ **Then** tests verify:
3302
+ - Skills are installed to `.roo/skills/{id}/SKILL.md`
3303
+ - `MANIFEST.yaml` is generated in `.roo/skills/`
3304
+ - Planning instructions are written to `.roo/rules/00-ma-agents.md`
3305
+ - Idempotent re-runs update markers without duplicating content
3306
+ - Uninstall removes skill directories and the ma-agents rule file
3307
+
3308
+ **Given** the `.roomodes` generation runs
3309
+ **When** integration tests execute
3310
+ **Then** tests verify:
3311
+ - `.roomodes` is valid YAML
3312
+ - Each BMAD mode has required fields: `slug`, `name`, `roleDefinition`
3313
+ - BMAD mode slugs start with `bmad-`
3314
+ - User modes are preserved during regeneration
3315
+ - Tool group permissions match agent role expectations
3316
+
3317
+ **Given** slash commands are generated
3318
+ **When** integration tests execute
3319
+ **Then** tests verify:
3320
+ - Files exist in `.roo/commands/` with correct naming
3321
+ - Each file has valid YAML frontmatter
3322
+ - The `mode` field references a valid BMAD mode slug
3323
+ - Agent activation instructions reference valid agent file paths
3324
+
3325
+ **Technical notes:**
3326
+ - Follow the existing test patterns in the project
3327
+ - Tests should cover both install and uninstall flows
3328
+ - Mock the file system for unit tests, use temp directories for integration tests
3329
+
3330
+ ---
3331
+
3332
+ ### Epic 18 — Cross-Epic Notes
3333
+
3334
+ **Relationship to Cline (Epic N/A):**
3335
+ Roo Code is a fork of Cline. The existing Cline support (`id: 'cline'` in agents.js) should be preserved — they are separate IDEs. Story 18.7 provides an explicit migration path.
3336
+
3337
+ **Relationship to bmad-method upstream:**
3338
+ The `bmad-method` npm package already has `roo` in `platform-codes.yaml` and can generate skills to `.roo/skills/`. Stories 18.4-18.6 extend this with Roo-specific features (modes, rules, commands) that go beyond the standard skill format.
3339
+
3340
+ **Development Execution Order:**
3341
+ 1. Story 18.1 (agents.js) — no dependencies
3342
+ 2. Story 18.2 (BMAD config) — no dependencies
3343
+ 3. Story 18.3 (installer rules injection) — depends on 18.1
3344
+ 4. Story 18.4 (.roomodes generation) — depends on 18.2
3345
+ 5. Story 18.5 (slash commands) — depends on 18.4
3346
+ 6. Story 18.6 (mode-specific rules) — depends on 18.4
3347
+ 7. Story 18.7 (Cline migration) — depends on 18.1, 18.3
3348
+ 8. Story 18.8 (validation/tests) — depends on all above
3349
+
3350
+ ---
3351
+
3352
+ ## Epic 19: BMAD Knowledge Graph (Phase 3)
3353
+
3354
+ Every planning and implementation artifact generated by BMAD skills is automatically woven into a non-hierarchical knowledge graph stored as `_bmad-output/knowledge-graph.json`. Any-to-any directed relationships (not just parent-child traceability) are captured with full provenance. Engineers can open an interactive visualization of the entire project knowledge graph — navigating to any document at the specific heading where a concept is defined — via the `open-graph` skill.
3355
+
3356
+ ### Story 19.1: Knowledge Graph Core Library (`emitToGraph`)
3357
+
3358
+ As a **Chief Architect**,
3359
+ I want a shared `emitToGraph()` utility function in the BMAD extension module,
3360
+ So that all BMAD skills can emit nodes and edges to the knowledge graph using a single consistent API without duplicating file I/O logic.
3361
+
3362
+ **Acceptance Criteria:**
3363
+
3364
+ **Given** the function `emitToGraph(projectRoot, emission)` is called with a valid emission payload
3365
+ **When** `_bmad-output/knowledge-graph.json` does not yet exist
3366
+ **Then** the function creates the file with a valid four-section structure: `meta`, `files`, `nodes`, `edges`
3367
+ **And** `meta` contains `schema_version: "1.0"`, `generated_at` (ISO timestamp), `project` (derived from package.json name or directory name), `file_count: 0`, `node_count: 0`, `edge_count: 0`
3368
+ **And** `files`, `nodes`, `edges` are initialized as empty object, empty array, empty array respectively
3369
+
3370
+ **Given** `knowledge-graph.json` already exists with prior content
3371
+ **When** `emitToGraph()` is called
3372
+ **Then** it reads the existing file, appends new files/nodes/edges, updates counts in `meta`, and writes the result back atomically
3373
+ **And** no existing nodes, edges, or file registrations are deleted or overwritten
3374
+
3375
+ **Given** an emission payload includes a `files` entry with `pointer_type: "relative_path"`
3376
+ **When** that file-id does not yet exist in the `files` table
3377
+ **Then** the file is registered: `files[file-id] = { pointer, title, pointer_type }`
3378
+ **And** if the file-id already exists, registration is skipped (first-write-wins)
3379
+
3380
+ **Given** an emission payload includes a node with id `file-id#heading-anchor`
3381
+ **When** a node with that id already exists in `nodes`
3382
+ **Then** the node is not duplicated
3383
+
3384
+ **Given** an emission payload includes an edge with `(from, to, type)` triple
3385
+ **When** an edge with the same `(from, to, type)` already exists in `edges`
3386
+ **Then** the edge is not duplicated (provenance of the first edge is preserved)
3387
+
3388
+ **Given** the function writes the updated graph
3389
+ **When** the write operation completes
3390
+ **Then** `meta.file_count`, `meta.node_count`, `meta.edge_count` reflect the total counts in the file
3391
+
3392
+ **Technical notes:**
3393
+ - Implement in `lib/bmad-extension/skills/` as a shared utility module (e.g., `lib/knowledge-graph/emit.js`)
3394
+ - Heading anchor derivation: `heading.toLowerCase().replace(/[^\w\s-]/g, '').replace(/\s+/g, '-')` (GitHub slug algorithm)
3395
+ - File path for graph: always `path.join(projectRoot, '_bmad-output', 'knowledge-graph.json')`
3396
+ - Use synchronous file I/O (`fs.readFileSync` / `fs.writeFileSync`) — graph updates happen after artifact generation, not in hot paths
3397
+ - JSON serialization: `JSON.stringify(graph, null, 2)` for human-readable output
3398
+ - FRs: FR141, FR142, FR143, FR144, FR145, FR146, FR147, FR148
3399
+ - NFRs: NFR39 (LLM-writability — flat structure, copy-pattern extension), NFR40 (additive-only)
3400
+
3401
+ ### Story 19.2: Graph Emission — `create-prd` (Graph Seed)
3402
+
3403
+ As a **Product Manager**,
3404
+ I want the `create-prd` skill to automatically seed the knowledge graph when a PRD is generated,
3405
+ So that the PRD becomes the root of the project knowledge graph without any user action.
3406
+
3407
+ **Acceptance Criteria:**
3408
+
3409
+ **Given** the `create-prd` skill completes generation of `_bmad-output/planning-artifacts/prd.md`
3410
+ **When** the artifact write step finishes
3411
+ **Then** `emitToGraph()` is called silently as the final step — no user prompt, no output message
3412
+ **And** the PRD file is registered in the `files` table as `{ pointer: "_bmad-output/planning-artifacts/prd.md", title: "Product Requirements Document", pointer_type: "relative_path" }` with file-id `prd`
3413
+
3414
+ **Given** the PRD contains top-level `##` headings (e.g., `## Executive Summary`, `## Functional Requirements`)
3415
+ **When** emission runs
3416
+ **Then** one node is emitted per heading: `{ id: "prd#executive-summary", file: "prd", anchor: "executive-summary", title: "Executive Summary", type: "prd" }`
3417
+
3418
+ **Given** the graph is seeded from a new PRD
3419
+ **When** the `knowledge-graph.json` file is inspected
3420
+ **Then** it contains no edges (PRD is the root — it does not reference other documents yet)
3421
+ **And** `meta.node_count` equals the number of `##` headings in the PRD
3422
+
3423
+ **Given** `create-prd` runs on a project where `knowledge-graph.json` already exists
3424
+ **When** emission runs
3425
+ **Then** only new headings (not yet present as nodes) are added — re-runs are idempotent
3426
+
3427
+ **Technical notes:**
3428
+ - Extract headings by scanning the generated markdown for `^## ` lines
3429
+ - Emit only level-2 (`##`) headings as nodes — level-3+ create noise without adding navigation value
3430
+ - The PRD seeding call is the only emission that produces zero edges — all other skills emit edges pointing back to PRD nodes
3431
+ - FRs: FR149, FR150, FR151, FR152
3432
+
3433
+ ### Story 19.3: Graph Emission — `create-architecture` and `create-epics-and-stories`
3434
+
3435
+ As a **Chief Architect** and **Product Manager**,
3436
+ I want the `create-architecture` and `create-epics-and-stories` skills to emit traceability edges to the knowledge graph automatically,
3437
+ So that every architectural decision and every epic traces back to the PRD sections that motivated it.
3438
+
3439
+ **Acceptance Criteria:**
3440
+
3441
+ **Given** the `create-architecture` skill completes generation of `_bmad-output/planning-artifacts/architecture.md`
3442
+ **When** emission runs
3443
+ **Then** the architecture file is registered as file-id `arch` with `pointer_type: "relative_path"`
3444
+ **And** one node is emitted per `##` heading in architecture.md (type: `architecture`)
3445
+ **And** for each architecture decision section (headings matching `## Decision` or similar), an `implements` edge is emitted: `{ from: "arch#decision-slug", to: "prd#relevant-fr-section", type: "implements", label: "implements PRD requirement", created_by: <user>, agent: <agent-id>, created_at: <timestamp> }`
3446
+
3447
+ **Given** the `create-architecture` skill is run when PRD nodes do not yet exist in the graph
3448
+ **When** an edge references a PRD node that is not yet in `nodes`
3449
+ **Then** a stub node is emitted for the referenced PRD heading so the edge is not orphaned
3450
+ **And** the stub node carries `type: "prd"` and the correct `file` and `anchor` fields
3451
+
3452
+ **Given** the `create-epics-and-stories` skill completes updating `_bmad-output/planning-artifacts/epics.md`
3453
+ **When** emission runs
3454
+ **Then** the epics file is registered as file-id `epics` with `pointer_type: "relative_path"`
3455
+ **And** one node is emitted per epic heading (type: `epic`)
3456
+ **And** for each epic, a `derives-from` edge is emitted to the PRD Functional Requirements node: `{ from: "epics#epic-N-name", to: "prd#functional-requirements", type: "derives-from", ... }`
3457
+ **And** where an epic was informed by an architecture decision, an `informed-by` edge is also emitted: `{ from: "epics#epic-N-name", to: "arch#decision-slug", type: "informed-by", ... }`
3458
+
3459
+ **Technical notes:**
3460
+ - The `informed-by` edge is the non-hierarchical edge type — it captures cross-domain influence (an epic shaped by an architectural decision, not just a PRD section)
3461
+ - Architecture decision headings can be detected by scanning for `## Decision` or `## P[0-9]-[0-9]` patterns (architecture doc convention)
3462
+ - Epic headings can be detected by scanning for `## Epic [0-9]+:` pattern
3463
+ - Emit after the file write step completes; `created_by` is read from BMAD config (user name); `agent` is the BMAD agent identity string from the skill context
3464
+ - FRs: FR149, FR150, FR151, FR152
3465
+
3466
+ ### Story 19.4: Graph Emission — `create-story`, `validate-prd`, `dev-story`, `bmad-sprint-planning`
3467
+
3468
+ As a **Developer** and **QA Engineer**,
3469
+ I want individual story files and validation artifacts to emit traceability edges automatically,
3470
+ So that the knowledge graph captures the full SDLC chain from PRD through architecture through epics through stories through implementation.
3471
+
3472
+ **Acceptance Criteria:**
3473
+
3474
+ **Given** the `create-story` skill generates a story file (e.g., `_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md`)
3475
+ **When** emission runs
3476
+ **Then** the story file is registered in the `files` table with `pointer_type: "relative_path"` and a file-id derived from the story number (e.g., `story-17-9`)
3477
+ **And** a node is emitted for the story root heading (type: `story`)
3478
+ **And** a `traces-to` edge is emitted from the story node to its parent epic node: `{ from: "story-17-9#story-title", to: "epics#epic-17-sprint-management", type: "traces-to", ... }`
3479
+ **And** if the story's technical notes reference architecture decisions, `informed-by` edges are emitted from the story node to the relevant architecture nodes
3480
+
3481
+ **Given** the `validate-prd` skill completes a validation report
3482
+ **When** emission runs
3483
+ **Then** the validation report file is registered with file-id `validation-<date>`
3484
+ **And** a `validates` edge is emitted from the validation report node to `prd#functional-requirements`: `{ type: "validates", label: "PRD validation report <date>", ... }`
3485
+
3486
+ **Given** `dev-story` completes implementation guidance for a story
3487
+ **When** emission runs
3488
+ **Then** an `informed-by` edge is emitted from the story node to `arch#implementation-notes` (or the most relevant architecture section)
3489
+
3490
+ **Given** `bmad-sprint-planning` completes sprint plan generation
3491
+ **When** emission runs
3492
+ **Then** sprint plan nodes are emitted and `derives-from` edges connect them to the relevant epic nodes
3493
+
3494
+ **Technical notes:**
3495
+ - Story file-ids use the format `story-<epic-number>-<story-number>` (derived from the file path)
3496
+ - The 7 skills emitting to the graph: `create-prd`, `create-architecture`, `create-epics-and-stories`, `create-story`, `validate-prd`, `dev-story`, `bmad-sprint-planning`
3497
+ - All emission calls are identical in structure: call `emitToGraph(projectRoot, emission)` at the end of the artifact write step
3498
+ - FRs: FR149, FR150, FR151, FR152
3499
+
3500
+ ### Story 19.5: `open-graph` Skill
3501
+
3502
+ As an **Engineer**,
3503
+ I want to run `/open-graph` in any BMAD agent,
3504
+ So that the knowledge graph visualization opens in VSCode (as a webview) or in my default browser when outside VSCode — without any additional configuration.
3505
+
3506
+ **Acceptance Criteria:**
3507
+
3508
+ **Given** `open-graph` is invoked inside VSCode (detected via `process.env.TERM_PROGRAM === 'vscode'` or `process.env.VSCODE_PID !== undefined`)
3509
+ **When** the skill runs
3510
+ **Then** it generates `_bmad-output/knowledge-graph.html` (if not already current) from the JSON data
3511
+ **And** opens the HTML file via VSCode's `vscode.env.openExternal(Uri.file(...))` API or equivalent open command
3512
+
3513
+ **Given** `open-graph` is invoked outside VSCode (standard terminal)
3514
+ **When** the skill runs
3515
+ **Then** it generates `knowledge-graph.html` from the current JSON data
3516
+ **And** opens it using the platform-appropriate command: `start` (Windows), `open` (macOS), `xdg-open` (Linux)
3517
+
3518
+ **Given** `_bmad-output/knowledge-graph.json` does not exist
3519
+ **When** `open-graph` is invoked
3520
+ **Then** the skill informs the user that no knowledge graph data has been generated yet
3521
+ **And** suggests running a BMAD planning skill to seed the graph
3522
+
3523
+ **Given** `knowledge-graph.html` already exists and is newer than `knowledge-graph.json`
3524
+ **When** `open-graph` is invoked
3525
+ **Then** the skill skips regeneration and opens the existing HTML directly
3526
+
3527
+ **Technical notes:**
3528
+ - Skill location: `lib/bmad-extension/skills/open-graph/`
3529
+ - Skill files: `SKILL.md` (agent instruction), `skill.json` (metadata), `generate-html.js` (HTML renderer generator)
3530
+ - The `generate-html.js` script reads the JSON, inlines the data as a JavaScript literal, and writes the self-contained HTML file
3531
+ - `always_load: false` — this is an on-demand skill, not a mandatory load
3532
+ - Add `open-graph` to the BMAD extension module's MANIFEST.yaml
3533
+ - FR: FR153
3534
+
3535
+ ### Story 19.6: Interactive Visualization Renderer
3536
+
3537
+ As an **Engineer**,
3538
+ I want the knowledge graph HTML file to render an interactive, navigable visualization of all project artifacts and their relationships,
3539
+ So that I can explore cross-document traceability visually and jump directly to any document section from the graph.
3540
+
3541
+ **Acceptance Criteria:**
3542
+
3543
+ **Given** `knowledge-graph.html` is opened in a browser or VSCode webview
3544
+ **When** the graph renders
3545
+ **Then** each node appears as a circle color-coded by document type:
3546
+ - `prd` → blue
3547
+ - `architecture` → orange
3548
+ - `epic` → green
3549
+ - `story` → teal
3550
+ - `decision` → purple
3551
+ - `validation` → red
3552
+ **And** directed edges are rendered as arrows with the edge type as a label
3553
+ **And** the initial render completes within 3 seconds for graphs up to 500 nodes and 1000 edges (NFR38)
3554
+
3555
+ **Given** the user clicks a node
3556
+ **When** the click handler fires
3557
+ **Then** the node's source document opens at the specific heading anchor via the IDE's file protocol or a browser file URL
3558
+
3559
+ **Given** the user hovers over an edge
3560
+ **When** the tooltip renders
3561
+ **Then** it displays: edge type, label, created_by, agent, created_at (FR155)
3562
+
3563
+ **Given** the user selects a node
3564
+ **When** the selection occurs
3565
+ **Then** the immediate neighbors (one hop in either direction) are highlighted
3566
+ **And** non-neighbor nodes and edges are dimmed (FR156)
3567
+
3568
+ **Given** the user uses the filter controls
3569
+ **When** a node type or edge type is deselected
3570
+ **Then** nodes and edges of that type are hidden from the visualization
3571
+ **And** re-selecting them restores visibility (FR156)
3572
+
3573
+ **Given** the HTML file is opened in an air-gapped environment with no network access
3574
+ **When** the page loads
3575
+ **Then** the graph renders identically to a connected environment — no CDN requests, no external fonts, no script fetches (FR157, NFR41)
3576
+
3577
+ **Technical notes:**
3578
+ - All JavaScript and CSS are inlined in the HTML file — no external dependencies
3579
+ - Graph data is embedded as a `const GRAPH_DATA = {...}` literal at generation time (not fetched at runtime)
3580
+ - Use SVG for node and edge rendering — no canvas required, simpler interaction model
3581
+ - Pre-compute the first 100 physics ticks at generation time to arrive at a stable initial layout (avoids animation jitter on open)
3582
+ - The renderer is approximately 300-500 lines of vanilla JS — no framework, no bundler
3583
+ - Node positioning: simple force-directed simulation using Coulomb repulsion + spring attraction
3584
+ - FRs: FR154, FR155, FR156, FR157
3585
+ - NFRs: NFR38, NFR41
3586
+
3587
+ ### Story 19.7: LLM-Writability Contract Validation and Integration Tests
3588
+
3589
+ As a **Chief Architect**,
3590
+ I want the knowledge graph JSON format validated against the LLM-writability contract and covered by integration tests,
3591
+ So that we can verify that any LLM can extend the graph by copying existing patterns, and that the additive-only semantics are enforced.
3592
+
3593
+ **Acceptance Criteria:**
3594
+
3595
+ **Given** a `knowledge-graph.json` file with one existing node and one existing edge
3596
+ **When** an LLM is instructed to add a new node and a new edge by copying the existing patterns (no external schema provided)
3597
+ **Then** the resulting JSON is valid and passes `emitToGraph()` ingestion without errors
3598
+ **And** the existing node and edge are preserved unchanged (NFR40)
3599
+
3600
+ **Given** `emitToGraph()` is called with a node id that already exists in `nodes`
3601
+ **When** the function completes
3602
+ **Then** `nodes` contains exactly one entry with that id (no duplicate)
3603
+ **And** the original node's fields are unchanged
3604
+
3605
+ **Given** `emitToGraph()` is called with an edge `(from, to, type)` triple that already exists
3606
+ **When** the function completes
3607
+ **Then** `edges` contains exactly one entry with that triple (no duplicate)
3608
+ **And** the original edge's provenance (created_by, agent, created_at) is unchanged
3609
+
3610
+ **Given** a graph with 500 nodes and 1000 edges
3611
+ **When** `emitToGraph()` adds one new node and one new edge
3612
+ **Then** the operation completes in under 1 second
3613
+
3614
+ **Given** the full emission sequence is run (all 7 skills emit in order)
3615
+ **When** the resulting `knowledge-graph.json` is inspected
3616
+ **Then** all emitted nodes are present
3617
+ **And** all emitted edges are present with correct provenance
3618
+ **And** `meta.file_count`, `meta.node_count`, `meta.edge_count` are accurate
3619
+
3620
+ **Technical notes:**
3621
+ - Tests live in `tests/knowledge-graph/` following the existing test structure
3622
+ - Use temp directories for all file I/O in tests
3623
+ - The LLM-writability test can use a fixture JSON and verify that extending it by hand-editing produces valid output
3624
+ - Test the VSCode detection logic with environment variable mocks
3625
+ - NFRs: NFR39 (LLM-writability), NFR40 (additive-only)
3626
+
3627
+ ---
3628
+
3629
+ ### Epic 19 — Cross-Epic Notes
3630
+
3631
+ **Relationship to Epic 15 (BMAD 6.2.1 Migration):**
3632
+ The `open-graph` skill deploys as a BMAD extension skill following the 6.2.1 module structure established by Epic 15. Epic 15 must be complete before Story 19.5.
3633
+
3634
+ **Relationship to Epic 17 (Sprint Management):**
3635
+ `bmad-sprint-planning` is one of the 7 skills that emit to the knowledge graph. Epic 17 must be complete (skill structure settled) before Story 19.4 wires in sprint planning emission.
3636
+
3637
+ **Relationship to Epic 7 (Test Suite):**
3638
+ Story 19.7 integration tests follow the test infrastructure from Epic 7. Epic 7 is on hold, so Story 19.7 uses the existing Node.js test runner pattern directly.
3639
+
3640
+ **File outputs produced by this epic:**
3641
+ ```
3642
+ _bmad-output/
3643
+ ├── knowledge-graph.json ← graph data (generated by Stories 19.2-19.4)
3644
+ └── knowledge-graph.html ← self-contained renderer (generated by Story 19.5/19.6)
3645
+
3646
+ lib/
3647
+ ├── knowledge-graph/
3648
+ │ └── emit.js ← shared emitToGraph() utility (Story 19.1)
3649
+ └── bmad-extension/
3650
+ └── skills/
3651
+ └── open-graph/ ← new BMAD extension skill (Story 19.5)
3652
+ ├── SKILL.md
3653
+ ├── skill.json
3654
+ └── generate-html.js
3655
+ ```
3656
+
3657
+ **Development Execution Order:**
3658
+ 1. Story 19.1 (core library) — no dependencies; establish before any emission story
3659
+ 2. Story 19.2 (create-prd emission) — depends on 19.1
3660
+ 3. Story 19.3 (create-architecture + create-epics-and-stories emission) — depends on 19.1; can run in parallel with 19.2
3661
+ 4. Story 19.4 (create-story + remaining emission) — depends on 19.1; can run in parallel with 19.2 and 19.3
3662
+ 5. Story 19.5 (open-graph skill) — depends on 19.1 (needs the generate-html logic)
3663
+ 6. Story 19.6 (visualization renderer) — depends on 19.5 (renderer is invoked by open-graph skill)
3664
+ 7. Story 19.7 (LLM contract validation + tests) — depends on all above
3665
+
3666
+ ---
3667
+
3668
+ ## Epic 20: Software Quality Assurance (SQA) Agent — Gad (Phase 3)
3669
+
3670
+ **Goal:** Deliver a dedicated Software Quality Assurance agent (Gad) that provides structured quality workflows for projects managed with the ma-agents/BMAD stack. The agent presents a menu of quality-focused workflows; the initial release includes a multi-dimensional Project Audit and an IEEE/ISO/IEC 12207 lifecycle process compliance assessment.
3671
+
3672
+ **Value:** Closes the quality verification gap in the BMAD lifecycle. Today there is no agent that looks across planning artifacts, sprint state, and process compliance together. Gad gives quality engineers and project managers a single entry point to answer "how healthy is this project, really?" and "does this project meet recognized lifecycle standards?"
3673
+
3674
+ **PRD Coverage:** FR158–FR171, NFR42–NFR43 (Architecture Decision P3-2)
3675
+
3676
+ **Status:** Planned
3677
+
3678
+ **Dependencies:**
3679
+ - Epic 15 (BMAD 6.2.0 Agent Architecture Migration) must be complete — Gad's skills use the P2-9 BMAD 6.2.0 skill folder pattern
3680
+ - Epic 11 (Bug Management System) must be complete — Story 20.3 invokes `create-bug-story` for gap remediation (FR171)
3681
+
3682
+ ---
3683
+
3684
+ ### Story 20.1 — SQA Agent Skill: Gad Persona and Menu
3685
+
3686
+ **As a** quality engineer,
3687
+ **I want** to activate the Gad SQA agent from within a BMAD session,
3688
+ **so that** I have a dedicated quality assurance persona with a structured menu of QA workflows available.
3689
+
3690
+ **Acceptance Criteria:**
3691
+
3692
+ 1. `lib/bmad-extension/skills/bmad-ma-agent-sqa/SKILL.md` exists and fully defines the Gad agent persona: role, identity, communication style, and principles
3693
+ 2. `lib/bmad-extension/skills/bmad-ma-agent-sqa/bmad-skill-manifest.yaml` exists with `type: agent`, `name: bmad-ma-agent-sqa`, `displayName: Gad`, `title: Software Quality Assurance Expert`, and `module: ma-skills`
3694
+ 3. The SKILL.md activation sequence follows the standard BMAD 6.2.0 agent pattern: load config.yaml → greet user → display menu → wait for input → dispatch to skill
3695
+ 4. The menu includes at minimum: Redisplay Menu Help (MH), Chat (CH), Project Audit (AU → `sqa-audit`), IEEE 12207 Compliance (IC → `sqa-ieee12207`), Dismiss Agent (DA)
3696
+ 5. `lib/bmad-extension/module-help.csv` contains an entry for `bmad-ma-agent-sqa` in the `anytime` phase under module `ma-skills`
3697
+ 6. `lib/bmad-extension/skills/bmad-ma-agent-sqa/.gitkeep` exists
3698
+ 7. `test/extension-module-restructure.test.js` includes `bmad-ma-agent-sqa` in the expected agent skills array and passes
3699
+
3700
+ **Technical Notes:**
3701
+ - Gad binds to the `bmm-qa` BMAD built-in agent persona — no new BMAD agent slot is created
3702
+ - Communication style: clear, precise, structured; findings always include severity levels; observations distinguished from blocking issues
3703
+ - No new BMAD agent host customization files needed — the `lib/bmad-customize/bmm-qa.customize.yaml` existing skill-enforcement hooks are sufficient
3704
+
3705
+ ---
3706
+
3707
+ ### Story 20.2 — Project Audit Workflow Skill
3708
+
3709
+ **As a** quality engineer,
3710
+ **I want** Gad to run a structured project audit across multiple quality dimensions,
3711
+ **so that** I can identify gaps in traceability, process compliance, sprint health, and release readiness in a single structured session.
3712
+
3713
+ **Acceptance Criteria:**
3714
+
3715
+ 1. `lib/bmad-extension/skills/sqa-audit/SKILL.md` exists and implements the full five-step audit workflow:
3716
+ - Step 1: Scope selection — asks full vs. partial, lists all five dimensions by number, waits for user input
3717
+ - Step 2: Data collection — reads all required artifacts, reports which were found vs. missing before proceeding
3718
+ - Step 3: Executes only the selected dimensions (1–5 as described below)
3719
+ - Step 4: Compiles a full audit report in the specified format
3720
+ - Step 5: Saves the report to `{output_folder}/sqa-audit-report-{YYYY-MM-DD}.md` and confirms the path to the user
3721
+ 2. Dimension 1 (Code ↔ Stories): reads done/in-progress items from sprint-status.yaml, lists each story with traceability status, flags stories with no code evidence and code with no story
3722
+ 3. Dimension 2 (Stories ↔ Architecture/PRD): produces a PRD coverage table (COVERED / MISSING / PARTIAL per requirement) and an architecture compliance issue list
3723
+ 4. Dimension 3 (Process Compliance): evaluates commit convention adherence, branch discipline, test file presence, and code review evidence; produces a checklist with PASS / FAIL / UNKNOWN per item
3724
+ 5. Dimension 4 (Sprint Health): produces a per-sprint summary table (total, done, in-progress, not started, completion %) and flags stalled items, blockers, and backlog grooming issues
3725
+ 6. Dimension 5 (Release State): produces a READY / AT RISK / NOT READY release readiness summary, lists blocking items, and records deployment status per environment as provided by the user
3726
+ 7. Report format: executive summary → per-dimension findings with severity (FAIL / WARNING / PASS) → prioritized action items table → skipped dimensions with required artifacts
3727
+ 8. Severity aggregation: any FAIL → overall FAIL; no FAIL but any WARNING → WARNING; all PASS or SKIPPED → PASS
3728
+ 9. After saving the report, Gad asks the user if they want to drill into any finding or take action on issues (FR171 gap remediation offered for FAIL items)
3729
+ 10. `lib/bmad-extension/skills/sqa-audit/bmad-skill-manifest.yaml` exists with `type: skill`, `name: sqa-audit`, `module: ma-skills`
3730
+ 11. `lib/bmad-extension/module-help.csv` contains an entry for `sqa-audit` in the `4-implementation` phase under module `ma-skills`
3731
+ 12. `test/extension-module-restructure.test.js` includes `sqa-audit` in `expectedSqaSkills` and passes
3732
+
3733
+ **Technical Notes:**
3734
+ - Required artifact reads: `_bmad/bmm/config.yaml` (resolve output_folder), `prd.md`, `architecture.md`, `epics.md`, `sprint-status.yaml`; optional: `project-context.md`
3735
+ - Dimension skips gracefully when an artifact is missing — produces a SKIPPED entry in the report with the artifact path that was not found
3736
+ - Report is saved as markdown; no HTML or external rendering required
3737
+
3738
+ ---
3739
+
3740
+ ### Story 20.3 — IEEE/ISO/IEC 12207 Compliance Workflow Skill
3741
+
3742
+ **As a** quality engineer or project manager,
3743
+ **I want** Gad to evaluate the project's compliance with IEEE/ISO/IEC 12207:2017,
3744
+ **so that** I have a structured compliance posture report with gap analysis and recommended corrective actions.
3745
+
3746
+ **Acceptance Criteria:**
3747
+
3748
+ 1. `lib/bmad-extension/skills/sqa-ieee12207/SKILL.md` exists and implements the full five-step compliance workflow:
3749
+ - Step 1: Scope selection — presents the four process groups, asks full vs. selected, waits for user input
3750
+ - Step 2: Data collection — reads all required artifacts, reports found vs. missing
3751
+ - Step 3: Evaluates all 23 process areas in selected groups with per-area ratings
3752
+ - Step 4: Compiles the compliance matrix report in the specified format
3753
+ - Step 5: Saves the report to `{output_folder}/sqa-ieee12207-report-{YYYY-MM-DD}.md`, confirms path, and offers to create backlog stories for P1 gaps (FR171)
3754
+ 2. The four process groups and their process areas are correctly modeled in the SKILL.md:
3755
+ - Technical Processes (11 areas: 6.4.1–6.4.11)
3756
+ - Technical Management Processes (8 areas: 6.3.1–6.3.8)
3757
+ - Agreement Processes (2 areas: 6.1.1–6.1.2)
3758
+ - Organizational Enabling Processes (2 areas: 6.2.1, 6.2.7)
3759
+ 3. Each evaluated process area maps to specific project artifacts as evidence sources (e.g., 6.4.2 Stakeholder Requirements → prd.md; 6.3.5 Configuration Management → git history, CHANGELOG, version files)
3760
+ 4. Each area receives one of five ratings: COMPLIANT, PARTIAL, NON-COMPLIANT, NOT APPLICABLE, ORGANIZATION-SCOPE — with the rating justified by evidence found or absent
3761
+ 5. Report includes: executive summary, per-group compliance matrix (clause | process area | rating | key evidence | gaps), gap analysis (critical gaps vs. partial compliance), prioritized recommended-action table (priority, action, clause, effort), compliance summary table (counts per group + overall compliance percentage)
3762
+ 6. When the user confirms gap-to-story creation, Gad iterates over P1 (NON-COMPLIANT) gaps and offers to invoke `create-bug-story` for each — one story per gap
3763
+ 7. All evaluation logic and process area definitions are embedded in SKILL.md — no network access required (NFR43)
3764
+ 8. `lib/bmad-extension/skills/sqa-ieee12207/bmad-skill-manifest.yaml` exists with `type: skill`, `name: sqa-ieee12207`, `module: ma-skills`
3765
+ 9. `lib/bmad-extension/module-help.csv` contains an entry for `sqa-ieee12207` in the `4-implementation` phase under module `ma-skills`
3766
+ 10. `test/extension-module-restructure.test.js` includes `sqa-ieee12207` in `expectedSqaSkills` and passes
3767
+
3768
+ **Technical Notes:**
3769
+ - The workflow is a compliance *posture* assessment, not a formal certification — it produces a structured report based on available project artifacts; it makes no claim of organizational-level ISO certification
3770
+ - Organizational Enabling Processes (Group 4) are assessed from project artifacts only where possible; remaining items are automatically rated ORGANIZATION-SCOPE with a note explaining what organizational evidence would be needed
3771
+ - Gap-to-story creation is optional and per-item — the user can accept or skip each P1 gap individually
3772
+
3773
+ ---
3774
+
3775
+ ### Story 20.4 — Test Suite Update for SQA Skills
3776
+
3777
+ **As a** developer,
3778
+ **I want** the extension module restructure test to verify the SQA skills exist and are registered,
3779
+ **so that** future changes that accidentally remove or misconfigure SQA skills are caught by the automated test suite.
3780
+
3781
+ **Acceptance Criteria:**
3782
+
3783
+ 1. `test/extension-module-restructure.test.js` includes `expectedSqaSkills = ['sqa-audit', 'sqa-ieee12207']`
3784
+ 2. `bmad-ma-agent-sqa` is included in `expectedAgentSkills`
3785
+ 3. All skill directory count tests are updated to reflect the 3 new directories (agent + 2 workflow skills): total skill count is previous count + 3
3786
+ 4. All CSV row count tests are updated to reflect the 3 new `module-help.csv` entries: total CSV row count is previous count + 3
3787
+ 5. New test `'all 2 SQA skill directories exist'` verifies both `sqa-audit` and `sqa-ieee12207` directories exist in `lib/bmad-extension/skills/`
3788
+ 6. New test `'CSV has entries for all 2 SQA skills'` verifies both workflow skills are in `module-help.csv`
3789
+ 7. All tests in `test/extension-module-restructure.test.js` pass with 0 failures after these changes
3790
+
3791
+ **Technical Notes:**
3792
+ - This story has no runtime behavior — it is test-only
3793
+ - The `.gitkeep` files required in each new skill directory must be present for the existing `.gitkeep` coverage test to pass
3794
+
3795
+ ---
3796
+
3797
+ ### Epic 20 — Cross-Epic Notes
3798
+
3799
+ **Relationship to Epic 15 (BMAD 6.2.0 Agent Architecture Migration):**
3800
+ Gad follows the SKILL.md-based agent pattern established by Epic 15. Epic 15 must be complete before Story 20.1 to ensure the agent folder structure and BMAD agent dispatch mechanism are stable.
3801
+
3802
+ **Relationship to Epic 11 (Bug Management System):**
3803
+ Story 20.3 invokes `create-bug-story` for IEEE 12207 P1 gaps (FR171). Epic 11 must be complete — specifically Story 11.2 (BMAD extension workflow for bug story creation) — before this feature of Story 20.3 is active.
3804
+
3805
+ **Relationship to Epic 17 (Sprint Management Model Rework):**
3806
+ Story 20.2 reads `sprint-status.yaml` for Sprint Health analysis. The unified schema established by Epic 17 (FR133–FR135) defines the file structure that the audit workflow depends on.
3807
+
3808
+ **File outputs produced by this epic:**
3809
+ ```
3810
+ lib/
3811
+ └── bmad-extension/
3812
+ └── skills/
3813
+ ├── bmad-ma-agent-sqa/
3814
+ │ ├── .gitkeep
3815
+ │ ├── SKILL.md
3816
+ │ └── bmad-skill-manifest.yaml
3817
+ ├── sqa-audit/
3818
+ │ ├── .gitkeep
3819
+ │ ├── SKILL.md
3820
+ │ └── bmad-skill-manifest.yaml
3821
+ └── sqa-ieee12207/
3822
+ ├── .gitkeep
3823
+ ├── SKILL.md
3824
+ └── bmad-skill-manifest.yaml
3825
+
3826
+ _bmad-output/ (generated at runtime, not committed)
3827
+ ├── sqa-audit-report-{date}.md
3828
+ └── sqa-ieee12207-report-{date}.md
3829
+ ```
3830
+
3831
+ **Development Execution Order:**
3832
+ 1. Story 20.4 (test suite update) — can be written first as a failing test to drive implementation
3833
+ 2. Story 20.1 (Gad agent skill) — no dependency on other Epic 20 stories; establishes the agent entry point
3834
+ 3. Story 20.2 (Project Audit workflow) — no dependency on 20.1 at the code level; can develop in parallel with 20.1
3835
+ 4. Story 20.3 (IEEE 12207 workflow) — no dependency on other Epic 20 stories; can develop in parallel with 20.1 and 20.2