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
@@ -58,6 +58,8 @@ scripts/
58
58
 
59
59
  ```typescript
60
60
  // vitest.config.pact.ts
61
+ // See pact-consumer-framework-setup.md Example 2 "Key Points" for rationale on
62
+ // fileParallelism + pool:forks + singleFork. Do not remove those three settings.
61
63
  import { defineConfig } from 'vitest/config';
62
64
 
63
65
  export default defineConfig({
@@ -65,13 +67,20 @@ export default defineConfig({
65
67
  environment: 'node',
66
68
  include: ['tests/contract/**/*.pacttest.ts'],
67
69
  testTimeout: 30000,
70
+ fileParallelism: false,
71
+ pool: 'forks',
72
+ poolOptions: { forks: { singleFork: true } },
68
73
  },
69
74
  });
70
75
  ```
71
76
 
72
77
  **Key Points**:
73
78
 
74
- - Do NOT add `pool`, `poolOptions`, `setupFiles`, `coverage`, or other settings from the unit test config
79
+ - **`fileParallelism: false` is required** primary defense against non-deterministic pact generation. Without it, parallel workers race on the shared pact JSON file and corrupt interactions. Symptom: local runs pass, CI randomly fails with `Cannot change pact content for already published pact`. See Example 10 for the determinism gate that enforces byte-stability across re-runs.
80
+ - **`pool: 'forks'` + `singleFork: true` is required for multi-file consumer suites** — same config the provider side uses (`pactjs-utils-provider-verifier.md` Example 7). Best current understanding: the `@pact-foundation/pact` napi-rs binding is not robust across Vitest worker threads sharing a process; with the default threads pool (Vitest v1) and multiple `.pacttest.ts` files on the same consumer+provider pair, we observed reproducible "request was expected but not received" flakes on Linux CI only. `singleFork: true` serializes every pact file into one forked subprocess and eliminated the flake on two repos (`pactjs-utils`, `seon-mcp-server`). Vitest v2+ defaults to `forks`, but set the pool explicitly so the contract does not drift with Vitest version bumps.
81
+ - **Single-file consumer suites** (one `.pacttest.ts` per consumer+provider pair) have not been observed to flake under default threads pool, because FFI state is not shared across files when there is only one file. Adding `pool: 'forks'` is still recommended — it future-proofs you the moment a second file is added — but a suite passing today with only `fileParallelism: false` is not broken.
82
+ - **Interacting settings**: leave `isolate` at its default (`true`). Do NOT set `sequence.concurrent: true`, `maxConcurrency > 1`, or `maxWorkers > 1` in this config — they defeat the serialization this rule relies on. `hookTimeout` may be raised if mock-server startup is slow, but keep `testTimeout` ≥ `hookTimeout`.
83
+ - Do NOT add `setupFiles`, `coverage`, or other settings from the unit test config
75
84
  - Keep it minimal — Pact tests run in Node environment with extended timeout
76
85
  - 30 second timeout accommodates Pact mock server startup and interaction verification
77
86
  - Use a dedicated config file (`vitest.config.pact.ts`), not the main vitest config
@@ -87,7 +96,8 @@ export default defineConfig({
87
96
  ```json
88
97
  {
89
98
  "scripts": {
90
- "test:pact:consumer": "vitest run --config vitest.config.pact.ts",
99
+ "test:pact:consumer": "./scripts/check-pact-determinism.sh 'npm run test:pact:consumer:run' 3 ./pacts",
100
+ "test:pact:consumer:run": "vitest run --config vitest.config.pact.ts",
91
101
  "publish:pact": ". ./scripts/env-setup.sh && ./scripts/publish-pact.sh",
92
102
  "can:i:deploy:consumer": ". ./scripts/env-setup.sh && PACTICIPANT=<service-name> ./scripts/can-i-deploy.sh",
93
103
  "record:consumer:deployment": ". ./scripts/env-setup.sh && PACTICIPANT=<service-name> ./scripts/record-deployment.sh"
@@ -99,6 +109,8 @@ Replace `<service-name>` with the consumer's pacticipant name (e.g., `my-fronten
99
109
 
100
110
  **Key Points**:
101
111
 
112
+ - **`test:pact:consumer` IS the determinism gate** — it runs the inner command 3× and fails if pact output is not byte-stable. This is the command CI and developers run before pushing. See Example 10 for the `check-pact-determinism.sh` script itself.
113
+ - **`test:pact:consumer:run` is the fast inner command** for TDD loops (a single pass of the suite, no gate). Developers can iterate with this; CI always goes through the outer gated script.
102
114
  - Use colon-separated naming: `test:pact:consumer`, NOT `test:contract` or `test:contract:consumer`
103
115
  - Broker scripts source `env-setup.sh` inline in package.json (`. ./scripts/env-setup.sh && ...`)
104
116
  - `PACTICIPANT` is set per-script invocation, not globally
@@ -127,13 +139,19 @@ export GITHUB_SHA="${GITHUB_SHA:-$(git rev-parse --short HEAD)}"
127
139
  export GITHUB_BRANCH="${GITHUB_BRANCH:-$(git rev-parse --abbrev-ref HEAD)}"
128
140
  ```
129
141
 
130
- #### `scripts/publish-pact.sh` — Publish Pacts to Broker
142
+ #### `scripts/publish-pact.sh` — Publish Pacts to Broker (with defense-in-depth normalization)
131
143
 
132
144
  ```bash
133
145
  #!/bin/bash
134
- # Publish generated pact files to PactFlow/Pact Broker
146
+ # Publish generated pact files to PactFlow/Pact Broker.
135
147
  #
136
- # Requires: PACT_BROKER_BASE_URL, PACT_BROKER_TOKEN, GITHUB_SHA, GITHUB_BRANCH
148
+ # Before publish, normalize each pact JSON: sort interactions by (description, provider state name,
149
+ # method, path) and sort object keys via `jq -S`. This gives byte-stable output to the broker even
150
+ # if the PactV4 generator produces ordering drift between runs. Paired with scripts/check-pact-determinism.sh
151
+ # as defense-in-depth — the gate catches drift pre-publish; normalization ensures "Cannot change pact
152
+ # content" from PactFlow never fires on ordering-only changes that slip past the gate.
153
+ #
154
+ # Requires: PACT_BROKER_BASE_URL, PACT_BROKER_TOKEN, GITHUB_SHA, GITHUB_BRANCH, jq
137
155
  # -e: exit on error -u: error on undefined vars -o pipefail: fail if any pipe segment fails
138
156
  set -euo pipefail
139
157
 
@@ -141,6 +159,14 @@ set -euo pipefail
141
159
 
142
160
  PACT_DIR="./pacts"
143
161
 
162
+ # Defense-in-depth: normalize interaction order for byte-stable publishes.
163
+ for f in "$PACT_DIR"/*.json; do
164
+ tmp="$(mktemp)"
165
+ jq -S '.interactions |= sort_by(.description, (.providerStates[0].name // ""), .request.method, .request.path)' \
166
+ "$f" > "$tmp"
167
+ mv "$tmp" "$f"
168
+ done
169
+
144
170
  pact-broker publish "$PACT_DIR" \
145
171
  --consumer-app-version="$GITHUB_SHA" \
146
172
  --branch="$GITHUB_BRANCH" \
@@ -203,6 +229,7 @@ fi
203
229
  - Use `PACTICIPANT` env var (required via `${PACTICIPANT:?...}`), not hardcoded service names
204
230
  - `can-i-deploy` includes `--retry-while-unknown=10 --retry-interval=30` (waits for provider verification)
205
231
  - `record-deployment` has branch guard (only records on main/master)
232
+ - **`publish-pact.sh` normalizes interactions with `jq -S` + `sort_by(...)` before publishing** — defense-in-depth alongside the determinism gate (Example 10). The gate catches drift; normalization ensures byte-stable payload to the broker regardless of generator quirks. Keep both; they protect against different failure modes.
206
233
  - Do NOT invent custom env vars like `PACT_CONSUMER_VERSION` or `PACT_BREAKING_CHANGE` in scripts — those are handled by `env-setup.sh` and the CI detect-breaking-change action respectively
207
234
 
208
235
  ---
@@ -249,11 +276,11 @@ jobs:
249
276
  - name: Install dependencies
250
277
  run: npm ci
251
278
 
252
- # (1) Generate pact files
253
- - name: Run consumer contract tests
279
+ # (1) Generate pact files — runs the determinism gate (3 runs + byte-stable check via jq)
280
+ - name: Consumer pact tests (determinism gate)
254
281
  run: npm run test:pact:consumer
255
282
 
256
- # (2) Publish pacts to broker
283
+ # (2) Publish pacts to broker (publish-pact.sh also normalizes interaction order as defense-in-depth)
257
284
  - name: Publish pacts to PactFlow
258
285
  run: npm run publish:pact
259
286
 
@@ -274,6 +301,8 @@ jobs:
274
301
 
275
302
  **Key Points**:
276
303
 
304
+ - **1:1 local/CI parity is a hard rule**: every CI step is `npm run <same-name-a-dev-uses>`. Never let CI invoke `vitest` or `pact-broker` directly — that divergence is how "works on my machine" slips in. The determinism gate, publish, can-i-deploy, and record-deployment are all the same commands a developer runs locally.
305
+ - **The determinism gate is its own visible step, not a side-effect of publish.** A failing gate must be debuggable from the CI log without re-running. Do not fold it into a `prepublish:pact` hook — folding hides the failure inside a publish log and makes attribution harder.
277
306
  - **Workflow-level `env` block** for broker secrets and git vars — not per-step
278
307
  - **`detect-breaking-change` step** runs before install to set `PACT_BREAKING_CHANGE` env var
279
308
  - **Step numbering skips (3)** — step 3 is the webhook-triggered provider verification (happens externally)
@@ -596,12 +625,102 @@ pact-logs/
596
625
 
597
626
  ---
598
627
 
628
+ ### Example 10: Determinism Gate Script (Primary Defense)
629
+
630
+ **Context**: Even with `fileParallelism: false` (Example 2) and one-interaction-per-`it()` (see `pactjs-utils-consumer-helpers.md`), the PactV4 Rust FFI layer can occasionally produce byte-different pact JSON between runs — interaction ordering drift, nested matcher serialization quirks, or `Date` / random-value matchers that weren't locked down. This causes PactFlow to reject re-publishes of the same consumer SHA with `Cannot change pact content for already published pact`. The determinism gate runs the consumer suite N times locally and in CI, hashes the normalized pact files, and fails fast if drift is detected — before any publish is attempted.
631
+
632
+ **Implementation**:
633
+
634
+ #### `scripts/check-pact-determinism.sh`
635
+
636
+ ```bash
637
+ #!/bin/bash
638
+ # Run a pact consumer command N times and fail if the generated pact files are not byte-stable.
639
+ # Primary defense against PactV4 non-deterministic output.
640
+ #
641
+ # Usage: ./scripts/check-pact-determinism.sh "<cmd>" [runs] [pact-dir]
642
+ # Example: ./scripts/check-pact-determinism.sh 'npm run test:pact:consumer:run' 3 ./pacts
643
+ #
644
+ # Requires: jq installed on the runner (ubuntu-latest has it; macOS users need `brew install jq`).
645
+ set -euo pipefail
646
+
647
+ CMD="${1:?usage: ./scripts/check-pact-determinism.sh \"<cmd>\" [runs] [pact-dir]}"
648
+ RUNS="${PACT_DETERMINISM_RUNS:-${2:-3}}"
649
+ PACT_DIR="${3:-./pacts}"
650
+
651
+ TMP_DIR="$(mktemp -d)"
652
+ trap 'rm -rf "$TMP_DIR"' EXIT
653
+
654
+ hash_pact_file() {
655
+ # Sort interactions by (description, first provider state name, method, path), sort keys with -S.
656
+ # The sorted output is what we hash — so ordering-only drift does NOT count as non-determinism here.
657
+ # (The gate catches deeper drift; ordering drift is handled by publish-pact.sh normalization.)
658
+ jq -S '.interactions |= sort_by(.description, (.providerStates[0].name // ""), .request.method, .request.path)' "$1" \
659
+ | shasum -a 256 | awk '{print $1}'
660
+ }
661
+
662
+ for run in $(seq 1 "$RUNS"); do
663
+ echo "→ determinism run $run/$RUNS"
664
+ rm -f "$PACT_DIR"/*.json 2>/dev/null || true
665
+ eval "$CMD" >"$TMP_DIR/run-$run.log" 2>&1 || {
666
+ echo "❌ run $run failed — dumping log:"
667
+ cat "$TMP_DIR/run-$run.log"
668
+ exit 1
669
+ }
670
+ : > "$TMP_DIR/run-$run.hashes"
671
+ for f in "$PACT_DIR"/*.json; do
672
+ [ -f "$f" ] || continue
673
+ printf '%s %s\n' "$(hash_pact_file "$f")" "$(basename "$f")" >> "$TMP_DIR/run-$run.hashes"
674
+ done
675
+ sort -o "$TMP_DIR/run-$run.hashes" "$TMP_DIR/run-$run.hashes"
676
+ done
677
+
678
+ # Compare every subsequent run against run 1.
679
+ FAIL=0
680
+ for run in $(seq 2 "$RUNS"); do
681
+ if ! diff -q "$TMP_DIR/run-1.hashes" "$TMP_DIR/run-$run.hashes" >/dev/null; then
682
+ FAIL=1
683
+ echo ""
684
+ echo "❌ Pact output differs between run 1 and run $run:"
685
+ diff "$TMP_DIR/run-1.hashes" "$TMP_DIR/run-$run.hashes" || true
686
+ fi
687
+ done
688
+
689
+ if [ "$FAIL" -ne 0 ]; then
690
+ echo ""
691
+ echo "Pact output is non-deterministic across $RUNS runs. Likely causes:"
692
+ echo " • multiple .addInteraction() chained in a single it() block (PactV4 FFI drops one non-deterministically)"
693
+ echo " • fileParallelism: true in vitest.config.pact.ts (workers race on shared pact JSON)"
694
+ echo " • missing pool: 'forks' + singleFork: true (threads pool shares FFI state across files on Linux CI)"
695
+ echo " • Date / random matchers that don't lock a stable example value"
696
+ echo " • provider state params mutating between runs (e.g. Date.now())"
697
+ exit 1
698
+ fi
699
+
700
+ echo "✅ Pact output is byte-stable across $RUNS runs."
701
+ ```
702
+
703
+ **Key Points**:
704
+
705
+ - **Wire this script into `test:pact:consumer`** (see Example 3). The outer script IS the gate; the inner `test:pact:consumer:run` is the single-pass command for TDD loops.
706
+ - **Default 3 runs** is the sweet spot — 2 runs miss intermittent drops, >3 slows CI without catching more. Override with an env var or the positional arg if you're actively debugging a flake.
707
+ - **Treat gate failures as a P0 bug, not a "retry until green" condition.** Find the source of non-determinism (chained `addInteraction`, unsorted interactions, Date-dependent matchers). Do not raise `RUNS` to 10 to mask the symptom.
708
+ - **Requires `jq`** — installed by default on `ubuntu-latest`. For macOS local dev, document `brew install jq` in the project README.
709
+ - **In CI, make this its own visible step** (see Example 5 step (1) naming). Do not fold into a `prepublish:pact` hook — that hides the failure inside a publish log.
710
+ - **Defense-in-depth with `publish-pact.sh` normalization** (Example 4): the gate catches pre-publish drift; the publish-time `jq` sort ensures any ordering-only drift that slipped past the gate still produces a byte-stable payload to PactFlow.
711
+
712
+ ---
713
+
599
714
  ## Validation Checklist
600
715
 
601
716
  Before presenting the consumer CDC framework to the user, verify:
602
717
 
603
- - [ ] `vitest.config.pact.ts` is minimal (no pool/coverage/setup copied from unit config)
604
- - [ ] Script names match pactjs-utils (`test:pact:consumer`, `publish:pact`, `can:i:deploy:consumer`, `record:consumer:deployment`)
718
+ - [ ] `vitest.config.pact.ts` is minimal **and sets `fileParallelism: false` AND `pool: 'forks'` with `poolOptions.forks.singleFork: true`** (`fileParallelism: false` prevents shared pact JSON corruption from parallel workers; forks + `singleFork: true` eliminates the Linux-CI "request was expected but not received" flake observed once a second `.pacttest.ts` is added — see Example 2 Key Points for evidence, mechanism qualifier, and single-file exception)
719
+ - [ ] `vitest.config.pact.ts` does NOT set `sequence.concurrent: true`, `maxConcurrency > 1`, `maxWorkers > 1`, or `isolate: false` — all four defeat the serialization the rule relies on
720
+ - [ ] `package.json` splits `test:pact:consumer` (gated determinism runner) and `test:pact:consumer:run` (inner single-pass command)
721
+ - [ ] `scripts/check-pact-determinism.sh` is present, hashes via `jq -S` + `sort_by`, defaults to 3 runs, and is the body of the `test:pact:consumer` script
722
+ - [ ] `scripts/publish-pact.sh` normalizes interactions with `jq -S '.interactions |= sort_by(.description, (.providerStates[0].name // ""), .request.method, .request.path)'` before the `pact-broker publish` call (defense-in-depth alongside the gate)
723
+ - [ ] Script names match pactjs-utils (`test:pact:consumer`, `test:pact:consumer:run`, `publish:pact`, `can:i:deploy:consumer`, `record:consumer:deployment`)
605
724
  - [ ] Scripts source `env-setup.sh` inline in package.json
606
725
  - [ ] Shell scripts use `pact-broker` not `npx pact-broker`
607
726
  - [ ] Shell scripts use `PACTICIPANT` env var pattern
@@ -611,6 +730,8 @@ Before presenting the consumer CDC framework to the user, verify:
611
730
  - [ ] CI workflow named `contract-test-consumer.yml`
612
731
  - [ ] CI has workflow-level env block (not per-step)
613
732
  - [ ] CI has `detect-breaking-change` step before install
733
+ - [ ] CI step (1) is the determinism gate (calls `npm run test:pact:consumer`) — its own visible step, not folded into publish
734
+ - [ ] CI steps are 1:1 with developer commands — every CI step calls `npm run <same-name>` a dev would run locally (no direct `vitest` or `pact-broker` invocation)
614
735
  - [ ] CI step numbering skips (3) — webhook-triggered provider verification
615
736
  - [ ] CI can-i-deploy has `PACT_BREAKING_CHANGE != 'true'` condition
616
737
  - [ ] CI has NO upload-artifact step
@@ -629,7 +750,8 @@ Before presenting the consumer CDC framework to the user, verify:
629
750
  ## Related Fragments
630
751
 
631
752
  - `pactjs-utils-overview.md` — Library decision tree and installation
632
- - `pactjs-utils-consumer-helpers.md` — `createProviderState`, `toJsonMap`, `setJsonContent`, and `setJsonBody` API details
633
- - `pactjs-utils-provider-verifier.md` — Provider-side verification patterns
753
+ - `pactjs-utils-consumer-helpers.md` — `createProviderState`, `toJsonMap`, `setJsonContent`, `setJsonBody`, **one-interaction-per-`it()` rule**
754
+ - `pactjs-utils-provider-verifier.md` — Provider-side verification patterns; consumer and provider BOTH require `pool: 'forks'` + `singleFork: true` — same FFI-safety rule applies on both sides
634
755
  - `pactjs-utils-request-filter.md` — Auth injection for provider verification
756
+ - `pact-broker-webhooks.md` — PactFlow → GitHub webhook auth pattern (dedicated user, classic PAT, PactFlow secret) and staleness monitoring
635
757
  - `contract-testing.md` — Foundational CDC patterns and resilience coverage
@@ -180,6 +180,7 @@ During CI workflow design, reference the can-i-deploy tool:
180
180
 
181
181
  - `pactjs-utils-overview.md` — runtime utilities that pact tests import
182
182
  - `pactjs-utils-provider-verifier.md` — verifier options that reference broker config
183
+ - `pact-broker-webhooks.md` — PactFlow → GitHub webhook auth pattern and staleness monitoring; `Metrics - All` / `Matrix` MCP tools are useful here for dashboards
183
184
  - `contract-testing.md` — foundational contract testing patterns
184
185
 
185
186
  ## Anti-Patterns
@@ -185,6 +185,86 @@ await pact
185
185
  - Use `setJsonBody` when you only need `jsonBody` and want the shorter `.willRespondWith(status, setJsonBody(...))` form
186
186
  - `setJsonBody` is equivalent to `setJsonContent({ body: ... })`
187
187
 
188
+ ### Example 6: One `addInteraction()` per `it()` Block (PactV4 Determinism Rule)
189
+
190
+ **Context**: PactV4's `pact.addInteraction()` feeds the Rust FFI layer that writes interactions to the pact JSON. Chaining multiple `.addInteraction()...executeTest()` blocks inside a single `it()` — or otherwise registering multiple interactions before a single `executeTest` — causes the FFI to **non-deterministically drop whole interactions** (not individual fields) in roughly 1 out of N runs. The pattern passes locally, then fails intermittently in CI or at publish time with `Cannot change pact content for already published pact` once the dropped interaction reappears on a re-run.
191
+
192
+ **Rule**: Exactly one `pact.addInteraction()` per `it()` block. For N interactions, write N `it()` blocks, or use `it.each(...)`.
193
+
194
+ ```typescript
195
+ // ❌ WRONG — two addInteraction() inside one it() — FFI non-deterministically drops one
196
+ it('handles movie lookup scenarios', async () => {
197
+ await pact
198
+ .addInteraction()
199
+ .given('movie exists')
200
+ .uponReceiving('a request to get movie by id')
201
+ .withRequest('GET', '/movies/1')
202
+ .willRespondWith(200, setJsonBody({ id: integer(1), name: string('The Matrix') }))
203
+ .executeTest(async (mockServer) => {
204
+ /* ... */
205
+ });
206
+
207
+ // Sometimes this second interaction never makes it to the pact JSON:
208
+ await pact
209
+ .addInteraction()
210
+ .given('no movies exist')
211
+ .uponReceiving('a request for an empty list')
212
+ .withRequest('GET', '/movies')
213
+ .willRespondWith(200, setJsonBody([]))
214
+ .executeTest(async (mockServer) => {
215
+ /* ... */
216
+ });
217
+ });
218
+
219
+ // ✅ RIGHT — one addInteraction() per it()
220
+ it('gets a movie by id', async () => {
221
+ await pact
222
+ .addInteraction()
223
+ .given('movie exists')
224
+ .uponReceiving('a request to get movie by id')
225
+ .withRequest('GET', '/movies/1')
226
+ .willRespondWith(200, setJsonBody({ id: integer(1), name: string('The Matrix') }))
227
+ .executeTest(async (mockServer) => {
228
+ /* ... */
229
+ });
230
+ });
231
+
232
+ it('returns empty list when no movies exist', async () => {
233
+ await pact
234
+ .addInteraction()
235
+ .given('no movies exist')
236
+ .uponReceiving('a request for an empty list')
237
+ .withRequest('GET', '/movies')
238
+ .willRespondWith(200, setJsonBody([]))
239
+ .executeTest(async (mockServer) => {
240
+ /* ... */
241
+ });
242
+ });
243
+
244
+ // ✅ RIGHT — parameterized via it.each for data-driven coverage
245
+ it.each([
246
+ { id: 1, name: 'The Matrix' },
247
+ { id: 2, name: 'Inception' },
248
+ ])('gets movie $id', async ({ id, name }) => {
249
+ await pact
250
+ .addInteraction()
251
+ .given('movie exists', { id, name })
252
+ .uponReceiving(`a request to get movie ${id}`)
253
+ .withRequest('GET', `/movies/${id}`)
254
+ .willRespondWith(200, setJsonBody({ id: integer(id), name: string(name) }))
255
+ .executeTest(async (mockServer) => {
256
+ /* ... */
257
+ });
258
+ });
259
+ ```
260
+
261
+ **Key Points**:
262
+
263
+ - **This rule stacks with two other MANDATORY vitest settings**: `fileParallelism: false` AND `pool: 'forks'` with `poolOptions.forks.singleFork: true`. All three are required and address different failure modes — `fileParallelism: false` prevents parallel workers from racing on the shared pact JSON; `pool: 'forks'` + `singleFork: true` prevents the Pact Rust FFI from leaking state across files (manifests as "request was expected but not received" flakes on Linux CI only); one-interaction-per-`it()` prevents the FFI from dropping interactions within a single test body.
264
+ - Symptom of violating this rule: the pact file is byte-different between otherwise-identical runs; `scripts/check-pact-determinism.sh` flags drift; PactFlow rejects a republish with `Cannot change pact content`.
265
+ - The rule applies to both HTTP consumer pacts (`PactV4`) and message consumer pacts (`MessageConsumerPact`).
266
+ - See `pact-consumer-framework-setup.md` Example 10 for the determinism gate that automatically catches violations of this rule.
267
+
188
268
  ## Key Points
189
269
 
190
270
  - **Spread pattern**: Always use `...createProviderState()` — the tuple spreads into `.given(stateName, params)`
@@ -198,11 +278,13 @@ await pact
198
278
  - **Body shorthand**: `setJsonBody` keeps body-only responses concise and readable
199
279
  - **Matchers check type, not value**: `string('My movie')` means "any string", `integer(1)` means "any integer". The example values are arbitrary — the provider can return different values and verification still passes as long as the type matches. Use matchers only in `.willRespondWith()` (responses), never in `.withRequest()` (requests) — Postel's Law applies.
200
280
  - **Reuse test values across files**: Interactions are uniquely identified by `uponReceiving` + `.given()`, not by placeholder values. Two test files can both use `testId: 100` without conflicting. On the provider side, shared values simplify state handlers — idempotent handlers (check if exists, create if not) only need to ensure one record exists. Use different values only when testing different states of the same entity type (e.g., `movieExists(100)` for happy paths vs. `movieNotFound(999)` for error paths).
281
+ - **One `addInteraction()` per `it()` block (MANDATORY for PactV4)**: Multiple interactions inside one `it()` cause the Rust FFI to non-deterministically drop interactions. Use one `it()` per interaction or `it.each(...)` for parameterized cases. See Example 6 and the determinism gate in `pact-consumer-framework-setup.md` Example 10.
201
282
 
202
283
  ## Related Fragments
203
284
 
204
285
  - `pactjs-utils-overview.md` — installation, decision tree, design philosophy
205
- - `pactjs-utils-provider-verifier.md` — provider-side state handler implementation
286
+ - `pactjs-utils-provider-verifier.md` — provider-side state handler implementation; same `pool: 'forks'` + `singleFork: true` rule as consumer
287
+ - `pact-consumer-framework-setup.md` — Vitest `fileParallelism: false` + `pool: 'forks'` + `singleFork: true` config, determinism gate (Example 10), and CI wiring
206
288
  - `contract-testing.md` — foundational patterns with raw Pact.js
207
289
 
208
290
  ## Anti-Patterns
@@ -267,4 +349,32 @@ provider.given(...createProviderState({ name: STATES.USER_EXISTS, params: { id:
267
349
  .willRespondWith(200, setJsonBody({ status: 200 }));
268
350
  ```
269
351
 
352
+ ### Wrong: Multiple `addInteraction()` in a single `it()`
353
+
354
+ ```typescript
355
+ // ❌ PactV4 FFI non-deterministically drops one of these interactions ~1/N runs
356
+ it('handles both success and empty list', async () => {
357
+ await pact.addInteraction().uponReceiving('get movie').withRequest(/* ... */).executeTest(/* ... */);
358
+ await pact.addInteraction().uponReceiving('empty list').withRequest(/* ... */).executeTest(/* ... */);
359
+ });
360
+ ```
361
+
362
+ ### Right: One `addInteraction()` per `it()` (or use `it.each`)
363
+
364
+ ```typescript
365
+ // ✅ Deterministic pact JSON — FFI receives one interaction per test
366
+ it('gets a movie', async () => {
367
+ await pact
368
+ .addInteraction() /* ... */
369
+ .executeTest(/* ... */);
370
+ });
371
+ it('returns empty list', async () => {
372
+ await pact
373
+ .addInteraction() /* ... */
374
+ .executeTest(/* ... */);
375
+ });
376
+ ```
377
+
378
+ See Example 6 above for the full rationale and the determinism gate that enforces this rule.
379
+
270
380
  _Source: @seontechnologies/pactjs-utils consumer-helpers module, pactjs-utils sample-app consumer tests_
@@ -28,6 +28,7 @@ Use production-ready utilities from `@seontechnologies/pactjs-utils` to eliminat
28
28
  - **`getProviderVersionTags`**: CI-aware version tagging (extracts branch/tag from GitHub Actions, GitLab CI, etc.)
29
29
  - **`createRequestFilter`**: Pluggable token generator pattern — prevents double-Bearer bugs by contract
30
30
  - **`noOpRequestFilter`**: Pass-through for providers that don't require auth injection
31
+ - **`zodToPactMatchers`**: Converts a Zod schema (+ optional example values or `.openapi({ example })` metadata) into Pact V3 matchers — single source of truth for response shape, no hand-written matcher helpers
31
32
 
32
33
  ## Installation
33
34
 
@@ -42,18 +43,19 @@ npm install -D @pact-foundation/pact
42
43
 
43
44
  ## Available Utilities
44
45
 
45
- | Category | Function | Description | Use Case |
46
- | ----------------- | --------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------- |
47
- | Consumer Helpers | `createProviderState` | Builds `[stateName, JsonMap]` tuple from typed input | Consumer tests: `.given(...createProviderState(input))` |
48
- | Consumer Helpers | `toJsonMap` | Converts any object to Pact-compatible `JsonMap` | Explicit type coercion for provider state params |
49
- | Consumer Helpers | `setJsonContent` | Curried request/response JSON callback helper | PactV4 `.withRequest(...)` and `.willRespondWith(...)` builders |
50
- | Consumer Helpers | `setJsonBody` | Body-only alias of `setJsonContent` | Body-only `.willRespondWith(...)` responses |
51
- | Provider Verifier | `buildVerifierOptions` | Assembles complete HTTP `VerifierOptions` | Provider verification: `new Verifier(buildVerifierOptions(...))` |
52
- | Provider Verifier | `buildMessageVerifierOptions` | Assembles message `VerifierOptions` | Kafka/async provider verification |
53
- | Provider Verifier | `handlePactBrokerUrlAndSelectors` | Resolves broker URL + selectors from env vars | Env-aware broker configuration |
54
- | Provider Verifier | `getProviderVersionTags` | CI-aware version tag extraction | Provider version tagging in CI |
55
- | Request Filter | `createRequestFilter` | Express middleware with pluggable token generator | Auth injection for provider verification |
56
- | Request Filter | `noOpRequestFilter` | Pass-through filter (no-op) | Providers without auth requirements |
46
+ | Category | Function | Description | Use Case |
47
+ | ----------------- | --------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
48
+ | Consumer Helpers | `createProviderState` | Builds `[stateName, JsonMap]` tuple from typed input | Consumer tests: `.given(...createProviderState(input))` |
49
+ | Consumer Helpers | `toJsonMap` | Converts any object to Pact-compatible `JsonMap` | Explicit type coercion for provider state params |
50
+ | Consumer Helpers | `setJsonContent` | Curried request/response JSON callback helper | PactV4 `.withRequest(...)` and `.willRespondWith(...)` builders |
51
+ | Consumer Helpers | `setJsonBody` | Body-only alias of `setJsonContent` | Body-only `.willRespondWith(...)` responses |
52
+ | Provider Verifier | `buildVerifierOptions` | Assembles complete HTTP `VerifierOptions` | Provider verification: `new Verifier(buildVerifierOptions(...))` |
53
+ | Provider Verifier | `buildMessageVerifierOptions` | Assembles message `VerifierOptions` | Kafka/async provider verification |
54
+ | Provider Verifier | `handlePactBrokerUrlAndSelectors` | Resolves broker URL + selectors from env vars | Env-aware broker configuration |
55
+ | Provider Verifier | `getProviderVersionTags` | CI-aware version tag extraction | Provider version tagging in CI |
56
+ | Request Filter | `createRequestFilter` | Express middleware with pluggable token generator | Auth injection for provider verification |
57
+ | Request Filter | `noOpRequestFilter` | Pass-through filter (no-op) | Providers without auth requirements |
58
+ | Schema → Matchers | `zodToPactMatchers` | Derives Pact V3 matchers from a Zod schema | Consumer tests: response body matchers from a consumer-curated Zod schema instead of hand-written helpers |
57
59
 
58
60
  ## Decision Tree: Which Flow?
59
61
 
@@ -153,6 +155,7 @@ await new Verifier(opts).verifyProvider();
153
155
  - `pactjs-utils-consumer-helpers.md` — detailed createProviderState, toJsonMap, setJsonContent, and setJsonBody usage
154
156
  - `pactjs-utils-provider-verifier.md` — detailed buildVerifierOptions and broker configuration
155
157
  - `pactjs-utils-request-filter.md` — detailed createRequestFilter and auth patterns
158
+ - `pactjs-utils-zod-to-pact.md` — detailed zodToPactMatchers usage, consumer-curated schema pattern, and anti-patterns
156
159
  - `contract-testing.md` — foundational contract testing patterns (raw Pact.js approach)
157
160
  - `test-levels-framework.md` — where contract tests fit in the testing pyramid
158
161
 
@@ -220,6 +220,54 @@ const tags = getProviderVersionTags();
220
220
  // tags = ['local']
221
221
  ```
222
222
 
223
+ ### Example 7: Provider Vitest Configuration (Required for Multi-File Verification)
224
+
225
+ **Context**: The Pact Rust FFI that powers the JS `Verifier` holds process-wide state (native handles for messages, matchers, mocks). Vitest's default parallel file workers each spin up their own FFI instance and quickly corrupt that state — causing `MessagePact`/`Verifier` errors like `"Unable to get the MessageHandle"`, or non-deterministic verification passes/fails — as soon as you have more than one provider `.spec.ts` file.
226
+
227
+ **Rule**: Provider verification suites **must** run in a single fork. Use Vitest's `forks` pool with `singleFork: true` in `vitest.config.contract.ts` (or equivalent).
228
+
229
+ ```typescript
230
+ // vitest.config.contract.ts — provider verification config
231
+ import { defineConfig } from 'vitest/config';
232
+
233
+ export default defineConfig({
234
+ test: {
235
+ environment: 'node',
236
+ include: ['tests/contract/**/*.spec.ts'],
237
+ testTimeout: 60000,
238
+ // MANDATORY for multi-file provider verification.
239
+ // The Pact Rust FFI backing the Verifier holds process-wide state; parallel workers corrupt it
240
+ // and produce flaky verification results / "Unable to get the MessageHandle" errors.
241
+ // This is especially important for message providers (Kafka/async) where verifier construction
242
+ // allocates native handles per file — singleFork keeps them in one process so state is coherent.
243
+ pool: 'forks',
244
+ poolOptions: {
245
+ forks: {
246
+ singleFork: true,
247
+ },
248
+ },
249
+ },
250
+ });
251
+ ```
252
+
253
+ **Key Points**:
254
+
255
+ - **Required for message providers** (`buildMessageVerifierOptions`) — the message-handle FFI state is almost guaranteed to corrupt under parallel workers.
256
+ - **Required for HTTP providers with multiple contract test files** — even if each file works in isolation, running them together in parallel produces intermittent failures.
257
+ - `pool: 'forks'` (rather than `threads`) + `singleFork: true` is the exact combo that keeps all verifier runs in a single child process with a single FFI instance.
258
+ - Treat `pool: 'forks'` + `singleFork: true` as the required baseline for all provider suites, including single-file HTTP-only ones. A suite that works today with one file will flake the moment a second file is added, and removing the setting later introduces a regression window.
259
+ - **The same `pool: 'forks'` + `singleFork: true` rule applies on the consumer side.** Consumer `vitest.config.pact.ts` sets it alongside `fileParallelism: false` — see `pact-consumer-framework-setup.md` Example 2. The rule is needed on either side wherever more than one pact test file exists per consumer+provider pair.
260
+ - Use a dedicated `vitest.config.contract.ts` so unit tests still get full parallelism — only contract tests pay the serialization cost.
261
+ - Related `package.json` entry:
262
+
263
+ ```json
264
+ {
265
+ "scripts": {
266
+ "test:pact:provider": "vitest run --config vitest.config.contract.ts"
267
+ }
268
+ }
269
+ ```
270
+
223
271
  ## Environment Variables Reference
224
272
 
225
273
  | Variable | Required | Description | Default |
@@ -241,12 +289,15 @@ const tags = getProviderVersionTags();
241
289
  - **Webhook support**: `PACT_PAYLOAD_URL` takes precedence — verifies only the specific pact that triggered the webhook
242
290
  - **State handler types**: Both `async (params) => void` and `{ setup: async (params) => void, teardown: async () => void }` are supported
243
291
  - **Version publishing**: Verification results are published by default (`publishVerificationResult` defaults to `true`)
292
+ - **Provider Vitest config is MANDATORY for multi-file suites**: Set `pool: 'forks'` + `poolOptions.forks.singleFork: true` in `vitest.config.contract.ts`. Without this the Rust FFI corrupts under parallel workers (see Example 7).
244
293
 
245
294
  ## Related Fragments
246
295
 
247
296
  - `pactjs-utils-overview.md` — installation, decision tree, design philosophy
248
- - `pactjs-utils-consumer-helpers.md` — consumer-side state parameter creation
297
+ - `pactjs-utils-consumer-helpers.md` — consumer-side state parameter creation, **one-interaction-per-`it()` rule**
249
298
  - `pactjs-utils-request-filter.md` — auth injection for provider verification
299
+ - `pact-consumer-framework-setup.md` — consumer-side framework setup, Vitest `fileParallelism: false`, determinism gate
300
+ - `pact-broker-webhooks.md` — PactFlow → GitHub webhook auth/staleness for webhook-triggered provider verification (`contract_requiring_verification_published`)
250
301
  - `contract-testing.md` — foundational patterns with raw Pact.js
251
302
 
252
303
  ## Anti-Patterns
@@ -312,4 +363,35 @@ const opts = buildVerifierOptions({
312
363
  // Selectors chosen automatically based on environment
313
364
  ```
314
365
 
366
+ ### Wrong: Parallel Vitest workers for provider verification
367
+
368
+ ```typescript
369
+ // ❌ vitest.config.contract.ts — uses default parallel workers
370
+ import { defineConfig } from 'vitest/config';
371
+ export default defineConfig({
372
+ test: {
373
+ environment: 'node',
374
+ include: ['tests/contract/**/*.spec.ts'],
375
+ // NO pool/singleFork config — defaults to parallel file workers
376
+ },
377
+ });
378
+ // Symptoms: "Unable to get the MessageHandle", non-deterministic verification pass/fail,
379
+ // green locally on single-file run but red in CI with multiple files
380
+ ```
381
+
382
+ ### Right: Single fork for provider verification
383
+
384
+ ```typescript
385
+ // ✅ vitest.config.contract.ts — serializes provider verification files
386
+ import { defineConfig } from 'vitest/config';
387
+ export default defineConfig({
388
+ test: {
389
+ environment: 'node',
390
+ include: ['tests/contract/**/*.spec.ts'],
391
+ pool: 'forks',
392
+ poolOptions: { forks: { singleFork: true } },
393
+ },
394
+ });
395
+ ```
396
+
315
397
  _Source: @seontechnologies/pactjs-utils provider-verifier module, pact-js-example-provider CI workflows_