@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
@@ -1,325 +1,325 @@
1
- /**
2
- * `cckit sync` command — pull upstream BMAD/ECC/ext-skills content into templates/.
3
- *
4
- * Workflow:
5
- * 1. Validate --source parameter
6
- * 2. Snapshot current templates/ directory
7
- * 3. If --dry-run: report intended operations and exit
8
- * 4. Fetch upstream sources (BMAD via npx, ECC via git clone, ext-skills via git clone)
9
- * 5. Apply path mappings to copy files into templates/
10
- * 6. Post-snapshot and compute diff
11
- * 7. Update registry.json upstream metadata
12
- * 8. Print diff report
13
- */
14
-
15
- import path from 'node:path'
16
- import fse from 'fs-extra'
17
- import { fileURLToPath } from 'node:url'
18
- import { createLogger } from '../utils/logger.js'
19
- import { loadRegistry } from '../core/registry.js'
20
- import { snapshotDir, computeDiff } from '../core/differ.js'
21
- import { shouldTemplatize, templatizeConfigYaml } from '../core/templatize.js'
22
- import {
23
- fetchBmad,
24
- fetchEcc,
25
- fetchPlugins,
26
- fetchExtSkills,
27
- buildPluginMappings,
28
- buildExtSkillMappings,
29
- applyMappings,
30
- createTempDir,
31
- BMAD_PATH_MAPPINGS,
32
- ECC_PATH_MAPPINGS,
33
- ECC_REPO_URL,
34
- } from '../core/upstream.js'
35
-
36
- const __dirname = path.dirname(fileURLToPath(import.meta.url))
37
- const TEMPLATES_DIR = path.resolve(__dirname, '../../templates')
38
- const REGISTRY_PATH = path.resolve(__dirname, '../../registry.json')
39
-
40
- const VALID_SOURCES = ['bmad', 'ecc', 'plugins', 'ext-skills', 'all']
41
-
42
- /**
43
- * Run the sync command.
44
- *
45
- * @param {object} opts - Command options
46
- * @param {string} [opts.source='all'] - Source to sync: bmad, ecc, plugins, ext-skills, or all
47
- * @param {boolean} [opts.dryRun=false] - Preview mode
48
- * @param {boolean} [opts.debug=false] - Debug output
49
- * @param {object} [opts._deps] - Injectable dependencies for testing
50
- */
51
- export async function runSync(opts = {}) {
52
- const {
53
- source = 'all',
54
- dryRun = false,
55
- debug = false,
56
- _deps = {},
57
- } = opts
58
-
59
- const logger = _deps.logger || createLogger({ debug })
60
- const templatesDir = _deps.templatesDir || TEMPLATES_DIR
61
- const registryPath = _deps.registryPath || REGISTRY_PATH
62
- const fetchBmadFn = _deps.fetchBmad || fetchBmad
63
- const fetchEccFn = _deps.fetchEcc || fetchEcc
64
- const fetchPluginsFn = _deps.fetchPlugins || fetchPlugins
65
- const fetchExtSkillsFn = _deps.fetchExtSkills || fetchExtSkills
66
-
67
- // Step 1: Validate source
68
- if (!VALID_SOURCES.includes(source)) {
69
- throw new Error(`Invalid source "${source}". Must be one of: ${VALID_SOURCES.join(', ')}`)
70
- }
71
-
72
- const syncBmad = source === 'bmad' || source === 'all'
73
- const syncEcc = source === 'ecc' || source === 'all'
74
- const syncPlugins = source === 'plugins' || source === 'all'
75
- const syncExtSkills = source === 'ext-skills' || source === 'all'
76
-
77
- logger.banner('cckit sync')
78
- logger.info(` Source: ${source}`)
79
-
80
- // Step 2: Snapshot before
81
- logger.debug('Snapshotting templates directory...')
82
- const beforeSnapshot = await snapshotDir(templatesDir)
83
- logger.debug(` Before snapshot: ${beforeSnapshot.size} files`)
84
-
85
- // Step 3: Dry-run check
86
- if (dryRun) {
87
- logger.info('')
88
- logger.info(' Dry-run mode — no changes will be applied.')
89
- logger.info('')
90
- if (syncBmad) {
91
- logger.info(' Would sync BMAD:')
92
- for (const m of BMAD_PATH_MAPPINGS) {
93
- logger.info(` ${m.src} → templates/${m.dest}`)
94
- }
95
- }
96
- if (syncEcc) {
97
- logger.info(' Would sync ECC:')
98
- for (const m of ECC_PATH_MAPPINGS) {
99
- logger.info(` ${m.src} → templates/${m.dest}`)
100
- }
101
- }
102
- if (syncPlugins) {
103
- const registry = await loadRegistry(registryPath)
104
- const pluginMappings = buildPluginMappings(registry)
105
- logger.info(' Would sync Plugins:')
106
- for (const m of pluginMappings) {
107
- logger.info(` ${m.src} → templates/${m.dest}`)
108
- }
109
- }
110
- if (syncExtSkills) {
111
- const registry = await loadRegistry(registryPath)
112
- const extSkillMappings = buildExtSkillMappings(registry)
113
- logger.info(' Would sync Ext-skills:')
114
- for (const m of extSkillMappings) {
115
- logger.info(` ${m.src} → templates/${m.dest}`)
116
- }
117
- }
118
- return { dryRun: true }
119
- }
120
-
121
- // Step 4 & 5: Fetch and apply
122
- let tmpDir
123
- const upstreamMeta = {}
124
-
125
- try {
126
- tmpDir = await createTempDir('cckit-sync')
127
- logger.debug(`Temp directory: ${tmpDir}`)
128
-
129
- // Pre-check plugins and ext-skills upstream availability to compute accurate step count
130
- let pluginsAvailable = false
131
- if (syncPlugins) {
132
- const reg = await loadRegistry(registryPath)
133
- pluginsAvailable = Boolean(reg.upstream?.plugins?.repo)
134
- if (!pluginsAvailable) {
135
- logger.warn('No plugins upstream configured in registry.json, skipping plugins sync')
136
- }
137
- }
138
-
139
- let extSkillsAvailable = false
140
- if (syncExtSkills) {
141
- const reg = await loadRegistry(registryPath)
142
- const extEntries = reg.upstream?.['ext-skills'] || {}
143
- extSkillsAvailable = Object.keys(extEntries).length > 0
144
- if (!extSkillsAvailable) {
145
- logger.warn('No ext-skills upstream configured in registry.json, skipping ext-skills sync')
146
- }
147
- }
148
-
149
- const totalSteps = [syncBmad, syncEcc, pluginsAvailable, extSkillsAvailable].filter(Boolean).length
150
- let currentStep = 0
151
-
152
- if (syncBmad) {
153
- currentStep++
154
- logger.step(currentStep, totalSteps, 'Fetching BMAD...')
155
- const bmad = await fetchBmadFn({ tmpDir, logger })
156
- upstreamMeta.bmad = { version: bmad.version }
157
-
158
- const postProcess = (content, relPath) => {
159
- if (shouldTemplatize(relPath)) {
160
- return templatizeConfigYaml(content)
161
- }
162
- return content
163
- }
164
-
165
- const fileCount = await applyMappings({
166
- srcBase: bmad.dir,
167
- destBase: templatesDir,
168
- mappings: BMAD_PATH_MAPPINGS,
169
- postProcess,
170
- logger,
171
- })
172
- logger.success(`BMAD: ${fileCount} files synced`)
173
- }
174
-
175
- if (syncEcc) {
176
- currentStep++
177
- logger.step(currentStep, totalSteps, 'Fetching ECC...')
178
- const ecc = await fetchEccFn({ tmpDir, logger })
179
- upstreamMeta.ecc = { sha: ecc.sha }
180
-
181
- const fileCount = await applyMappings({
182
- srcBase: ecc.dir,
183
- destBase: templatesDir,
184
- mappings: ECC_PATH_MAPPINGS,
185
- logger,
186
- })
187
- logger.success(`ECC: ${fileCount} files synced`)
188
- }
189
-
190
- if (pluginsAvailable) {
191
- currentStep++
192
- logger.step(currentStep, totalSteps, 'Fetching Plugins...')
193
-
194
- const registry = await loadRegistry(registryPath)
195
- const plugins = await fetchPluginsFn({ tmpDir, logger, registry })
196
- upstreamMeta.plugins = { sha: plugins.sha }
197
-
198
- const pluginMappings = buildPluginMappings(registry)
199
- const fileCount = await applyMappings({
200
- srcBase: plugins.dir,
201
- destBase: templatesDir,
202
- mappings: pluginMappings,
203
- logger,
204
- })
205
- logger.success(`Plugins: ${fileCount} files synced`)
206
- }
207
-
208
- if (extSkillsAvailable) {
209
- currentStep++
210
- logger.step(currentStep, totalSteps, 'Fetching Ext-skills...')
211
-
212
- const registry = await loadRegistry(registryPath)
213
- const extSkills = await fetchExtSkillsFn({ tmpDir, logger, registry })
214
- upstreamMeta.extSkills = extSkills.skills
215
-
216
- const extSkillMappings = buildExtSkillMappings(registry)
217
- const fileCount = await applyMappings({
218
- srcBase: extSkills.dir,
219
- destBase: templatesDir,
220
- mappings: extSkillMappings,
221
- logger,
222
- })
223
- logger.success(`Ext-skills: ${fileCount} files synced`)
224
- }
225
- } finally {
226
- // Cleanup temp directory
227
- if (tmpDir) {
228
- logger.debug('Cleaning up temp directory...')
229
- await fse.remove(tmpDir)
230
- }
231
- }
232
-
233
- // Step 6-8: Post-sync processing (snapshot, registry update, diff report)
234
- let diff
235
- let updatedUpstream
236
- try {
237
- // Step 6: Snapshot after and compute diff
238
- const afterSnapshot = await snapshotDir(templatesDir)
239
- diff = computeDiff(beforeSnapshot, afterSnapshot)
240
-
241
- // Step 7: Update registry.json upstream metadata (immutable)
242
- const registry = await loadRegistry(registryPath)
243
- const now = new Date().toISOString()
244
-
245
- updatedUpstream = {
246
- ...(registry.upstream || {}),
247
- ...(upstreamMeta.bmad ? {
248
- bmad: {
249
- type: 'npm',
250
- package: 'bmad-method',
251
- lastSyncVersion: upstreamMeta.bmad.version,
252
- lastSyncDate: now,
253
- },
254
- } : {}),
255
- ...(upstreamMeta.ecc ? {
256
- ecc: {
257
- type: 'git',
258
- repo: ECC_REPO_URL,
259
- lastSyncSha: upstreamMeta.ecc.sha,
260
- lastSyncDate: now,
261
- },
262
- } : {}),
263
- ...(upstreamMeta.plugins ? {
264
- plugins: {
265
- ...(registry.upstream?.plugins || {}),
266
- lastSyncSha: upstreamMeta.plugins.sha,
267
- lastSyncDate: now,
268
- },
269
- } : {}),
270
- ...(upstreamMeta.extSkills ? {
271
- 'ext-skills': Object.fromEntries(
272
- Object.entries(registry.upstream?.['ext-skills'] || {}).map(([id, entry]) => [
273
- id,
274
- upstreamMeta.extSkills[id]
275
- ? { ...entry, lastSyncSha: upstreamMeta.extSkills[id].sha, lastSyncDate: now }
276
- : entry,
277
- ])
278
- ),
279
- } : {}),
280
- }
281
-
282
- const updatedRegistry = { ...registry, upstream: updatedUpstream }
283
- await fse.writeFile(registryPath, JSON.stringify(updatedRegistry, null, 2) + '\n', 'utf8')
284
- logger.debug('Registry updated with upstream metadata')
285
- } catch (err) {
286
- throw new Error(`Sync completed but post-processing failed: ${err.message}`)
287
- }
288
-
289
- // Step 8: Print diff report
290
- logger.newline()
291
- const totalChanges = diff.added.length + diff.modified.length + diff.deleted.length
292
-
293
- if (totalChanges === 0) {
294
- logger.info(' No changes detected — templates are up to date.')
295
- } else {
296
- logger.info(` Changes: +${diff.added.length} added, ~${diff.modified.length} modified, -${diff.deleted.length} deleted`)
297
- logger.newline()
298
-
299
- if (diff.added.length > 0) {
300
- logger.info(' Added:')
301
- for (const f of diff.added) {
302
- logger.success(f)
303
- }
304
- }
305
-
306
- if (diff.modified.length > 0) {
307
- logger.info(' Modified:')
308
- for (const f of diff.modified) {
309
- logger.warn(f)
310
- }
311
- }
312
-
313
- if (diff.deleted.length > 0) {
314
- logger.info(' Deleted:')
315
- for (const f of diff.deleted) {
316
- logger.error(f)
317
- }
318
- }
319
- }
320
-
321
- logger.newline()
322
- logger.success('Sync complete.')
323
-
324
- return { diff, upstream: updatedUpstream }
325
- }
1
+ /**
2
+ * `cckit sync` command — pull upstream BMAD/ECC/ext-skills content into templates/.
3
+ *
4
+ * Workflow:
5
+ * 1. Validate --source parameter
6
+ * 2. Snapshot current templates/ directory
7
+ * 3. If --dry-run: report intended operations and exit
8
+ * 4. Fetch upstream sources (BMAD via npx, ECC via git clone, ext-skills via git clone)
9
+ * 5. Apply path mappings to copy files into templates/
10
+ * 6. Post-snapshot and compute diff
11
+ * 7. Update registry.json upstream metadata
12
+ * 8. Print diff report
13
+ */
14
+
15
+ import path from 'node:path'
16
+ import fse from 'fs-extra'
17
+ import { fileURLToPath } from 'node:url'
18
+ import { createLogger } from '../utils/logger.js'
19
+ import { loadRegistry } from '../core/registry.js'
20
+ import { snapshotDir, computeDiff } from '../core/differ.js'
21
+ import { shouldTemplatize, templatizeConfigYaml } from '../core/templatize.js'
22
+ import {
23
+ fetchBmad,
24
+ fetchEcc,
25
+ fetchPlugins,
26
+ fetchExtSkills,
27
+ buildPluginMappings,
28
+ buildExtSkillMappings,
29
+ applyMappings,
30
+ createTempDir,
31
+ BMAD_PATH_MAPPINGS,
32
+ ECC_PATH_MAPPINGS,
33
+ ECC_REPO_URL,
34
+ } from '../core/upstream.js'
35
+
36
+ const __dirname = path.dirname(fileURLToPath(import.meta.url))
37
+ const TEMPLATES_DIR = path.resolve(__dirname, '../../templates')
38
+ const REGISTRY_PATH = path.resolve(__dirname, '../../registry.json')
39
+
40
+ const VALID_SOURCES = ['bmad', 'ecc', 'plugins', 'ext-skills', 'all']
41
+
42
+ /**
43
+ * Run the sync command.
44
+ *
45
+ * @param {object} opts - Command options
46
+ * @param {string} [opts.source='all'] - Source to sync: bmad, ecc, plugins, ext-skills, or all
47
+ * @param {boolean} [opts.dryRun=false] - Preview mode
48
+ * @param {boolean} [opts.debug=false] - Debug output
49
+ * @param {object} [opts._deps] - Injectable dependencies for testing
50
+ */
51
+ export async function runSync(opts = {}) {
52
+ const {
53
+ source = 'all',
54
+ dryRun = false,
55
+ debug = false,
56
+ _deps = {},
57
+ } = opts
58
+
59
+ const logger = _deps.logger || createLogger({ debug })
60
+ const templatesDir = _deps.templatesDir || TEMPLATES_DIR
61
+ const registryPath = _deps.registryPath || REGISTRY_PATH
62
+ const fetchBmadFn = _deps.fetchBmad || fetchBmad
63
+ const fetchEccFn = _deps.fetchEcc || fetchEcc
64
+ const fetchPluginsFn = _deps.fetchPlugins || fetchPlugins
65
+ const fetchExtSkillsFn = _deps.fetchExtSkills || fetchExtSkills
66
+
67
+ // Step 1: Validate source
68
+ if (!VALID_SOURCES.includes(source)) {
69
+ throw new Error(`Invalid source "${source}". Must be one of: ${VALID_SOURCES.join(', ')}`)
70
+ }
71
+
72
+ const syncBmad = source === 'bmad' || source === 'all'
73
+ const syncEcc = source === 'ecc' || source === 'all'
74
+ const syncPlugins = source === 'plugins' || source === 'all'
75
+ const syncExtSkills = source === 'ext-skills' || source === 'all'
76
+
77
+ logger.banner('cckit sync')
78
+ logger.info(` Source: ${source}`)
79
+
80
+ // Step 2: Snapshot before
81
+ logger.debug('Snapshotting templates directory...')
82
+ const beforeSnapshot = await snapshotDir(templatesDir)
83
+ logger.debug(` Before snapshot: ${beforeSnapshot.size} files`)
84
+
85
+ // Step 3: Dry-run check
86
+ if (dryRun) {
87
+ logger.info('')
88
+ logger.info(' Dry-run mode — no changes will be applied.')
89
+ logger.info('')
90
+ if (syncBmad) {
91
+ logger.info(' Would sync BMAD:')
92
+ for (const m of BMAD_PATH_MAPPINGS) {
93
+ logger.info(` ${m.src} → templates/${m.dest}`)
94
+ }
95
+ }
96
+ if (syncEcc) {
97
+ logger.info(' Would sync ECC:')
98
+ for (const m of ECC_PATH_MAPPINGS) {
99
+ logger.info(` ${m.src} → templates/${m.dest}`)
100
+ }
101
+ }
102
+ if (syncPlugins) {
103
+ const registry = await loadRegistry(registryPath)
104
+ const pluginMappings = buildPluginMappings(registry)
105
+ logger.info(' Would sync Plugins:')
106
+ for (const m of pluginMappings) {
107
+ logger.info(` ${m.src} → templates/${m.dest}`)
108
+ }
109
+ }
110
+ if (syncExtSkills) {
111
+ const registry = await loadRegistry(registryPath)
112
+ const extSkillMappings = buildExtSkillMappings(registry)
113
+ logger.info(' Would sync Ext-skills:')
114
+ for (const m of extSkillMappings) {
115
+ logger.info(` ${m.src} → templates/${m.dest}`)
116
+ }
117
+ }
118
+ return { dryRun: true }
119
+ }
120
+
121
+ // Step 4 & 5: Fetch and apply
122
+ let tmpDir
123
+ const upstreamMeta = {}
124
+
125
+ try {
126
+ tmpDir = await createTempDir('cckit-sync')
127
+ logger.debug(`Temp directory: ${tmpDir}`)
128
+
129
+ // Pre-check plugins and ext-skills upstream availability to compute accurate step count
130
+ let pluginsAvailable = false
131
+ if (syncPlugins) {
132
+ const reg = await loadRegistry(registryPath)
133
+ pluginsAvailable = Boolean(reg.upstream?.plugins?.repo)
134
+ if (!pluginsAvailable) {
135
+ logger.warn('No plugins upstream configured in registry.json, skipping plugins sync')
136
+ }
137
+ }
138
+
139
+ let extSkillsAvailable = false
140
+ if (syncExtSkills) {
141
+ const reg = await loadRegistry(registryPath)
142
+ const extEntries = reg.upstream?.['ext-skills'] || {}
143
+ extSkillsAvailable = Object.keys(extEntries).length > 0
144
+ if (!extSkillsAvailable) {
145
+ logger.warn('No ext-skills upstream configured in registry.json, skipping ext-skills sync')
146
+ }
147
+ }
148
+
149
+ const totalSteps = [syncBmad, syncEcc, pluginsAvailable, extSkillsAvailable].filter(Boolean).length
150
+ let currentStep = 0
151
+
152
+ if (syncBmad) {
153
+ currentStep++
154
+ logger.step(currentStep, totalSteps, 'Fetching BMAD...')
155
+ const bmad = await fetchBmadFn({ tmpDir, logger })
156
+ upstreamMeta.bmad = { version: bmad.version }
157
+
158
+ const postProcess = (content, relPath) => {
159
+ if (shouldTemplatize(relPath)) {
160
+ return templatizeConfigYaml(content)
161
+ }
162
+ return content
163
+ }
164
+
165
+ const fileCount = await applyMappings({
166
+ srcBase: bmad.dir,
167
+ destBase: templatesDir,
168
+ mappings: BMAD_PATH_MAPPINGS,
169
+ postProcess,
170
+ logger,
171
+ })
172
+ logger.success(`BMAD: ${fileCount} files synced`)
173
+ }
174
+
175
+ if (syncEcc) {
176
+ currentStep++
177
+ logger.step(currentStep, totalSteps, 'Fetching ECC...')
178
+ const ecc = await fetchEccFn({ tmpDir, logger })
179
+ upstreamMeta.ecc = { sha: ecc.sha }
180
+
181
+ const fileCount = await applyMappings({
182
+ srcBase: ecc.dir,
183
+ destBase: templatesDir,
184
+ mappings: ECC_PATH_MAPPINGS,
185
+ logger,
186
+ })
187
+ logger.success(`ECC: ${fileCount} files synced`)
188
+ }
189
+
190
+ if (pluginsAvailable) {
191
+ currentStep++
192
+ logger.step(currentStep, totalSteps, 'Fetching Plugins...')
193
+
194
+ const registry = await loadRegistry(registryPath)
195
+ const plugins = await fetchPluginsFn({ tmpDir, logger, registry })
196
+ upstreamMeta.plugins = { sha: plugins.sha }
197
+
198
+ const pluginMappings = buildPluginMappings(registry)
199
+ const fileCount = await applyMappings({
200
+ srcBase: plugins.dir,
201
+ destBase: templatesDir,
202
+ mappings: pluginMappings,
203
+ logger,
204
+ })
205
+ logger.success(`Plugins: ${fileCount} files synced`)
206
+ }
207
+
208
+ if (extSkillsAvailable) {
209
+ currentStep++
210
+ logger.step(currentStep, totalSteps, 'Fetching Ext-skills...')
211
+
212
+ const registry = await loadRegistry(registryPath)
213
+ const extSkills = await fetchExtSkillsFn({ tmpDir, logger, registry })
214
+ upstreamMeta.extSkills = extSkills.skills
215
+
216
+ const extSkillMappings = buildExtSkillMappings(registry)
217
+ const fileCount = await applyMappings({
218
+ srcBase: extSkills.dir,
219
+ destBase: templatesDir,
220
+ mappings: extSkillMappings,
221
+ logger,
222
+ })
223
+ logger.success(`Ext-skills: ${fileCount} files synced`)
224
+ }
225
+ } finally {
226
+ // Cleanup temp directory
227
+ if (tmpDir) {
228
+ logger.debug('Cleaning up temp directory...')
229
+ await fse.remove(tmpDir)
230
+ }
231
+ }
232
+
233
+ // Step 6-8: Post-sync processing (snapshot, registry update, diff report)
234
+ let diff
235
+ let updatedUpstream
236
+ try {
237
+ // Step 6: Snapshot after and compute diff
238
+ const afterSnapshot = await snapshotDir(templatesDir)
239
+ diff = computeDiff(beforeSnapshot, afterSnapshot)
240
+
241
+ // Step 7: Update registry.json upstream metadata (immutable)
242
+ const registry = await loadRegistry(registryPath)
243
+ const now = new Date().toISOString()
244
+
245
+ updatedUpstream = {
246
+ ...(registry.upstream || {}),
247
+ ...(upstreamMeta.bmad ? {
248
+ bmad: {
249
+ type: 'npm',
250
+ package: 'bmad-method',
251
+ lastSyncVersion: upstreamMeta.bmad.version,
252
+ lastSyncDate: now,
253
+ },
254
+ } : {}),
255
+ ...(upstreamMeta.ecc ? {
256
+ ecc: {
257
+ type: 'git',
258
+ repo: ECC_REPO_URL,
259
+ lastSyncSha: upstreamMeta.ecc.sha,
260
+ lastSyncDate: now,
261
+ },
262
+ } : {}),
263
+ ...(upstreamMeta.plugins ? {
264
+ plugins: {
265
+ ...(registry.upstream?.plugins || {}),
266
+ lastSyncSha: upstreamMeta.plugins.sha,
267
+ lastSyncDate: now,
268
+ },
269
+ } : {}),
270
+ ...(upstreamMeta.extSkills ? {
271
+ 'ext-skills': Object.fromEntries(
272
+ Object.entries(registry.upstream?.['ext-skills'] || {}).map(([id, entry]) => [
273
+ id,
274
+ upstreamMeta.extSkills[id]
275
+ ? { ...entry, lastSyncSha: upstreamMeta.extSkills[id].sha, lastSyncDate: now }
276
+ : entry,
277
+ ])
278
+ ),
279
+ } : {}),
280
+ }
281
+
282
+ const updatedRegistry = { ...registry, upstream: updatedUpstream }
283
+ await fse.writeFile(registryPath, JSON.stringify(updatedRegistry, null, 2) + '\n', 'utf8')
284
+ logger.debug('Registry updated with upstream metadata')
285
+ } catch (err) {
286
+ throw new Error(`Sync completed but post-processing failed: ${err.message}`)
287
+ }
288
+
289
+ // Step 8: Print diff report
290
+ logger.newline()
291
+ const totalChanges = diff.added.length + diff.modified.length + diff.deleted.length
292
+
293
+ if (totalChanges === 0) {
294
+ logger.info(' No changes detected — templates are up to date.')
295
+ } else {
296
+ logger.info(` Changes: +${diff.added.length} added, ~${diff.modified.length} modified, -${diff.deleted.length} deleted`)
297
+ logger.newline()
298
+
299
+ if (diff.added.length > 0) {
300
+ logger.info(' Added:')
301
+ for (const f of diff.added) {
302
+ logger.success(f)
303
+ }
304
+ }
305
+
306
+ if (diff.modified.length > 0) {
307
+ logger.info(' Modified:')
308
+ for (const f of diff.modified) {
309
+ logger.warn(f)
310
+ }
311
+ }
312
+
313
+ if (diff.deleted.length > 0) {
314
+ logger.info(' Deleted:')
315
+ for (const f of diff.deleted) {
316
+ logger.error(f)
317
+ }
318
+ }
319
+ }
320
+
321
+ logger.newline()
322
+ logger.success('Sync complete.')
323
+
324
+ return { diff, upstream: updatedUpstream }
325
+ }