bmad-studio 0.1.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 (798) hide show
  1. package/.prettierrc +8 -0
  2. package/CONTRIBUTING.md +109 -0
  3. package/LICENSE +21 -0
  4. package/README.md +110 -0
  5. package/_bmad/_config/agent-manifest.csv +11 -0
  6. package/_bmad/_config/bmad-help.csv +57 -0
  7. package/_bmad/_config/files-manifest.csv +646 -0
  8. package/_bmad/_config/ides/claude-code.yaml +5 -0
  9. package/_bmad/_config/manifest.yaml +42 -0
  10. package/_bmad/_config/skill-manifest.csv +48 -0
  11. package/_bmad/_config/task-manifest.csv +1 -0
  12. package/_bmad/_config/tool-manifest.csv +1 -0
  13. package/_bmad/_config/workflow-manifest.csv +1 -0
  14. package/_bmad/bmb/config.yaml +13 -0
  15. package/_bmad/bmb/module-help.csv +7 -0
  16. package/_bmad/bmb/skills/bmad-agent-builder/SKILL.md +65 -0
  17. package/_bmad/bmb/skills/bmad-agent-builder/assets/SKILL-template.md +97 -0
  18. package/_bmad/bmb/skills/bmad-agent-builder/assets/autonomous-wake.md +37 -0
  19. package/_bmad/bmb/skills/bmad-agent-builder/assets/init-template.md +47 -0
  20. package/_bmad/bmb/skills/bmad-agent-builder/assets/memory-system.md +129 -0
  21. package/_bmad/bmb/skills/bmad-agent-builder/assets/quality-report-template.md +282 -0
  22. package/_bmad/bmb/skills/bmad-agent-builder/assets/save-memory.md +29 -0
  23. package/_bmad/bmb/skills/bmad-agent-builder/bmad-manifest.json +24 -0
  24. package/_bmad/bmb/skills/bmad-agent-builder/bmad-skill-manifest.yaml +1 -0
  25. package/_bmad/bmb/skills/bmad-agent-builder/build-process.md +199 -0
  26. package/_bmad/bmb/skills/bmad-agent-builder/quality-optimizer.md +208 -0
  27. package/_bmad/bmb/skills/bmad-agent-builder/quality-scan-agent-cohesion.md +272 -0
  28. package/_bmad/bmb/skills/bmad-agent-builder/quality-scan-enhancement-opportunities.md +277 -0
  29. package/_bmad/bmb/skills/bmad-agent-builder/quality-scan-execution-efficiency.md +181 -0
  30. package/_bmad/bmb/skills/bmad-agent-builder/quality-scan-prompt-craft.md +245 -0
  31. package/_bmad/bmb/skills/bmad-agent-builder/quality-scan-script-opportunities.md +262 -0
  32. package/_bmad/bmb/skills/bmad-agent-builder/quality-scan-structure.md +183 -0
  33. package/_bmad/bmb/skills/bmad-agent-builder/references/metadata-reference.md +126 -0
  34. package/_bmad/bmb/skills/bmad-agent-builder/references/quality-dimensions.md +46 -0
  35. package/_bmad/bmb/skills/bmad-agent-builder/references/script-opportunities-reference.md +385 -0
  36. package/_bmad/bmb/skills/bmad-agent-builder/references/skill-best-practices.md +218 -0
  37. package/_bmad/bmb/skills/bmad-agent-builder/references/standard-fields.md +103 -0
  38. package/_bmad/bmb/skills/bmad-agent-builder/references/template-substitution-rules.md +72 -0
  39. package/_bmad/bmb/skills/bmad-agent-builder/references/universal-scan-schema.md +267 -0
  40. package/_bmad/bmb/skills/bmad-agent-builder/report-quality-scan-creator.md +138 -0
  41. package/_bmad/bmb/skills/bmad-agent-builder/scripts/bmad-manifest-schema.json +103 -0
  42. package/_bmad/bmb/skills/bmad-agent-builder/scripts/generate-html-report.py +1002 -0
  43. package/_bmad/bmb/skills/bmad-agent-builder/scripts/manifest.py +420 -0
  44. package/_bmad/bmb/skills/bmad-agent-builder/scripts/prepass-execution-deps.py +368 -0
  45. package/_bmad/bmb/skills/bmad-agent-builder/scripts/prepass-prompt-metrics.py +476 -0
  46. package/_bmad/bmb/skills/bmad-agent-builder/scripts/prepass-structure-capabilities.py +636 -0
  47. package/_bmad/bmb/skills/bmad-agent-builder/scripts/scan-path-standards.py +253 -0
  48. package/_bmad/bmb/skills/bmad-agent-builder/scripts/scan-scripts.py +745 -0
  49. package/_bmad/bmb/skills/bmad-workflow-builder/SKILL.md +65 -0
  50. package/_bmad/bmb/skills/bmad-workflow-builder/assets/SKILL-template.md +117 -0
  51. package/_bmad/bmb/skills/bmad-workflow-builder/assets/quality-report-template.md +260 -0
  52. package/_bmad/bmb/skills/bmad-workflow-builder/bmad-manifest.json +23 -0
  53. package/_bmad/bmb/skills/bmad-workflow-builder/bmad-skill-manifest.yaml +1 -0
  54. package/_bmad/bmb/skills/bmad-workflow-builder/build-process.md +208 -0
  55. package/_bmad/bmb/skills/bmad-workflow-builder/quality-optimizer.md +209 -0
  56. package/_bmad/bmb/skills/bmad-workflow-builder/quality-scan-enhancement-opportunities.md +273 -0
  57. package/_bmad/bmb/skills/bmad-workflow-builder/quality-scan-execution-efficiency.md +322 -0
  58. package/_bmad/bmb/skills/bmad-workflow-builder/quality-scan-prompt-craft.md +328 -0
  59. package/_bmad/bmb/skills/bmad-workflow-builder/quality-scan-script-opportunities.md +261 -0
  60. package/_bmad/bmb/skills/bmad-workflow-builder/quality-scan-skill-cohesion.md +340 -0
  61. package/_bmad/bmb/skills/bmad-workflow-builder/quality-scan-workflow-integrity.md +280 -0
  62. package/_bmad/bmb/skills/bmad-workflow-builder/references/classification-reference.md +61 -0
  63. package/_bmad/bmb/skills/bmad-workflow-builder/references/complex-workflow-patterns.md +523 -0
  64. package/_bmad/bmb/skills/bmad-workflow-builder/references/metadata-reference.md +126 -0
  65. package/_bmad/bmb/skills/bmad-workflow-builder/references/quality-dimensions.md +45 -0
  66. package/_bmad/bmb/skills/bmad-workflow-builder/references/script-opportunities-reference.md +354 -0
  67. package/_bmad/bmb/skills/bmad-workflow-builder/references/skill-best-practices.md +218 -0
  68. package/_bmad/bmb/skills/bmad-workflow-builder/references/standard-fields.md +121 -0
  69. package/_bmad/bmb/skills/bmad-workflow-builder/references/template-substitution-rules.md +85 -0
  70. package/_bmad/bmb/skills/bmad-workflow-builder/references/universal-scan-schema.md +267 -0
  71. package/_bmad/bmb/skills/bmad-workflow-builder/report-quality-scan-creator.md +134 -0
  72. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/bmad-manifest-schema.json +103 -0
  73. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/generate-html-report.py +1002 -0
  74. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/manifest.py +420 -0
  75. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/prepass-execution-deps.py +313 -0
  76. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/prepass-prompt-metrics.py +285 -0
  77. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/prepass-workflow-integrity.py +485 -0
  78. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/scan-path-standards.py +213 -0
  79. package/_bmad/bmb/skills/bmad-workflow-builder/scripts/scan-scripts.py +745 -0
  80. package/_bmad/bmm/agents/analyst.md +69 -0
  81. package/_bmad/bmm/agents/architect.md +59 -0
  82. package/_bmad/bmm/agents/bmad-skill-manifest.yaml +39 -0
  83. package/_bmad/bmm/agents/dev.md +66 -0
  84. package/_bmad/bmm/agents/pm.md +63 -0
  85. package/_bmad/bmm/agents/qa.md +89 -0
  86. package/_bmad/bmm/agents/quick-flow-solo-dev.md +61 -0
  87. package/_bmad/bmm/agents/sm.md +67 -0
  88. package/_bmad/bmm/agents/tech-writer/bmad-skill-manifest.yaml +3 -0
  89. package/_bmad/bmm/agents/tech-writer/tech-writer.md +67 -0
  90. package/_bmad/bmm/agents/ux-designer.md +58 -0
  91. package/_bmad/bmm/config.yaml +16 -0
  92. package/_bmad/bmm/data/project-context-template.md +26 -0
  93. package/_bmad/bmm/module-help.csv +32 -0
  94. package/_bmad/bmm/teams/default-party.csv +20 -0
  95. package/_bmad/bmm/teams/team-fullstack.yaml +12 -0
  96. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md +6 -0
  97. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml +1 -0
  98. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md +10 -0
  99. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md +170 -0
  100. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md +158 -0
  101. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md +193 -0
  102. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md +196 -0
  103. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md +199 -0
  104. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md +213 -0
  105. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md +159 -0
  106. package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md +55 -0
  107. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/SKILL.md +88 -0
  108. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/artifact-analyzer.md +60 -0
  109. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/opportunity-reviewer.md +44 -0
  110. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/skeptic-reviewer.md +44 -0
  111. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/web-researcher.md +49 -0
  112. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-manifest.json +17 -0
  113. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml +1 -0
  114. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/contextual-discovery.md +57 -0
  115. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/draft-and-review.md +86 -0
  116. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/finalize.md +75 -0
  117. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/guided-elicitation.md +70 -0
  118. package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/resources/brief-template.md +60 -0
  119. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md +6 -0
  120. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml +1 -0
  121. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md +137 -0
  122. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
  123. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
  124. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
  125. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md +234 -0
  126. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
  127. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md +29 -0
  128. package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.md +49 -0
  129. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/SKILL.md +6 -0
  130. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml +1 -0
  131. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/research.template.md +29 -0
  132. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-01-init.md +184 -0
  133. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md +239 -0
  134. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md +251 -0
  135. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md +261 -0
  136. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md +173 -0
  137. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +478 -0
  138. package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/workflow.md +49 -0
  139. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/SKILL.md +6 -0
  140. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml +1 -0
  141. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/research.template.md +29 -0
  142. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md +137 -0
  143. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md +239 -0
  144. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
  145. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
  146. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md +233 -0
  147. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
  148. package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/workflow.md +50 -0
  149. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  150. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  151. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  152. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  153. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  154. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
  155. package/_bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
  156. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/SKILL.md +6 -0
  157. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml +1 -0
  158. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md +135 -0
  159. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md +127 -0
  160. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md +190 -0
  161. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md +217 -0
  162. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md +220 -0
  163. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md +235 -0
  164. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md +253 -0
  165. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md +255 -0
  166. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md +225 -0
  167. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md +225 -0
  168. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md +242 -0
  169. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md +249 -0
  170. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md +238 -0
  171. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
  172. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md +171 -0
  173. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/ux-design-template.md +13 -0
  174. package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/workflow.md +36 -0
  175. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/SKILL.md +6 -0
  176. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml +1 -0
  177. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +242 -0
  178. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
  179. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +245 -0
  180. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +250 -0
  181. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +165 -0
  182. package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/workflow.md +63 -0
  183. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/SKILL.md +6 -0
  184. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml +1 -0
  185. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv +15 -0
  186. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md +197 -0
  187. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/project-types.csv +11 -0
  188. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +221 -0
  189. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
  190. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
  191. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
  192. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
  193. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
  194. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
  195. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
  196. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
  197. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
  198. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
  199. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
  200. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
  201. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
  202. package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/workflow.md +62 -0
  203. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
  204. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  205. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  206. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +224 -0
  207. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  208. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  209. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  210. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  211. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  212. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  213. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  214. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  215. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  216. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  217. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  218. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  219. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +232 -0
  220. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +65 -0
  221. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/SKILL.md +6 -0
  222. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml +1 -0
  223. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
  224. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
  225. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
  226. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
  227. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
  228. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
  229. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md +4 -0
  230. package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/workflow.md +49 -0
  231. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/SKILL.md +6 -0
  232. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/architecture-decision-template.md +12 -0
  233. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml +1 -0
  234. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/data/domain-complexity.csv +13 -0
  235. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/data/project-types.csv +7 -0
  236. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md +153 -0
  237. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md +173 -0
  238. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md +224 -0
  239. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-03-starter.md +329 -0
  240. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md +318 -0
  241. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md +359 -0
  242. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md +379 -0
  243. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md +359 -0
  244. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-08-complete.md +76 -0
  245. package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/workflow.md +38 -0
  246. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/SKILL.md +6 -0
  247. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml +1 -0
  248. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
  249. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
  250. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
  251. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
  252. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
  253. package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/workflow.md +53 -0
  254. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/SKILL.md +6 -0
  255. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml +1 -0
  256. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-01-gather-context.md +61 -0
  257. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md +41 -0
  258. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-03-triage.md +50 -0
  259. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md +38 -0
  260. package/_bmad/bmm/workflows/4-implementation/bmad-code-review/workflow.md +54 -0
  261. package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/SKILL.md +6 -0
  262. package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml +1 -0
  263. package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/checklist.md +288 -0
  264. package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/workflow.md +267 -0
  265. package/_bmad/bmm/workflows/4-implementation/bmad-create-story/SKILL.md +6 -0
  266. package/_bmad/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml +1 -0
  267. package/_bmad/bmm/workflows/4-implementation/bmad-create-story/checklist.md +357 -0
  268. package/_bmad/bmm/workflows/4-implementation/bmad-create-story/discover-inputs.md +88 -0
  269. package/_bmad/bmm/workflows/4-implementation/bmad-create-story/template.md +49 -0
  270. package/_bmad/bmm/workflows/4-implementation/bmad-create-story/workflow.md +380 -0
  271. package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/SKILL.md +6 -0
  272. package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml +1 -0
  273. package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/checklist.md +80 -0
  274. package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/workflow.md +450 -0
  275. package/_bmad/bmm/workflows/4-implementation/bmad-retrospective/SKILL.md +6 -0
  276. package/_bmad/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml +1 -0
  277. package/_bmad/bmm/workflows/4-implementation/bmad-retrospective/workflow.md +1479 -0
  278. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/SKILL.md +6 -0
  279. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml +1 -0
  280. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/checklist.md +33 -0
  281. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/sprint-status-template.yaml +56 -0
  282. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/workflow.md +263 -0
  283. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md +6 -0
  284. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml +1 -0
  285. package/_bmad/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md +261 -0
  286. package/_bmad/bmm/workflows/bmad-document-project/SKILL.md +6 -0
  287. package/_bmad/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml +1 -0
  288. package/_bmad/bmm/workflows/bmad-document-project/checklist.md +245 -0
  289. package/_bmad/bmm/workflows/bmad-document-project/documentation-requirements.csv +12 -0
  290. package/_bmad/bmm/workflows/bmad-document-project/instructions.md +128 -0
  291. package/_bmad/bmm/workflows/bmad-document-project/templates/deep-dive-template.md +345 -0
  292. package/_bmad/bmm/workflows/bmad-document-project/templates/index-template.md +169 -0
  293. package/_bmad/bmm/workflows/bmad-document-project/templates/project-overview-template.md +103 -0
  294. package/_bmad/bmm/workflows/bmad-document-project/templates/project-scan-report-schema.json +160 -0
  295. package/_bmad/bmm/workflows/bmad-document-project/templates/source-tree-template.md +135 -0
  296. package/_bmad/bmm/workflows/bmad-document-project/workflow.md +27 -0
  297. package/_bmad/bmm/workflows/bmad-document-project/workflows/deep-dive-instructions.md +299 -0
  298. package/_bmad/bmm/workflows/bmad-document-project/workflows/deep-dive-workflow.md +34 -0
  299. package/_bmad/bmm/workflows/bmad-document-project/workflows/full-scan-instructions.md +1107 -0
  300. package/_bmad/bmm/workflows/bmad-document-project/workflows/full-scan-workflow.md +34 -0
  301. package/_bmad/bmm/workflows/bmad-generate-project-context/SKILL.md +6 -0
  302. package/_bmad/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml +1 -0
  303. package/_bmad/bmm/workflows/bmad-generate-project-context/project-context-template.md +21 -0
  304. package/_bmad/bmm/workflows/bmad-generate-project-context/steps/step-01-discover.md +186 -0
  305. package/_bmad/bmm/workflows/bmad-generate-project-context/steps/step-02-generate.md +321 -0
  306. package/_bmad/bmm/workflows/bmad-generate-project-context/steps/step-03-complete.md +278 -0
  307. package/_bmad/bmm/workflows/bmad-generate-project-context/workflow.md +43 -0
  308. package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/SKILL.md +6 -0
  309. package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml +1 -0
  310. package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/checklist.md +33 -0
  311. package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/workflow.md +136 -0
  312. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md +6 -0
  313. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml +1 -0
  314. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md +169 -0
  315. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md +114 -0
  316. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md +107 -0
  317. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md +107 -0
  318. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md +94 -0
  319. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md +144 -0
  320. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md +38 -0
  321. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/SKILL.md +6 -0
  322. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/bmad-skill-manifest.yaml +1 -0
  323. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-01-clarify-and-route.md +51 -0
  324. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-02-plan.md +35 -0
  325. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-03-implement.md +33 -0
  326. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-04-review.md +50 -0
  327. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-05-present.md +17 -0
  328. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/tech-spec-template.md +90 -0
  329. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md +79 -0
  330. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md +6 -0
  331. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml +1 -0
  332. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md +185 -0
  333. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md +140 -0
  334. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md +123 -0
  335. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md +195 -0
  336. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/tech-spec-template.md +74 -0
  337. package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md +73 -0
  338. package/_bmad/core/config.yaml +9 -0
  339. package/_bmad/core/module-help.csv +11 -0
  340. package/_bmad/core/skills/bmad-advanced-elicitation/SKILL.md +6 -0
  341. package/_bmad/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml +1 -0
  342. package/_bmad/core/skills/bmad-advanced-elicitation/methods.csv +51 -0
  343. package/_bmad/core/skills/bmad-advanced-elicitation/workflow.md +135 -0
  344. package/_bmad/core/skills/bmad-brainstorming/SKILL.md +6 -0
  345. package/_bmad/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml +1 -0
  346. package/_bmad/core/skills/bmad-brainstorming/brain-methods.csv +62 -0
  347. package/_bmad/core/skills/bmad-brainstorming/steps/step-01-session-setup.md +214 -0
  348. package/_bmad/core/skills/bmad-brainstorming/steps/step-01b-continue.md +124 -0
  349. package/_bmad/core/skills/bmad-brainstorming/steps/step-02a-user-selected.md +229 -0
  350. package/_bmad/core/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +239 -0
  351. package/_bmad/core/skills/bmad-brainstorming/steps/step-02c-random-selection.md +211 -0
  352. package/_bmad/core/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +266 -0
  353. package/_bmad/core/skills/bmad-brainstorming/steps/step-03-technique-execution.md +401 -0
  354. package/_bmad/core/skills/bmad-brainstorming/steps/step-04-idea-organization.md +305 -0
  355. package/_bmad/core/skills/bmad-brainstorming/template.md +15 -0
  356. package/_bmad/core/skills/bmad-brainstorming/workflow.md +53 -0
  357. package/_bmad/core/skills/bmad-distillator/SKILL.md +178 -0
  358. package/_bmad/core/skills/bmad-distillator/agents/distillate-compressor.md +116 -0
  359. package/_bmad/core/skills/bmad-distillator/agents/round-trip-reconstructor.md +68 -0
  360. package/_bmad/core/skills/bmad-distillator/bmad-skill-manifest.yaml +15 -0
  361. package/_bmad/core/skills/bmad-distillator/resources/compression-rules.md +51 -0
  362. package/_bmad/core/skills/bmad-distillator/resources/distillate-format-reference.md +227 -0
  363. package/_bmad/core/skills/bmad-distillator/resources/splitting-strategy.md +78 -0
  364. package/_bmad/core/skills/bmad-distillator/scripts/analyze_sources.py +300 -0
  365. package/_bmad/core/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +204 -0
  366. package/_bmad/core/skills/bmad-editorial-review-prose/SKILL.md +6 -0
  367. package/_bmad/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml +1 -0
  368. package/_bmad/core/skills/bmad-editorial-review-prose/workflow.md +81 -0
  369. package/_bmad/core/skills/bmad-editorial-review-structure/SKILL.md +6 -0
  370. package/_bmad/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml +1 -0
  371. package/_bmad/core/skills/bmad-editorial-review-structure/workflow.md +174 -0
  372. package/_bmad/core/skills/bmad-help/SKILL.md +6 -0
  373. package/_bmad/core/skills/bmad-help/bmad-skill-manifest.yaml +1 -0
  374. package/_bmad/core/skills/bmad-help/workflow.md +88 -0
  375. package/_bmad/core/skills/bmad-index-docs/SKILL.md +6 -0
  376. package/_bmad/core/skills/bmad-index-docs/bmad-skill-manifest.yaml +1 -0
  377. package/_bmad/core/skills/bmad-index-docs/workflow.md +61 -0
  378. package/_bmad/core/skills/bmad-party-mode/SKILL.md +6 -0
  379. package/_bmad/core/skills/bmad-party-mode/bmad-skill-manifest.yaml +1 -0
  380. package/_bmad/core/skills/bmad-party-mode/steps/step-01-agent-loading.md +138 -0
  381. package/_bmad/core/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +187 -0
  382. package/_bmad/core/skills/bmad-party-mode/steps/step-03-graceful-exit.md +167 -0
  383. package/_bmad/core/skills/bmad-party-mode/workflow.md +190 -0
  384. package/_bmad/core/skills/bmad-review-adversarial-general/SKILL.md +6 -0
  385. package/_bmad/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml +1 -0
  386. package/_bmad/core/skills/bmad-review-adversarial-general/workflow.md +32 -0
  387. package/_bmad/core/skills/bmad-review-edge-case-hunter/SKILL.md +6 -0
  388. package/_bmad/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml +1 -0
  389. package/_bmad/core/skills/bmad-review-edge-case-hunter/workflow.md +62 -0
  390. package/_bmad/core/skills/bmad-shard-doc/SKILL.md +6 -0
  391. package/_bmad/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml +1 -0
  392. package/_bmad/core/skills/bmad-shard-doc/workflow.md +100 -0
  393. package/_bmad/core/tasks/bmad-create-prd/SKILL.md +6 -0
  394. package/_bmad/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml +1 -0
  395. package/_bmad/core/tasks/bmad-create-prd/data/domain-complexity.csv +15 -0
  396. package/_bmad/core/tasks/bmad-create-prd/data/prd-purpose.md +197 -0
  397. package/_bmad/core/tasks/bmad-create-prd/data/project-types.csv +11 -0
  398. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-01-init.md +178 -0
  399. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-01b-continue.md +161 -0
  400. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-02-discovery.md +208 -0
  401. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-02b-vision.md +142 -0
  402. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-02c-executive-summary.md +158 -0
  403. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-03-success.md +214 -0
  404. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-04-journeys.md +201 -0
  405. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-05-domain.md +194 -0
  406. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-06-innovation.md +211 -0
  407. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-07-project-type.md +222 -0
  408. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-08-scoping.md +216 -0
  409. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-09-functional.md +219 -0
  410. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-10-nonfunctional.md +230 -0
  411. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-11-polish.md +221 -0
  412. package/_bmad/core/tasks/bmad-create-prd/steps-c/step-12-complete.md +115 -0
  413. package/_bmad/core/tasks/bmad-create-prd/templates/prd-template.md +10 -0
  414. package/_bmad/core/tasks/bmad-create-prd/workflow.md +62 -0
  415. package/_bmad/tea/agents/tea.md +63 -0
  416. package/_bmad/tea/config.yaml +25 -0
  417. package/_bmad/tea/module-help.csv +10 -0
  418. package/_bmad/tea/teams/default-party.csv +2 -0
  419. package/_bmad/tea/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
  420. package/_bmad/tea/testarch/knowledge/api-request.md +563 -0
  421. package/_bmad/tea/testarch/knowledge/api-testing-patterns.md +915 -0
  422. package/_bmad/tea/testarch/knowledge/auth-session.md +548 -0
  423. package/_bmad/tea/testarch/knowledge/burn-in.md +273 -0
  424. package/_bmad/tea/testarch/knowledge/ci-burn-in.md +717 -0
  425. package/_bmad/tea/testarch/knowledge/component-tdd.md +486 -0
  426. package/_bmad/tea/testarch/knowledge/contract-testing.md +1050 -0
  427. package/_bmad/tea/testarch/knowledge/data-factories.md +500 -0
  428. package/_bmad/tea/testarch/knowledge/email-auth.md +721 -0
  429. package/_bmad/tea/testarch/knowledge/error-handling.md +725 -0
  430. package/_bmad/tea/testarch/knowledge/feature-flags.md +750 -0
  431. package/_bmad/tea/testarch/knowledge/file-utils.md +456 -0
  432. package/_bmad/tea/testarch/knowledge/fixture-architecture.md +401 -0
  433. package/_bmad/tea/testarch/knowledge/fixtures-composition.md +382 -0
  434. package/_bmad/tea/testarch/knowledge/intercept-network-call.md +426 -0
  435. package/_bmad/tea/testarch/knowledge/log.md +426 -0
  436. package/_bmad/tea/testarch/knowledge/network-error-monitor.md +401 -0
  437. package/_bmad/tea/testarch/knowledge/network-first.md +486 -0
  438. package/_bmad/tea/testarch/knowledge/network-recorder.md +527 -0
  439. package/_bmad/tea/testarch/knowledge/nfr-criteria.md +670 -0
  440. package/_bmad/tea/testarch/knowledge/overview.md +286 -0
  441. package/_bmad/tea/testarch/knowledge/pact-consumer-di.md +310 -0
  442. package/_bmad/tea/testarch/knowledge/pact-consumer-framework-setup.md +635 -0
  443. package/_bmad/tea/testarch/knowledge/pact-mcp.md +204 -0
  444. package/_bmad/tea/testarch/knowledge/pactjs-utils-consumer-helpers.md +270 -0
  445. package/_bmad/tea/testarch/knowledge/pactjs-utils-overview.md +216 -0
  446. package/_bmad/tea/testarch/knowledge/pactjs-utils-provider-verifier.md +315 -0
  447. package/_bmad/tea/testarch/knowledge/pactjs-utils-request-filter.md +224 -0
  448. package/_bmad/tea/testarch/knowledge/playwright-cli.md +165 -0
  449. package/_bmad/tea/testarch/knowledge/playwright-config.md +730 -0
  450. package/_bmad/tea/testarch/knowledge/probability-impact.md +601 -0
  451. package/_bmad/tea/testarch/knowledge/recurse.md +421 -0
  452. package/_bmad/tea/testarch/knowledge/risk-governance.md +615 -0
  453. package/_bmad/tea/testarch/knowledge/selective-testing.md +732 -0
  454. package/_bmad/tea/testarch/knowledge/selector-resilience.md +527 -0
  455. package/_bmad/tea/testarch/knowledge/test-healing-patterns.md +644 -0
  456. package/_bmad/tea/testarch/knowledge/test-levels-framework.md +473 -0
  457. package/_bmad/tea/testarch/knowledge/test-priorities-matrix.md +373 -0
  458. package/_bmad/tea/testarch/knowledge/test-quality.md +664 -0
  459. package/_bmad/tea/testarch/knowledge/timing-debugging.md +372 -0
  460. package/_bmad/tea/testarch/knowledge/visual-debugging.md +524 -0
  461. package/_bmad/tea/testarch/tea-index.csv +43 -0
  462. package/_bmad/tea/workflows/testarch/README.md +74 -0
  463. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/SKILL.md +6 -0
  464. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/bmad-skill-manifest.yaml +1 -0
  465. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/checklist.md +197 -0
  466. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/data/curriculum.yaml +129 -0
  467. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/data/quiz-questions.yaml +206 -0
  468. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/data/role-paths.yaml +136 -0
  469. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/data/session-content-map.yaml +207 -0
  470. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/data/tea-resources-index.yaml +359 -0
  471. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/instructions.md +130 -0
  472. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-01-init.md +235 -0
  473. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-01b-continue.md +147 -0
  474. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-02-assess.md +258 -0
  475. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-03-session-menu.md +219 -0
  476. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +460 -0
  477. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-02.md +465 -0
  478. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-03.md +301 -0
  479. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-04.md +234 -0
  480. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-05.md +234 -0
  481. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-06.md +209 -0
  482. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +212 -0
  483. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-c/step-05-completion.md +339 -0
  484. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-01-assess-workflow.md +141 -0
  485. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-02-apply-edits.md +122 -0
  486. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/steps-v/step-v-01-validate.md +263 -0
  487. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/templates/certificate-template.md +86 -0
  488. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/templates/progress-template.yaml +95 -0
  489. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/templates/session-notes-template.md +83 -0
  490. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/workflow-plan-teach-me-testing.md +950 -0
  491. package/_bmad/tea/workflows/testarch/bmad-teach-me-testing/workflow.md +90 -0
  492. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/SKILL.md +6 -0
  493. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/atdd-checklist-template.md +371 -0
  494. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/bmad-skill-manifest.yaml +1 -0
  495. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/checklist.md +374 -0
  496. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/instructions.md +45 -0
  497. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +226 -0
  498. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-01b-resume.md +96 -0
  499. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-02-generation-mode.md +125 -0
  500. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-03-test-strategy.md +110 -0
  501. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-04-generate-tests.md +334 -0
  502. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-04a-subagent-api-failing.md +286 -0
  503. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-04b-subagent-e2e-failing.md +244 -0
  504. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-04c-aggregate.md +370 -0
  505. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-c/step-05-validate-and-complete.md +106 -0
  506. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-e/step-01-assess.md +65 -0
  507. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-e/step-02-apply-edit.md +60 -0
  508. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/steps-v/step-01-validate.md +67 -0
  509. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/validation-report-20260127-095021.md +73 -0
  510. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/validation-report-20260127-102401.md +116 -0
  511. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/workflow-plan.md +21 -0
  512. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/workflow.md +41 -0
  513. package/_bmad/tea/workflows/testarch/bmad-testarch-atdd/workflow.yaml +46 -0
  514. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/SKILL.md +6 -0
  515. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/bmad-skill-manifest.yaml +1 -0
  516. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/checklist.md +611 -0
  517. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/instructions.md +50 -0
  518. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +237 -0
  519. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-01b-resume.md +94 -0
  520. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-02-identify-targets.md +169 -0
  521. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-03-generate-tests.md +394 -0
  522. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-03a-subagent-api.md +263 -0
  523. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-03b-subagent-backend.md +246 -0
  524. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-03b-subagent-e2e.md +213 -0
  525. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +393 -0
  526. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-c/step-04-validate-and-summarize.md +106 -0
  527. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-e/step-01-assess.md +65 -0
  528. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-e/step-02-apply-edit.md +60 -0
  529. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/steps-v/step-01-validate.md +67 -0
  530. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/validation-report-20260127-095021.md +72 -0
  531. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/validation-report-20260127-102401.md +114 -0
  532. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/workflow-plan.md +20 -0
  533. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/workflow.md +41 -0
  534. package/_bmad/tea/workflows/testarch/bmad-testarch-automate/workflow.yaml +53 -0
  535. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/SKILL.md +6 -0
  536. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/azure-pipelines-template.yaml +155 -0
  537. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/bmad-skill-manifest.yaml +1 -0
  538. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/checklist.md +289 -0
  539. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/github-actions-template.yaml +328 -0
  540. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/gitlab-ci-template.yaml +158 -0
  541. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/harness-pipeline-template.yaml +159 -0
  542. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/instructions.md +45 -0
  543. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/jenkins-pipeline-template.groovy +129 -0
  544. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md +158 -0
  545. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-c/step-01b-resume.md +110 -0
  546. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +279 -0
  547. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +135 -0
  548. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-c/step-04-validate-and-summary.md +92 -0
  549. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-e/step-01-assess.md +65 -0
  550. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-e/step-02-apply-edit.md +60 -0
  551. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/steps-v/step-01-validate.md +81 -0
  552. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/validation-report-20260127-095021.md +72 -0
  553. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/validation-report-20260127-102401.md +114 -0
  554. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/workflow-plan.md +20 -0
  555. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/workflow.md +41 -0
  556. package/_bmad/tea/workflows/testarch/bmad-testarch-ci/workflow.yaml +48 -0
  557. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/SKILL.md +6 -0
  558. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/bmad-skill-manifest.yaml +1 -0
  559. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/checklist.md +345 -0
  560. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/instructions.md +45 -0
  561. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-c/step-01-preflight.md +132 -0
  562. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-c/step-01b-resume.md +116 -0
  563. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-c/step-02-select-framework.md +117 -0
  564. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +323 -0
  565. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +105 -0
  566. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +93 -0
  567. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-e/step-01-assess.md +65 -0
  568. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-e/step-02-apply-edit.md +60 -0
  569. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/steps-v/step-01-validate.md +67 -0
  570. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/validation-report-20260127-095021.md +73 -0
  571. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/validation-report-20260127-102401.md +116 -0
  572. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/workflow-plan.md +22 -0
  573. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/workflow.md +41 -0
  574. package/_bmad/tea/workflows/testarch/bmad-testarch-framework/workflow.yaml +48 -0
  575. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/SKILL.md +6 -0
  576. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/bmad-skill-manifest.yaml +1 -0
  577. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/checklist.md +407 -0
  578. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/instructions.md +43 -0
  579. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/nfr-report-template.md +470 -0
  580. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +138 -0
  581. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-01b-resume.md +106 -0
  582. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +107 -0
  583. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-03-gather-evidence.md +108 -0
  584. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +254 -0
  585. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-04a-subagent-security.md +138 -0
  586. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-04b-subagent-performance.md +84 -0
  587. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-04c-subagent-reliability.md +85 -0
  588. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-04d-subagent-scalability.md +88 -0
  589. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +264 -0
  590. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +108 -0
  591. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-e/step-01-assess.md +65 -0
  592. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-e/step-02-apply-edit.md +60 -0
  593. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/steps-v/step-01-validate.md +67 -0
  594. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/validation-report-20260127-095021.md +73 -0
  595. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/validation-report-20260127-102401.md +116 -0
  596. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/workflow-plan.md +19 -0
  597. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/workflow.md +41 -0
  598. package/_bmad/tea/workflows/testarch/bmad-testarch-nfr/workflow.yaml +48 -0
  599. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/SKILL.md +6 -0
  600. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/bmad-skill-manifest.yaml +1 -0
  601. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/checklist.md +464 -0
  602. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/instructions.md +105 -0
  603. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-c/step-01-detect-mode.md +134 -0
  604. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-c/step-01b-resume.md +102 -0
  605. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +242 -0
  606. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +110 -0
  607. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +123 -0
  608. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +222 -0
  609. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-e/step-01-assess.md +65 -0
  610. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-e/step-02-apply-edit.md +60 -0
  611. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/steps-v/step-01-validate.md +67 -0
  612. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +230 -0
  613. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/test-design-handoff-template.md +70 -0
  614. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +396 -0
  615. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/test-design-template.md +344 -0
  616. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/validation-report-20260127-095021.md +73 -0
  617. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/validation-report-20260127-102401.md +116 -0
  618. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/workflow-plan.md +22 -0
  619. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/workflow.md +41 -0
  620. package/_bmad/tea/workflows/testarch/bmad-testarch-test-design/workflow.yaml +77 -0
  621. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/SKILL.md +6 -0
  622. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/bmad-skill-manifest.yaml +1 -0
  623. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/checklist.md +475 -0
  624. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/instructions.md +45 -0
  625. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +197 -0
  626. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-01b-resume.md +104 -0
  627. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +113 -0
  628. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-03-quality-evaluation.md +274 -0
  629. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +214 -0
  630. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-03b-subagent-isolation.md +125 -0
  631. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-03c-subagent-maintainability.md +102 -0
  632. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-03e-subagent-performance.md +117 -0
  633. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-03f-aggregate-scores.md +277 -0
  634. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-c/step-04-generate-report.md +111 -0
  635. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-e/step-01-assess.md +65 -0
  636. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-e/step-02-apply-edit.md +60 -0
  637. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/steps-v/step-01-validate.md +67 -0
  638. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/test-review-template.md +387 -0
  639. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/validation-report-20260127-095021.md +72 -0
  640. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/validation-report-20260127-102401.md +114 -0
  641. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/workflow-plan.md +18 -0
  642. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/workflow.md +41 -0
  643. package/_bmad/tea/workflows/testarch/bmad-testarch-test-review/workflow.yaml +48 -0
  644. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/SKILL.md +6 -0
  645. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/bmad-skill-manifest.yaml +1 -0
  646. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/checklist.md +647 -0
  647. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/instructions.md +43 -0
  648. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +105 -0
  649. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-c/step-01b-resume.md +102 -0
  650. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-c/step-02-discover-tests.md +112 -0
  651. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-c/step-03-map-criteria.md +97 -0
  652. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-c/step-04-analyze-gaps.md +421 -0
  653. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-c/step-05-gate-decision.md +266 -0
  654. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-e/step-01-assess.md +65 -0
  655. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-e/step-02-apply-edit.md +60 -0
  656. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/steps-v/step-01-validate.md +67 -0
  657. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/trace-template.md +708 -0
  658. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/validation-report-20260127-095021.md +73 -0
  659. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/validation-report-20260127-102401.md +116 -0
  660. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/workflow-plan.md +21 -0
  661. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/workflow.md +41 -0
  662. package/_bmad/tea/workflows/testarch/bmad-testarch-trace/workflow.yaml +56 -0
  663. package/bin/bmad-studio.mjs +25 -0
  664. package/eslint.config.js +38 -0
  665. package/package.json +56 -0
  666. package/packages/client/index.html +12 -0
  667. package/packages/client/package.json +46 -0
  668. package/packages/client/src/app.tsx +57 -0
  669. package/packages/client/src/features/about/AboutPage.tsx +144 -0
  670. package/packages/client/src/features/agents/AgentCard.tsx +52 -0
  671. package/packages/client/src/features/agents/AgentDetail.tsx +338 -0
  672. package/packages/client/src/features/agents/AgentOverrideEditor.tsx +127 -0
  673. package/packages/client/src/features/agents/AgentsPage.tsx +114 -0
  674. package/packages/client/src/features/agents/EditAgentDialog.tsx +260 -0
  675. package/packages/client/src/features/agents/SkillAssignment.tsx +153 -0
  676. package/packages/client/src/features/agents/use-agent-detail.ts +17 -0
  677. package/packages/client/src/features/agents/use-agent-mutations.ts +47 -0
  678. package/packages/client/src/features/agents/use-agents.ts +17 -0
  679. package/packages/client/src/features/connections/ConnectionsPage.tsx +165 -0
  680. package/packages/client/src/features/files/FilesPage.tsx +177 -0
  681. package/packages/client/src/features/outputs/OutputsPage.tsx +190 -0
  682. package/packages/client/src/features/overview/OverviewPage.tsx +282 -0
  683. package/packages/client/src/features/packages/EditModuleDialog.tsx +118 -0
  684. package/packages/client/src/features/packages/PackagesPage.tsx +982 -0
  685. package/packages/client/src/features/settings/SettingsPage.tsx +141 -0
  686. package/packages/client/src/features/settings/use-settings.ts +34 -0
  687. package/packages/client/src/features/skills/CreateSkillDialog.tsx +328 -0
  688. package/packages/client/src/features/skills/SkillDetailSlideOver.tsx +179 -0
  689. package/packages/client/src/features/skills/SkillsPage.tsx +142 -0
  690. package/packages/client/src/features/skills/use-skills.ts +27 -0
  691. package/packages/client/src/features/teams/CreateTeamDialog.tsx +239 -0
  692. package/packages/client/src/features/teams/TeamDetailPanel.tsx +549 -0
  693. package/packages/client/src/features/teams/TeamsPage.tsx +196 -0
  694. package/packages/client/src/features/teams/use-teams.ts +39 -0
  695. package/packages/client/src/features/workflows/CreateWorkflowDialog.tsx +395 -0
  696. package/packages/client/src/features/workflows/EditWorkflowDialog.tsx +131 -0
  697. package/packages/client/src/features/workflows/WorkflowDetailPanel.tsx +503 -0
  698. package/packages/client/src/features/workflows/WorkflowGraph.tsx +108 -0
  699. package/packages/client/src/features/workflows/WorkflowsPage.tsx +277 -0
  700. package/packages/client/src/features/workflows/use-workflows.ts +27 -0
  701. package/packages/client/src/features/workspace/WorkspacePage.tsx +304 -0
  702. package/packages/client/src/globals.css +184 -0
  703. package/packages/client/src/hooks/use-detail-param.ts +31 -0
  704. package/packages/client/src/hooks/use-file-save.ts +22 -0
  705. package/packages/client/src/hooks/use-websocket.ts +38 -0
  706. package/packages/client/src/layout/AppShell.tsx +20 -0
  707. package/packages/client/src/layout/Breadcrumbs.tsx +52 -0
  708. package/packages/client/src/layout/NotificationProvider.tsx +95 -0
  709. package/packages/client/src/layout/Sidebar.tsx +176 -0
  710. package/packages/client/src/lib/theme.ts +30 -0
  711. package/packages/client/src/lib/websocket-client.ts +97 -0
  712. package/packages/client/src/main.tsx +14 -0
  713. package/packages/client/src/shared/CommandPalette.tsx +151 -0
  714. package/packages/client/src/shared/CsvViewer.tsx +120 -0
  715. package/packages/client/src/shared/EmptyState.tsx +20 -0
  716. package/packages/client/src/shared/EntityPageHeader.tsx +95 -0
  717. package/packages/client/src/shared/FilepathLink.tsx +22 -0
  718. package/packages/client/src/shared/Skeleton.tsx +31 -0
  719. package/packages/client/src/shared/SlideOver.tsx +63 -0
  720. package/packages/client/src/shared/VocabularyHelper.tsx +48 -0
  721. package/packages/client/src/shared/diff-viewer/DiffViewer.tsx +93 -0
  722. package/packages/client/src/shared/markdown-editor/CodeMirrorEditor.tsx +199 -0
  723. package/packages/client/src/shared/markdown-editor/MarkdownEditor.tsx +95 -0
  724. package/packages/client/src/stores/ui-store.ts +13 -0
  725. package/packages/client/tsconfig.json +13 -0
  726. package/packages/client/vite.config.ts +20 -0
  727. package/packages/server/package.json +30 -0
  728. package/packages/server/src/app.test.ts +89 -0
  729. package/packages/server/src/app.ts +101 -0
  730. package/packages/server/src/core/errors.test.ts +49 -0
  731. package/packages/server/src/core/errors.ts +62 -0
  732. package/packages/server/src/core/file-store.test.ts +104 -0
  733. package/packages/server/src/core/file-store.ts +209 -0
  734. package/packages/server/src/core/project-detector.test.ts +94 -0
  735. package/packages/server/src/core/project-detector.ts +97 -0
  736. package/packages/server/src/core/websocket.test.ts +80 -0
  737. package/packages/server/src/core/websocket.ts +47 -0
  738. package/packages/server/src/core/write-service.test.ts +87 -0
  739. package/packages/server/src/core/write-service.ts +75 -0
  740. package/packages/server/src/index.ts +97 -0
  741. package/packages/server/src/parsers/agent-parser.test.ts +71 -0
  742. package/packages/server/src/parsers/agent-parser.ts +83 -0
  743. package/packages/server/src/parsers/config-parser.test.ts +65 -0
  744. package/packages/server/src/parsers/config-parser.ts +51 -0
  745. package/packages/server/src/parsers/csv-parser.test.ts +53 -0
  746. package/packages/server/src/parsers/csv-parser.ts +55 -0
  747. package/packages/server/src/parsers/ide-config-parser.test.ts +35 -0
  748. package/packages/server/src/parsers/ide-config-parser.ts +37 -0
  749. package/packages/server/src/parsers/index-builder.test.ts +78 -0
  750. package/packages/server/src/parsers/index-builder.ts +195 -0
  751. package/packages/server/src/parsers/package-parser.test.ts +36 -0
  752. package/packages/server/src/parsers/package-parser.ts +34 -0
  753. package/packages/server/src/parsers/skill-parser.test.ts +51 -0
  754. package/packages/server/src/parsers/skill-parser.ts +26 -0
  755. package/packages/server/src/parsers/team-parser.test.ts +186 -0
  756. package/packages/server/src/parsers/team-parser.ts +128 -0
  757. package/packages/server/src/parsers/workflow-parser.test.ts +415 -0
  758. package/packages/server/src/parsers/workflow-parser.ts +311 -0
  759. package/packages/server/src/plugins/agents-plugin.test.ts +111 -0
  760. package/packages/server/src/plugins/agents-plugin.ts +164 -0
  761. package/packages/server/src/plugins/files-plugin.test.ts +121 -0
  762. package/packages/server/src/plugins/files-plugin.ts +93 -0
  763. package/packages/server/src/plugins/modules-plugin.test.ts +264 -0
  764. package/packages/server/src/plugins/modules-plugin.ts +386 -0
  765. package/packages/server/src/plugins/outputs-plugin.test.ts +89 -0
  766. package/packages/server/src/plugins/outputs-plugin.ts +93 -0
  767. package/packages/server/src/plugins/overview-plugin.ts +73 -0
  768. package/packages/server/src/plugins/search-plugin.ts +63 -0
  769. package/packages/server/src/plugins/settings-plugin.test.ts +82 -0
  770. package/packages/server/src/plugins/settings-plugin.ts +46 -0
  771. package/packages/server/src/plugins/skills-plugin.ts +87 -0
  772. package/packages/server/src/plugins/teams-plugin.test.ts +157 -0
  773. package/packages/server/src/plugins/teams-plugin.ts +198 -0
  774. package/packages/server/src/plugins/validation-plugin.test.ts +229 -0
  775. package/packages/server/src/plugins/validation-plugin.ts +116 -0
  776. package/packages/server/src/plugins/workflows-plugin.test.ts +145 -0
  777. package/packages/server/src/plugins/workflows-plugin.ts +270 -0
  778. package/packages/server/src/static.ts +29 -0
  779. package/packages/server/tsconfig.json +8 -0
  780. package/packages/shared/package.json +20 -0
  781. package/packages/shared/src/agents.ts +39 -0
  782. package/packages/shared/src/config.ts +33 -0
  783. package/packages/shared/src/connections.ts +28 -0
  784. package/packages/shared/src/errors.ts +17 -0
  785. package/packages/shared/src/events.ts +35 -0
  786. package/packages/shared/src/files.ts +11 -0
  787. package/packages/shared/src/index.ts +40 -0
  788. package/packages/shared/src/outputs.ts +25 -0
  789. package/packages/shared/src/packages.ts +30 -0
  790. package/packages/shared/src/skills.ts +17 -0
  791. package/packages/shared/src/teams.ts +33 -0
  792. package/packages/shared/src/types.test.ts +164 -0
  793. package/packages/shared/src/validation.ts +15 -0
  794. package/packages/shared/src/workflows.ts +47 -0
  795. package/packages/shared/src/workspace.ts +12 -0
  796. package/packages/shared/tsconfig.json +8 -0
  797. package/tsconfig.base.json +19 -0
  798. package/vitest.config.ts +7 -0
@@ -0,0 +1,635 @@
1
+ # Pact Consumer CDC — Framework Setup
2
+
3
+ ## Principle
4
+
5
+ When scaffolding a Pact.js consumer contract testing framework, align every artifact — directory layout, vitest config, package.json scripts, shell scripts, CI workflow, and test files — with the canonical `@seontechnologies/pactjs-utils` conventions. Consistency across repositories eliminates onboarding friction and ensures CI pipelines are copy-paste portable.
6
+
7
+ ## Rationale
8
+
9
+ The TEA framework workflow generates scaffolding for consumer-driven contract (CDC) testing. Without opinionated, battle-tested conventions, each project invents its own structure — different script names, different env var patterns, different CI step ordering — making cross-repo maintenance expensive. This fragment codifies the production-proven patterns from the pactjs-utils reference implementation so that every new project starts correctly.
10
+
11
+ ## Pattern Examples
12
+
13
+ ### Example 1: Directory Structure & File Naming
14
+
15
+ **Context**: Consumer contract test project layout using pactjs-utils conventions.
16
+
17
+ **Implementation**:
18
+
19
+ ```
20
+ tests/contract/
21
+ ├── consumer/
22
+ │ ├── get-filter-fields.pacttest.ts # Consumer test (one per endpoint group)
23
+ │ ├── filter-transactions.pacttest.ts
24
+ │ └── get-transaction-stats.pacttest.ts
25
+ └── support/
26
+ ├── pact-config.ts # PactV4 factory (consumer/provider names, output dir)
27
+ ├── provider-states.ts # Provider state factory functions
28
+ └── consumer-helpers.ts # Local shim (until pactjs-utils is published)
29
+
30
+ scripts/
31
+ ├── env-setup.sh # Shared env loader (sourced by all broker scripts)
32
+ ├── publish-pact.sh # Publish pact files to broker
33
+ ├── can-i-deploy.sh # Deployment safety check
34
+ └── record-deployment.sh # Record deployment after merge
35
+
36
+ .github/
37
+ ├── actions/
38
+ │ └── detect-breaking-change/
39
+ │ └── action.yml # PR checkbox-driven breaking change detection
40
+ └── workflows/
41
+ └── contract-test-consumer.yml # Consumer CDC CI workflow
42
+ ```
43
+
44
+ **Key Points**:
45
+
46
+ - Consumer tests use `.pacttest.ts` extension (not `.pact.spec.ts` or `.contract.ts`)
47
+ - Support files live in `tests/contract/support/`, not mixed with consumer tests
48
+ - Shell scripts live in `scripts/` at project root, not nested inside test directories
49
+ - CI workflow named `contract-test-consumer.yml` (not `pact-consumer.yml` or other variants)
50
+
51
+ ---
52
+
53
+ ### Example 2: Vitest Configuration for Pact
54
+
55
+ **Context**: Minimal vitest config dedicated to contract tests — do NOT copy settings from the project's main `vitest.config.ts`.
56
+
57
+ **Implementation**:
58
+
59
+ ```typescript
60
+ // vitest.config.pact.ts
61
+ import { defineConfig } from 'vitest/config';
62
+
63
+ export default defineConfig({
64
+ test: {
65
+ environment: 'node',
66
+ include: ['tests/contract/**/*.pacttest.ts'],
67
+ testTimeout: 30000,
68
+ },
69
+ });
70
+ ```
71
+
72
+ **Key Points**:
73
+
74
+ - Do NOT add `pool`, `poolOptions`, `setupFiles`, `coverage`, or other settings from the unit test config
75
+ - Keep it minimal — Pact tests run in Node environment with extended timeout
76
+ - 30 second timeout accommodates Pact mock server startup and interaction verification
77
+ - Use a dedicated config file (`vitest.config.pact.ts`), not the main vitest config
78
+
79
+ ---
80
+
81
+ ### Example 3: Package.json Script Naming
82
+
83
+ **Context**: Colon-separated naming matching pactjs-utils exactly. Scripts source `env-setup.sh` inline.
84
+
85
+ **Implementation**:
86
+
87
+ ```json
88
+ {
89
+ "scripts": {
90
+ "test:pact:consumer": "vitest run --config vitest.config.pact.ts",
91
+ "publish:pact": ". ./scripts/env-setup.sh && ./scripts/publish-pact.sh",
92
+ "can:i:deploy:consumer": ". ./scripts/env-setup.sh && PACTICIPANT=<service-name> ./scripts/can-i-deploy.sh",
93
+ "record:consumer:deployment": ". ./scripts/env-setup.sh && PACTICIPANT=<service-name> ./scripts/record-deployment.sh"
94
+ }
95
+ }
96
+ ```
97
+
98
+ Replace `<service-name>` with the consumer's pacticipant name (e.g., `my-frontend-app`).
99
+
100
+ **Key Points**:
101
+
102
+ - Use colon-separated naming: `test:pact:consumer`, NOT `test:contract` or `test:contract:consumer`
103
+ - Broker scripts source `env-setup.sh` inline in package.json (`. ./scripts/env-setup.sh && ...`)
104
+ - `PACTICIPANT` is set per-script invocation, not globally
105
+ - Do NOT use `npx pact-broker` — use `pact-broker` directly (installed as a dependency)
106
+
107
+ ---
108
+
109
+ ### Example 4: Shell Scripts
110
+
111
+ **Context**: Reusable bash scripts aligned with pactjs-utils conventions.
112
+
113
+ #### `scripts/env-setup.sh` — Shared Environment Loader
114
+
115
+ ```bash
116
+ #!/bin/bash
117
+ # -e: exit on error -u: error on undefined vars (catches typos/missing env vars in CI)
118
+ set -eu
119
+
120
+ if [ -f .env ]; then
121
+ set -a
122
+ source .env
123
+ set +a
124
+ fi
125
+
126
+ export GITHUB_SHA="${GITHUB_SHA:-$(git rev-parse --short HEAD)}"
127
+ export GITHUB_BRANCH="${GITHUB_BRANCH:-$(git rev-parse --abbrev-ref HEAD)}"
128
+ ```
129
+
130
+ #### `scripts/publish-pact.sh` — Publish Pacts to Broker
131
+
132
+ ```bash
133
+ #!/bin/bash
134
+ # Publish generated pact files to PactFlow/Pact Broker
135
+ #
136
+ # Requires: PACT_BROKER_BASE_URL, PACT_BROKER_TOKEN, GITHUB_SHA, GITHUB_BRANCH
137
+ # -e: exit on error -u: error on undefined vars -o pipefail: fail if any pipe segment fails
138
+ set -euo pipefail
139
+
140
+ . ./scripts/env-setup.sh
141
+
142
+ PACT_DIR="./pacts"
143
+
144
+ pact-broker publish "$PACT_DIR" \
145
+ --consumer-app-version="$GITHUB_SHA" \
146
+ --branch="$GITHUB_BRANCH" \
147
+ --broker-base-url="$PACT_BROKER_BASE_URL" \
148
+ --broker-token="$PACT_BROKER_TOKEN"
149
+ ```
150
+
151
+ #### `scripts/can-i-deploy.sh` — Deployment Safety Check
152
+
153
+ ```bash
154
+ #!/bin/bash
155
+ # Check if a pacticipant version can be safely deployed
156
+ #
157
+ # Requires: PACTICIPANT (set by caller), PACT_BROKER_BASE_URL, PACT_BROKER_TOKEN, GITHUB_SHA
158
+ # -e: exit on error -u: error on undefined vars -o pipefail: fail if any pipe segment fails
159
+ set -euo pipefail
160
+
161
+ . ./scripts/env-setup.sh
162
+
163
+ PACTICIPANT="${PACTICIPANT:?PACTICIPANT env var is required}"
164
+ ENVIRONMENT="${ENVIRONMENT:-dev}"
165
+
166
+ pact-broker can-i-deploy \
167
+ --pacticipant "$PACTICIPANT" \
168
+ --version="$GITHUB_SHA" \
169
+ --to-environment "$ENVIRONMENT" \
170
+ --retry-while-unknown=10 \
171
+ --retry-interval=30
172
+ ```
173
+
174
+ #### `scripts/record-deployment.sh` — Record Deployment
175
+
176
+ ```bash
177
+ #!/bin/bash
178
+ # Record a deployment to an environment in Pact Broker
179
+ # Only records on main/master branch (skips feature branches)
180
+ #
181
+ # Requires: PACTICIPANT, PACT_BROKER_BASE_URL, PACT_BROKER_TOKEN, GITHUB_SHA, GITHUB_BRANCH
182
+ # -e: exit on error -u: error on undefined vars -o pipefail: fail if any pipe segment fails
183
+ set -euo pipefail
184
+
185
+ . ./scripts/env-setup.sh
186
+
187
+ PACTICIPANT="${PACTICIPANT:?PACTICIPANT env var is required}"
188
+
189
+ if [ "$GITHUB_BRANCH" = "main" ] || [ "$GITHUB_BRANCH" = "master" ]; then
190
+ pact-broker record-deployment \
191
+ --pacticipant "$PACTICIPANT" \
192
+ --version "$GITHUB_SHA" \
193
+ --environment "${npm_config_env:-dev}"
194
+ else
195
+ echo "Skipping record-deployment: not on main branch (current: $GITHUB_BRANCH)"
196
+ fi
197
+ ```
198
+
199
+ **Key Points**:
200
+
201
+ - `env-setup.sh` uses `set -eu` (no pipefail — it only sources `.env`, no pipes); broker scripts use `set -euo pipefail`
202
+ - Use `pact-broker` directly, NOT `npx pact-broker`
203
+ - Use `PACTICIPANT` env var (required via `${PACTICIPANT:?...}`), not hardcoded service names
204
+ - `can-i-deploy` includes `--retry-while-unknown=10 --retry-interval=30` (waits for provider verification)
205
+ - `record-deployment` has branch guard (only records on main/master)
206
+ - 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
+
208
+ ---
209
+
210
+ ### Example 5: CI Workflow (`contract-test-consumer.yml`)
211
+
212
+ **Context**: GitHub Actions workflow for consumer CDC, matching pactjs-utils structure exactly.
213
+
214
+ **Implementation**:
215
+
216
+ ```yaml
217
+ name: Contract Test - Consumer
218
+ on:
219
+ pull_request:
220
+ types: [opened, synchronize, reopened, edited]
221
+ push:
222
+ branches: [main]
223
+
224
+ env:
225
+ PACT_BROKER_BASE_URL: ${{ secrets.PACT_BROKER_BASE_URL }}
226
+ PACT_BROKER_TOKEN: ${{ secrets.PACT_BROKER_TOKEN }}
227
+ GITHUB_SHA: ${{ github.sha }}
228
+ GITHUB_BRANCH: ${{ github.head_ref || github.ref_name }}
229
+
230
+ concurrency:
231
+ group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
232
+ cancel-in-progress: true
233
+
234
+ jobs:
235
+ consumer-contract-test:
236
+ if: github.actor != 'dependabot[bot]'
237
+ runs-on: ubuntu-latest
238
+ steps:
239
+ - uses: actions/checkout@v6
240
+
241
+ - uses: actions/setup-node@v6
242
+ with:
243
+ node-version-file: '.nvmrc'
244
+ cache: 'npm'
245
+
246
+ - name: Detect Pact breaking change
247
+ uses: ./.github/actions/detect-breaking-change
248
+
249
+ - name: Install dependencies
250
+ run: npm ci
251
+
252
+ # (1) Generate pact files
253
+ - name: Run consumer contract tests
254
+ run: npm run test:pact:consumer
255
+
256
+ # (2) Publish pacts to broker
257
+ - name: Publish pacts to PactFlow
258
+ run: npm run publish:pact
259
+
260
+ # After publish, PactFlow fires a webhook that triggers
261
+ # the provider's contract-test-provider.yml workflow.
262
+ # can-i-deploy retries while waiting for provider verification.
263
+
264
+ # (4) Check deployment safety (main only — on PRs, local verification is the gate)
265
+ - name: Can I deploy consumer? (main only)
266
+ if: github.ref == 'refs/heads/main' && env.PACT_BREAKING_CHANGE != 'true'
267
+ run: npm run can:i:deploy:consumer
268
+
269
+ # (5) Record deployment (main only)
270
+ - name: Record consumer deployment (main only)
271
+ if: github.ref == 'refs/heads/main'
272
+ run: npm run record:consumer:deployment --env=dev
273
+ ```
274
+
275
+ **Key Points**:
276
+
277
+ - **Workflow-level `env` block** for broker secrets and git vars — not per-step
278
+ - **`detect-breaking-change` step** runs before install to set `PACT_BREAKING_CHANGE` env var
279
+ - **Step numbering skips (3)** — step 3 is the webhook-triggered provider verification (happens externally)
280
+ - **can-i-deploy condition**: `github.ref == 'refs/heads/main' && env.PACT_BREAKING_CHANGE != 'true'`
281
+ - **Comment on (4)**: "on PRs, local verification is the gate"
282
+ - **No upload-artifact step** — the broker is the source of truth for pact files
283
+ - **`dependabot[bot]` skip** on the job (contract tests don't run for dependency updates)
284
+ - **PR types include `edited`** — needed for breaking change checkbox detection in PR body
285
+ - **`GITHUB_BRANCH`** uses `${{ github.head_ref || github.ref_name }}` — `head_ref` for PRs, `ref_name` for pushes
286
+
287
+ ---
288
+
289
+ ### Example 6: Detect Breaking Change Composite Action
290
+
291
+ **Context**: GitHub composite action that reads a `[x] Pact breaking change` checkbox from the PR body.
292
+
293
+ **Implementation**:
294
+
295
+ Create `.github/actions/detect-breaking-change/action.yml`:
296
+
297
+ ```yaml
298
+ name: 'Detect Pact Breaking Change'
299
+ description: 'Reads the PR template checkbox to determine if this change is a Pact breaking change. Sets PACT_BREAKING_CHANGE env var.'
300
+
301
+ outputs:
302
+ is_breaking_change:
303
+ description: 'Whether the change is a breaking change (true/false)'
304
+ value: ${{ steps.result.outputs.is_breaking_change }}
305
+
306
+ runs:
307
+ using: 'composite'
308
+ steps:
309
+ # PR event path: read checkbox directly from current PR body.
310
+ - name: Set PACT_BREAKING_CHANGE from PR description (PR only)
311
+ if: github.event_name == 'pull_request'
312
+ uses: actions/github-script@v7
313
+ with:
314
+ script: |
315
+ const prBody = context.payload.pull_request.body || '';
316
+ const breakingChangePattern = /\[\s*[xX]\s*\]\s*Pact breaking change/i;
317
+ const isBreakingChange = breakingChangePattern.test(prBody);
318
+ core.exportVariable('PACT_BREAKING_CHANGE', isBreakingChange ? 'true' : 'false');
319
+ console.log(`PACT_BREAKING_CHANGE=${isBreakingChange ? 'true' : 'false'} (from PR description checkbox).`);
320
+
321
+ # Push-to-main path: resolve the merged PR and read the same checkbox.
322
+ - name: Set PACT_BREAKING_CHANGE from merged PR (push to main)
323
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
324
+ uses: actions/github-script@v7
325
+ with:
326
+ script: |
327
+ const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
328
+ owner: context.repo.owner,
329
+ repo: context.repo.repo,
330
+ commit_sha: context.sha,
331
+ });
332
+ const merged = prs.find(pr => pr.merged_at);
333
+ const mergedBody = merged?.body || '';
334
+ const breakingChangePattern = /\[\s*[xX]\s*\]\s*Pact breaking change/i;
335
+ const isBreakingChange = breakingChangePattern.test(mergedBody);
336
+ core.exportVariable('PACT_BREAKING_CHANGE', isBreakingChange ? 'true' : 'false');
337
+ console.log(`PACT_BREAKING_CHANGE=${isBreakingChange ? 'true' : 'false'} (from merged PR lookup).`);
338
+
339
+ - name: Export result
340
+ id: result
341
+ shell: bash
342
+ run: echo "is_breaking_change=${PACT_BREAKING_CHANGE:-false}" >> "$GITHUB_OUTPUT"
343
+ ```
344
+
345
+ **Key Points**:
346
+
347
+ - Two separate conditional steps (better CI log readability than single if/else)
348
+ - PR path: reads checkbox directly from PR body
349
+ - Push-to-main path: resolves merged PR via GitHub API, reads same checkbox
350
+ - Exports `PACT_BREAKING_CHANGE` env var for downstream steps
351
+ - `outputs.is_breaking_change` available for consuming workflows
352
+ - Uses a case-insensitive checkbox regex (`/\[\s*[xX]\s*\]\s*Pact breaking change/i`) to detect checked states robustly
353
+
354
+ ---
355
+
356
+ ### Example 7: Consumer Test Using PactV4 Builder
357
+
358
+ **Context**: Consumer pact test using PactV4 `addInteraction()` builder pattern. The test MUST call **real consumer code** (your actual API client/service functions) against the mock server — not raw `fetch()`. Using `fetch()` directly defeats the purpose of CDC testing because it doesn't verify your actual consumer code works with the contract.
359
+
360
+ **Implementation**:
361
+
362
+ The consumer code must expose a way to inject the base URL (e.g., `setApiUrl()`, constructor parameter, or environment variable). This is a prerequisite for contract testing.
363
+
364
+ ```typescript
365
+ // src/api/movie-client.ts — The REAL consumer code (already exists in your project)
366
+ import axios from 'axios';
367
+
368
+ const axiosInstance = axios.create({
369
+ baseURL: process.env.API_URL || 'http://localhost:3001',
370
+ });
371
+
372
+ // Expose a way to override the base URL for Pact testing
373
+ export const setApiUrl = (url: string) => {
374
+ axiosInstance.defaults.baseURL = url;
375
+ };
376
+
377
+ export const getMovies = async () => {
378
+ const res = await axiosInstance.get('/movies');
379
+ return res.data;
380
+ };
381
+
382
+ export const getMovieById = async (id: number) => {
383
+ const res = await axiosInstance.get(`/movies/${id}`);
384
+ return res.data;
385
+ };
386
+ ```
387
+
388
+ ```typescript
389
+ // tests/contract/consumer/get-movies.pacttest.ts
390
+ import { MatchersV3 } from '@pact-foundation/pact';
391
+ import type { V3MockServer } from '@pact-foundation/pact';
392
+ import { createProviderState, setJsonBody, setJsonContent } from '../support/consumer-helpers';
393
+ import { movieExists } from '../support/provider-states';
394
+ import { createPact } from '../support/pact-config';
395
+ // Import REAL consumer code — this is what we're actually testing
396
+ import { getMovies, getMovieById, setApiUrl } from '../../../src/api/movie-client';
397
+
398
+ const { like, integer, string } = MatchersV3;
399
+
400
+ const pact = createPact();
401
+
402
+ describe('Movies API Consumer Contract', () => {
403
+ const movieWithId = { id: 1, name: 'The Matrix', year: 1999, rating: 8.7, director: 'Wachowskis' };
404
+
405
+ it('should get a movie by ID', async () => {
406
+ const [stateName, stateParams] = createProviderState(movieExists(movieWithId));
407
+
408
+ await pact
409
+ .addInteraction()
410
+ .given(stateName, stateParams)
411
+ .uponReceiving('a request to get movie by ID')
412
+ .withRequest(
413
+ 'GET',
414
+ '/movies/1',
415
+ setJsonContent({
416
+ headers: { Accept: 'application/json' },
417
+ }),
418
+ )
419
+ .willRespondWith(
420
+ 200,
421
+ setJsonBody(
422
+ like({
423
+ id: integer(1),
424
+ name: string('The Matrix'),
425
+ year: integer(1999),
426
+ rating: like(8.7),
427
+ director: string('Wachowskis'),
428
+ }),
429
+ ),
430
+ )
431
+ .executeTest(async (mockServer: V3MockServer) => {
432
+ // Inject mock server URL into the REAL consumer code
433
+ setApiUrl(mockServer.url);
434
+
435
+ // Call the REAL consumer function — this is what CDC testing validates
436
+ const movie = await getMovieById(1);
437
+
438
+ expect(movie.id).toBe(1);
439
+ expect(movie.name).toBe('The Matrix');
440
+ });
441
+ });
442
+
443
+ it('should handle movie not found', async () => {
444
+ await pact
445
+ .addInteraction()
446
+ .given('No movies exist')
447
+ .uponReceiving('a request for a non-existent movie')
448
+ .withRequest('GET', '/movies/999')
449
+ .willRespondWith(404, setJsonBody({ error: 'Movie not found' }))
450
+ .executeTest(async (mockServer: V3MockServer) => {
451
+ setApiUrl(mockServer.url);
452
+
453
+ await expect(getMovieById(999)).rejects.toThrow();
454
+ });
455
+ });
456
+ });
457
+ ```
458
+
459
+ **Key Points**:
460
+
461
+ - **CRITICAL**: Always test your REAL consumer code — import and call actual API client functions, never raw `fetch()`
462
+ - Using `fetch()` directly only tests that Pact's mock server works, which is meaningless
463
+ - Consumer code MUST expose a URL injection mechanism: `setApiUrl()`, env var override, or constructor parameter
464
+ - If the consumer code doesn't support URL injection, add it — this is a design prerequisite for CDC testing
465
+ - Use PactV4 `addInteraction()` builder (not PactV3 fluent API with `withRequest({...})` object)
466
+ - **Interaction naming convention**: Use the pattern `"a request to <action> <resource> [<condition>]"` for `uponReceiving()`. Examples: `"a request to get a movie by ID"`, `"a request to delete a non-existing movie"`, `"a request to create a movie that already exists"`. These names appear in Pact Broker UI and verification logs — keep them descriptive and unique within the consumer-provider pair.
467
+ - Use `setJsonContent` for request/response builder callbacks with query/header/body concerns; use `setJsonBody` for body-only response callbacks
468
+ - Provider state factory functions (`movieExists`) return `ProviderStateInput` objects
469
+ - `createProviderState` converts to `[stateName, stateParams]` tuple for `.given()`
470
+
471
+ **Common URL injection patterns** (pick whichever fits your consumer architecture):
472
+
473
+ | Pattern | Example | Best For |
474
+ | -------------------- | -------------------------------------------- | --------------------- |
475
+ | `setApiUrl(url)` | Mutates axios instance `baseURL` | Singleton HTTP client |
476
+ | Constructor param | `new ApiClient({ baseUrl: mockServer.url })` | Class-based clients |
477
+ | Environment variable | `process.env.API_URL = mockServer.url` | Config-driven apps |
478
+ | Factory function | `createApi({ baseUrl: mockServer.url })` | Functional patterns |
479
+
480
+ ---
481
+
482
+ ### Example 8: Support Files
483
+
484
+ #### Pact Config Factory
485
+
486
+ ```typescript
487
+ // tests/contract/support/pact-config.ts
488
+ import path from 'node:path';
489
+ import { PactV4 } from '@pact-foundation/pact';
490
+
491
+ export const createPact = (overrides?: { consumer?: string; provider?: string }) =>
492
+ new PactV4({
493
+ dir: path.resolve(process.cwd(), 'pacts'),
494
+ consumer: overrides?.consumer ?? 'MyConsumerApp',
495
+ provider: overrides?.provider ?? 'MyProviderAPI',
496
+ logLevel: 'warn',
497
+ });
498
+ ```
499
+
500
+ #### Provider State Factories
501
+
502
+ ```typescript
503
+ // tests/contract/support/provider-states.ts
504
+ import type { ProviderStateInput } from './consumer-helpers';
505
+
506
+ export const movieExists = (movie: { id: number; name: string; year: number; rating: number; director: string }): ProviderStateInput => ({
507
+ name: 'An existing movie exists',
508
+ params: movie,
509
+ });
510
+
511
+ export const hasMovieWithId = (id: number): ProviderStateInput => ({
512
+ name: 'Has a movie with a specific ID',
513
+ params: { id },
514
+ });
515
+ ```
516
+
517
+ #### Local Consumer Helpers Shim
518
+
519
+ ```typescript
520
+ // tests/contract/support/consumer-helpers.ts
521
+ // TODO(temporary scaffolding): Replace local TemplateHeaders/TemplateQuery types
522
+ // with '@seontechnologies/pactjs-utils' exports when available.
523
+
524
+ type TemplateHeaders = Record<string, string | number | boolean>;
525
+ type TemplateQueryValue = string | number | boolean | Array<string | number | boolean>;
526
+ type TemplateQuery = Record<string, TemplateQueryValue>;
527
+
528
+ export type ProviderStateInput = {
529
+ name: string;
530
+ params: Record<string, unknown>;
531
+ };
532
+
533
+ type JsonMap = { [key: string]: boolean | number | string | null | JsonMap | Array<unknown> };
534
+ type JsonContentBuilder = {
535
+ headers: (headers: TemplateHeaders) => unknown;
536
+ jsonBody: (body: unknown) => unknown;
537
+ query?: (query: TemplateQuery) => unknown;
538
+ };
539
+
540
+ export type JsonContentInput = {
541
+ body?: unknown;
542
+ headers?: TemplateHeaders;
543
+ query?: TemplateQuery;
544
+ };
545
+
546
+ export const toJsonMap = (obj: Record<string, unknown>): JsonMap =>
547
+ Object.fromEntries(
548
+ Object.entries(obj).map(([key, value]) => {
549
+ if (value === null || value === undefined) return [key, 'null'];
550
+ if (typeof value === 'object' && !(value instanceof Date) && !Array.isArray(value)) return [key, JSON.stringify(value)];
551
+ if (typeof value === 'number' || typeof value === 'boolean') return [key, value];
552
+ if (value instanceof Date) return [key, value.toISOString()];
553
+ return [key, String(value)];
554
+ }),
555
+ );
556
+
557
+ export const createProviderState = ({ name, params }: ProviderStateInput): [string, JsonMap] => [name, toJsonMap(params)];
558
+
559
+ export const setJsonContent =
560
+ ({ body, headers, query }: JsonContentInput) =>
561
+ (builder: JsonContentBuilder): void => {
562
+ if (query && builder.query) {
563
+ builder.query(query);
564
+ }
565
+
566
+ if (headers) {
567
+ builder.headers(headers);
568
+ }
569
+
570
+ if (body !== undefined) {
571
+ builder.jsonBody(body);
572
+ }
573
+ };
574
+
575
+ export const setJsonBody = (body: unknown) => setJsonContent({ body });
576
+ ```
577
+
578
+ **Key Points**:
579
+
580
+ - If `@seontechnologies/pactjs-utils` is not yet installed, create a local shim that mirrors the API
581
+ - Add a TODO comment noting to swap for the published package when available
582
+ - The shim exports `createProviderState`, `toJsonMap`, `setJsonContent`, `setJsonBody`, and helper input types
583
+ - Keep shim types local (or sourced from public exports only); do not import from internal Pact paths like `@pact-foundation/pact/src/*`
584
+
585
+ ---
586
+
587
+ ### Example 9: .gitignore Entries
588
+
589
+ **Context**: Pact-specific entries to add to `.gitignore`.
590
+
591
+ ```
592
+ # Pact contract testing artifacts
593
+ /pacts/
594
+ pact-logs/
595
+ ```
596
+
597
+ ---
598
+
599
+ ## Validation Checklist
600
+
601
+ Before presenting the consumer CDC framework to the user, verify:
602
+
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`)
605
+ - [ ] Scripts source `env-setup.sh` inline in package.json
606
+ - [ ] Shell scripts use `pact-broker` not `npx pact-broker`
607
+ - [ ] Shell scripts use `PACTICIPANT` env var pattern
608
+ - [ ] `can-i-deploy.sh` has `--retry-while-unknown=10 --retry-interval=30`
609
+ - [ ] `record-deployment.sh` has branch guard
610
+ - [ ] `env-setup.sh` uses `set -eu`; broker scripts use `set -euo pipefail` — each with explanatory comment
611
+ - [ ] CI workflow named `contract-test-consumer.yml`
612
+ - [ ] CI has workflow-level env block (not per-step)
613
+ - [ ] CI has `detect-breaking-change` step before install
614
+ - [ ] CI step numbering skips (3) — webhook-triggered provider verification
615
+ - [ ] CI can-i-deploy has `PACT_BREAKING_CHANGE != 'true'` condition
616
+ - [ ] CI has NO upload-artifact step
617
+ - [ ] `.github/actions/detect-breaking-change/action.yml` exists
618
+ - [ ] Consumer tests use `.pacttest.ts` extension
619
+ - [ ] Consumer tests use PactV4 `addInteraction()` builder
620
+ - [ ] `uponReceiving()` names follow `"a request to <action> <resource> [<condition>]"` pattern and are unique within the consumer-provider pair
621
+ - [ ] Interaction callbacks use `setJsonContent` for query/header/body and `setJsonBody` for body-only responses
622
+ - [ ] Request bodies use exact values (no `like()` wrapper) — Postel's Law: be strict in what you send
623
+ - [ ] `like()`, `eachLike()`, `string()`, `integer()` matchers are only used in `willRespondWith` (responses), not in `withRequest` (requests) — matchers check type/shape, not exact values
624
+ - [ ] Consumer tests call REAL consumer code (actual API client functions), NOT raw `fetch()`
625
+ - [ ] Consumer code exposes URL injection mechanism (`setApiUrl()`, env var, or constructor param)
626
+ - [ ] Local consumer-helpers shim present if pactjs-utils not installed
627
+ - [ ] `.gitignore` includes `/pacts/` and `pact-logs/`
628
+
629
+ ## Related Fragments
630
+
631
+ - `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
634
+ - `pactjs-utils-request-filter.md` — Auth injection for provider verification
635
+ - `contract-testing.md` — Foundational CDC patterns and resilience coverage