ma-agents 3.6.2 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/CONTRIBUTING.md +139 -0
  2. package/README.md +27 -11
  3. package/bin/cli.js +34 -10
  4. package/docs/deployment/vllm-nemotron.md +4 -2
  5. package/lib/.bmad-extension-plugin.build-1264-1777348888201/.claude-plugin/marketplace.json +109 -0
  6. package/lib/{bmad-extension → .bmad-extension-plugin.build-1264-1777348888201/skills}/module-help.csv +5 -5
  7. package/lib/.bmad-extension-plugin.build-1264-1777348888201/skills/module.yaml +20 -0
  8. package/lib/.bmad-extension-plugin.build-24696-1777348768444/.claude-plugin/marketplace.json +109 -0
  9. package/lib/.bmad-extension-plugin.build-24696-1777348768444/skills/module-help.csv +62 -0
  10. package/lib/.bmad-extension-plugin.build-24696-1777348768444/skills/module.yaml +20 -0
  11. package/lib/.bmad-extension-plugin.build-25428-1777348694953/.claude-plugin/marketplace.json +109 -0
  12. package/lib/.bmad-extension-plugin.build-25428-1777348694953/skills/module-help.csv +62 -0
  13. package/lib/.bmad-extension-plugin.build-25428-1777348694953/skills/module.yaml +20 -0
  14. package/lib/agents.js +36 -6
  15. package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +4 -11
  16. package/lib/bmad-cache/bmb/README.md +1 -1
  17. package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
  18. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.idx +0 -0
  19. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/{pack-554778ad4e7254827618ebd2497c3f4bce9054a4.pack → pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.pack} +0 -0
  20. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.rev +0 -0
  21. package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
  22. package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
  23. package/lib/bmad-cache/bmb/_git_preserved/refs/tags/v1.7.0 +1 -0
  24. package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
  25. package/lib/bmad-cache/bmb/package-lock.json +2 -2
  26. package/lib/bmad-cache/bmb/package.json +2 -7
  27. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/customize-template.toml +62 -0
  28. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/sample-customize-analyst.toml +87 -0
  29. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/customize-template.toml +56 -0
  30. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/sample-customize-product-brief.toml +51 -0
  31. package/lib/bmad-cache/bmb/tools/validate-doc-links.cjs +6 -1
  32. package/lib/bmad-cache/bmb/website/astro.config.mjs +5 -1
  33. package/lib/bmad-cache/cache-manifest.json +13 -11
  34. package/lib/bmad-cache/cis/.claude-plugin/marketplace.json +1 -1
  35. package/lib/bmad-cache/cis/README.md +1 -1
  36. package/lib/bmad-cache/cis/_git_preserved/index +0 -0
  37. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.idx +0 -0
  38. package/lib/bmad-cache/cis/_git_preserved/objects/pack/{pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.pack → pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.pack} +0 -0
  39. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-cad8ff313ea5db860ddcc7780f03917dcba1da8d.rev +0 -0
  40. package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
  41. package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
  42. package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
  43. package/lib/bmad-cache/cis/package.json +1 -1
  44. package/lib/bmad-cache/cis/src/module.yaml +49 -0
  45. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-brainstorming-coach/customize.toml +38 -0
  46. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-creative-problem-solver/customize.toml +38 -0
  47. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-design-thinking-coach/customize.toml +39 -0
  48. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-innovation-strategist/customize.toml +38 -0
  49. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-presentation-master/customize.toml +73 -0
  50. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-storyteller/customize.toml +60 -0
  51. package/lib/bmad-cache/cis/src/skills/bmad-cis-design-thinking/customize.toml +41 -0
  52. package/lib/bmad-cache/cis/src/skills/bmad-cis-innovation-strategy/customize.toml +41 -0
  53. package/lib/bmad-cache/cis/src/skills/bmad-cis-problem-solving/customize.toml +42 -0
  54. package/lib/bmad-cache/cis/src/skills/bmad-cis-storytelling/customize.toml +41 -0
  55. package/lib/bmad-cache/cis/tools/build-docs.mjs +8 -0
  56. package/lib/bmad-cache/cis/website/astro.config.mjs +34 -4
  57. package/lib/bmad-cache/cis/website/src/content/config.ts +2 -1
  58. package/lib/bmad-cache/cis/website/src/content/i18n/zh-CN.json +28 -0
  59. package/lib/bmad-cache/cis/website/src/lib/locales.mjs +27 -0
  60. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +7 -6
  61. package/lib/bmad-cache/gds/README.md +5 -3
  62. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  63. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.idx +0 -0
  64. package/lib/bmad-cache/gds/_git_preserved/objects/pack/{pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.pack → pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.pack} +0 -0
  65. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-c1322f7c8531a89dc4f3f34c4955d194f286c1e6.rev +0 -0
  66. package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
  67. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
  68. package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
  69. package/lib/bmad-cache/gds/package.json +1 -1
  70. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +57 -0
  71. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +59 -0
  72. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +129 -0
  73. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +60 -0
  74. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +65 -0
  75. package/lib/bmad-cache/gds/src/module-help.csv +4 -4
  76. package/lib/bmad-cache/gds/src/module.yaml +43 -1
  77. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +41 -0
  78. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +41 -0
  79. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +41 -0
  80. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/customize.toml +41 -0
  81. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +41 -0
  82. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/customize.toml +41 -0
  83. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/customize.toml +41 -0
  84. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-gdd/customize.toml +41 -0
  85. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-prd/customize.toml +41 -0
  86. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/customize.toml +41 -0
  87. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/data/genre-complexity.csv +26 -0
  88. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/customize.toml +41 -0
  89. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/domain-complexity.csv +15 -0
  90. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/project-types.csv +11 -0
  91. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +41 -0
  92. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +41 -0
  93. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +41 -0
  94. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +41 -0
  95. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +41 -0
  96. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +41 -0
  97. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +41 -0
  98. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +41 -0
  99. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +41 -0
  100. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +41 -0
  101. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +41 -0
  102. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +41 -0
  103. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +41 -0
  104. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +41 -0
  105. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +41 -0
  106. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +41 -0
  107. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +41 -0
  108. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +41 -0
  109. package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +41 -0
  110. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +41 -0
  111. package/lib/bmad-cache/tea/.claude-plugin/marketplace.json +1 -1
  112. package/lib/bmad-cache/tea/.github/CODE_OF_CONDUCT.md +128 -0
  113. package/lib/bmad-cache/tea/.github/FUNDING.yaml +15 -0
  114. package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/config.yaml +11 -0
  115. package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/feature_request.md +70 -0
  116. package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/issue.md +61 -0
  117. package/lib/bmad-cache/tea/.github/workflows/docs.yaml +66 -0
  118. package/lib/bmad-cache/tea/.github/workflows/manual-release.yaml +216 -0
  119. package/lib/bmad-cache/tea/.github/workflows/quality.yaml +117 -0
  120. package/lib/bmad-cache/tea/.vscode/settings.json +47 -0
  121. package/lib/bmad-cache/tea/README.md +63 -55
  122. package/lib/bmad-cache/tea/_git_preserved/index +0 -0
  123. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.idx +0 -0
  124. package/lib/bmad-cache/tea/_git_preserved/objects/pack/{pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.pack → pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.pack} +0 -0
  125. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9b16db8eb5022c18cef1f0a27d63b6e0f4bc2b2a.rev +0 -0
  126. package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
  127. package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
  128. package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
  129. package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +1 -1
  130. package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +1 -1
  131. package/lib/bmad-cache/tea/docs/glossary/index.md +1 -1
  132. package/lib/bmad-cache/tea/docs/how-to/customization/extend-tea-with-custom-workflows.md +29 -0
  133. package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +27 -20
  134. package/lib/bmad-cache/tea/docs/how-to/workflows/teach-me-testing.md +2 -2
  135. package/lib/bmad-cache/tea/docs/reference/commands.md +3 -3
  136. package/lib/bmad-cache/tea/docs/reference/troubleshooting.md +36 -0
  137. package/lib/bmad-cache/tea/docs/tutorials/learn-testing-tea-academy.md +1 -1
  138. package/lib/bmad-cache/tea/package-lock.json +2 -2
  139. package/lib/bmad-cache/tea/package.json +3 -3
  140. package/lib/bmad-cache/tea/src/agents/bmad-tea/SKILL.md +54 -44
  141. package/lib/bmad-cache/tea/src/agents/bmad-tea/customize.toml +104 -0
  142. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/contract-testing.md +32 -15
  143. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-broker-webhooks.md +237 -0
  144. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  145. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pact-mcp.md +1 -0
  146. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  147. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-overview.md +15 -12
  148. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  149. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/pactjs-utils-zod-to-pact.md +262 -0
  150. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-module-setup.md +122 -0
  151. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-providers.md +155 -0
  152. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-risk-guidance.md +114 -0
  153. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-template-matchers.md +160 -0
  154. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  155. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-timeout-error.md +130 -0
  156. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/webhook-waiting-querying.md +167 -0
  157. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +13 -4
  158. package/lib/bmad-cache/tea/src/module.yaml +8 -0
  159. package/lib/bmad-cache/tea/src/workflows/testarch/README.md +5 -3
  160. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/SKILL.md +124 -1
  161. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/checklist.md +3 -2
  162. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/customize.toml +40 -0
  163. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/instructions.md +7 -0
  164. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01-init.md +1 -1
  165. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01b-continue.md +1 -1
  166. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-02-assess.md +1 -1
  167. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +1 -1
  168. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-02.md +1 -1
  169. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-03.md +1 -1
  170. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-04.md +1 -1
  171. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-05.md +1 -1
  172. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-06.md +1 -1
  173. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +1 -1
  174. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-05-completion.md +8 -0
  175. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-01-assess-workflow.md +2 -2
  176. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-02-apply-edits.md +9 -1
  177. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-v/step-v-01-validate.md +12 -3
  178. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/SKILL.md +80 -1
  179. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/customize.toml +40 -0
  180. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +2 -2
  181. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/contract-testing.md +32 -15
  182. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-broker-webhooks.md +237 -0
  183. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  184. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pact-mcp.md +1 -0
  185. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  186. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-overview.md +15 -12
  187. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  188. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/pactjs-utils-zod-to-pact.md +262 -0
  189. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-module-setup.md +122 -0
  190. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-providers.md +155 -0
  191. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-risk-guidance.md +114 -0
  192. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-template-matchers.md +160 -0
  193. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  194. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-timeout-error.md +130 -0
  195. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/knowledge/webhook-waiting-querying.md +167 -0
  196. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +13 -4
  197. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +3 -3
  198. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-02-generation-mode.md +1 -1
  199. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-03-test-strategy.md +1 -1
  200. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04-generate-tests.md +1 -1
  201. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04a-subagent-api-failing.md +1 -1
  202. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04c-aggregate.md +1 -1
  203. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-05-validate-and-complete.md +8 -0
  204. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-01-assess.md +1 -1
  205. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-02-apply-edit.md +8 -0
  206. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-v/step-01-validate.md +9 -1
  207. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/SKILL.md +80 -1
  208. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/customize.toml +40 -0
  209. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +2 -2
  210. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/contract-testing.md +18 -2
  211. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-broker-webhooks.md +237 -0
  212. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  213. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pact-mcp.md +1 -0
  214. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  215. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  216. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-module-setup.md +122 -0
  217. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-providers.md +155 -0
  218. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-risk-guidance.md +114 -0
  219. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-template-matchers.md +160 -0
  220. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  221. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-timeout-error.md +130 -0
  222. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/knowledge/webhook-waiting-querying.md +167 -0
  223. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +12 -4
  224. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +1 -1
  225. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-02-identify-targets.md +1 -1
  226. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03-generate-tests.md +1 -1
  227. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03a-subagent-api.md +9 -1
  228. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +1 -1
  229. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-04-validate-and-summarize.md +8 -0
  230. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-01-assess.md +1 -1
  231. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-02-apply-edit.md +8 -0
  232. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-v/step-01-validate.md +9 -1
  233. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/SKILL.md +80 -1
  234. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/customize.toml +40 -0
  235. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +2 -2
  236. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/contract-testing.md +18 -2
  237. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-broker-webhooks.md +237 -0
  238. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  239. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pact-mcp.md +1 -0
  240. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  241. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  242. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-module-setup.md +122 -0
  243. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-providers.md +155 -0
  244. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-risk-guidance.md +114 -0
  245. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-template-matchers.md +160 -0
  246. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  247. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-timeout-error.md +130 -0
  248. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/knowledge/webhook-waiting-querying.md +167 -0
  249. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +12 -4
  250. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md +1 -1
  251. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +15 -7
  252. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +7 -2
  253. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-04-validate-and-summary.md +8 -0
  254. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-01-assess.md +1 -1
  255. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-02-apply-edit.md +8 -0
  256. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-v/step-01-validate.md +9 -1
  257. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/SKILL.md +80 -1
  258. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/customize.toml +40 -0
  259. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +2 -2
  260. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/contract-testing.md +18 -2
  261. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-broker-webhooks.md +237 -0
  262. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  263. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pact-mcp.md +1 -0
  264. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  265. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  266. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-module-setup.md +122 -0
  267. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-providers.md +155 -0
  268. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-risk-guidance.md +114 -0
  269. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-template-matchers.md +160 -0
  270. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  271. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-timeout-error.md +130 -0
  272. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/knowledge/webhook-waiting-querying.md +167 -0
  273. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +12 -4
  274. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01-preflight.md +1 -1
  275. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-02-select-framework.md +1 -1
  276. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +11 -7
  277. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +1 -1
  278. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +8 -0
  279. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-01-assess.md +1 -1
  280. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-02-apply-edit.md +8 -0
  281. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-v/step-01-validate.md +9 -1
  282. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +80 -1
  283. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/customize.toml +40 -0
  284. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +2 -2
  285. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/contract-testing.md +18 -2
  286. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-broker-webhooks.md +237 -0
  287. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  288. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pact-mcp.md +1 -0
  289. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  290. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  291. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-module-setup.md +122 -0
  292. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-providers.md +155 -0
  293. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-risk-guidance.md +114 -0
  294. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-template-matchers.md +160 -0
  295. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  296. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-timeout-error.md +130 -0
  297. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/knowledge/webhook-waiting-querying.md +167 -0
  298. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +12 -4
  299. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
  300. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +1 -1
  301. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-03-gather-evidence.md +1 -1
  302. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +1 -1
  303. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +1 -1
  304. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +8 -0
  305. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-01-assess.md +1 -1
  306. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-02-apply-edit.md +8 -0
  307. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-v/step-01-validate.md +9 -1
  308. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/SKILL.md +82 -1
  309. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/customize.toml +40 -0
  310. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +2 -2
  311. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/contract-testing.md +18 -2
  312. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-broker-webhooks.md +237 -0
  313. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  314. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pact-mcp.md +1 -0
  315. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  316. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  317. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-module-setup.md +122 -0
  318. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-providers.md +155 -0
  319. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-risk-guidance.md +114 -0
  320. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-template-matchers.md +160 -0
  321. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  322. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-timeout-error.md +130 -0
  323. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/knowledge/webhook-waiting-querying.md +167 -0
  324. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +12 -4
  325. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01-detect-mode.md +7 -1
  326. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01b-resume.md +29 -15
  327. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +7 -1
  328. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +7 -1
  329. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +7 -1
  330. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +14 -0
  331. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-01-assess.md +1 -1
  332. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-02-apply-edit.md +8 -0
  333. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-v/step-01-validate.md +9 -1
  334. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +3 -0
  335. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +3 -0
  336. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +3 -0
  337. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/SKILL.md +80 -1
  338. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/customize.toml +40 -0
  339. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/instructions.md +2 -2
  340. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/contract-testing.md +18 -2
  341. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-broker-webhooks.md +237 -0
  342. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  343. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pact-mcp.md +1 -0
  344. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  345. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  346. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-module-setup.md +122 -0
  347. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-providers.md +155 -0
  348. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-risk-guidance.md +114 -0
  349. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-template-matchers.md +160 -0
  350. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  351. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-timeout-error.md +130 -0
  352. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/knowledge/webhook-waiting-querying.md +167 -0
  353. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +12 -4
  354. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +3 -3
  355. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +1 -1
  356. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03-quality-evaluation.md +1 -1
  357. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +43 -0
  358. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03f-aggregate-scores.md +1 -1
  359. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-04-generate-report.md +8 -0
  360. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-01-assess.md +1 -1
  361. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-02-apply-edit.md +8 -0
  362. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-v/step-01-validate.md +9 -1
  363. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/SKILL.md +82 -1
  364. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +42 -18
  365. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/customize.toml +40 -0
  366. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/instructions.md +6 -4
  367. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/contract-testing.md +18 -2
  368. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-broker-webhooks.md +237 -0
  369. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-consumer-framework-setup.md +134 -12
  370. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pact-mcp.md +1 -0
  371. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-consumer-helpers.md +111 -1
  372. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/pactjs-utils-provider-verifier.md +83 -1
  373. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-module-setup.md +122 -0
  374. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-providers.md +155 -0
  375. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-risk-guidance.md +114 -0
  376. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-template-matchers.md +160 -0
  377. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-testing-fundamentals.md +42 -0
  378. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-timeout-error.md +130 -0
  379. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/knowledge/webhook-waiting-querying.md +167 -0
  380. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +12 -4
  381. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +74 -13
  382. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01b-resume.md +1 -1
  383. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-02-discover-tests.md +24 -4
  384. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-03-map-criteria.md +15 -11
  385. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-04-analyze-gaps.md +210 -3
  386. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-05-gate-decision.md +477 -62
  387. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-01-assess.md +1 -1
  388. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-02-apply-edit.md +8 -0
  389. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-v/step-01-validate.md +9 -1
  390. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +10 -2
  391. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow-plan.md +14 -11
  392. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.yaml +24 -0
  393. package/lib/bmad-cache/tea/test/test-installation-components.js +210 -66
  394. package/lib/bmad-cache/tea/test/test-knowledge-base.js +6 -1
  395. package/lib/bmad-cache/tea/test/test-release-metadata.js +71 -0
  396. package/lib/bmad-cache/tea/tools/validate-agent-schema.js +73 -0
  397. package/lib/bmad-customize/bmm-qa.customize.yaml +1 -1
  398. package/lib/bmad-extension/.claude-plugin/marketplace.json.template +117 -0
  399. package/lib/bmad-extension/skills/ma-agent-cyber/.gitkeep +0 -0
  400. package/lib/bmad-extension/skills/ma-agent-cyber/SKILL.md +49 -0
  401. package/lib/bmad-extension/skills/ma-agent-cyber/bmad-skill-manifest.yaml +11 -0
  402. package/lib/bmad-extension/skills/ma-agent-devops/.gitkeep +0 -0
  403. package/lib/bmad-extension/skills/ma-agent-devops/SKILL.md +49 -0
  404. package/lib/bmad-extension/skills/ma-agent-devops/bmad-skill-manifest.yaml +11 -0
  405. package/lib/bmad-extension/skills/ma-agent-ml/.gitkeep +0 -0
  406. package/lib/bmad-extension/skills/ma-agent-ml/SKILL.md +59 -0
  407. package/lib/bmad-extension/skills/ma-agent-ml/bmad-skill-manifest.yaml +11 -0
  408. package/lib/bmad-extension/skills/ma-agent-sqa/.gitkeep +0 -0
  409. package/lib/bmad-extension/skills/ma-agent-sqa/SKILL.md +59 -0
  410. package/lib/bmad-extension/skills/ma-agent-sqa/bmad-skill-manifest.yaml +11 -0
  411. package/lib/bmad-extension/skills/ma-agent-sre/.gitkeep +0 -0
  412. package/lib/bmad-extension/skills/ma-agent-sre/SKILL.md +49 -0
  413. package/lib/bmad-extension/skills/ma-agent-sre/bmad-skill-manifest.yaml +11 -0
  414. package/lib/bmad-extension/skills/module-help.csv +62 -0
  415. package/lib/bmad-extension/skills/module.yaml +20 -0
  416. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +109 -0
  417. package/lib/bmad-extension-plugin/skills/add-sprint/SKILL.md +175 -0
  418. package/lib/bmad-extension-plugin/skills/add-sprint/bmad-skill-manifest.yaml +3 -0
  419. package/lib/bmad-extension-plugin/skills/add-to-sprint/SKILL.md +243 -0
  420. package/lib/bmad-extension-plugin/skills/add-to-sprint/bmad-skill-manifest.yaml +3 -0
  421. package/lib/bmad-extension-plugin/skills/bmad-dev-story/SKILL.md +6 -0
  422. package/lib/bmad-extension-plugin/skills/bmad-dev-story/bmad-skill-manifest.yaml +3 -0
  423. package/lib/bmad-extension-plugin/skills/bmad-dev-story/checklist.md +80 -0
  424. package/lib/bmad-extension-plugin/skills/bmad-dev-story/workflow.md +509 -0
  425. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/SKILL.md +6 -0
  426. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/bmad-skill-manifest.yaml +3 -0
  427. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/checklist.md +74 -0
  428. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
  429. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/workflow.md +372 -0
  430. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/SKILL.md +6 -0
  431. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/bmad-skill-manifest.yaml +3 -0
  432. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/workflow.md +434 -0
  433. package/lib/bmad-extension-plugin/skills/cleanup-done/.gitkeep +0 -0
  434. package/lib/bmad-extension-plugin/skills/cleanup-done/SKILL.md +215 -0
  435. package/lib/bmad-extension-plugin/skills/cleanup-done/bmad-skill-manifest.yaml +3 -0
  436. package/lib/bmad-extension-plugin/skills/close-sprint/.gitkeep +0 -0
  437. package/lib/bmad-extension-plugin/skills/close-sprint/SKILL.md +379 -0
  438. package/lib/bmad-extension-plugin/skills/close-sprint/bmad-skill-manifest.yaml +3 -0
  439. package/lib/bmad-extension-plugin/skills/create-bug-story/.gitkeep +0 -0
  440. package/lib/bmad-extension-plugin/skills/create-bug-story/SKILL.md +195 -0
  441. package/lib/bmad-extension-plugin/skills/create-bug-story/bmad-skill-manifest.yaml +3 -0
  442. package/lib/bmad-extension-plugin/skills/cyber-generate-certs/.gitkeep +0 -0
  443. package/lib/bmad-extension-plugin/skills/cyber-generate-certs/SKILL.md +27 -0
  444. package/lib/bmad-extension-plugin/skills/cyber-generate-certs/bmad-skill-manifest.yaml +3 -0
  445. package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/.gitkeep +0 -0
  446. package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/SKILL.md +29 -0
  447. package/lib/bmad-extension-plugin/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +3 -0
  448. package/lib/bmad-extension-plugin/skills/cyber-security-audit/.gitkeep +0 -0
  449. package/lib/bmad-extension-plugin/skills/cyber-security-audit/SKILL.md +27 -0
  450. package/lib/bmad-extension-plugin/skills/cyber-security-audit/bmad-skill-manifest.yaml +3 -0
  451. package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/.gitkeep +0 -0
  452. package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/SKILL.md +28 -0
  453. package/lib/bmad-extension-plugin/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +3 -0
  454. package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/.gitkeep +0 -0
  455. package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/SKILL.md +23 -0
  456. package/lib/bmad-extension-plugin/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +3 -0
  457. package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/.gitkeep +0 -0
  458. package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/SKILL.md +22 -0
  459. package/lib/bmad-extension-plugin/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +3 -0
  460. package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/.gitkeep +0 -0
  461. package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/SKILL.md +28 -0
  462. package/lib/bmad-extension-plugin/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +3 -0
  463. package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/.gitkeep +0 -0
  464. package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/SKILL.md +27 -0
  465. package/lib/bmad-extension-plugin/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +3 -0
  466. package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/.gitkeep +0 -0
  467. package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/SKILL.md +27 -0
  468. package/lib/bmad-extension-plugin/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +3 -0
  469. package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/.gitkeep +0 -0
  470. package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/SKILL.md +26 -0
  471. package/lib/bmad-extension-plugin/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +3 -0
  472. package/lib/bmad-extension-plugin/skills/devops-manage-helm/.gitkeep +0 -0
  473. package/lib/bmad-extension-plugin/skills/devops-manage-helm/SKILL.md +28 -0
  474. package/lib/bmad-extension-plugin/skills/devops-manage-helm/bmad-skill-manifest.yaml +3 -0
  475. package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/.gitkeep +0 -0
  476. package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/SKILL.md +24 -0
  477. package/lib/bmad-extension-plugin/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +3 -0
  478. package/lib/bmad-extension-plugin/skills/generate-backlog/.gitkeep +0 -0
  479. package/lib/bmad-extension-plugin/skills/generate-backlog/SKILL.md +195 -0
  480. package/lib/bmad-extension-plugin/skills/generate-backlog/bmad-skill-manifest.yaml +3 -0
  481. package/lib/bmad-extension-plugin/skills/ma-agent-cyber/.gitkeep +0 -0
  482. package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/ma-agent-cyber}/SKILL.md +1 -1
  483. package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/ma-agent-cyber}/bmad-skill-manifest.yaml +1 -1
  484. package/lib/bmad-extension-plugin/skills/ma-agent-devops/.gitkeep +0 -0
  485. package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/ma-agent-devops}/SKILL.md +1 -1
  486. package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/ma-agent-devops}/bmad-skill-manifest.yaml +1 -1
  487. package/lib/bmad-extension-plugin/skills/ma-agent-ml/.gitkeep +0 -0
  488. package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/ma-agent-ml}/SKILL.md +1 -1
  489. package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/ma-agent-ml}/bmad-skill-manifest.yaml +1 -1
  490. package/lib/bmad-extension-plugin/skills/ma-agent-sqa/.gitkeep +0 -0
  491. package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/ma-agent-sqa}/SKILL.md +1 -1
  492. package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/ma-agent-sqa}/bmad-skill-manifest.yaml +1 -1
  493. package/lib/bmad-extension-plugin/skills/ma-agent-sre/.gitkeep +0 -0
  494. package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/ma-agent-sre}/SKILL.md +1 -1
  495. package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/ma-agent-sre}/bmad-skill-manifest.yaml +1 -1
  496. package/lib/bmad-extension-plugin/skills/mil498-ocd/.gitkeep +0 -0
  497. package/lib/bmad-extension-plugin/skills/mil498-ocd/SKILL.md +30 -0
  498. package/lib/bmad-extension-plugin/skills/mil498-ocd/bmad-skill-manifest.yaml +5 -0
  499. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +26 -0
  500. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/02-load-template.md +10 -0
  501. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/03-generate-document.md +90 -0
  502. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/04-validate.md +14 -0
  503. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/05-review.md +15 -0
  504. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/06-save.md +15 -0
  505. package/lib/bmad-extension-plugin/skills/mil498-ocd/template.md +169 -0
  506. package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/.gitkeep +0 -0
  507. package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/SKILL.md +105 -0
  508. package/lib/bmad-extension-plugin/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
  509. package/lib/bmad-extension-plugin/skills/mil498-sdd/.gitkeep +0 -0
  510. package/lib/bmad-extension-plugin/skills/mil498-sdd/SKILL.md +30 -0
  511. package/lib/bmad-extension-plugin/skills/mil498-sdd/bmad-skill-manifest.yaml +5 -0
  512. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +50 -0
  513. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/02-load-template.md +10 -0
  514. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/03-generate-document.md +98 -0
  515. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/04-validate.md +16 -0
  516. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/05-review.md +15 -0
  517. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/06-save.md +19 -0
  518. package/lib/bmad-extension-plugin/skills/mil498-sdd/template.md +163 -0
  519. package/lib/bmad-extension-plugin/skills/mil498-sdp/.gitkeep +0 -0
  520. package/lib/bmad-extension-plugin/skills/mil498-sdp/SKILL.md +30 -0
  521. package/lib/bmad-extension-plugin/skills/mil498-sdp/bmad-skill-manifest.yaml +5 -0
  522. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +32 -0
  523. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/02-load-template.md +10 -0
  524. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/03-generate-document.md +187 -0
  525. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/04-validate.md +13 -0
  526. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/05-review.md +15 -0
  527. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/06-save.md +14 -0
  528. package/lib/bmad-extension-plugin/skills/mil498-sdp/template.md +307 -0
  529. package/lib/bmad-extension-plugin/skills/mil498-srs/.gitkeep +0 -0
  530. package/lib/bmad-extension-plugin/skills/mil498-srs/SKILL.md +30 -0
  531. package/lib/bmad-extension-plugin/skills/mil498-srs/bmad-skill-manifest.yaml +5 -0
  532. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/01-discover-project-artifacts.md +42 -0
  533. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/02-load-template.md +10 -0
  534. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/03-generate-document.md +100 -0
  535. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/04-validate.md +16 -0
  536. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/05-review.md +15 -0
  537. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/06-save.md +18 -0
  538. package/lib/bmad-extension-plugin/skills/mil498-srs/template.md +219 -0
  539. package/lib/bmad-extension-plugin/skills/mil498-ssdd/.gitkeep +0 -0
  540. package/lib/bmad-extension-plugin/skills/mil498-ssdd/SKILL.md +32 -0
  541. package/lib/bmad-extension-plugin/skills/mil498-ssdd/bmad-skill-manifest.yaml +5 -0
  542. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +32 -0
  543. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/02-load-template.md +10 -0
  544. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +43 -0
  545. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/04-generate-document.md +96 -0
  546. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/05-validate.md +18 -0
  547. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/06-review.md +16 -0
  548. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/07-save.md +16 -0
  549. package/lib/bmad-extension-plugin/skills/mil498-ssdd/template.md +154 -0
  550. package/lib/bmad-extension-plugin/skills/mil498-sss/.gitkeep +0 -0
  551. package/lib/bmad-extension-plugin/skills/mil498-sss/SKILL.md +31 -0
  552. package/lib/bmad-extension-plugin/skills/mil498-sss/bmad-skill-manifest.yaml +5 -0
  553. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/01-discover-project-artifacts.md +31 -0
  554. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/02-load-template.md +10 -0
  555. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/03-generate-document.md +108 -0
  556. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/04-validate.md +16 -0
  557. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/05-review.md +15 -0
  558. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/06-save.md +15 -0
  559. package/lib/bmad-extension-plugin/skills/mil498-sss/template.md +225 -0
  560. package/lib/bmad-extension-plugin/skills/mil498-std/.gitkeep +0 -0
  561. package/lib/bmad-extension-plugin/skills/mil498-std/SKILL.md +30 -0
  562. package/lib/bmad-extension-plugin/skills/mil498-std/bmad-skill-manifest.yaml +5 -0
  563. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/01-discover-project-artifacts.md +42 -0
  564. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/02-load-template.md +10 -0
  565. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/03-generate-document.md +117 -0
  566. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/04-validate.md +15 -0
  567. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/05-review.md +15 -0
  568. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/06-save.md +15 -0
  569. package/lib/bmad-extension-plugin/skills/mil498-std/template.md +188 -0
  570. package/lib/bmad-extension-plugin/skills/ml-advise/.gitkeep +0 -0
  571. package/lib/bmad-extension-plugin/skills/ml-advise/SKILL.md +76 -0
  572. package/lib/bmad-extension-plugin/skills/ml-advise/bmad-skill-manifest.yaml +3 -0
  573. package/lib/bmad-extension-plugin/skills/ml-advise/skill.json +7 -0
  574. package/lib/bmad-extension-plugin/skills/ml-analysis/.gitkeep +0 -0
  575. package/lib/bmad-extension-plugin/skills/ml-analysis/SKILL.md +60 -0
  576. package/lib/bmad-extension-plugin/skills/ml-analysis/bmad-skill-manifest.yaml +3 -0
  577. package/lib/bmad-extension-plugin/skills/ml-analysis/skill.json +7 -0
  578. package/lib/bmad-extension-plugin/skills/ml-architecture/.gitkeep +0 -0
  579. package/lib/bmad-extension-plugin/skills/ml-architecture/SKILL.md +55 -0
  580. package/lib/bmad-extension-plugin/skills/ml-architecture/bmad-skill-manifest.yaml +3 -0
  581. package/lib/bmad-extension-plugin/skills/ml-architecture/skill.json +7 -0
  582. package/lib/bmad-extension-plugin/skills/ml-detailed-design/.gitkeep +0 -0
  583. package/lib/bmad-extension-plugin/skills/ml-detailed-design/SKILL.md +67 -0
  584. package/lib/bmad-extension-plugin/skills/ml-detailed-design/bmad-skill-manifest.yaml +3 -0
  585. package/lib/bmad-extension-plugin/skills/ml-detailed-design/skill.json +7 -0
  586. package/lib/bmad-extension-plugin/skills/ml-eda/.gitkeep +0 -0
  587. package/lib/bmad-extension-plugin/skills/ml-eda/SKILL.md +56 -0
  588. package/lib/bmad-extension-plugin/skills/ml-eda/bmad-skill-manifest.yaml +3 -0
  589. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/baseline_classifier.py +522 -0
  590. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/class_weights_calculator.py +295 -0
  591. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/clustering_explorer.py +383 -0
  592. package/lib/bmad-extension-plugin/skills/ml-eda/scripts/eda_analyzer.py +654 -0
  593. package/lib/bmad-extension-plugin/skills/ml-eda/skill.json +7 -0
  594. package/lib/bmad-extension-plugin/skills/ml-experiment/.gitkeep +0 -0
  595. package/lib/bmad-extension-plugin/skills/ml-experiment/SKILL.md +74 -0
  596. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/advanced_trainer_configs.py +430 -0
  597. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/quick_trainer_setup.py +233 -0
  598. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_datamodule.py +219 -0
  599. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_gnn_module.py +341 -0
  600. package/lib/bmad-extension-plugin/skills/ml-experiment/assets/template_lightning_module.py +158 -0
  601. package/lib/bmad-extension-plugin/skills/ml-experiment/bmad-skill-manifest.yaml +3 -0
  602. package/lib/bmad-extension-plugin/skills/ml-experiment/skill.json +7 -0
  603. package/lib/bmad-extension-plugin/skills/ml-hparam/.gitkeep +0 -0
  604. package/lib/bmad-extension-plugin/skills/ml-hparam/SKILL.md +81 -0
  605. package/lib/bmad-extension-plugin/skills/ml-hparam/bmad-skill-manifest.yaml +3 -0
  606. package/lib/bmad-extension-plugin/skills/ml-hparam/skill.json +7 -0
  607. package/lib/bmad-extension-plugin/skills/ml-ideation/.gitkeep +0 -0
  608. package/lib/bmad-extension-plugin/skills/ml-ideation/SKILL.md +50 -0
  609. package/lib/bmad-extension-plugin/skills/ml-ideation/bmad-skill-manifest.yaml +3 -0
  610. package/lib/bmad-extension-plugin/skills/ml-ideation/scripts/validate_ml_prd.py +287 -0
  611. package/lib/bmad-extension-plugin/skills/ml-ideation/skill.json +7 -0
  612. package/lib/bmad-extension-plugin/skills/ml-infra/.gitkeep +0 -0
  613. package/lib/bmad-extension-plugin/skills/ml-infra/SKILL.md +58 -0
  614. package/lib/bmad-extension-plugin/skills/ml-infra/bmad-skill-manifest.yaml +3 -0
  615. package/lib/bmad-extension-plugin/skills/ml-infra/skill.json +7 -0
  616. package/lib/bmad-extension-plugin/skills/ml-retrospective/.gitkeep +0 -0
  617. package/lib/bmad-extension-plugin/skills/ml-retrospective/SKILL.md +63 -0
  618. package/lib/bmad-extension-plugin/skills/ml-retrospective/bmad-skill-manifest.yaml +3 -0
  619. package/lib/bmad-extension-plugin/skills/ml-retrospective/skill.json +7 -0
  620. package/lib/bmad-extension-plugin/skills/ml-revision/.gitkeep +0 -0
  621. package/lib/bmad-extension-plugin/skills/ml-revision/SKILL.md +82 -0
  622. package/lib/bmad-extension-plugin/skills/ml-revision/bmad-skill-manifest.yaml +3 -0
  623. package/lib/bmad-extension-plugin/skills/ml-revision/skill.json +7 -0
  624. package/lib/bmad-extension-plugin/skills/ml-techspec/.gitkeep +0 -0
  625. package/lib/bmad-extension-plugin/skills/ml-techspec/SKILL.md +80 -0
  626. package/lib/bmad-extension-plugin/skills/ml-techspec/bmad-skill-manifest.yaml +3 -0
  627. package/lib/bmad-extension-plugin/skills/ml-techspec/skill.json +7 -0
  628. package/lib/bmad-extension-plugin/skills/modify-sprint/.gitkeep +0 -0
  629. package/lib/bmad-extension-plugin/skills/modify-sprint/SKILL.md +311 -0
  630. package/lib/bmad-extension-plugin/skills/modify-sprint/bmad-skill-manifest.yaml +3 -0
  631. package/lib/bmad-extension-plugin/skills/module-help.csv +62 -0
  632. package/lib/bmad-extension-plugin/skills/module.yaml +20 -0
  633. package/lib/bmad-extension-plugin/skills/prioritize-backlog/.gitkeep +0 -0
  634. package/lib/bmad-extension-plugin/skills/prioritize-backlog/SKILL.md +217 -0
  635. package/lib/bmad-extension-plugin/skills/prioritize-backlog/bmad-skill-manifest.yaml +3 -0
  636. package/lib/bmad-extension-plugin/skills/project-context-expansion/.gitkeep +0 -0
  637. package/lib/bmad-extension-plugin/skills/project-context-expansion/SKILL.md +238 -0
  638. package/lib/bmad-extension-plugin/skills/project-context-expansion/bmad-skill-manifest.yaml +3 -0
  639. package/lib/bmad-extension-plugin/skills/remove-from-sprint/.gitkeep +0 -0
  640. package/lib/bmad-extension-plugin/skills/remove-from-sprint/SKILL.md +184 -0
  641. package/lib/bmad-extension-plugin/skills/remove-from-sprint/bmad-skill-manifest.yaml +3 -0
  642. package/lib/bmad-extension-plugin/skills/sprint-status-view/.gitkeep +0 -0
  643. package/lib/bmad-extension-plugin/skills/sprint-status-view/SKILL.md +177 -0
  644. package/lib/bmad-extension-plugin/skills/sprint-status-view/bmad-skill-manifest.yaml +3 -0
  645. package/lib/bmad-extension-plugin/skills/sqa-audit/.gitkeep +0 -0
  646. package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +279 -0
  647. package/lib/bmad-extension-plugin/skills/sqa-audit/bmad-skill-manifest.yaml +3 -0
  648. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/.gitkeep +0 -0
  649. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +374 -0
  650. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/bmad-skill-manifest.yaml +3 -0
  651. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/.gitkeep +0 -0
  652. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +244 -0
  653. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/bmad-skill-manifest.yaml +3 -0
  654. package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/.gitkeep +0 -0
  655. package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/SKILL.md +32 -0
  656. package/lib/bmad-extension-plugin/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +3 -0
  657. package/lib/bmad-extension-plugin/skills/sre-check-secrets/.gitkeep +0 -0
  658. package/lib/bmad-extension-plugin/skills/sre-check-secrets/SKILL.md +23 -0
  659. package/lib/bmad-extension-plugin/skills/sre-check-secrets/bmad-skill-manifest.yaml +3 -0
  660. package/lib/bmad-extension-plugin/skills/sre-check-system-status/.gitkeep +0 -0
  661. package/lib/bmad-extension-plugin/skills/sre-check-system-status/SKILL.md +27 -0
  662. package/lib/bmad-extension-plugin/skills/sre-check-system-status/bmad-skill-manifest.yaml +3 -0
  663. package/lib/bmad-extension-plugin/skills/sre-day-2-ops/.gitkeep +0 -0
  664. package/lib/bmad-extension-plugin/skills/sre-day-2-ops/SKILL.md +26 -0
  665. package/lib/bmad-extension-plugin/skills/sre-day-2-ops/bmad-skill-manifest.yaml +3 -0
  666. package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/.gitkeep +0 -0
  667. package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/SKILL.md +28 -0
  668. package/lib/bmad-extension-plugin/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +3 -0
  669. package/lib/bmad-extension-plugin/skills/sre-fix-deployments/.gitkeep +0 -0
  670. package/lib/bmad-extension-plugin/skills/sre-fix-deployments/SKILL.md +25 -0
  671. package/lib/bmad-extension-plugin/skills/sre-fix-deployments/bmad-skill-manifest.yaml +3 -0
  672. package/lib/bmad-extension-plugin/skills/sre-gitops-status/.gitkeep +0 -0
  673. package/lib/bmad-extension-plugin/skills/sre-gitops-status/SKILL.md +25 -0
  674. package/lib/bmad-extension-plugin/skills/sre-gitops-status/bmad-skill-manifest.yaml +3 -0
  675. package/lib/bmad.js +1379 -372
  676. package/lib/installer.js +362 -2
  677. package/package.json +23 -5
  678. package/scripts/build-bmad-cache.js +250 -47
  679. package/scripts/build-plugin.js +574 -0
  680. package/.ma-agents.json +0 -10
  681. package/AGENTS.md +0 -97
  682. package/AiAudit.md +0 -12
  683. package/DEVELOPMENT.md +0 -173
  684. package/MANIFEST.yaml +0 -3
  685. package/_bmad-output/implementation-artifacts/16-4-validation-report.md +0 -79
  686. package/_bmad-output/implementation-artifacts/17-10-rework-generate-backlog.md +0 -237
  687. package/_bmad-output/implementation-artifacts/17-11-rework-add-to-sprint.md +0 -339
  688. package/_bmad-output/implementation-artifacts/17-12-rework-remove-from-sprint.md +0 -348
  689. package/_bmad-output/implementation-artifacts/17-13-rework-sprint-status-view.md +0 -383
  690. package/_bmad-output/implementation-artifacts/17-14-rework-cleanup-done.md +0 -348
  691. package/_bmad-output/implementation-artifacts/17-15-rework-bmad-sprint-planning.md +0 -385
  692. package/_bmad-output/implementation-artifacts/17-16-rework-add-sprint.md +0 -362
  693. package/_bmad-output/implementation-artifacts/17-17-rework-modify-sprint.md +0 -477
  694. package/_bmad-output/implementation-artifacts/17-18-rework-bmad-dev-story.md +0 -377
  695. package/_bmad-output/implementation-artifacts/17-19-rework-story-status-lookup.md +0 -301
  696. package/_bmad-output/implementation-artifacts/17-20-rework-bmad-sprint-status.md +0 -508
  697. package/_bmad-output/implementation-artifacts/17-21-new-close-sprint.md +0 -455
  698. package/_bmad-output/implementation-artifacts/17-22-jira-adapter-pattern.md +0 -325
  699. package/_bmad-output/implementation-artifacts/17-23-migration-deprecation-old-files.md +0 -403
  700. package/_bmad-output/implementation-artifacts/17-24-rework-prioritize-backlog.md +0 -344
  701. package/_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md +0 -279
  702. package/_bmad-output/implementation-artifacts/19-1-knowledge-graph-core-library.md +0 -239
  703. package/_bmad-output/implementation-artifacts/19-2-graph-emission-create-prd.md +0 -171
  704. package/_bmad-output/implementation-artifacts/19-3-graph-emission-create-architecture-epics.md +0 -179
  705. package/_bmad-output/implementation-artifacts/19-4-graph-emission-create-story-remaining.md +0 -190
  706. package/_bmad-output/implementation-artifacts/19-5-open-graph-skill.md +0 -213
  707. package/_bmad-output/implementation-artifacts/19-6-interactive-visualization-renderer.md +0 -259
  708. package/_bmad-output/implementation-artifacts/19-7-llm-writability-validation-tests.md +0 -280
  709. package/_bmad-output/implementation-artifacts/21-1-install-time-profile-prompt.md +0 -181
  710. package/_bmad-output/implementation-artifacts/21-10-profile-reconfigure.md +0 -161
  711. package/_bmad-output/implementation-artifacts/21-11-profile-uninstall.md +0 -150
  712. package/_bmad-output/implementation-artifacts/21-2-universal-instruction-block-expansion.md +0 -253
  713. package/_bmad-output/implementation-artifacts/21-3-roomodes-template-bmad-modes.md +0 -229
  714. package/_bmad-output/implementation-artifacts/21-4-agents-md-template-opencode.md +0 -275
  715. package/_bmad-output/implementation-artifacts/21-5-clinerules-template-extension.md +0 -221
  716. package/_bmad-output/implementation-artifacts/21-6-onprem-layered-guardrails.md +0 -287
  717. package/_bmad-output/implementation-artifacts/21-7-bmad-persona-phase-prefix.md +0 -258
  718. package/_bmad-output/implementation-artifacts/21-8-vllm-reference-doc-readme.md +0 -158
  719. package/_bmad-output/implementation-artifacts/21-9-tests-validation.md +0 -368
  720. package/_bmad-output/implementation-artifacts/4-1-vs-agent-registry-entry.md +0 -173
  721. package/_bmad-output/implementation-artifacts/4-2-vs-skill-template-format.md +0 -129
  722. package/_bmad-output/implementation-artifacts/5-5-explicit-parameter-passing.md +0 -274
  723. package/_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md +0 -186
  724. package/_bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md +0 -144
  725. package/_bmad-output/implementation-artifacts/7-2-installer-pipeline-tests.md +0 -132
  726. package/_bmad-output/implementation-artifacts/7-3-bmad-pipeline-tests.md +0 -119
  727. package/_bmad-output/implementation-artifacts/7-4-cli-command-routing-tests.md +0 -162
  728. package/_bmad-output/implementation-artifacts/bug-bmad-recompile-fails-on-airgapped-network.md +0 -112
  729. package/_bmad-output/implementation-artifacts/bug-experimentalwarning-about-commonjs-loading-es-module-during-install.md +0 -57
  730. package/_bmad-output/implementation-artifacts/deferred-work.md +0 -9
  731. package/_bmad-output/implementation-artifacts/done/1-1-ci-cd-yes-flag.md +0 -200
  732. package/_bmad-output/implementation-artifacts/done/10-1-ensure-bmad-output-not-gitignored.md +0 -172
  733. package/_bmad-output/implementation-artifacts/done/10-2-document-bmad-output-policy.md +0 -102
  734. package/_bmad-output/implementation-artifacts/done/11-1-auto-bug-detection-skill.md +0 -119
  735. package/_bmad-output/implementation-artifacts/done/11-2-bug-story-extension-workflow.md +0 -132
  736. package/_bmad-output/implementation-artifacts/done/11-3-integrate-bug-detection-code-review.md +0 -111
  737. package/_bmad-output/implementation-artifacts/done/12-1-add-sprint-workflow.md +0 -126
  738. package/_bmad-output/implementation-artifacts/done/12-2-add-to-sprint-workflow.md +0 -137
  739. package/_bmad-output/implementation-artifacts/done/12-3-modify-sprint-workflow.md +0 -127
  740. package/_bmad-output/implementation-artifacts/done/12-4-sprint-status-assigned-items.md +0 -129
  741. package/_bmad-output/implementation-artifacts/done/13-1-project-context-template-and-generator.md +0 -179
  742. package/_bmad-output/implementation-artifacts/done/13-2-install-pipeline-integration.md +0 -138
  743. package/_bmad-output/implementation-artifacts/done/13-3-bmad-critical-actions-update.md +0 -150
  744. package/_bmad-output/implementation-artifacts/done/13-4-retrospective-expansion-trigger.md +0 -128
  745. package/_bmad-output/implementation-artifacts/done/13-5-document-project-context-generation.md +0 -118
  746. package/_bmad-output/implementation-artifacts/done/15-1-bump-bmad-method-to-6-2-1.md +0 -132
  747. package/_bmad-output/implementation-artifacts/done/15-2-restructure-extension-module.md +0 -174
  748. package/_bmad-output/implementation-artifacts/done/15-3-convert-custom-agents-to-skill-folders.md +0 -183
  749. package/_bmad-output/implementation-artifacts/done/15-4-convert-mil498-workflows-to-skill-md.md +0 -252
  750. package/_bmad-output/implementation-artifacts/done/15-5-convert-sre-devops-cyber-workflows.md +0 -232
  751. package/_bmad-output/implementation-artifacts/done/15-6-separate-built-in-agent-customizations.md +0 -163
  752. package/_bmad-output/implementation-artifacts/done/15-7-migration-detection-and-upgrade-path.md +0 -133
  753. package/_bmad-output/implementation-artifacts/done/15-8-validate-migrated-agents-and-workflows.md +0 -172
  754. package/_bmad-output/implementation-artifacts/done/15-8-validation-report.md +0 -342
  755. package/_bmad-output/implementation-artifacts/done/16-1-repository-layout-wizard.md +0 -223
  756. package/_bmad-output/implementation-artifacts/done/16-2-config-storage-and-cross-reference.md +0 -180
  757. package/_bmad-output/implementation-artifacts/done/16-3-project-context-multi-repo-section.md +0 -136
  758. package/_bmad-output/implementation-artifacts/done/16-4-validate-cross-repo-path-resolution.md +0 -137
  759. package/_bmad-output/implementation-artifacts/done/16-4-validation-report.md +0 -79
  760. package/_bmad-output/implementation-artifacts/done/16-5-fix-config-lost-on-update.md +0 -110
  761. package/_bmad-output/implementation-artifacts/done/16-6-repo-sync-check-skill.md +0 -116
  762. package/_bmad-output/implementation-artifacts/done/16-7-portable-path-storage.md +0 -109
  763. package/_bmad-output/implementation-artifacts/done/16-8-cicd-remote-mode.md +0 -97
  764. package/_bmad-output/implementation-artifacts/done/16-9-reconfigure-layout-workflow.md +0 -125
  765. package/_bmad-output/implementation-artifacts/done/17-1-sprint-entity-model.md +0 -322
  766. package/_bmad-output/implementation-artifacts/done/17-2-flat-backlog-model.md +0 -264
  767. package/_bmad-output/implementation-artifacts/done/17-3-bug-as-story-type.md +0 -208
  768. package/_bmad-output/implementation-artifacts/done/17-4-backlog-to-sprint-workflow.md +0 -209
  769. package/_bmad-output/implementation-artifacts/done/17-5-sprint-to-backlog-workflow.md +0 -221
  770. package/_bmad-output/implementation-artifacts/done/17-6-done-item-cleanup.md +0 -273
  771. package/_bmad-output/implementation-artifacts/done/17-7-multi-criteria-prioritization.md +0 -235
  772. package/_bmad-output/implementation-artifacts/done/17-8-rework-sprint-status-display.md +0 -285
  773. package/_bmad-output/implementation-artifacts/done/2-1-cpp-coding-standards-skill.md +0 -188
  774. package/_bmad-output/implementation-artifacts/done/2-2-csharp-coding-standards-skill.md +0 -211
  775. package/_bmad-output/implementation-artifacts/done/2-3-python-coding-standards-skill.md +0 -189
  776. package/_bmad-output/implementation-artifacts/done/3-1-skill-scaffolding-tool.md +0 -184
  777. package/_bmad-output/implementation-artifacts/done/3-2-skill-validation-tool.md +0 -178
  778. package/_bmad-output/implementation-artifacts/done/3-3-mandatory-skill-designation.md +0 -136
  779. package/_bmad-output/implementation-artifacts/done/3-4-bmad-persona-customization-tooling.md +0 -141
  780. package/_bmad-output/implementation-artifacts/done/3-5-specialized-agent-development-tooling.md +0 -145
  781. package/_bmad-output/implementation-artifacts/done/5-1-bmad-method-direct-dependency.md +0 -188
  782. package/_bmad-output/implementation-artifacts/done/5-2-bmad-cache-build-script.md +0 -219
  783. package/_bmad-output/implementation-artifacts/done/5-3-pre-populate-bmad-cache.md +0 -234
  784. package/_bmad-output/implementation-artifacts/done/5-4-validate-bundled-installation.md +0 -274
  785. package/_bmad-output/implementation-artifacts/done/6-1-methodology-presentation-bundle.md +0 -173
  786. package/_bmad-output/implementation-artifacts/done/8-1-move-instruction-injection-to-top.md +0 -131
  787. package/_bmad-output/implementation-artifacts/done/8-2-agent-aware-injection-strategy.md +0 -124
  788. package/_bmad-output/implementation-artifacts/done/8-3-create-bmad-extension-module.md +0 -187
  789. package/_bmad-output/implementation-artifacts/done/8-4-integration-verification.md +0 -102
  790. package/_bmad-output/implementation-artifacts/done/8-5-per-agent-enforcement-hooks-research.md +0 -126
  791. package/_bmad-output/implementation-artifacts/done/8-6-context-persistence-research.md +0 -101
  792. package/_bmad-output/implementation-artifacts/done/9-1-register-opencode-agent.md +0 -73
  793. package/_bmad-output/implementation-artifacts/done/9-2-json-merge-injection.md +0 -91
  794. package/_bmad-output/implementation-artifacts/done/9-3-json-merge-existing.md +0 -113
  795. package/_bmad-output/implementation-artifacts/done/9-4-json-error-handling.md +0 -90
  796. package/_bmad-output/implementation-artifacts/epic-11-12-shared-guardrails.md +0 -53
  797. package/_bmad-output/implementation-artifacts/epic-15-adversarial-fixes.md +0 -287
  798. package/_bmad-output/implementation-artifacts/epic-16-adversarial-review.md +0 -49
  799. package/_bmad-output/implementation-artifacts/epic-16-edge-case-review.md +0 -230
  800. package/_bmad-output/implementation-artifacts/epic-17-adversarial-review.md +0 -37
  801. package/_bmad-output/implementation-artifacts/epic-17-edge-case-review.md +0 -140
  802. package/_bmad-output/implementation-artifacts/sprint-status.yaml +0 -139
  803. package/_bmad-output/planning-artifacts/adapter-pattern-spec.md +0 -508
  804. package/_bmad-output/planning-artifacts/architecture.md +0 -2023
  805. package/_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md +0 -295
  806. package/_bmad-output/planning-artifacts/epics.md +0 -4232
  807. package/_bmad-output/planning-artifacts/mil498-workflow-audit.md +0 -290
  808. package/_bmad-output/planning-artifacts/prd.md +0 -811
  809. package/_bmad-output/planning-artifacts/product-brief-agents-2026-03-08.md +0 -214
  810. package/_bmad-output/planning-artifacts/sprint-status-schema.md +0 -506
  811. package/_bmad-output/planning-artifacts/validation-report-prd-2026-04-07.md +0 -330
  812. package/_bmad-output/project-context.md +0 -47
  813. package/agents.code-workspace +0 -11
  814. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-554778ad4e7254827618ebd2497c3f4bce9054a4.idx +0 -0
  815. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-554778ad4e7254827618ebd2497c3f4bce9054a4.rev +0 -0
  816. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.idx +0 -0
  817. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-39c4fd66f4e0eb3f4d93665318df04cd356b0297.rev +0 -0
  818. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-brainstorming-coach/bmad-skill-manifest.yaml +0 -11
  819. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-creative-problem-solver/bmad-skill-manifest.yaml +0 -11
  820. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-design-thinking-coach/bmad-skill-manifest.yaml +0 -11
  821. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-innovation-strategist/bmad-skill-manifest.yaml +0 -11
  822. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-presentation-master/bmad-skill-manifest.yaml +0 -11
  823. package/lib/bmad-cache/cis/src/skills/bmad-cis-agent-storyteller/bmad-skill-manifest.yaml +0 -11
  824. package/lib/bmad-cache/cis/src/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
  825. package/lib/bmad-cache/cis/src/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
  826. package/lib/bmad-cache/cis/src/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
  827. package/lib/bmad-cache/cis/src/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
  828. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.idx +0 -0
  829. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-ac967149d58fba215d07238ad8881bdbdad5c9c3.rev +0 -0
  830. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/bmad-skill-manifest.yaml +0 -11
  831. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/bmad-skill-manifest.yaml +0 -11
  832. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/bmad-skill-manifest.yaml +0 -11
  833. package/lib/bmad-cache/gds/src/agents/gds-agent-game-qa/bmad-skill-manifest.yaml +0 -11
  834. package/lib/bmad-cache/gds/src/agents/gds-agent-game-scrum-master/bmad-skill-manifest.yaml +0 -11
  835. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/bmad-skill-manifest.yaml +0 -11
  836. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
  837. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/bmad-skill-manifest.yaml +0 -1
  838. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/bmad-skill-manifest.yaml +0 -1
  839. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/bmad-skill-manifest.yaml +0 -9
  840. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/bmad-skill-manifest.yaml +0 -1
  841. package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/bmad-skill-manifest.yaml +0 -14
  842. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/bmad-skill-manifest.yaml +0 -1
  843. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/bmad-skill-manifest.yaml +0 -1
  844. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/bmad-skill-manifest.yaml +0 -1
  845. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/bmad-skill-manifest.yaml +0 -1
  846. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/bmad-skill-manifest.yaml +0 -1
  847. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/bmad-skill-manifest.yaml +0 -1
  848. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/bmad-skill-manifest.yaml +0 -1
  849. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/bmad-skill-manifest.yaml +0 -1
  850. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/bmad-skill-manifest.yaml +0 -1
  851. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/bmad-skill-manifest.yaml +0 -1
  852. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/bmad-skill-manifest.yaml +0 -1
  853. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/bmad-skill-manifest.yaml +0 -1
  854. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/bmad-skill-manifest.yaml +0 -1
  855. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/bmad-skill-manifest.yaml +0 -1
  856. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/bmad-skill-manifest.yaml +0 -1
  857. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/bmad-skill-manifest.yaml +0 -1
  858. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/bmad-skill-manifest.yaml +0 -1
  859. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/bmad-skill-manifest.yaml +0 -1
  860. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/bmad-skill-manifest.yaml +0 -1
  861. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/bmad-skill-manifest.yaml +0 -1
  862. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/bmad-skill-manifest.yaml +0 -1
  863. package/lib/bmad-cache/gds/src/workflows/gds-document-project/bmad-skill-manifest.yaml +0 -1
  864. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/bmad-skill-manifest.yaml +0 -1
  865. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev-new-preview/bmad-skill-manifest.yaml +0 -1
  866. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-spec/bmad-skill-manifest.yaml +0 -1
  867. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.idx +0 -0
  868. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-e75385cd52b693dbb8a3b2afb50058952543b3a2.rev +0 -0
  869. package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.10.0 +0 -1
  870. package/lib/bmad-cache/tea/src/agents/bmad-tea/bmad-skill-manifest.yaml +0 -14
  871. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/bmad-skill-manifest.yaml +0 -1
  872. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow.md +0 -90
  873. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/bmad-skill-manifest.yaml +0 -1
  874. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.md +0 -41
  875. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/bmad-skill-manifest.yaml +0 -1
  876. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.md +0 -41
  877. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/bmad-skill-manifest.yaml +0 -1
  878. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.md +0 -41
  879. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/bmad-skill-manifest.yaml +0 -1
  880. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.md +0 -41
  881. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/bmad-skill-manifest.yaml +0 -1
  882. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.md +0 -41
  883. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/bmad-skill-manifest.yaml +0 -1
  884. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.md +0 -41
  885. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/bmad-skill-manifest.yaml +0 -1
  886. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.md +0 -41
  887. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/bmad-skill-manifest.yaml +0 -1
  888. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.md +0 -41
  889. package/lib/bmad-customizations/bmm-demerzel.customize.yaml +0 -36
  890. package/lib/bmad-customizations/demerzel.md +0 -32
  891. package/lib/bmad-customize/bmm-quick-flow-solo-dev.customize.yaml +0 -8
  892. package/lib/bmad-extension/module.yaml +0 -5
  893. package/out.txt +0 -0
  894. package/test/agent-injection-strategy.test.js +0 -129
  895. package/test/agents-md.test.js +0 -398
  896. package/test/bmad-extension.test.js +0 -283
  897. package/test/bmad-output-policy.test.js +0 -119
  898. package/test/bmad-persona-phase-prefix.test.js +0 -271
  899. package/test/bmad-version-bump.test.js +0 -313
  900. package/test/build-bmad-args.test.js +0 -368
  901. package/test/cicd-remote-mode.test.js +0 -224
  902. package/test/clinerules.test.js +0 -339
  903. package/test/config-layout.test.js +0 -230
  904. package/test/config-lost-on-update.test.js +0 -363
  905. package/test/config-storage.test.js +0 -275
  906. package/test/convert-agents-to-skills.test.js +0 -255
  907. package/test/create-agent.test.js +0 -232
  908. package/test/cross-repo-validation.test.js +0 -201
  909. package/test/enforcement-hooks.test.js +0 -324
  910. package/test/experimental-warning.test.js +0 -314
  911. package/test/extension-module-restructure.test.js +0 -407
  912. package/test/fixtures/README.md +0 -74
  913. package/test/fixtures/empty-project/README.md +0 -5
  914. package/test/fixtures/empty-project/package.json +0 -5
  915. package/test/fixtures/onprem-profile-baseline/.gitkeep +0 -2
  916. package/test/fixtures/standard-profile-baseline/.gitkeep +0 -2
  917. package/test/generate-project-context.test.js +0 -483
  918. package/test/instruction-block.test.js +0 -388
  919. package/test/instruction-injection.test.js +0 -336
  920. package/test/integration-verification.test.js +0 -433
  921. package/test/migration-validation.test.js +0 -506
  922. package/test/migration.test.js +0 -832
  923. package/test/offline-recompile.test.js +0 -267
  924. package/test/onprem-injection.test.js +0 -441
  925. package/test/onprem-layer.test.js +0 -419
  926. package/test/opencode-agent.test.js +0 -150
  927. package/test/opencode-json-error.test.js +0 -260
  928. package/test/opencode-json-injection.test.js +0 -264
  929. package/test/opencode-json-merge.test.js +0 -318
  930. package/test/portable-paths.test.js +0 -268
  931. package/test/profile.test.js +0 -301
  932. package/test/reconfigure.test.js +0 -436
  933. package/test/repo-layout.test.js +0 -246
  934. package/test/roo-code-agent.test.js +0 -166
  935. package/test/roo-code-injection.test.js +0 -172
  936. package/test/roomodes.test.js +0 -343
  937. package/test/skill-authoring.test.js +0 -272
  938. package/test/skill-customize-agent.test.js +0 -253
  939. package/test/skill-mandatory.test.js +0 -235
  940. package/test/skill-validation.test.js +0 -378
  941. package/test/story-15-5-workflow-skills.test.js +0 -311
  942. package/test/uninstall.test.js +0 -402
  943. package/test/yes-flag.test.js +0 -200
  944. /package/lib/bmad-cache/gds/src/{gametest → agents/gds-agent-game-dev/gametest}/qa-index.csv +0 -0
  945. /package/lib/bmad-cache/gds/src/workflows/2-design/{create-prd → gds-create-prd}/data/domain-complexity.csv +0 -0
  946. /package/lib/bmad-cache/gds/src/workflows/2-design/{create-prd → gds-create-prd}/data/project-types.csv +0 -0
  947. /package/lib/{bmad-extension/skills/bmad-ma-agent-cyber → bmad-extension-plugin/skills/add-sprint}/.gitkeep +0 -0
  948. /package/lib/{bmad-extension/skills/bmad-ma-agent-devops → bmad-extension-plugin/skills/add-to-sprint}/.gitkeep +0 -0
  949. /package/lib/{bmad-extension/skills/bmad-ma-agent-ml → bmad-extension-plugin/skills/bmad-dev-story}/.gitkeep +0 -0
  950. /package/lib/{bmad-extension/skills/bmad-ma-agent-sqa → bmad-extension-plugin/skills/bmad-sprint-planning}/.gitkeep +0 -0
  951. /package/lib/{bmad-extension/skills/bmad-ma-agent-sre → bmad-extension-plugin/skills/bmad-sprint-status}/.gitkeep +0 -0
@@ -1,235 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Tests for set-mandatory command and list --mandatory filter
4
- * Story 3.3: Mandatory Skill Designation Tooling
5
- *
6
- * Task 5.1: set-mandatory enables always_load
7
- * Task 5.2: set-mandatory --off disables always_load
8
- * Task 5.3: list --mandatory filters correctly
9
- * Task 5.4: MANIFEST.yaml reflects changes
10
- */
11
- 'use strict';
12
-
13
- const assert = require('assert');
14
- const { spawnSync } = require('child_process');
15
- const path = require('path');
16
- const fs = require('fs');
17
- const os = require('os');
18
-
19
- const CLI_PATH = path.join(__dirname, '..', 'bin', 'cli.js');
20
- const PROJECT_ROOT = path.join(__dirname, '..');
21
-
22
- let passed = 0;
23
- let failed = 0;
24
- const errors = [];
25
-
26
- function test(name, fn) {
27
- try {
28
- fn();
29
- console.log(` ✓ ${name}`);
30
- passed++;
31
- } catch (err) {
32
- console.error(` ✗ ${name}: ${err.message}`);
33
- failed++;
34
- errors.push({ name, error: err.message });
35
- }
36
- }
37
-
38
- // ─── Module imports ────────────────────────────────────────────────────────────
39
- let setMandatory;
40
- try {
41
- ({ setMandatory } = require('../lib/skill-authoring'));
42
- } catch (e) {
43
- console.error('\n FATAL: Cannot load skill-authoring module');
44
- console.error(' ', e.message);
45
- process.exit(1);
46
- }
47
-
48
- // ─── Helper: build a temporary skill with a real skill.json ──────────────────
49
- function makeTmpSkill(alwaysLoad = false, extraFields = {}) {
50
- const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), 'ma-mandatory-test-'));
51
- const skillName = 'test-mandatory-skill';
52
- const skillDir = path.join(tmpBase, skillName);
53
- fs.mkdirSync(skillDir, { recursive: true });
54
-
55
- const json = Object.assign({
56
- name: 'Test Mandatory Skill',
57
- description: 'Test skill',
58
- version: '1.0.0',
59
- category: 'workflow',
60
- author: 'ma-agents',
61
- tags: ['test'],
62
- always_load: alwaysLoad
63
- }, extraFields);
64
-
65
- fs.writeFileSync(path.join(skillDir, 'skill.json'), JSON.stringify(json, null, 2) + '\n', 'utf8');
66
- fs.writeFileSync(path.join(skillDir, 'SKILL.md'), '# Test Mandatory Skill\n', 'utf8');
67
-
68
- return { tmpBase, skillDir, skillName };
69
- }
70
-
71
- // ─── Unit tests: setMandatory() ───────────────────────────────────────────────
72
- console.log('\n setMandatory unit tests\n');
73
-
74
- // AC #1: Enable
75
- test('setMandatory: sets always_load=true in skill.json', () => {
76
- const { tmpBase, skillName } = makeTmpSkill(false);
77
- try {
78
- const result = setMandatory(skillName, true, tmpBase);
79
- assert.strictEqual(result.success, true, `Expected success, got: ${JSON.stringify(result)}`);
80
-
81
- const updated = JSON.parse(fs.readFileSync(path.join(tmpBase, skillName, 'skill.json'), 'utf8'));
82
- assert.strictEqual(updated.always_load, true, 'Expected always_load=true');
83
- } finally {
84
- fs.rmSync(tmpBase, { recursive: true, force: true });
85
- }
86
- });
87
-
88
- // AC #2: Disable
89
- test('setMandatory: sets always_load=false with enable=false', () => {
90
- const { tmpBase, skillName } = makeTmpSkill(true);
91
- try {
92
- const result = setMandatory(skillName, false, tmpBase);
93
- assert.strictEqual(result.success, true);
94
-
95
- const updated = JSON.parse(fs.readFileSync(path.join(tmpBase, skillName, 'skill.json'), 'utf8'));
96
- assert.strictEqual(updated.always_load, false, 'Expected always_load=false');
97
- } finally {
98
- fs.rmSync(tmpBase, { recursive: true, force: true });
99
- }
100
- });
101
-
102
- test('setMandatory: preserves all other fields in skill.json', () => {
103
- const { tmpBase, skillName } = makeTmpSkill(false, { custom_field: 'preserved' });
104
- try {
105
- setMandatory(skillName, true, tmpBase);
106
- const updated = JSON.parse(fs.readFileSync(path.join(tmpBase, skillName, 'skill.json'), 'utf8'));
107
- assert.strictEqual(updated.name, 'Test Mandatory Skill', 'Expected name preserved');
108
- assert.strictEqual(updated.version, '1.0.0', 'Expected version preserved');
109
- assert.deepStrictEqual(updated.tags, ['test'], 'Expected tags preserved');
110
- assert.strictEqual(updated.custom_field, 'preserved', 'Expected custom_field preserved');
111
- } finally {
112
- fs.rmSync(tmpBase, { recursive: true, force: true });
113
- }
114
- });
115
-
116
- test('setMandatory: returns error for non-existent skill', () => {
117
- const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), 'ma-mandatory-empty-'));
118
- try {
119
- const result = setMandatory('no-such-skill', true, tmpBase);
120
- assert.strictEqual(result.success, false);
121
- assert.ok(result.error.includes('not found') || result.error.includes('no-such-skill'),
122
- `Expected not-found error, got: ${result.error}`);
123
- } finally {
124
- fs.rmSync(tmpBase, { recursive: true, force: true });
125
- }
126
- });
127
-
128
- test('setMandatory: error and hint are label-free data', () => {
129
- const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), 'ma-mandatory-empty2-'));
130
- try {
131
- const result = setMandatory('no-such-skill', true, tmpBase);
132
- assert.ok(!result.error.startsWith('Error:'), 'error field should not start with "Error:"');
133
- assert.ok(!result.hint.startsWith('Hint:'), 'hint field should not start with "Hint:"');
134
- } finally {
135
- fs.rmSync(tmpBase, { recursive: true, force: true });
136
- }
137
- });
138
-
139
- // ─── CLI integration tests: set-mandatory ────────────────────────────────────
140
- console.log('\n set-mandatory CLI integration tests\n');
141
-
142
- // Use a real skill in the project's skills/ dir for CLI tests
143
- const TEST_SKILL = 'git-workflow-skill';
144
- const SKILL_JSON_PATH = path.join(PROJECT_ROOT, 'skills', TEST_SKILL, 'skill.json');
145
-
146
- // Save and restore original always_load value
147
- let originalAlwaysLoad;
148
- try {
149
- const original = JSON.parse(fs.readFileSync(SKILL_JSON_PATH, 'utf8'));
150
- originalAlwaysLoad = original.always_load;
151
- } catch (_) {
152
- originalAlwaysLoad = true;
153
- }
154
-
155
- // AC #1: Enable
156
- test('set-mandatory: sets always_load=true with exit 0', () => {
157
- const result = spawnSync('node', [CLI_PATH, 'set-mandatory', TEST_SKILL], {
158
- encoding: 'utf8', cwd: PROJECT_ROOT
159
- });
160
- assert.strictEqual(result.status, 0, `Expected exit 0. stderr: ${result.stderr}`);
161
- assert.ok(result.stdout.includes('mandatory') || result.stdout.includes('always_load'),
162
- `Expected confirmation in output: ${result.stdout}`);
163
-
164
- const updated = JSON.parse(fs.readFileSync(SKILL_JSON_PATH, 'utf8'));
165
- assert.strictEqual(updated.always_load, true, 'Expected always_load=true in skill.json');
166
- });
167
-
168
- // AC #2: Disable
169
- test('set-mandatory --off: sets always_load=false with exit 0', () => {
170
- const result = spawnSync('node', [CLI_PATH, 'set-mandatory', TEST_SKILL, '--off'], {
171
- encoding: 'utf8', cwd: PROJECT_ROOT
172
- });
173
- assert.strictEqual(result.status, 0, `Expected exit 0. stderr: ${result.stderr}`);
174
-
175
- const updated = JSON.parse(fs.readFileSync(SKILL_JSON_PATH, 'utf8'));
176
- assert.strictEqual(updated.always_load, false, 'Expected always_load=false in skill.json');
177
- });
178
-
179
- // Restore original value
180
- try {
181
- const current = JSON.parse(fs.readFileSync(SKILL_JSON_PATH, 'utf8'));
182
- current.always_load = originalAlwaysLoad;
183
- fs.writeFileSync(SKILL_JSON_PATH, JSON.stringify(current, null, 2) + '\n', 'utf8');
184
- } catch (_) {}
185
-
186
- // Missing skill name
187
- test('set-mandatory: no skill name exits 1', () => {
188
- const result = spawnSync('node', [CLI_PATH, 'set-mandatory'], {
189
- encoding: 'utf8', cwd: PROJECT_ROOT
190
- });
191
- assert.strictEqual(result.status, 1, 'Expected exit 1');
192
- });
193
-
194
- // Unknown skill
195
- test('set-mandatory: unknown skill exits 1 with error', () => {
196
- const result = spawnSync('node', [CLI_PATH, 'set-mandatory', 'no-such-skill'], {
197
- encoding: 'utf8', cwd: PROJECT_ROOT
198
- });
199
- assert.strictEqual(result.status, 1, 'Expected exit 1 for missing skill');
200
- const output = result.stdout + result.stderr;
201
- assert.ok(output.includes('Error') || output.includes('not found'), 'Expected error message');
202
- });
203
-
204
- // ─── CLI integration tests: list --mandatory ──────────────────────────────────
205
- console.log('\n list --mandatory CLI integration tests\n');
206
-
207
- // AC #3: Filter mandatory skills
208
- test('list --mandatory: exits 0', () => {
209
- const result = spawnSync('node', [CLI_PATH, 'list', '--mandatory'], {
210
- encoding: 'utf8', cwd: PROJECT_ROOT
211
- });
212
- assert.strictEqual(result.status, 0, `Expected exit 0. stderr: ${result.stderr}`);
213
- });
214
-
215
- test('list --mandatory: only shows skills with always_load=true', () => {
216
- const result = spawnSync('node', [CLI_PATH, 'list', '--mandatory'], {
217
- encoding: 'utf8', cwd: PROJECT_ROOT
218
- });
219
- // git-workflow-skill has always_load: true — should appear
220
- assert.ok(result.stdout.includes('git-workflow-skill'), 'Expected git-workflow-skill in mandatory list');
221
- });
222
-
223
- test('list --mandatory: output differs from full list', () => {
224
- const full = spawnSync('node', [CLI_PATH, 'list'], { encoding: 'utf8', cwd: PROJECT_ROOT });
225
- const filtered = spawnSync('node', [CLI_PATH, 'list', '--mandatory'], { encoding: 'utf8', cwd: PROJECT_ROOT });
226
- // Mandatory list should be shorter or equal (never longer)
227
- assert.ok(filtered.stdout.length <= full.stdout.length, 'Mandatory list should not be longer than full list');
228
- });
229
-
230
- // ─── Results ──────────────────────────────────────────────────────────────────
231
- console.log(`\n ${passed} passed, ${failed} failed\n`);
232
- if (failed > 0) {
233
- errors.forEach(e => console.error(` ✗ ${e.name}: ${e.error}`));
234
- process.exit(1);
235
- }
@@ -1,378 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Tests for validate-skill command implementation
4
- * Story 3.2: Skill Validation Command
5
- *
6
- * Task 6.1: Valid skill reports VALID
7
- * Task 6.2: Broken skill reports all errors
8
- * Task 6.3: Unknown agent template triggers warning
9
- */
10
- 'use strict';
11
-
12
- const assert = require('assert');
13
- const { spawnSync } = require('child_process');
14
- const path = require('path');
15
- const fs = require('fs');
16
- const os = require('os');
17
-
18
- const CLI_PATH = path.join(__dirname, '..', 'bin', 'cli.js');
19
- const PROJECT_ROOT = path.join(__dirname, '..');
20
-
21
- let passed = 0;
22
- let failed = 0;
23
- const errors = [];
24
-
25
- function test(name, fn) {
26
- try {
27
- fn();
28
- console.log(` ✓ ${name}`);
29
- passed++;
30
- } catch (err) {
31
- console.error(` ✗ ${name}: ${err.message}`);
32
- failed++;
33
- errors.push({ name, error: err.message });
34
- }
35
- }
36
-
37
- // ─── Module imports ────────────────────────────────────────────────────────────
38
- let validateSkill;
39
- try {
40
- ({ validateSkill } = require('../lib/skill-authoring'));
41
- } catch (e) {
42
- console.error('\n FATAL: Cannot load skill-authoring module');
43
- console.error(' ', e.message);
44
- process.exit(1);
45
- }
46
-
47
- // ─── Helper: build a temporary skill dir ─────────────────────────────────────
48
- function makeTmpSkill(fields = {}) {
49
- const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), 'ma-validate-test-'));
50
- const skillName = fields.skillName || 'test-skill';
51
- const skillDir = path.join(tmpBase, skillName);
52
- fs.mkdirSync(skillDir, { recursive: true });
53
-
54
- if (fields.skillJson !== undefined) {
55
- fs.writeFileSync(path.join(skillDir, 'skill.json'), fields.skillJson, 'utf8');
56
- } else if (fields.skillJson !== null) {
57
- // Default valid skill.json
58
- const json = Object.assign({
59
- name: 'Test Skill',
60
- description: 'A test skill',
61
- version: '1.0.0',
62
- category: 'workflow',
63
- author: 'ma-agents',
64
- tags: ['test'],
65
- always_load: false
66
- }, fields.skillJsonOverride || {});
67
- fs.writeFileSync(path.join(skillDir, 'skill.json'), JSON.stringify(json, null, 2), 'utf8');
68
- }
69
-
70
- if (fields.skillMd !== false) {
71
- fs.writeFileSync(path.join(skillDir, 'SKILL.md'), '# Test Skill\n', 'utf8');
72
- }
73
-
74
- if (fields.templates) {
75
- const templatesDir = path.join(skillDir, 'templates');
76
- fs.mkdirSync(templatesDir, { recursive: true });
77
- for (const [filename, content] of Object.entries(fields.templates)) {
78
- fs.writeFileSync(path.join(templatesDir, filename), content, 'utf8');
79
- }
80
- }
81
-
82
- return { tmpBase, skillDir, skillName };
83
- }
84
-
85
- // ─── Unit tests: validateSkill() ─────────────────────────────────────────────
86
- console.log('\n validateSkill unit tests\n');
87
-
88
- // AC #1: Valid skill
89
- test('valid skill returns valid=true with metadata', () => {
90
- const { tmpBase, skillName } = makeTmpSkill({});
91
- try {
92
- const result = validateSkill(skillName, tmpBase);
93
- assert.strictEqual(result.valid, true, `Expected valid=true, got: ${JSON.stringify(result)}`);
94
- assert.ok(Array.isArray(result.errors), 'Expected errors array');
95
- assert.strictEqual(result.errors.length, 0, `Expected no errors, got: ${JSON.stringify(result.errors)}`);
96
- assert.ok(result.metadata, 'Expected metadata object');
97
- assert.strictEqual(result.metadata.name, 'Test Skill');
98
- assert.strictEqual(result.metadata.version, '1.0.0');
99
- } finally {
100
- fs.rmSync(tmpBase, { recursive: true, force: true });
101
- }
102
- });
103
-
104
- // AC #2: Missing skill.json
105
- test('missing skill.json produces error', () => {
106
- const { tmpBase, skillName } = makeTmpSkill({ skillJson: undefined });
107
- // Remove the default skill.json by passing null-ish — need to NOT write it
108
- fs.rmSync(path.join(tmpBase, skillName, 'skill.json'), { force: true });
109
- try {
110
- const result = validateSkill(skillName, tmpBase);
111
- assert.strictEqual(result.valid, false);
112
- assert.ok(result.errors.some(e => e.includes('skill.json')), `Expected skill.json error, got: ${JSON.stringify(result.errors)}`);
113
- } finally {
114
- fs.rmSync(tmpBase, { recursive: true, force: true });
115
- }
116
- });
117
-
118
- // AC #3: Missing SKILL.md
119
- test('missing SKILL.md produces error', () => {
120
- const { tmpBase, skillName } = makeTmpSkill({ skillMd: false });
121
- try {
122
- const result = validateSkill(skillName, tmpBase);
123
- assert.strictEqual(result.valid, false);
124
- assert.ok(result.errors.some(e => e.includes('SKILL.md')), `Expected SKILL.md error, got: ${JSON.stringify(result.errors)}`);
125
- } finally {
126
- fs.rmSync(tmpBase, { recursive: true, force: true });
127
- }
128
- });
129
-
130
- // Skill not found
131
- test('non-existent skill returns error (not found)', () => {
132
- const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), 'ma-validate-empty-'));
133
- try {
134
- const result = validateSkill('no-such-skill', tmpBase);
135
- assert.strictEqual(result.valid, false);
136
- assert.ok(result.notFound, 'Expected notFound flag');
137
- } finally {
138
- fs.rmSync(tmpBase, { recursive: true, force: true });
139
- }
140
- });
141
-
142
- // AC #4: Invalid JSON
143
- test('corrupt skill.json produces error', () => {
144
- const { tmpBase, skillName } = makeTmpSkill({ skillJson: 'not valid json {{{' });
145
- try {
146
- const result = validateSkill(skillName, tmpBase);
147
- assert.strictEqual(result.valid, false);
148
- assert.ok(result.errors.some(e => e.toLowerCase().includes('json')), `Expected JSON error, got: ${JSON.stringify(result.errors)}`);
149
- } finally {
150
- fs.rmSync(tmpBase, { recursive: true, force: true });
151
- }
152
- });
153
-
154
- // AC #4: Missing required fields
155
- test('missing name field produces field error', () => {
156
- const { tmpBase, skillName } = makeTmpSkill({ skillJsonOverride: { name: '' } });
157
- try {
158
- const result = validateSkill(skillName, tmpBase);
159
- assert.strictEqual(result.valid, false);
160
- assert.ok(result.errors.some(e => e.includes('name')), `Expected name error, got: ${JSON.stringify(result.errors)}`);
161
- } finally {
162
- fs.rmSync(tmpBase, { recursive: true, force: true });
163
- }
164
- });
165
-
166
- test('missing version field produces field error', () => {
167
- const { tmpBase, skillName } = makeTmpSkill({ skillJsonOverride: { version: undefined } });
168
- // Remove version from written JSON
169
- const skillDir = path.join(tmpBase, skillName);
170
- const json = JSON.parse(fs.readFileSync(path.join(skillDir, 'skill.json'), 'utf8'));
171
- delete json.version;
172
- fs.writeFileSync(path.join(skillDir, 'skill.json'), JSON.stringify(json), 'utf8');
173
- try {
174
- const result = validateSkill(skillName, tmpBase);
175
- assert.strictEqual(result.valid, false);
176
- assert.ok(result.errors.some(e => e.includes('version')), `Expected version error, got: ${JSON.stringify(result.errors)}`);
177
- } finally {
178
- fs.rmSync(tmpBase, { recursive: true, force: true });
179
- }
180
- });
181
-
182
- test('invalid version format produces field error', () => {
183
- const { tmpBase, skillName } = makeTmpSkill({ skillJsonOverride: { version: 'v1.0' } });
184
- try {
185
- const result = validateSkill(skillName, tmpBase);
186
- assert.strictEqual(result.valid, false);
187
- assert.ok(result.errors.some(e => e.includes('version')), `Expected version error, got: ${JSON.stringify(result.errors)}`);
188
- } finally {
189
- fs.rmSync(tmpBase, { recursive: true, force: true });
190
- }
191
- });
192
-
193
- test('invalid category produces field error', () => {
194
- const { tmpBase, skillName } = makeTmpSkill({ skillJsonOverride: { category: 'invalid-cat' } });
195
- try {
196
- const result = validateSkill(skillName, tmpBase);
197
- assert.strictEqual(result.valid, false);
198
- assert.ok(result.errors.some(e => e.includes('category')), `Expected category error, got: ${JSON.stringify(result.errors)}`);
199
- } finally {
200
- fs.rmSync(tmpBase, { recursive: true, force: true });
201
- }
202
- });
203
-
204
- test('non-boolean always_load produces field error', () => {
205
- const { tmpBase, skillName } = makeTmpSkill({ skillJsonOverride: { always_load: 'yes' } });
206
- try {
207
- const result = validateSkill(skillName, tmpBase);
208
- assert.strictEqual(result.valid, false);
209
- assert.ok(result.errors.some(e => e.includes('always_load')), `Expected always_load error, got: ${JSON.stringify(result.errors)}`);
210
- } finally {
211
- fs.rmSync(tmpBase, { recursive: true, force: true });
212
- }
213
- });
214
-
215
- test('non-array tags produces field error', () => {
216
- const { tmpBase, skillName } = makeTmpSkill({ skillJsonOverride: { tags: 'not-an-array' } });
217
- try {
218
- const result = validateSkill(skillName, tmpBase);
219
- assert.strictEqual(result.valid, false);
220
- assert.ok(result.errors.some(e => e.includes('tags')), `Expected tags error, got: ${JSON.stringify(result.errors)}`);
221
- } finally {
222
- fs.rmSync(tmpBase, { recursive: true, force: true });
223
- }
224
- });
225
-
226
- // AC #5: Template validation
227
- test('valid agent template produces no warning', () => {
228
- const { tmpBase, skillName } = makeTmpSkill({
229
- templates: { 'claude-code.md': '# Template' }
230
- });
231
- try {
232
- const result = validateSkill(skillName, tmpBase);
233
- assert.strictEqual(result.valid, true, `Expected valid, got errors: ${JSON.stringify(result.errors)}`);
234
- assert.ok(!result.warnings.some(w => w.includes('claude-code')), 'Expected no warning for known agent');
235
- } finally {
236
- fs.rmSync(tmpBase, { recursive: true, force: true });
237
- }
238
- });
239
-
240
- test('unknown agent template produces warning', () => {
241
- const { tmpBase, skillName } = makeTmpSkill({
242
- templates: { 'unknown-agent.md': '# Template' }
243
- });
244
- try {
245
- const result = validateSkill(skillName, tmpBase);
246
- assert.ok(Array.isArray(result.warnings), 'Expected warnings array');
247
- assert.ok(result.warnings.some(w => w.includes('unknown-agent')), `Expected unknown-agent warning, got: ${JSON.stringify(result.warnings)}`);
248
- } finally {
249
- fs.rmSync(tmpBase, { recursive: true, force: true });
250
- }
251
- });
252
-
253
- test('unknown agent template does not make skill invalid', () => {
254
- const { tmpBase, skillName } = makeTmpSkill({
255
- templates: { 'unknown-agent.md': '# Template' }
256
- });
257
- try {
258
- const result = validateSkill(skillName, tmpBase);
259
- assert.strictEqual(result.valid, true, 'Warnings should not make skill invalid');
260
- } finally {
261
- fs.rmSync(tmpBase, { recursive: true, force: true });
262
- }
263
- });
264
-
265
- // ─── CLI integration tests ─────────────────────────────────────────────────────
266
- console.log('\n validate-skill CLI integration tests\n');
267
-
268
- // Task 6.1: Valid skill
269
- test('validate-skill: git-workflow-skill reports VALID with exit 0', () => {
270
- const result = spawnSync('node', [CLI_PATH, 'validate-skill', 'git-workflow-skill'], {
271
- encoding: 'utf8', cwd: PROJECT_ROOT
272
- });
273
- assert.strictEqual(result.status, 0, `Expected exit 0. stderr: ${result.stderr}`);
274
- assert.ok(result.stdout.includes('VALID'), `Expected VALID in output: ${result.stdout}`);
275
- });
276
-
277
- test('validate-skill: valid skill prints metadata summary', () => {
278
- const result = spawnSync('node', [CLI_PATH, 'validate-skill', 'git-workflow-skill'], {
279
- encoding: 'utf8', cwd: PROJECT_ROOT
280
- });
281
- assert.ok(result.stdout.includes('Version'), 'Expected Version in output');
282
- assert.ok(result.stdout.includes('Category') || result.stdout.includes('Name'), 'Expected metadata fields');
283
- });
284
-
285
- // Non-existent skill
286
- test('validate-skill: unknown skill exits 1 with error', () => {
287
- const result = spawnSync('node', [CLI_PATH, 'validate-skill', 'no-such-skill'], {
288
- encoding: 'utf8', cwd: PROJECT_ROOT
289
- });
290
- assert.strictEqual(result.status, 1, 'Expected exit 1 for missing skill');
291
- const output = result.stdout + result.stderr;
292
- assert.ok(output.includes('not found') || output.includes('Error'), 'Expected not-found error');
293
- });
294
-
295
- // Task 6.2: Broken skill — create deliberately invalid skill, validate, cleanup
296
- test('validate-skill: INVALID skill exits 1', () => {
297
- const brokenSkill = 'broken-test-skill';
298
- const brokenDir = path.join(PROJECT_ROOT, 'skills', brokenSkill);
299
- try {
300
- fs.mkdirSync(brokenDir, { recursive: true });
301
- // Deliberately invalid: missing SKILL.md, bad skill.json
302
- fs.writeFileSync(path.join(brokenDir, 'skill.json'), JSON.stringify({
303
- name: '',
304
- version: 'bad-version',
305
- category: 'invalid-cat'
306
- }), 'utf8');
307
-
308
- const result = spawnSync('node', [CLI_PATH, 'validate-skill', brokenSkill], {
309
- encoding: 'utf8', cwd: PROJECT_ROOT
310
- });
311
- assert.strictEqual(result.status, 1, `Expected exit 1. stdout: ${result.stdout}`);
312
- assert.ok(result.stdout.includes('INVALID'), `Expected INVALID in output: ${result.stdout}`);
313
- } finally {
314
- fs.rmSync(brokenDir, { recursive: true, force: true });
315
- }
316
- });
317
-
318
- test('validate-skill: INVALID output lists individual field errors', () => {
319
- const brokenSkill = 'broken-test-skill2';
320
- const brokenDir = path.join(PROJECT_ROOT, 'skills', brokenSkill);
321
- try {
322
- fs.mkdirSync(brokenDir, { recursive: true });
323
- fs.writeFileSync(path.join(brokenDir, 'skill.json'), JSON.stringify({
324
- name: '',
325
- version: 'bad',
326
- category: 'invalid-cat'
327
- }), 'utf8');
328
-
329
- const result = spawnSync('node', [CLI_PATH, 'validate-skill', brokenSkill], {
330
- encoding: 'utf8', cwd: PROJECT_ROOT
331
- });
332
- assert.ok(result.stdout.includes('name'), `Expected name error in output: ${result.stdout}`);
333
- assert.ok(result.stdout.includes('version'), `Expected version error in output: ${result.stdout}`);
334
- assert.ok(result.stdout.includes('category'), `Expected category error in output: ${result.stdout}`);
335
- } finally {
336
- fs.rmSync(brokenDir, { recursive: true, force: true });
337
- }
338
- });
339
-
340
- // Task 6.3: Unknown agent template warning
341
- test('validate-skill: warns about unknown agent template', () => {
342
- const warnSkill = 'warn-template-skill';
343
- const warnDir = path.join(PROJECT_ROOT, 'skills', warnSkill);
344
- try {
345
- fs.mkdirSync(path.join(warnDir, 'templates'), { recursive: true });
346
- fs.writeFileSync(path.join(warnDir, 'skill.json'), JSON.stringify({
347
- name: 'Warn Skill', description: 'test', version: '1.0.0'
348
- }), 'utf8');
349
- fs.writeFileSync(path.join(warnDir, 'SKILL.md'), '# Warn Skill\n', 'utf8');
350
- fs.writeFileSync(path.join(warnDir, 'templates', 'unknown-agent.md'), '# Template\n', 'utf8');
351
-
352
- const result = spawnSync('node', [CLI_PATH, 'validate-skill', warnSkill], {
353
- encoding: 'utf8', cwd: PROJECT_ROOT
354
- });
355
- assert.strictEqual(result.status, 0, `Expected exit 0 (warnings don't fail). stderr: ${result.stderr}`);
356
- assert.ok(
357
- result.stdout.includes('unknown-agent') || result.stdout.includes('Warning'),
358
- `Expected warning about unknown-agent: ${result.stdout}`
359
- );
360
- } finally {
361
- fs.rmSync(warnDir, { recursive: true, force: true });
362
- }
363
- });
364
-
365
- // No skill name provided
366
- test('validate-skill: no skill name exits 1 with usage hint', () => {
367
- const result = spawnSync('node', [CLI_PATH, 'validate-skill'], {
368
- encoding: 'utf8', cwd: PROJECT_ROOT
369
- });
370
- assert.strictEqual(result.status, 1, 'Expected exit 1 for missing skill name');
371
- });
372
-
373
- // ─── Results ──────────────────────────────────────────────────────────────────
374
- console.log(`\n ${passed} passed, ${failed} failed\n`);
375
- if (failed > 0) {
376
- errors.forEach(e => console.error(` ✗ ${e.name}: ${e.error}`));
377
- process.exit(1);
378
- }