@cregis-dev/cckit 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +89 -85
  3. package/bin/cckit.js +3 -3
  4. package/package.json +7 -5
  5. package/registry.json +43 -9
  6. package/src/adapters/trae-adapter.js +90 -90
  7. package/src/cli.js +2 -2
  8. package/src/commands/init.js +337 -333
  9. package/src/commands/status.js +62 -62
  10. package/src/commands/sync.js +325 -325
  11. package/src/commands/update.js +430 -425
  12. package/src/core/config.js +82 -82
  13. package/src/core/differ.js +57 -57
  14. package/src/core/installer.js +97 -97
  15. package/src/core/plugin-installer.js +278 -232
  16. package/src/core/registry.js +75 -75
  17. package/src/core/templatize.js +42 -42
  18. package/src/core/upstream.js +357 -357
  19. package/src/utils/fs.js +55 -50
  20. package/src/utils/logger.js +16 -16
  21. package/templates/bmad/_config/agent-manifest.csv +12 -12
  22. package/templates/bmad/_config/agents/bmm-analyst.customize.yaml +41 -41
  23. package/templates/bmad/_config/agents/bmm-architect.customize.yaml +41 -41
  24. package/templates/bmad/_config/agents/bmm-dev.customize.yaml +41 -41
  25. package/templates/bmad/_config/agents/bmm-pm.customize.yaml +41 -41
  26. package/templates/bmad/_config/agents/bmm-qa.customize.yaml +41 -41
  27. package/templates/bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -41
  28. package/templates/bmad/_config/agents/bmm-sm.customize.yaml +41 -41
  29. package/templates/bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -41
  30. package/templates/bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -41
  31. package/templates/bmad/_config/agents/core-bmad-master.customize.yaml +41 -41
  32. package/templates/bmad/_config/agents/tea-tea.customize.yaml +41 -41
  33. package/templates/bmad/_config/bmad-help.csv +48 -47
  34. package/templates/bmad/_config/files-manifest.csv +118 -112
  35. package/templates/bmad/_config/ides/claude-code.yaml +2 -2
  36. package/templates/bmad/_config/ides/opencode.yaml +5 -5
  37. package/templates/bmad/_config/ides/trae.yaml +2 -2
  38. package/templates/bmad/_config/task-manifest.csv +8 -7
  39. package/templates/bmad/_config/tool-manifest.csv +1 -1
  40. package/templates/bmad/_config/workflow-manifest.csv +35 -35
  41. package/templates/bmad/bmm/agents/analyst.md +78 -78
  42. package/templates/bmad/bmm/agents/architect.md +58 -58
  43. package/templates/bmad/bmm/agents/dev.md +69 -69
  44. package/templates/bmad/bmm/agents/pm.md +72 -72
  45. package/templates/bmad/bmm/agents/qa.md +92 -92
  46. package/templates/bmad/bmm/agents/quick-flow-solo-dev.md +69 -69
  47. package/templates/bmad/bmm/agents/sm.md +70 -70
  48. package/templates/bmad/bmm/agents/tech-writer/tech-writer.md +70 -70
  49. package/templates/bmad/bmm/agents/ux-designer.md +57 -57
  50. package/templates/bmad/bmm/config.yaml +15 -15
  51. package/templates/bmad/bmm/data/project-context-template.md +26 -26
  52. package/templates/bmad/bmm/module-help.csv +31 -31
  53. package/templates/bmad/bmm/teams/default-party.csv +20 -20
  54. package/templates/bmad/bmm/teams/team-fullstack.yaml +12 -12
  55. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -10
  56. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -177
  57. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -161
  58. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -199
  59. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -202
  60. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -205
  61. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -219
  62. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -162
  63. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -57
  64. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -137
  65. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -229
  66. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -238
  67. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -206
  68. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -234
  69. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +444 -444
  70. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -182
  71. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -237
  72. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -249
  73. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -259
  74. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -177
  75. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -476
  76. package/templates/bmad/bmm/workflows/1-analysis/research/research.template.md +29 -29
  77. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -137
  78. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -239
  79. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -248
  80. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -202
  81. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -233
  82. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +487 -487
  83. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -54
  84. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -54
  85. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -54
  86. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +14 -14
  87. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -197
  88. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +10 -10
  89. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -191
  90. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +152 -152
  91. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -224
  92. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -154
  93. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -170
  94. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -226
  95. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -213
  96. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -207
  97. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -226
  98. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -237
  99. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -228
  100. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -231
  101. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -242
  102. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -217
  103. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -124
  104. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -247
  105. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -208
  106. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -249
  107. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -253
  108. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -168
  109. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -226
  110. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -191
  111. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -209
  112. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -174
  113. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -214
  114. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -228
  115. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -217
  116. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -205
  117. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -243
  118. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -263
  119. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -209
  120. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -264
  121. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -242
  122. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -231
  123. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -10
  124. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -63
  125. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -65
  126. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -63
  127. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -135
  128. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -127
  129. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -190
  130. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -216
  131. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -219
  132. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -234
  133. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -252
  134. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -254
  135. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -224
  136. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -224
  137. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -241
  138. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -248
  139. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -237
  140. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -264
  141. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -171
  142. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -13
  143. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -42
  144. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -184
  145. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -172
  146. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -173
  147. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -133
  148. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -245
  149. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -129
  150. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -4
  151. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -54
  152. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -12
  153. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +12 -12
  154. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +6 -6
  155. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -153
  156. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +173 -173
  157. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -224
  158. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +329 -329
  159. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -318
  160. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -359
  161. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -379
  162. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -359
  163. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -76
  164. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -49
  165. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -259
  166. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -233
  167. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -272
  168. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -149
  169. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -57
  170. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -58
  171. package/templates/bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -23
  172. package/templates/bmad/bmm/workflows/4-implementation/code-review/instructions.xml +226 -226
  173. package/templates/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -43
  174. package/templates/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -288
  175. package/templates/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +207 -207
  176. package/templates/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -53
  177. package/templates/bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -358
  178. package/templates/bmad/bmm/workflows/4-implementation/create-story/instructions.xml +346 -346
  179. package/templates/bmad/bmm/workflows/4-implementation/create-story/template.md +49 -49
  180. package/templates/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -52
  181. package/templates/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -80
  182. package/templates/bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -410
  183. package/templates/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -20
  184. package/templates/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -1444
  185. package/templates/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -52
  186. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -33
  187. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -226
  188. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -55
  189. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -47
  190. package/templates/bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -230
  191. package/templates/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -25
  192. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -174
  193. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -118
  194. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -111
  195. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -111
  196. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -104
  197. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -146
  198. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -50
  199. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -189
  200. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +143 -143
  201. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +126 -126
  202. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -200
  203. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -74
  204. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -79
  205. package/templates/bmad/bmm/workflows/document-project/checklist.md +245 -245
  206. package/templates/bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -12
  207. package/templates/bmad/bmm/workflows/document-project/instructions.md +130 -130
  208. package/templates/bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -345
  209. package/templates/bmad/bmm/workflows/document-project/templates/index-template.md +169 -169
  210. package/templates/bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -103
  211. package/templates/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -160
  212. package/templates/bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -135
  213. package/templates/bmad/bmm/workflows/document-project/workflow.yaml +22 -22
  214. package/templates/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -298
  215. package/templates/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -31
  216. package/templates/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -1106
  217. package/templates/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -31
  218. package/templates/bmad/bmm/workflows/generate-project-context/project-context-template.md +21 -21
  219. package/templates/bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -184
  220. package/templates/bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -318
  221. package/templates/bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -278
  222. package/templates/bmad/bmm/workflows/generate-project-context/workflow.md +49 -49
  223. package/templates/bmad/bmm/workflows/qa/automate/checklist.md +33 -33
  224. package/templates/bmad/bmm/workflows/qa/automate/instructions.md +110 -110
  225. package/templates/bmad/bmm/workflows/qa/automate/workflow.yaml +44 -44
  226. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/checklist.md +33 -33
  227. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/instructions.md +110 -110
  228. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -42
  229. package/templates/bmad/commands/bmad-agent-bmad-master.md +15 -15
  230. package/templates/bmad/commands/bmad-agent-bmm-analyst.md +15 -15
  231. package/templates/bmad/commands/bmad-agent-bmm-architect.md +15 -15
  232. package/templates/bmad/commands/bmad-agent-bmm-dev.md +15 -15
  233. package/templates/bmad/commands/bmad-agent-bmm-pm.md +15 -15
  234. package/templates/bmad/commands/bmad-agent-bmm-qa.md +15 -15
  235. package/templates/bmad/commands/bmad-agent-bmm-quick-flow-solo-dev.md +15 -15
  236. package/templates/bmad/commands/bmad-agent-bmm-sm.md +15 -15
  237. package/templates/bmad/commands/bmad-agent-bmm-tech-writer.md +15 -15
  238. package/templates/bmad/commands/bmad-agent-bmm-ux-designer.md +15 -15
  239. package/templates/bmad/commands/bmad-agent-tea-tea.md +15 -15
  240. package/templates/bmad/commands/bmad-bmm-check-implementation-readiness.md +6 -6
  241. package/templates/bmad/commands/bmad-bmm-code-review.md +14 -14
  242. package/templates/bmad/commands/bmad-bmm-correct-course.md +14 -14
  243. package/templates/bmad/commands/bmad-bmm-create-architecture.md +6 -6
  244. package/templates/bmad/commands/bmad-bmm-create-epics-and-stories.md +6 -6
  245. package/templates/bmad/commands/bmad-bmm-create-prd.md +6 -6
  246. package/templates/bmad/commands/bmad-bmm-create-product-brief.md +6 -6
  247. package/templates/bmad/commands/bmad-bmm-create-story.md +14 -14
  248. package/templates/bmad/commands/bmad-bmm-create-ux-design.md +6 -6
  249. package/templates/bmad/commands/bmad-bmm-dev-story.md +14 -14
  250. package/templates/bmad/commands/bmad-bmm-document-project.md +14 -14
  251. package/templates/bmad/commands/bmad-bmm-domain-research.md +6 -6
  252. package/templates/bmad/commands/bmad-bmm-edit-prd.md +6 -6
  253. package/templates/bmad/commands/bmad-bmm-generate-project-context.md +6 -6
  254. package/templates/bmad/commands/bmad-bmm-market-research.md +6 -6
  255. package/templates/bmad/commands/bmad-bmm-qa-automate.md +15 -15
  256. package/templates/bmad/commands/bmad-bmm-qa-generate-e2e-tests.md +14 -14
  257. package/templates/bmad/commands/bmad-bmm-quick-dev.md +6 -6
  258. package/templates/bmad/commands/bmad-bmm-quick-spec.md +6 -6
  259. package/templates/bmad/commands/bmad-bmm-retrospective.md +14 -14
  260. package/templates/bmad/commands/bmad-bmm-sprint-planning.md +14 -14
  261. package/templates/bmad/commands/bmad-bmm-sprint-status.md +14 -14
  262. package/templates/bmad/commands/bmad-bmm-technical-research.md +6 -6
  263. package/templates/bmad/commands/bmad-bmm-validate-prd.md +6 -6
  264. package/templates/bmad/commands/bmad-brainstorming.md +6 -6
  265. package/templates/bmad/commands/bmad-editorial-review-prose.md +10 -10
  266. package/templates/bmad/commands/bmad-editorial-review-structure.md +10 -10
  267. package/templates/bmad/commands/bmad-help.md +10 -10
  268. package/templates/bmad/commands/bmad-index-docs.md +10 -10
  269. package/templates/bmad/commands/bmad-party-mode.md +6 -6
  270. package/templates/bmad/commands/bmad-review-adversarial-general.md +10 -10
  271. package/templates/bmad/commands/bmad-review-edge-case-hunter.md +10 -0
  272. package/templates/bmad/commands/bmad-shard-doc.md +10 -10
  273. package/templates/bmad/commands/bmad-tea-teach-me-testing.md +6 -6
  274. package/templates/bmad/commands/bmad-tea-testarch-atdd.md +14 -14
  275. package/templates/bmad/commands/bmad-tea-testarch-automate.md +14 -14
  276. package/templates/bmad/commands/bmad-tea-testarch-ci.md +14 -14
  277. package/templates/bmad/commands/bmad-tea-testarch-framework.md +14 -14
  278. package/templates/bmad/commands/bmad-tea-testarch-nfr.md +14 -14
  279. package/templates/bmad/commands/bmad-tea-testarch-test-design.md +14 -14
  280. package/templates/bmad/commands/bmad-tea-testarch-test-review.md +14 -14
  281. package/templates/bmad/commands/bmad-tea-testarch-trace.md +14 -14
  282. package/templates/bmad/core/agents/bmad-master.md +56 -56
  283. package/templates/bmad/core/config.yaml +8 -8
  284. package/templates/bmad/core/module-help.csv +10 -9
  285. package/templates/bmad/core/tasks/editorial-review-prose.xml +101 -101
  286. package/templates/bmad/core/tasks/editorial-review-structure.xml +207 -207
  287. package/templates/bmad/core/tasks/help.md +86 -86
  288. package/templates/bmad/core/tasks/index-docs.xml +64 -64
  289. package/templates/bmad/core/tasks/review-adversarial-general.xml +48 -48
  290. package/templates/bmad/core/tasks/review-edge-case-hunter.xml +63 -0
  291. package/templates/bmad/core/tasks/shard-doc.xml +107 -107
  292. package/templates/bmad/core/tasks/workflow.xml +234 -234
  293. package/templates/bmad/core/workflows/advanced-elicitation/methods.csv +51 -51
  294. package/templates/bmad/core/workflows/advanced-elicitation/workflow.xml +117 -117
  295. package/templates/bmad/core/workflows/brainstorming/brain-methods.csv +61 -61
  296. package/templates/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +210 -197
  297. package/templates/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -122
  298. package/templates/bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -225
  299. package/templates/bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -237
  300. package/templates/bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -209
  301. package/templates/bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -264
  302. package/templates/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -399
  303. package/templates/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -303
  304. package/templates/bmad/core/workflows/brainstorming/template.md +15 -15
  305. package/templates/bmad/core/workflows/brainstorming/workflow.md +60 -58
  306. package/templates/bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -138
  307. package/templates/bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -187
  308. package/templates/bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -168
  309. package/templates/bmad/core/workflows/party-mode/workflow.md +194 -194
  310. package/templates/bmad/tea/agents/tea.md +71 -71
  311. package/templates/bmad/tea/config.yaml +24 -20
  312. package/templates/bmad/tea/testarch/knowledge/contract-testing.md +24 -2
  313. package/templates/bmad/tea/testarch/knowledge/pact-mcp.md +204 -0
  314. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-consumer-helpers.md +211 -0
  315. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-overview.md +210 -0
  316. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-provider-verifier.md +315 -0
  317. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-request-filter.md +224 -0
  318. package/templates/bmad/tea/testarch/tea-index.csv +5 -0
  319. package/templates/bmad/tea/workflows/testarch/README.md +1 -1
  320. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +30 -0
  321. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +159 -57
  322. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subagent-api-failing.md +215 -0
  323. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subagent-e2e-failing.md +244 -0
  324. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +31 -15
  325. package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +1 -1
  326. package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +3 -3
  327. package/templates/bmad/tea/workflows/testarch/atdd/workflow.yaml +2 -2
  328. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +32 -0
  329. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +215 -101
  330. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03a-subagent-api.md +193 -0
  331. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subagent-backend.md +246 -0
  332. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subagent-e2e.md +213 -0
  333. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +38 -22
  334. package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +1 -1
  335. package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +3 -3
  336. package/templates/bmad/tea/workflows/testarch/automate/workflow.yaml +2 -2
  337. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +124 -1
  338. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +7 -0
  339. package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +1 -1
  340. package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +3 -3
  341. package/templates/bmad/tea/workflows/testarch/ci/workflow.yaml +2 -2
  342. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +126 -3
  343. package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +1 -1
  344. package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +3 -3
  345. package/templates/bmad/tea/workflows/testarch/framework/workflow.yaml +2 -2
  346. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +150 -36
  347. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subagent-security.md +138 -0
  348. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subagent-performance.md +84 -0
  349. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subagent-reliability.md +85 -0
  350. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subagent-scalability.md +88 -0
  351. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +27 -10
  352. package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +1 -1
  353. package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +3 -3
  354. package/templates/bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  355. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +3 -3
  356. package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +6 -6
  357. package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow.md +1 -1
  358. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +30 -0
  359. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +72 -1
  360. package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +1 -1
  361. package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +3 -3
  362. package/templates/bmad/tea/workflows/testarch/test-design/workflow.yaml +2 -2
  363. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +29 -1
  364. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +147 -46
  365. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subagent-determinism.md +214 -0
  366. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subagent-isolation.md +125 -0
  367. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subagent-maintainability.md +102 -0
  368. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subagent-performance.md +117 -0
  369. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +10 -10
  370. package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +1 -1
  371. package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +3 -3
  372. package/templates/bmad/tea/workflows/testarch/test-review/workflow.yaml +2 -2
  373. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +92 -1
  374. package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +1 -1
  375. package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +3 -3
  376. package/templates/bmad/tea/workflows/testarch/trace/workflow.yaml +2 -2
  377. package/templates/ecc/agents/chief-of-staff.md +151 -0
  378. package/templates/ecc/commands/claw.md +79 -0
  379. package/templates/ecc/rules/README.md +23 -2
  380. package/templates/ecc/rules/common/development-workflow.md +37 -0
  381. package/templates/ecc/rules/common/git-workflow.md +2 -23
  382. package/templates/ecc/rules/swift/coding-style.md +47 -0
  383. package/templates/ecc/rules/swift/hooks.md +20 -0
  384. package/templates/ecc/rules/swift/patterns.md +66 -0
  385. package/templates/ecc/rules/swift/security.md +33 -0
  386. package/templates/ecc/rules/swift/testing.md +45 -0
  387. package/templates/ecc/skills/api-design/SKILL.md +1 -0
  388. package/templates/ecc/skills/article-writing/SKILL.md +85 -0
  389. package/templates/ecc/skills/backend-patterns/SKILL.md +1 -0
  390. package/templates/ecc/skills/clickhouse-io/SKILL.md +1 -0
  391. package/templates/ecc/skills/coding-standards/SKILL.md +1 -0
  392. package/templates/ecc/skills/configure-ecc/SKILL.md +32 -4
  393. package/templates/ecc/skills/content-engine/SKILL.md +88 -0
  394. package/templates/ecc/skills/content-hash-cache-pattern/SKILL.md +1 -0
  395. package/templates/ecc/skills/continuous-learning/SKILL.md +2 -1
  396. package/templates/ecc/skills/continuous-learning-v2/SKILL.md +4 -1
  397. package/templates/ecc/skills/continuous-learning-v2/hooks/observe.sh +14 -7
  398. package/templates/ecc/skills/cost-aware-llm-pipeline/SKILL.md +1 -0
  399. package/templates/ecc/skills/cpp-coding-standards/SKILL.md +1 -0
  400. package/templates/ecc/skills/cpp-testing/SKILL.md +1 -0
  401. package/templates/ecc/skills/database-migrations/SKILL.md +1 -0
  402. package/templates/ecc/skills/deployment-patterns/SKILL.md +1 -0
  403. package/templates/ecc/skills/django-patterns/SKILL.md +1 -0
  404. package/templates/ecc/skills/django-security/SKILL.md +1 -0
  405. package/templates/ecc/skills/django-tdd/SKILL.md +1 -0
  406. package/templates/ecc/skills/django-verification/SKILL.md +1 -0
  407. package/templates/ecc/skills/docker-patterns/SKILL.md +1 -0
  408. package/templates/ecc/skills/e2e-testing/SKILL.md +1 -0
  409. package/templates/ecc/skills/eval-harness/SKILL.md +1 -0
  410. package/templates/ecc/skills/foundation-models-on-device/SKILL.md +243 -0
  411. package/templates/ecc/skills/frontend-patterns/SKILL.md +1 -0
  412. package/templates/ecc/skills/frontend-slides/SKILL.md +184 -0
  413. package/templates/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  414. package/templates/ecc/skills/golang-patterns/SKILL.md +1 -0
  415. package/templates/ecc/skills/golang-testing/SKILL.md +1 -0
  416. package/templates/ecc/skills/investor-materials/SKILL.md +96 -0
  417. package/templates/ecc/skills/investor-outreach/SKILL.md +76 -0
  418. package/templates/ecc/skills/iterative-retrieval/SKILL.md +1 -0
  419. package/templates/ecc/skills/java-coding-standards/SKILL.md +1 -0
  420. package/templates/ecc/skills/jpa-patterns/SKILL.md +1 -0
  421. package/templates/ecc/skills/liquid-glass-design/SKILL.md +279 -0
  422. package/templates/ecc/skills/market-research/SKILL.md +75 -0
  423. package/templates/ecc/skills/nutrient-document-processing/SKILL.md +1 -1
  424. package/templates/ecc/skills/postgres-patterns/SKILL.md +1 -0
  425. package/templates/ecc/skills/project-guidelines-example/SKILL.md +1 -0
  426. package/templates/ecc/skills/python-patterns/SKILL.md +1 -0
  427. package/templates/ecc/skills/python-testing/SKILL.md +1 -0
  428. package/templates/ecc/skills/regex-vs-llm-structured-text/SKILL.md +1 -0
  429. package/templates/ecc/skills/search-first/SKILL.md +3 -1
  430. package/templates/ecc/skills/security-review/SKILL.md +1 -0
  431. package/templates/ecc/skills/security-scan/SKILL.md +1 -0
  432. package/templates/ecc/skills/skill-stocktake/SKILL.md +176 -0
  433. package/templates/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  434. package/templates/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
  435. package/templates/ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
  436. package/templates/ecc/skills/springboot-patterns/SKILL.md +1 -0
  437. package/templates/ecc/skills/springboot-security/SKILL.md +1 -0
  438. package/templates/ecc/skills/springboot-tdd/SKILL.md +1 -0
  439. package/templates/ecc/skills/springboot-verification/SKILL.md +1 -0
  440. package/templates/ecc/skills/strategic-compact/SKILL.md +1 -0
  441. package/templates/ecc/skills/swift-actor-persistence/SKILL.md +1 -0
  442. package/templates/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
  443. package/templates/ecc/skills/swift-protocol-di-testing/SKILL.md +1 -0
  444. package/templates/ecc/skills/swiftui-patterns/SKILL.md +259 -0
  445. package/templates/ecc/skills/tdd-workflow/SKILL.md +1 -0
  446. package/templates/ecc/skills/verification-loop/SKILL.md +1 -0
  447. package/templates/ecc/skills/visa-doc-translate/README.md +86 -0
  448. package/templates/ecc/skills/visa-doc-translate/SKILL.md +117 -0
  449. package/templates/ext-skills/pinchtab/SKILL.md +89 -486
  450. package/templates/ext-skills/pinchtab/TRUST.md +69 -0
  451. package/templates/ext-skills/pinchtab/references/api.md +297 -0
  452. package/templates/ext-skills/pinchtab/references/env.md +45 -0
  453. package/templates/ext-skills/pinchtab/references/profiles.md +107 -0
  454. package/templates/mcp/claude-code/.mcp.json +35 -35
  455. package/templates/mcp/trae/mcp.json +35 -35
  456. package/templates/plugins/claude-code-setup/.claude-plugin/plugin.json +9 -0
  457. package/templates/plugins/claude-code-setup/LICENSE +202 -0
  458. package/templates/plugins/claude-code-setup/README.md +29 -0
  459. package/templates/plugins/claude-code-setup/automation-recommender-example.png +0 -0
  460. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/SKILL.md +288 -0
  461. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/hooks-patterns.md +226 -0
  462. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/mcp-servers.md +263 -0
  463. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/plugins-reference.md +98 -0
  464. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/skills-reference.md +408 -0
  465. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/subagent-templates.md +181 -0
  466. package/templates/plugins/claude-md-management/.claude-plugin/plugin.json +9 -0
  467. package/templates/plugins/claude-md-management/LICENSE +202 -0
  468. package/templates/plugins/claude-md-management/README.md +40 -0
  469. package/templates/plugins/claude-md-management/claude-md-improver-example.png +0 -0
  470. package/templates/plugins/claude-md-management/commands/revise-claude-md.md +54 -0
  471. package/templates/plugins/claude-md-management/revise-claude-md-example.png +0 -0
  472. package/templates/plugins/claude-md-management/skills/claude-md-improver/SKILL.md +179 -0
  473. package/templates/plugins/claude-md-management/skills/claude-md-improver/references/quality-criteria.md +109 -0
  474. package/templates/plugins/claude-md-management/skills/claude-md-improver/references/templates.md +253 -0
  475. package/templates/plugins/claude-md-management/skills/claude-md-improver/references/update-guidelines.md +150 -0
  476. package/templates/plugins/code-simplifier/.claude-plugin/plugin.json +9 -0
  477. package/templates/plugins/code-simplifier/LICENSE +202 -0
  478. package/templates/plugins/code-simplifier/agents/code-simplifier.md +52 -0
  479. package/templates/plugins/commit-commands/.claude-plugin/plugin.json +9 -0
  480. package/templates/plugins/commit-commands/LICENSE +202 -0
  481. package/templates/plugins/commit-commands/README.md +225 -0
  482. package/templates/plugins/commit-commands/commands/clean_gone.md +53 -0
  483. package/templates/plugins/commit-commands/commands/commit-push-pr.md +20 -0
  484. package/templates/plugins/commit-commands/commands/commit.md +17 -0
  485. package/templates/trae-bmad/rules/bmad-agent-bmad-master.md +15 -15
  486. package/templates/trae-bmad/rules/bmad-agent-bmm-analyst.md +15 -15
  487. package/templates/trae-bmad/rules/bmad-agent-bmm-architect.md +15 -15
  488. package/templates/trae-bmad/rules/bmad-agent-bmm-dev.md +15 -15
  489. package/templates/trae-bmad/rules/bmad-agent-bmm-pm.md +15 -15
  490. package/templates/trae-bmad/rules/bmad-agent-bmm-qa.md +15 -15
  491. package/templates/trae-bmad/rules/bmad-agent-bmm-quick-flow-solo-dev.md +15 -15
  492. package/templates/trae-bmad/rules/bmad-agent-bmm-sm.md +15 -15
  493. package/templates/trae-bmad/rules/bmad-agent-bmm-tech-writer.md +15 -15
  494. package/templates/trae-bmad/rules/bmad-agent-bmm-ux-designer.md +15 -15
  495. package/templates/trae-bmad/rules/bmad-agent-tea-tea.md +15 -15
  496. package/templates/trae-bmad/rules/bmad-bmm-check-implementation-readiness.md +6 -6
  497. package/templates/trae-bmad/rules/bmad-bmm-code-review.md +14 -14
  498. package/templates/trae-bmad/rules/bmad-bmm-correct-course.md +14 -14
  499. package/templates/trae-bmad/rules/bmad-bmm-create-architecture.md +6 -6
  500. package/templates/trae-bmad/rules/bmad-bmm-create-epics-and-stories.md +6 -6
  501. package/templates/trae-bmad/rules/bmad-bmm-create-prd.md +6 -6
  502. package/templates/trae-bmad/rules/bmad-bmm-create-product-brief.md +6 -6
  503. package/templates/trae-bmad/rules/bmad-bmm-create-story.md +14 -14
  504. package/templates/trae-bmad/rules/bmad-bmm-create-ux-design.md +6 -6
  505. package/templates/trae-bmad/rules/bmad-bmm-dev-story.md +14 -14
  506. package/templates/trae-bmad/rules/bmad-bmm-document-project.md +14 -14
  507. package/templates/trae-bmad/rules/bmad-bmm-domain-research.md +6 -6
  508. package/templates/trae-bmad/rules/bmad-bmm-edit-prd.md +6 -6
  509. package/templates/trae-bmad/rules/bmad-bmm-generate-project-context.md +6 -6
  510. package/templates/trae-bmad/rules/bmad-bmm-market-research.md +6 -6
  511. package/templates/trae-bmad/rules/bmad-bmm-qa-automate.md +15 -15
  512. package/templates/trae-bmad/rules/bmad-bmm-qa-generate-e2e-tests.md +14 -14
  513. package/templates/trae-bmad/rules/bmad-bmm-quick-dev.md +6 -6
  514. package/templates/trae-bmad/rules/bmad-bmm-quick-spec.md +6 -6
  515. package/templates/trae-bmad/rules/bmad-bmm-retrospective.md +14 -14
  516. package/templates/trae-bmad/rules/bmad-bmm-sprint-planning.md +14 -14
  517. package/templates/trae-bmad/rules/bmad-bmm-sprint-status.md +14 -14
  518. package/templates/trae-bmad/rules/bmad-bmm-technical-research.md +6 -6
  519. package/templates/trae-bmad/rules/bmad-bmm-validate-prd.md +6 -6
  520. package/templates/trae-bmad/rules/bmad-brainstorming.md +6 -6
  521. package/templates/trae-bmad/rules/bmad-editorial-review-prose.md +10 -10
  522. package/templates/trae-bmad/rules/bmad-editorial-review-structure.md +10 -10
  523. package/templates/trae-bmad/rules/bmad-help.md +10 -10
  524. package/templates/trae-bmad/rules/bmad-index-docs.md +10 -10
  525. package/templates/trae-bmad/rules/bmad-party-mode.md +6 -6
  526. package/templates/trae-bmad/rules/bmad-review-adversarial-general.md +10 -10
  527. package/templates/trae-bmad/rules/bmad-review-edge-case-hunter.md +10 -0
  528. package/templates/trae-bmad/rules/bmad-shard-doc.md +10 -10
  529. package/templates/trae-bmad/rules/bmad-tea-teach-me-testing.md +6 -6
  530. package/templates/trae-bmad/rules/bmad-tea-testarch-atdd.md +14 -14
  531. package/templates/trae-bmad/rules/bmad-tea-testarch-automate.md +14 -14
  532. package/templates/trae-bmad/rules/bmad-tea-testarch-ci.md +14 -14
  533. package/templates/trae-bmad/rules/bmad-tea-testarch-framework.md +14 -14
  534. package/templates/trae-bmad/rules/bmad-tea-testarch-nfr.md +14 -14
  535. package/templates/trae-bmad/rules/bmad-tea-testarch-test-design.md +14 -14
  536. package/templates/trae-bmad/rules/bmad-tea-testarch-test-review.md +14 -14
  537. package/templates/trae-bmad/rules/bmad-tea-testarch-trace.md +14 -14
@@ -0,0 +1,204 @@
1
+ # Pact MCP Server (SmartBear)
2
+
3
+ ## Principle
4
+
5
+ Use the SmartBear MCP server to enable AI agent interaction with PactFlow/Pact Broker during contract testing workflows. The MCP server provides tools for generating pact tests, fetching provider states, reviewing test quality, and checking deployment safety — all accessible through the Model Context Protocol.
6
+
7
+ ## Rationale
8
+
9
+ ### Why MCP for contract testing?
10
+
11
+ - **Live broker queries**: AI agents can fetch existing provider states, verification results, and deployment status directly from PactFlow
12
+ - **Test generation assistance**: MCP tools generate consumer and provider tests based on existing contracts, OpenAPI specs, or templates
13
+ - **Automated review**: MCP-powered review checks tests against best practices without manual inspection
14
+ - **Deployment safety**: `can-i-deploy` checks integrated into agent workflows for real-time compatibility verification
15
+
16
+ ### When TEA uses it
17
+
18
+ - **test-design workflow**: Fetch existing provider states to understand current contract landscape
19
+ - **automate workflow**: Generate pact tests using broker knowledge and existing contracts
20
+ - **test-review workflow**: Review pact tests against best practices with automated feedback
21
+ - **ci workflow**: Reference can-i-deploy and matrix tools for pipeline guidance
22
+
23
+ ## Available Tools
24
+
25
+ | # | Tool | Description | When Used |
26
+ | --- | ------------------------- | ----------------------------------------------------------------------- | --------------------- |
27
+ | 1 | **Generate Pact Tests** | Create consumer/provider tests from code, OpenAPI, or templates | automate workflow |
28
+ | 2 | **Fetch Provider States** | List all provider states from broker for a given consumer-provider pair | test-design, automate |
29
+ | 3 | **Review Pact Tests** | Analyze tests against contract testing best practices | test-review |
30
+ | 4 | **Can I Deploy** | Check deployment safety via broker verification matrix | ci workflow |
31
+ | 5 | **Matrix** | Query consumer-provider verification matrix | ci, test-design |
32
+ | 6 | **PactFlow AI Status** | Check AI credits and permissions (PactFlow Cloud only) | diagnostics |
33
+ | 7 | **Metrics - All** | Workspace-wide contract testing metrics | reporting |
34
+ | 8 | **Metrics - Team** | Team-level adoption statistics (PactFlow Cloud only) | reporting |
35
+
36
+ ## Installation
37
+
38
+ ### Config file locations
39
+
40
+ | Tool | Global Config File | Format |
41
+ | ----------------- | ------------------------------------- | ---------------------- |
42
+ | Claude Code | `~/.claude.json` | JSON (`mcpServers`) |
43
+ | Codex | `~/.codex/config.toml` | TOML (`[mcp_servers]`) |
44
+ | Gemini CLI | `~/.gemini/settings.json` | JSON (`mcpServers`) |
45
+ | Cursor | `~/.cursor/mcp.json` | JSON (`mcpServers`) |
46
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` | JSON (`mcpServers`) |
47
+ | VS Code (Copilot) | `.vscode/mcp.json` | JSON (`servers`) |
48
+
49
+ > **Claude Code tip**: Prefer the `claude mcp add` CLI over manual JSON editing. Use `-s user` for global (all projects) or omit for per-project (default).
50
+
51
+ ### CLI shortcuts (Claude Code and Codex)
52
+
53
+ ```bash
54
+ # Claude Code — use add-json for servers with env vars (-s user = global)
55
+ claude mcp add-json -s user smartbear \
56
+ '{"type":"stdio","command":"npx","args":["-y","@smartbear/mcp@latest"],"env":{"PACT_BROKER_BASE_URL":"https://{tenant}.pactflow.io","PACT_BROKER_TOKEN":"<your-token>"}}'
57
+
58
+ # Codex
59
+ codex mcp add smartbear -- npx -y @smartbear/mcp@latest
60
+ ```
61
+
62
+ ### JSON config (Gemini CLI, Cursor, Windsurf)
63
+
64
+ Add a `"smartbear"` entry to the `mcpServers` object in the config file for your tool:
65
+
66
+ ```json
67
+ {
68
+ "mcpServers": {
69
+ "smartbear": {
70
+ "type": "stdio",
71
+ "command": "npx",
72
+ "args": ["-y", "@smartbear/mcp@latest"],
73
+ "env": {
74
+ "PACT_BROKER_BASE_URL": "https://{tenant}.pactflow.io",
75
+ "PACT_BROKER_TOKEN": "<your-api-token>"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### Codex TOML config
83
+
84
+ Codex uses TOML instead of JSON. Add to `~/.codex/config.toml`:
85
+
86
+ ```toml
87
+ [mcp_servers.smartbear]
88
+ command = "npx"
89
+ args = ["-y", "@smartbear/mcp@latest"]
90
+
91
+ [mcp_servers.smartbear.env]
92
+ PACT_BROKER_BASE_URL = "https://{tenant}.pactflow.io"
93
+ PACT_BROKER_TOKEN = "<your-api-token>"
94
+ ```
95
+
96
+ Note the key is `mcp_servers` (underscored), not `mcpServers`.
97
+
98
+ ### VS Code (GitHub Copilot)
99
+
100
+ Add to `.vscode/mcp.json` (note: uses `servers` key, not `mcpServers`):
101
+
102
+ ```json
103
+ {
104
+ "servers": {
105
+ "smartbear": {
106
+ "type": "stdio",
107
+ "command": "npx",
108
+ "args": ["-y", "@smartbear/mcp@latest"],
109
+ "env": {
110
+ "PACT_BROKER_BASE_URL": "https://{tenant}.pactflow.io",
111
+ "PACT_BROKER_TOKEN": "${input:pactToken}"
112
+ }
113
+ }
114
+ }
115
+ }
116
+ ```
117
+
118
+ > **Note**: Set either `PACT_BROKER_TOKEN` (for PactFlow) or `PACT_BROKER_USERNAME`+`PACT_BROKER_PASSWORD` (for self-hosted). Leave unused vars empty.
119
+
120
+ ## Required Environment Variables
121
+
122
+ | Variable | Required | Description |
123
+ | ---------------------- | ---------------------------- | --------------------------------------- |
124
+ | `PACT_BROKER_BASE_URL` | Yes (for Pact features) | PactFlow or self-hosted Pact Broker URL |
125
+ | `PACT_BROKER_TOKEN` | For PactFlow / token auth | API token for broker authentication |
126
+ | `PACT_BROKER_USERNAME` | For basic auth (self-hosted) | Username for basic authentication |
127
+ | `PACT_BROKER_PASSWORD` | For basic auth (self-hosted) | Password for basic authentication |
128
+
129
+ **Authentication**: Use token auth (`PACT_BROKER_TOKEN`) for PactFlow. Use basic auth (`PACT_BROKER_USERNAME` + `PACT_BROKER_PASSWORD`) for self-hosted Pact Broker instances. Only one auth method is needed.
130
+
131
+ **Requirements**: Node.js 20+
132
+
133
+ ## Pattern Examples
134
+
135
+ ### Example 1: Fetching Provider States During Test Design
136
+
137
+ When designing contract tests, use MCP to query existing provider states:
138
+
139
+ ```
140
+ # Agent queries SmartBear MCP during test-design workflow:
141
+ # → Fetch Provider States for consumer="movie-web", provider="SampleMoviesAPI"
142
+ # ← Returns: ["movie with id 1 exists", "no movies exist", "user is authenticated"]
143
+ #
144
+ # Agent uses this to generate comprehensive consumer tests covering all states
145
+ ```
146
+
147
+ ### Example 2: Reviewing Pact Tests
148
+
149
+ During test-review workflow, use MCP to evaluate test quality:
150
+
151
+ ```
152
+ # Agent submits test file to SmartBear MCP Review tool:
153
+ # → Review Pact Tests with test file content
154
+ # ← Returns: feedback on matcher usage, state coverage, interaction naming
155
+ #
156
+ # Agent incorporates feedback into review report
157
+ ```
158
+
159
+ ### Example 3: Can I Deploy Check in CI
160
+
161
+ During CI workflow design, reference the can-i-deploy tool:
162
+
163
+ ```
164
+ # Agent generates CI pipeline with can-i-deploy gate:
165
+ # → Can I Deploy: pacticipant="SampleMoviesAPI", version="${GITHUB_SHA}", to="production"
166
+ # ← Returns: { ok: true/false, reason: "..." }
167
+ #
168
+ # Agent designs pipeline to block deployment if can-i-deploy fails
169
+ ```
170
+
171
+ ## Key Points
172
+
173
+ - **Per-project install recommended**: Different projects may target different PactFlow tenants — match TEA's per-project config philosophy
174
+ - **Env vars are project-specific**: `PACT_BROKER_BASE_URL` and `PACT_BROKER_TOKEN` vary by project/team
175
+ - **Node.js 20+ required**: SmartBear MCP server requires Node.js 20 or higher
176
+ - **PactFlow Cloud features**: Some tools (AI Status, Team Metrics) are only available with PactFlow Cloud, not self-hosted Pact Broker
177
+ - **Complements pactjs-utils**: MCP provides broker interaction during design/review; pactjs-utils provides runtime utilities for test code
178
+
179
+ ## Related Fragments
180
+
181
+ - `pactjs-utils-overview.md` — runtime utilities that pact tests import
182
+ - `pactjs-utils-provider-verifier.md` — verifier options that reference broker config
183
+ - `contract-testing.md` — foundational contract testing patterns
184
+
185
+ ## Anti-Patterns
186
+
187
+ ### Wrong: Using MCP for runtime test execution
188
+
189
+ ```
190
+ # ❌ Don't use MCP to run pact tests — use npm scripts and CI pipelines
191
+ # MCP is for agent-assisted design, generation, and review
192
+ ```
193
+
194
+ ### Right: Use MCP for design-time assistance
195
+
196
+ ```
197
+ # ✅ Use MCP during planning and review:
198
+ # - Fetch provider states to inform test design
199
+ # - Generate test scaffolds from existing contracts
200
+ # - Review tests for best practice compliance
201
+ # - Check can-i-deploy during CI pipeline design
202
+ ```
203
+
204
+ _Source: SmartBear MCP documentation, PactFlow developer docs_
@@ -0,0 +1,211 @@
1
+ # Pact.js Utils Consumer Helpers
2
+
3
+ ## Principle
4
+
5
+ Use `createProviderState` and `toJsonMap` from `@seontechnologies/pactjs-utils` to build type-safe provider state tuples for consumer contract tests. These helpers eliminate manual `JsonMap` casting and ensure consistent parameter serialization across all consumer pact interactions.
6
+
7
+ ## Rationale
8
+
9
+ ### Problems with raw provider state handling
10
+
11
+ - **JsonMap requirement**: Pact's `.given(stateName, params)` requires `params` to be `JsonMap` — a flat object where every value must be `string | number | boolean | null`
12
+ - **Type gymnastics**: Complex params (Date objects, nested objects, null values) require manual casting that TypeScript can't verify
13
+ - **Inconsistent serialization**: Different developers serialize the same data differently (e.g., dates as ISO strings vs timestamps)
14
+ - **Verbose `.given()` calls**: Repeating state name and params inline makes consumer tests harder to read
15
+
16
+ ### Solutions
17
+
18
+ - **`createProviderState`**: Returns a `[string, JsonMap]` tuple that spreads directly into `.given()` — one function handles name and params
19
+ - **`toJsonMap`**: Explicit coercion rules documented and tested — Date→ISO string, null→"null" string, nested objects→JSON string
20
+
21
+ ## Pattern Examples
22
+
23
+ ### Example 1: Basic Provider State Creation
24
+
25
+ ```typescript
26
+ import { PactV3, MatchersV3 } from '@pact-foundation/pact';
27
+ import { createProviderState } from '@seontechnologies/pactjs-utils';
28
+
29
+ const provider = new PactV3({
30
+ consumer: 'movie-web',
31
+ provider: 'SampleMoviesAPI',
32
+ dir: './pacts',
33
+ });
34
+
35
+ describe('Movie API Contract', () => {
36
+ it('should return movie by id', async () => {
37
+ // createProviderState returns [stateName, JsonMap] tuple
38
+ const providerState = createProviderState({
39
+ name: 'movie with id 1 exists',
40
+ params: { id: 1, name: 'Inception', year: 2010 },
41
+ });
42
+
43
+ await provider
44
+ .given(...providerState) // Spread tuple into .given(name, params)
45
+ .uponReceiving('a request for movie 1')
46
+ .withRequest({ method: 'GET', path: '/movies/1' })
47
+ .willRespondWith({
48
+ status: 200,
49
+ body: MatchersV3.like({ id: 1, name: 'Inception', year: 2010 }),
50
+ })
51
+ .executeTest(async (mockServer) => {
52
+ const res = await fetch(`${mockServer.url}/movies/1`);
53
+ const movie = await res.json();
54
+ expect(movie.name).toBe('Inception');
55
+ });
56
+ });
57
+ });
58
+ ```
59
+
60
+ **Key Points**:
61
+
62
+ - `createProviderState` accepts `{ name: string, params: Record<string, unknown> }`
63
+ - Both `name` and `params` are required (pass `params: {}` for states without parameters)
64
+ - Returns `[string, JsonMap]` — spread with `...` into `.given()`
65
+ - `params` values are automatically converted to JsonMap-compatible types
66
+ - Works identically with HTTP (`PactV3`) and message (`MessageConsumerPact`) pacts
67
+
68
+ ### Example 2: Complex Parameters with toJsonMap
69
+
70
+ ```typescript
71
+ import { toJsonMap } from '@seontechnologies/pactjs-utils';
72
+
73
+ // toJsonMap conversion rules:
74
+ // - string, number, boolean → passed through
75
+ // - null → "null" (string)
76
+ // - undefined → "null" (string, same as null)
77
+ // - Date → ISO string (e.g., "2025-01-15T10:00:00.000Z")
78
+ // - nested object → JSON string
79
+ // - array → comma-separated string via String() (e.g., [1,2,3] → "1,2,3")
80
+
81
+ const params = toJsonMap({
82
+ id: 42,
83
+ name: 'John Doe',
84
+ active: true,
85
+ score: null,
86
+ createdAt: new Date('2025-01-15T10:00:00Z'),
87
+ metadata: { role: 'admin', permissions: ['read', 'write'] },
88
+ });
89
+
90
+ // Result:
91
+ // {
92
+ // id: 42,
93
+ // name: "John Doe",
94
+ // active: true,
95
+ // score: "null",
96
+ // createdAt: "2025-01-15T10:00:00.000Z",
97
+ // metadata: '{"role":"admin","permissions":["read","write"]}'
98
+ // }
99
+ ```
100
+
101
+ **Key Points**:
102
+
103
+ - `toJsonMap` is called internally by `createProviderState` — you rarely need it directly
104
+ - Use it when you need explicit control over parameter conversion outside of provider states
105
+ - Conversion rules are deterministic: same input always produces same output
106
+
107
+ ### Example 3: Provider State Without Parameters
108
+
109
+ ```typescript
110
+ import { createProviderState } from '@seontechnologies/pactjs-utils';
111
+
112
+ // State without params — second tuple element is empty object
113
+ const emptyState = createProviderState({ name: 'no movies exist', params: {} });
114
+ // Returns: ['no movies exist', {}]
115
+
116
+ await provider
117
+ .given(...emptyState)
118
+ .uponReceiving('a request when no movies exist')
119
+ .withRequest({ method: 'GET', path: '/movies' })
120
+ .willRespondWith({ status: 200, body: [] })
121
+ .executeTest(async (mockServer) => {
122
+ const res = await fetch(`${mockServer.url}/movies`);
123
+ const movies = await res.json();
124
+ expect(movies).toEqual([]);
125
+ });
126
+ ```
127
+
128
+ ### Example 4: Multiple Provider States
129
+
130
+ ```typescript
131
+ import { createProviderState } from '@seontechnologies/pactjs-utils';
132
+
133
+ // Some interactions require multiple provider states
134
+ // Call .given() multiple times with different states
135
+ await provider
136
+ .given(...createProviderState({ name: 'user is authenticated', params: { userId: 1 } }))
137
+ .given(...createProviderState({ name: 'movie with id 5 exists', params: { id: 5 } }))
138
+ .uponReceiving('an authenticated request for movie 5')
139
+ .withRequest({
140
+ method: 'GET',
141
+ path: '/movies/5',
142
+ headers: { Authorization: MatchersV3.like('Bearer token') },
143
+ })
144
+ .willRespondWith({ status: 200, body: MatchersV3.like({ id: 5 }) })
145
+ .executeTest(async (mockServer) => {
146
+ // test implementation
147
+ });
148
+ ```
149
+
150
+ ## Key Points
151
+
152
+ - **Spread pattern**: Always use `...createProviderState()` — the tuple spreads into `.given(stateName, params)`
153
+ - **Type safety**: TypeScript enforces `{ name: string, params: Record<string, unknown> }` input (both fields required)
154
+ - **Null handling**: `null` becomes `"null"` string in JsonMap (Pact requirement)
155
+ - **Date handling**: Date objects become ISO 8601 strings
156
+ - **No nested objects in JsonMap**: Nested objects are JSON-stringified — provider state handlers must parse them
157
+ - **Array serialization is lossy**: Arrays are converted via `String()` (e.g., `[1,2,3]` → `"1,2,3"`) — prefer passing arrays as JSON-stringified objects for round-trip safety
158
+ - **Message pacts**: Works identically with `MessageConsumerPact` — same `.given()` API
159
+
160
+ ## Related Fragments
161
+
162
+ - `pactjs-utils-overview.md` — installation, decision tree, design philosophy
163
+ - `pactjs-utils-provider-verifier.md` — provider-side state handler implementation
164
+ - `contract-testing.md` — foundational patterns with raw Pact.js
165
+
166
+ ## Anti-Patterns
167
+
168
+ ### Wrong: Manual JsonMap assembly
169
+
170
+ ```typescript
171
+ // ❌ Manual casting — verbose, error-prone, no type safety
172
+ provider.given('user exists', {
173
+ id: 1 as unknown as string,
174
+ createdAt: new Date().toISOString(),
175
+ metadata: JSON.stringify({ role: 'admin' }),
176
+ } as JsonMap);
177
+ ```
178
+
179
+ ### Right: Use createProviderState
180
+
181
+ ```typescript
182
+ // ✅ Automatic conversion with type safety
183
+ provider.given(
184
+ ...createProviderState({
185
+ name: 'user exists',
186
+ params: { id: 1, createdAt: new Date(), metadata: { role: 'admin' } },
187
+ }),
188
+ );
189
+ ```
190
+
191
+ ### Wrong: Inline state names without helper
192
+
193
+ ```typescript
194
+ // ❌ Duplicated state names between consumer and provider — easy to mismatch
195
+ provider.given('a user with id 1 exists', { id: '1' });
196
+ // Later in provider: 'user with id 1 exists' — different string!
197
+ ```
198
+
199
+ ### Right: Share state constants
200
+
201
+ ```typescript
202
+ // ✅ Define state names as constants shared between consumer and provider
203
+ const STATES = {
204
+ USER_EXISTS: 'user with id exists',
205
+ NO_USERS: 'no users exist',
206
+ } as const;
207
+
208
+ provider.given(...createProviderState({ name: STATES.USER_EXISTS, params: { id: 1 } }));
209
+ ```
210
+
211
+ _Source: @seontechnologies/pactjs-utils consumer-helpers module, pactjs-utils sample-app consumer tests_
@@ -0,0 +1,210 @@
1
+ # Pact.js Utils Overview
2
+
3
+ ## Principle
4
+
5
+ Use production-ready utilities from `@seontechnologies/pactjs-utils` to eliminate boilerplate in consumer-driven contract testing. The library wraps `@pact-foundation/pact` with type-safe helpers for provider state creation, verifier configuration, and request filter injection — working equally well for HTTP and message (async/Kafka) contracts.
6
+
7
+ ## Rationale
8
+
9
+ ### Problems with raw @pact-foundation/pact
10
+
11
+ - **JsonMap casting**: Provider state parameters require `JsonMap` type — manually casting every value is error-prone and verbose
12
+ - **Verifier configuration sprawl**: `VerifierOptions` requires 30+ lines of scattered configuration (broker URL, selectors, state handlers, request filters, version tags)
13
+ - **Environment variable juggling**: Different env vars for local vs remote flows, breaking change coordination, payload URL matching
14
+ - **Express middleware types**: Request filter requires Express types that aren't re-exported from Pact
15
+ - **Bearer prefix bugs**: Easy to double-prefix tokens as `Bearer Bearer ...` in request filters
16
+ - **CI version tagging**: Manual logic to extract branch/tag info from CI environment
17
+
18
+ ### Solutions from pactjs-utils
19
+
20
+ - **`createProviderState`**: One-call tuple builder for `.given()` — handles all JsonMap conversion automatically
21
+ - **`toJsonMap`**: Explicit type coercion (null→"null", Date→ISO string, nested objects flattened)
22
+ - **`buildVerifierOptions`**: Single function assembles complete VerifierOptions from minimal inputs — handles local/remote/BDCT flows
23
+ - **`buildMessageVerifierOptions`**: Same as above but for message/Kafka provider verification
24
+ - **`handlePactBrokerUrlAndSelectors`**: Resolves broker URL and consumer version selectors from env vars with breaking change awareness
25
+ - **`getProviderVersionTags`**: CI-aware version tagging (extracts branch/tag from GitHub Actions, GitLab CI, etc.)
26
+ - **`createRequestFilter`**: Pluggable token generator pattern — prevents double-Bearer bugs by contract
27
+ - **`noOpRequestFilter`**: Pass-through for providers that don't require auth injection
28
+
29
+ ## Installation
30
+
31
+ ```bash
32
+ npm install -D @seontechnologies/pactjs-utils
33
+
34
+ # Peer dependency
35
+ npm install -D @pact-foundation/pact
36
+ ```
37
+
38
+ **Requirements**: `@pact-foundation/pact` >= 16.2.0, Node.js >= 18
39
+
40
+ ## Available Utilities
41
+
42
+ | Category | Function | Description | Use Case |
43
+ | ----------------- | --------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------- |
44
+ | Consumer Helpers | `createProviderState` | Builds `[stateName, JsonMap]` tuple from typed input | Consumer tests: `.given(...createProviderState(input))` |
45
+ | Consumer Helpers | `toJsonMap` | Converts any object to Pact-compatible `JsonMap` | Explicit type coercion for provider state params |
46
+ | Provider Verifier | `buildVerifierOptions` | Assembles complete HTTP `VerifierOptions` | Provider verification: `new Verifier(buildVerifierOptions(...))` |
47
+ | Provider Verifier | `buildMessageVerifierOptions` | Assembles message `VerifierOptions` | Kafka/async provider verification |
48
+ | Provider Verifier | `handlePactBrokerUrlAndSelectors` | Resolves broker URL + selectors from env vars | Env-aware broker configuration |
49
+ | Provider Verifier | `getProviderVersionTags` | CI-aware version tag extraction | Provider version tagging in CI |
50
+ | Request Filter | `createRequestFilter` | Express middleware with pluggable token generator | Auth injection for provider verification |
51
+ | Request Filter | `noOpRequestFilter` | Pass-through filter (no-op) | Providers without auth requirements |
52
+
53
+ ## Decision Tree: Which Flow?
54
+
55
+ ```
56
+ Is this a monorepo (consumer + provider in same repo)?
57
+ ├── YES → Local Flow
58
+ │ - Consumer generates pact files to ./pacts/
59
+ │ - Provider reads pact files from ./pacts/ (no broker needed)
60
+ │ - Use buildVerifierOptions with pactUrls option
61
+
62
+ └── NO → Do you have a Pact Broker / PactFlow?
63
+ ├── YES → Remote (CDCT) Flow
64
+ │ - Consumer publishes pacts to broker
65
+ │ - Provider verifies from broker
66
+ │ - Use buildVerifierOptions with broker config
67
+ │ - Set PACT_BROKER_BASE_URL + PACT_BROKER_TOKEN
68
+
69
+ └── Do you have an OpenAPI spec?
70
+ ├── YES → BDCT Flow (PactFlow only)
71
+ │ - Provider publishes OpenAPI spec to PactFlow
72
+ │ - PactFlow cross-validates consumer pacts against spec
73
+ │ - No provider verification test needed
74
+
75
+ └── NO → Start with Local Flow, migrate to Remote later
76
+ ```
77
+
78
+ ## Design Philosophy
79
+
80
+ 1. **One-call setup**: Each utility does one thing completely — no multi-step assembly required
81
+ 2. **Environment-aware**: Utilities read env vars for CI/CD integration without manual wiring
82
+ 3. **Type-safe**: Full TypeScript types for all inputs and outputs, exported for consumer use
83
+ 4. **Fail-safe defaults**: Sensible defaults that work locally; env vars override for CI
84
+ 5. **Composable**: Utilities work independently — use only what you need
85
+
86
+ ## Pattern Examples
87
+
88
+ ### Example 1: Minimal Consumer Test
89
+
90
+ ```typescript
91
+ import { PactV3 } from '@pact-foundation/pact';
92
+ import { createProviderState } from '@seontechnologies/pactjs-utils';
93
+
94
+ const provider = new PactV3({
95
+ consumer: 'my-frontend',
96
+ provider: 'my-api',
97
+ dir: './pacts',
98
+ });
99
+
100
+ it('should get user by id', async () => {
101
+ await provider
102
+ .given(...createProviderState({ name: 'user exists', params: { id: 1 } }))
103
+ .uponReceiving('a request for user 1')
104
+ .withRequest({ method: 'GET', path: '/users/1' })
105
+ .willRespondWith({ status: 200, body: { id: 1, name: 'John' } })
106
+ .executeTest(async (mockServer) => {
107
+ const res = await fetch(`${mockServer.url}/users/1`);
108
+ expect(res.status).toBe(200);
109
+ });
110
+ });
111
+ ```
112
+
113
+ ### Example 2: Minimal Provider Verification
114
+
115
+ ```typescript
116
+ import { Verifier } from '@pact-foundation/pact';
117
+ import { buildVerifierOptions, createRequestFilter } from '@seontechnologies/pactjs-utils';
118
+
119
+ const opts = buildVerifierOptions({
120
+ provider: 'my-api',
121
+ port: '3001',
122
+ includeMainAndDeployed: true,
123
+ stateHandlers: {
124
+ 'user exists': async (params) => {
125
+ await db.seed({ users: [{ id: params?.id }] });
126
+ },
127
+ },
128
+ requestFilter: createRequestFilter({
129
+ tokenGenerator: () => 'test-token-123',
130
+ }),
131
+ });
132
+
133
+ await new Verifier(opts).verifyProvider();
134
+ ```
135
+
136
+ ## Key Points
137
+
138
+ - **Import path**: Always use `@seontechnologies/pactjs-utils` (no subpath exports)
139
+ - **Peer dependency**: `@pact-foundation/pact` must be installed separately
140
+ - **Local flow**: No broker needed — set `pactUrls` in verifier options pointing to local pact files
141
+ - **Remote flow**: Set `PACT_BROKER_BASE_URL` and `PACT_BROKER_TOKEN` env vars
142
+ - **Breaking changes**: Set `includeMainAndDeployed: false` when coordinating breaking changes (verifies only matchingBranch)
143
+ - **Type exports**: Library exports `StateHandlers`, `RequestFilter`, `JsonMap`, `ConsumerVersionSelector` types
144
+
145
+ ## Related Fragments
146
+
147
+ - `pactjs-utils-consumer-helpers.md` — detailed createProviderState and toJsonMap usage
148
+ - `pactjs-utils-provider-verifier.md` — detailed buildVerifierOptions and broker configuration
149
+ - `pactjs-utils-request-filter.md` — detailed createRequestFilter and auth patterns
150
+ - `contract-testing.md` — foundational contract testing patterns (raw Pact.js approach)
151
+ - `test-levels-framework.md` — where contract tests fit in the testing pyramid
152
+
153
+ ## Anti-Patterns
154
+
155
+ ### Wrong: Manual VerifierOptions assembly when pactjs-utils is available
156
+
157
+ ```typescript
158
+ // ❌ Don't assemble VerifierOptions manually
159
+ const opts: VerifierOptions = {
160
+ provider: 'my-api',
161
+ providerBaseUrl: 'http://localhost:3001',
162
+ pactBrokerUrl: process.env.PACT_BROKER_BASE_URL,
163
+ pactBrokerToken: process.env.PACT_BROKER_TOKEN,
164
+ publishVerificationResult: process.env.CI === 'true',
165
+ providerVersion: process.env.GIT_SHA || 'dev',
166
+ consumerVersionSelectors: [{ mainBranch: true }, { deployedOrReleased: true }],
167
+ stateHandlers: {
168
+ /* ... */
169
+ },
170
+ requestFilter: (req, res, next) => {
171
+ /* ... */
172
+ },
173
+ // ... 20 more lines
174
+ };
175
+ ```
176
+
177
+ ### Right: Use buildVerifierOptions
178
+
179
+ ```typescript
180
+ // ✅ Single call handles all configuration
181
+ const opts = buildVerifierOptions({
182
+ provider: 'my-api',
183
+ port: '3001',
184
+ includeMainAndDeployed: true,
185
+ stateHandlers: {
186
+ /* ... */
187
+ },
188
+ requestFilter: createRequestFilter({ tokenGenerator: () => 'token' }),
189
+ });
190
+ ```
191
+
192
+ ### Wrong: Importing raw Pact types for JsonMap conversion
193
+
194
+ ```typescript
195
+ // ❌ Manual JsonMap casting
196
+ import type { JsonMap } from '@pact-foundation/pact';
197
+
198
+ provider.given('user exists', { id: 1 as unknown as JsonMap['id'] });
199
+ ```
200
+
201
+ ### Right: Use createProviderState
202
+
203
+ ```typescript
204
+ // ✅ Automatic type conversion
205
+ import { createProviderState } from '@seontechnologies/pactjs-utils';
206
+
207
+ provider.given(...createProviderState({ name: 'user exists', params: { id: 1 } }));
208
+ ```
209
+
210
+ _Source: @seontechnologies/pactjs-utils library, pactjs-utils README, pact-js-example-provider workflows_