@cregis-dev/cckit 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (710) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +253 -0
  3. package/bin/cckit.js +3 -0
  4. package/package.json +52 -0
  5. package/registry.json +194 -0
  6. package/src/adapters/trae-adapter.js +90 -0
  7. package/src/cli.js +88 -0
  8. package/src/commands/add.js +192 -0
  9. package/src/commands/init.js +333 -0
  10. package/src/commands/status.js +62 -0
  11. package/src/commands/sync.js +325 -0
  12. package/src/commands/update.js +425 -0
  13. package/src/core/config.js +82 -0
  14. package/src/core/differ.js +57 -0
  15. package/src/core/installer.js +97 -0
  16. package/src/core/plugin-installer.js +237 -0
  17. package/src/core/registry.js +75 -0
  18. package/src/core/templatize.js +42 -0
  19. package/src/core/upstream.js +357 -0
  20. package/src/utils/fs.js +50 -0
  21. package/src/utils/logger.js +16 -0
  22. package/templates/bmad/_config/agent-manifest.csv +12 -0
  23. package/templates/bmad/_config/agents/bmm-analyst.customize.yaml +41 -0
  24. package/templates/bmad/_config/agents/bmm-architect.customize.yaml +41 -0
  25. package/templates/bmad/_config/agents/bmm-dev.customize.yaml +41 -0
  26. package/templates/bmad/_config/agents/bmm-pm.customize.yaml +41 -0
  27. package/templates/bmad/_config/agents/bmm-qa.customize.yaml +41 -0
  28. package/templates/bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -0
  29. package/templates/bmad/_config/agents/bmm-sm.customize.yaml +41 -0
  30. package/templates/bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -0
  31. package/templates/bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -0
  32. package/templates/bmad/_config/agents/core-bmad-master.customize.yaml +41 -0
  33. package/templates/bmad/_config/agents/tea-tea.customize.yaml +41 -0
  34. package/templates/bmad/_config/bmad-help.csv +48 -0
  35. package/templates/bmad/_config/files-manifest.csv +431 -0
  36. package/templates/bmad/_config/ides/claude-code.yaml +5 -0
  37. package/templates/bmad/_config/ides/opencode.yaml +5 -0
  38. package/templates/bmad/_config/ides/trae.yaml +5 -0
  39. package/templates/bmad/_config/task-manifest.csv +7 -0
  40. package/templates/bmad/_config/tool-manifest.csv +1 -0
  41. package/templates/bmad/_config/workflow-manifest.csv +35 -0
  42. package/templates/bmad/bmm/agents/analyst.md +78 -0
  43. package/templates/bmad/bmm/agents/architect.md +58 -0
  44. package/templates/bmad/bmm/agents/dev.md +69 -0
  45. package/templates/bmad/bmm/agents/pm.md +72 -0
  46. package/templates/bmad/bmm/agents/qa.md +92 -0
  47. package/templates/bmad/bmm/agents/quick-flow-solo-dev.md +69 -0
  48. package/templates/bmad/bmm/agents/sm.md +70 -0
  49. package/templates/bmad/bmm/agents/tech-writer/tech-writer.md +70 -0
  50. package/templates/bmad/bmm/agents/ux-designer.md +57 -0
  51. package/templates/bmad/bmm/config.yaml +15 -0
  52. package/templates/bmad/bmm/data/project-context-template.md +26 -0
  53. package/templates/bmad/bmm/module-help.csv +31 -0
  54. package/templates/bmad/bmm/teams/default-party.csv +20 -0
  55. package/templates/bmad/bmm/teams/team-fullstack.yaml +12 -0
  56. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  57. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  58. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  59. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  60. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  61. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  62. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  63. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  64. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
  65. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  66. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  67. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  68. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  69. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  70. package/templates/bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +444 -0
  71. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  72. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  73. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  74. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  75. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  76. package/templates/bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
  77. package/templates/bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
  78. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  79. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  80. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  81. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  82. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -0
  83. package/templates/bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +487 -0
  84. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
  85. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
  86. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
  87. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
  88. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  89. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  90. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  91. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +152 -0
  92. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  93. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -0
  94. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -0
  95. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  96. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  97. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  98. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  99. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  100. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  101. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  102. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  103. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  104. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  105. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  106. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  107. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  108. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  109. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  110. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -0
  111. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  112. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  113. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  114. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  115. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  116. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  117. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  118. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  119. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  120. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  121. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  122. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  123. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  124. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  125. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
  126. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
  127. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
  128. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  129. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  130. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  131. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  132. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  133. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  134. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  135. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  136. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  137. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  138. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  139. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  140. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  141. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  142. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  143. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  144. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
  145. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -0
  146. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -0
  147. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -0
  148. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -0
  149. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -0
  150. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
  151. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  152. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  153. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  154. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
  155. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  156. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  157. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +173 -0
  158. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  159. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +329 -0
  160. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  161. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  162. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  163. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  164. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  165. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  166. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  167. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  168. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  169. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  170. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  171. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  172. package/templates/bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  173. package/templates/bmad/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  174. package/templates/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -0
  175. package/templates/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  176. package/templates/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
  177. package/templates/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -0
  178. package/templates/bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  179. package/templates/bmad/bmm/workflows/4-implementation/create-story/instructions.xml +346 -0
  180. package/templates/bmad/bmm/workflows/4-implementation/create-story/template.md +49 -0
  181. package/templates/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -0
  182. package/templates/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  183. package/templates/bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  184. package/templates/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -0
  185. package/templates/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
  186. package/templates/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -0
  187. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  188. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -0
  189. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  190. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
  191. package/templates/bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
  192. package/templates/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
  193. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -0
  194. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -0
  195. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -0
  196. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -0
  197. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -0
  198. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
  199. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
  200. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
  201. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +143 -0
  202. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +126 -0
  203. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -0
  204. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  205. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  206. package/templates/bmad/bmm/workflows/document-project/checklist.md +245 -0
  207. package/templates/bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  208. package/templates/bmad/bmm/workflows/document-project/instructions.md +130 -0
  209. package/templates/bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  210. package/templates/bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
  211. package/templates/bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  212. package/templates/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  213. package/templates/bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  214. package/templates/bmad/bmm/workflows/document-project/workflow.yaml +22 -0
  215. package/templates/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  216. package/templates/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  217. package/templates/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  218. package/templates/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  219. package/templates/bmad/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  220. package/templates/bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
  221. package/templates/bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
  222. package/templates/bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
  223. package/templates/bmad/bmm/workflows/generate-project-context/workflow.md +49 -0
  224. package/templates/bmad/bmm/workflows/qa/automate/checklist.md +33 -0
  225. package/templates/bmad/bmm/workflows/qa/automate/instructions.md +110 -0
  226. package/templates/bmad/bmm/workflows/qa/automate/workflow.yaml +44 -0
  227. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/checklist.md +33 -0
  228. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/instructions.md +110 -0
  229. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -0
  230. package/templates/bmad/commands/bmad-agent-bmad-master.md +15 -0
  231. package/templates/bmad/commands/bmad-agent-bmm-analyst.md +15 -0
  232. package/templates/bmad/commands/bmad-agent-bmm-architect.md +15 -0
  233. package/templates/bmad/commands/bmad-agent-bmm-dev.md +15 -0
  234. package/templates/bmad/commands/bmad-agent-bmm-pm.md +15 -0
  235. package/templates/bmad/commands/bmad-agent-bmm-qa.md +15 -0
  236. package/templates/bmad/commands/bmad-agent-bmm-quick-flow-solo-dev.md +15 -0
  237. package/templates/bmad/commands/bmad-agent-bmm-sm.md +15 -0
  238. package/templates/bmad/commands/bmad-agent-bmm-tech-writer.md +15 -0
  239. package/templates/bmad/commands/bmad-agent-bmm-ux-designer.md +15 -0
  240. package/templates/bmad/commands/bmad-agent-tea-tea.md +15 -0
  241. package/templates/bmad/commands/bmad-bmm-check-implementation-readiness.md +6 -0
  242. package/templates/bmad/commands/bmad-bmm-code-review.md +14 -0
  243. package/templates/bmad/commands/bmad-bmm-correct-course.md +14 -0
  244. package/templates/bmad/commands/bmad-bmm-create-architecture.md +6 -0
  245. package/templates/bmad/commands/bmad-bmm-create-epics-and-stories.md +6 -0
  246. package/templates/bmad/commands/bmad-bmm-create-prd.md +6 -0
  247. package/templates/bmad/commands/bmad-bmm-create-product-brief.md +6 -0
  248. package/templates/bmad/commands/bmad-bmm-create-story.md +14 -0
  249. package/templates/bmad/commands/bmad-bmm-create-ux-design.md +6 -0
  250. package/templates/bmad/commands/bmad-bmm-dev-story.md +14 -0
  251. package/templates/bmad/commands/bmad-bmm-document-project.md +14 -0
  252. package/templates/bmad/commands/bmad-bmm-domain-research.md +6 -0
  253. package/templates/bmad/commands/bmad-bmm-edit-prd.md +6 -0
  254. package/templates/bmad/commands/bmad-bmm-generate-project-context.md +6 -0
  255. package/templates/bmad/commands/bmad-bmm-market-research.md +6 -0
  256. package/templates/bmad/commands/bmad-bmm-qa-automate.md +15 -0
  257. package/templates/bmad/commands/bmad-bmm-qa-generate-e2e-tests.md +14 -0
  258. package/templates/bmad/commands/bmad-bmm-quick-dev.md +6 -0
  259. package/templates/bmad/commands/bmad-bmm-quick-spec.md +6 -0
  260. package/templates/bmad/commands/bmad-bmm-retrospective.md +14 -0
  261. package/templates/bmad/commands/bmad-bmm-sprint-planning.md +14 -0
  262. package/templates/bmad/commands/bmad-bmm-sprint-status.md +14 -0
  263. package/templates/bmad/commands/bmad-bmm-technical-research.md +6 -0
  264. package/templates/bmad/commands/bmad-bmm-validate-prd.md +6 -0
  265. package/templates/bmad/commands/bmad-brainstorming.md +6 -0
  266. package/templates/bmad/commands/bmad-editorial-review-prose.md +10 -0
  267. package/templates/bmad/commands/bmad-editorial-review-structure.md +10 -0
  268. package/templates/bmad/commands/bmad-help.md +10 -0
  269. package/templates/bmad/commands/bmad-index-docs.md +10 -0
  270. package/templates/bmad/commands/bmad-party-mode.md +6 -0
  271. package/templates/bmad/commands/bmad-review-adversarial-general.md +10 -0
  272. package/templates/bmad/commands/bmad-shard-doc.md +10 -0
  273. package/templates/bmad/commands/bmad-tea-teach-me-testing.md +6 -0
  274. package/templates/bmad/commands/bmad-tea-testarch-atdd.md +14 -0
  275. package/templates/bmad/commands/bmad-tea-testarch-automate.md +14 -0
  276. package/templates/bmad/commands/bmad-tea-testarch-ci.md +14 -0
  277. package/templates/bmad/commands/bmad-tea-testarch-framework.md +14 -0
  278. package/templates/bmad/commands/bmad-tea-testarch-nfr.md +14 -0
  279. package/templates/bmad/commands/bmad-tea-testarch-test-design.md +14 -0
  280. package/templates/bmad/commands/bmad-tea-testarch-test-review.md +14 -0
  281. package/templates/bmad/commands/bmad-tea-testarch-trace.md +14 -0
  282. package/templates/bmad/core/agents/bmad-master.md +56 -0
  283. package/templates/bmad/core/config.yaml +8 -0
  284. package/templates/bmad/core/module-help.csv +9 -0
  285. package/templates/bmad/core/tasks/editorial-review-prose.xml +102 -0
  286. package/templates/bmad/core/tasks/editorial-review-structure.xml +208 -0
  287. package/templates/bmad/core/tasks/help.md +86 -0
  288. package/templates/bmad/core/tasks/index-docs.xml +65 -0
  289. package/templates/bmad/core/tasks/review-adversarial-general.xml +49 -0
  290. package/templates/bmad/core/tasks/shard-doc.xml +108 -0
  291. package/templates/bmad/core/tasks/workflow.xml +235 -0
  292. package/templates/bmad/core/workflows/advanced-elicitation/methods.csv +51 -0
  293. package/templates/bmad/core/workflows/advanced-elicitation/workflow.xml +118 -0
  294. package/templates/bmad/core/workflows/brainstorming/brain-methods.csv +62 -0
  295. package/templates/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  296. package/templates/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  297. package/templates/bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  298. package/templates/bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  299. package/templates/bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  300. package/templates/bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  301. package/templates/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  302. package/templates/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  303. package/templates/bmad/core/workflows/brainstorming/template.md +15 -0
  304. package/templates/bmad/core/workflows/brainstorming/workflow.md +58 -0
  305. package/templates/bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  306. package/templates/bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  307. package/templates/bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
  308. package/templates/bmad/core/workflows/party-mode/workflow.md +194 -0
  309. package/templates/bmad/tea/agents/tea.md +71 -0
  310. package/templates/bmad/tea/config.yaml +20 -0
  311. package/templates/bmad/tea/module-help.csv +10 -0
  312. package/templates/bmad/tea/teams/default-party.csv +2 -0
  313. package/templates/bmad/tea/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
  314. package/templates/bmad/tea/testarch/knowledge/api-request.md +563 -0
  315. package/templates/bmad/tea/testarch/knowledge/api-testing-patterns.md +915 -0
  316. package/templates/bmad/tea/testarch/knowledge/auth-session.md +548 -0
  317. package/templates/bmad/tea/testarch/knowledge/burn-in.md +273 -0
  318. package/templates/bmad/tea/testarch/knowledge/ci-burn-in.md +675 -0
  319. package/templates/bmad/tea/testarch/knowledge/component-tdd.md +486 -0
  320. package/templates/bmad/tea/testarch/knowledge/contract-testing.md +957 -0
  321. package/templates/bmad/tea/testarch/knowledge/data-factories.md +500 -0
  322. package/templates/bmad/tea/testarch/knowledge/email-auth.md +721 -0
  323. package/templates/bmad/tea/testarch/knowledge/error-handling.md +725 -0
  324. package/templates/bmad/tea/testarch/knowledge/feature-flags.md +750 -0
  325. package/templates/bmad/tea/testarch/knowledge/file-utils.md +456 -0
  326. package/templates/bmad/tea/testarch/knowledge/fixture-architecture.md +401 -0
  327. package/templates/bmad/tea/testarch/knowledge/fixtures-composition.md +382 -0
  328. package/templates/bmad/tea/testarch/knowledge/intercept-network-call.md +426 -0
  329. package/templates/bmad/tea/testarch/knowledge/log.md +426 -0
  330. package/templates/bmad/tea/testarch/knowledge/network-error-monitor.md +401 -0
  331. package/templates/bmad/tea/testarch/knowledge/network-first.md +486 -0
  332. package/templates/bmad/tea/testarch/knowledge/network-recorder.md +527 -0
  333. package/templates/bmad/tea/testarch/knowledge/nfr-criteria.md +670 -0
  334. package/templates/bmad/tea/testarch/knowledge/overview.md +286 -0
  335. package/templates/bmad/tea/testarch/knowledge/playwright-cli.md +165 -0
  336. package/templates/bmad/tea/testarch/knowledge/playwright-config.md +730 -0
  337. package/templates/bmad/tea/testarch/knowledge/probability-impact.md +601 -0
  338. package/templates/bmad/tea/testarch/knowledge/recurse.md +421 -0
  339. package/templates/bmad/tea/testarch/knowledge/risk-governance.md +615 -0
  340. package/templates/bmad/tea/testarch/knowledge/selective-testing.md +732 -0
  341. package/templates/bmad/tea/testarch/knowledge/selector-resilience.md +527 -0
  342. package/templates/bmad/tea/testarch/knowledge/test-healing-patterns.md +644 -0
  343. package/templates/bmad/tea/testarch/knowledge/test-levels-framework.md +473 -0
  344. package/templates/bmad/tea/testarch/knowledge/test-priorities-matrix.md +373 -0
  345. package/templates/bmad/tea/testarch/knowledge/test-quality.md +664 -0
  346. package/templates/bmad/tea/testarch/knowledge/timing-debugging.md +372 -0
  347. package/templates/bmad/tea/testarch/knowledge/visual-debugging.md +524 -0
  348. package/templates/bmad/tea/testarch/tea-index.csv +36 -0
  349. package/templates/bmad/tea/workflows/testarch/README.md +74 -0
  350. package/templates/bmad/tea/workflows/testarch/atdd/atdd-checklist-template.md +371 -0
  351. package/templates/bmad/tea/workflows/testarch/atdd/checklist.md +374 -0
  352. package/templates/bmad/tea/workflows/testarch/atdd/instructions.md +45 -0
  353. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +196 -0
  354. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-01b-resume.md +96 -0
  355. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-02-generation-mode.md +125 -0
  356. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-03-test-strategy.md +110 -0
  357. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +229 -0
  358. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subprocess-api-failing.md +215 -0
  359. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subprocess-e2e-failing.md +244 -0
  360. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +354 -0
  361. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-05-validate-and-complete.md +106 -0
  362. package/templates/bmad/tea/workflows/testarch/atdd/steps-e/step-01-assess.md +65 -0
  363. package/templates/bmad/tea/workflows/testarch/atdd/steps-e/step-02-apply-edit.md +60 -0
  364. package/templates/bmad/tea/workflows/testarch/atdd/steps-v/step-01-validate.md +67 -0
  365. package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +73 -0
  366. package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +116 -0
  367. package/templates/bmad/tea/workflows/testarch/atdd/workflow-plan.md +21 -0
  368. package/templates/bmad/tea/workflows/testarch/atdd/workflow.md +41 -0
  369. package/templates/bmad/tea/workflows/testarch/atdd/workflow.yaml +46 -0
  370. package/templates/bmad/tea/workflows/testarch/automate/checklist.md +582 -0
  371. package/templates/bmad/tea/workflows/testarch/automate/instructions.md +50 -0
  372. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +205 -0
  373. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-01b-resume.md +94 -0
  374. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-02-identify-targets.md +145 -0
  375. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +278 -0
  376. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03a-subprocess-api.md +183 -0
  377. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subprocess-backend.md +246 -0
  378. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subprocess-e2e.md +213 -0
  379. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +377 -0
  380. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-04-validate-and-summarize.md +106 -0
  381. package/templates/bmad/tea/workflows/testarch/automate/steps-e/step-01-assess.md +65 -0
  382. package/templates/bmad/tea/workflows/testarch/automate/steps-e/step-02-apply-edit.md +60 -0
  383. package/templates/bmad/tea/workflows/testarch/automate/steps-v/step-01-validate.md +67 -0
  384. package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +72 -0
  385. package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +114 -0
  386. package/templates/bmad/tea/workflows/testarch/automate/workflow-plan.md +20 -0
  387. package/templates/bmad/tea/workflows/testarch/automate/workflow.md +41 -0
  388. package/templates/bmad/tea/workflows/testarch/automate/workflow.yaml +53 -0
  389. package/templates/bmad/tea/workflows/testarch/ci/azure-pipelines-template.yaml +155 -0
  390. package/templates/bmad/tea/workflows/testarch/ci/checklist.md +288 -0
  391. package/templates/bmad/tea/workflows/testarch/ci/github-actions-template.yaml +210 -0
  392. package/templates/bmad/tea/workflows/testarch/ci/gitlab-ci-template.yaml +158 -0
  393. package/templates/bmad/tea/workflows/testarch/ci/harness-pipeline-template.yaml +159 -0
  394. package/templates/bmad/tea/workflows/testarch/ci/instructions.md +45 -0
  395. package/templates/bmad/tea/workflows/testarch/ci/jenkins-pipeline-template.groovy +129 -0
  396. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-01-preflight.md +158 -0
  397. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-01b-resume.md +110 -0
  398. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +118 -0
  399. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +105 -0
  400. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-04-validate-and-summary.md +92 -0
  401. package/templates/bmad/tea/workflows/testarch/ci/steps-e/step-01-assess.md +65 -0
  402. package/templates/bmad/tea/workflows/testarch/ci/steps-e/step-02-apply-edit.md +60 -0
  403. package/templates/bmad/tea/workflows/testarch/ci/steps-v/step-01-validate.md +67 -0
  404. package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +72 -0
  405. package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +114 -0
  406. package/templates/bmad/tea/workflows/testarch/ci/workflow-plan.md +20 -0
  407. package/templates/bmad/tea/workflows/testarch/ci/workflow.md +41 -0
  408. package/templates/bmad/tea/workflows/testarch/ci/workflow.yaml +48 -0
  409. package/templates/bmad/tea/workflows/testarch/framework/checklist.md +321 -0
  410. package/templates/bmad/tea/workflows/testarch/framework/instructions.md +45 -0
  411. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-01-preflight.md +132 -0
  412. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-01b-resume.md +116 -0
  413. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-02-select-framework.md +117 -0
  414. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +196 -0
  415. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-04-docs-and-scripts.md +105 -0
  416. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-05-validate-and-summary.md +93 -0
  417. package/templates/bmad/tea/workflows/testarch/framework/steps-e/step-01-assess.md +65 -0
  418. package/templates/bmad/tea/workflows/testarch/framework/steps-e/step-02-apply-edit.md +60 -0
  419. package/templates/bmad/tea/workflows/testarch/framework/steps-v/step-01-validate.md +67 -0
  420. package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +73 -0
  421. package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +116 -0
  422. package/templates/bmad/tea/workflows/testarch/framework/workflow-plan.md +22 -0
  423. package/templates/bmad/tea/workflows/testarch/framework/workflow.md +41 -0
  424. package/templates/bmad/tea/workflows/testarch/framework/workflow.yaml +48 -0
  425. package/templates/bmad/tea/workflows/testarch/nfr-assess/checklist.md +407 -0
  426. package/templates/bmad/tea/workflows/testarch/nfr-assess/instructions.md +43 -0
  427. package/templates/bmad/tea/workflows/testarch/nfr-assess/nfr-report-template.md +470 -0
  428. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-01-load-context.md +138 -0
  429. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-01b-resume.md +106 -0
  430. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-02-define-thresholds.md +107 -0
  431. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-03-gather-evidence.md +108 -0
  432. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +140 -0
  433. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subprocess-security.md +138 -0
  434. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subprocess-performance.md +84 -0
  435. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subprocess-reliability.md +85 -0
  436. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subprocess-scalability.md +88 -0
  437. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +247 -0
  438. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-05-generate-report.md +108 -0
  439. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-e/step-01-assess.md +65 -0
  440. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-e/step-02-apply-edit.md +60 -0
  441. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-v/step-01-validate.md +67 -0
  442. package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +73 -0
  443. package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +116 -0
  444. package/templates/bmad/tea/workflows/testarch/nfr-assess/workflow-plan.md +19 -0
  445. package/templates/bmad/tea/workflows/testarch/nfr-assess/workflow.md +41 -0
  446. package/templates/bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +48 -0
  447. package/templates/bmad/tea/workflows/testarch/teach-me-testing/checklist.md +197 -0
  448. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/curriculum.yaml +129 -0
  449. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/quiz-questions.yaml +206 -0
  450. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/role-paths.yaml +136 -0
  451. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/session-content-map.yaml +207 -0
  452. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +359 -0
  453. package/templates/bmad/tea/workflows/testarch/teach-me-testing/instructions.md +130 -0
  454. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01-init.md +235 -0
  455. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01b-continue.md +147 -0
  456. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-02-assess.md +258 -0
  457. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-03-session-menu.md +219 -0
  458. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-01.md +460 -0
  459. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-02.md +465 -0
  460. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-03.md +301 -0
  461. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-04.md +234 -0
  462. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-05.md +234 -0
  463. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-06.md +209 -0
  464. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-07.md +212 -0
  465. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-05-completion.md +339 -0
  466. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-01-assess-workflow.md +141 -0
  467. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-02-apply-edits.md +122 -0
  468. package/templates/bmad/tea/workflows/testarch/teach-me-testing/steps-v/step-v-01-validate.md +263 -0
  469. package/templates/bmad/tea/workflows/testarch/teach-me-testing/templates/certificate-template.md +86 -0
  470. package/templates/bmad/tea/workflows/testarch/teach-me-testing/templates/progress-template.yaml +95 -0
  471. package/templates/bmad/tea/workflows/testarch/teach-me-testing/templates/session-notes-template.md +83 -0
  472. package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +950 -0
  473. package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow.md +90 -0
  474. package/templates/bmad/tea/workflows/testarch/test-design/checklist.md +464 -0
  475. package/templates/bmad/tea/workflows/testarch/test-design/instructions.md +105 -0
  476. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-01-detect-mode.md +134 -0
  477. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-01b-resume.md +102 -0
  478. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +212 -0
  479. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-03-risk-and-testability.md +110 -0
  480. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-04-coverage-plan.md +123 -0
  481. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +151 -0
  482. package/templates/bmad/tea/workflows/testarch/test-design/steps-e/step-01-assess.md +65 -0
  483. package/templates/bmad/tea/workflows/testarch/test-design/steps-e/step-02-apply-edit.md +60 -0
  484. package/templates/bmad/tea/workflows/testarch/test-design/steps-v/step-01-validate.md +67 -0
  485. package/templates/bmad/tea/workflows/testarch/test-design/test-design-architecture-template.md +230 -0
  486. package/templates/bmad/tea/workflows/testarch/test-design/test-design-handoff-template.md +70 -0
  487. package/templates/bmad/tea/workflows/testarch/test-design/test-design-qa-template.md +396 -0
  488. package/templates/bmad/tea/workflows/testarch/test-design/test-design-template.md +344 -0
  489. package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +73 -0
  490. package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +116 -0
  491. package/templates/bmad/tea/workflows/testarch/test-design/workflow-plan.md +22 -0
  492. package/templates/bmad/tea/workflows/testarch/test-design/workflow.md +41 -0
  493. package/templates/bmad/tea/workflows/testarch/test-design/workflow.yaml +77 -0
  494. package/templates/bmad/tea/workflows/testarch/test-review/checklist.md +475 -0
  495. package/templates/bmad/tea/workflows/testarch/test-review/instructions.md +45 -0
  496. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +169 -0
  497. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-01b-resume.md +104 -0
  498. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-02-discover-tests.md +113 -0
  499. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +173 -0
  500. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subprocess-determinism.md +214 -0
  501. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subprocess-isolation.md +125 -0
  502. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subprocess-maintainability.md +102 -0
  503. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03d-subprocess-coverage.md +111 -0
  504. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subprocess-performance.md +117 -0
  505. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +277 -0
  506. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-04-generate-report.md +111 -0
  507. package/templates/bmad/tea/workflows/testarch/test-review/steps-e/step-01-assess.md +65 -0
  508. package/templates/bmad/tea/workflows/testarch/test-review/steps-e/step-02-apply-edit.md +60 -0
  509. package/templates/bmad/tea/workflows/testarch/test-review/steps-v/step-01-validate.md +67 -0
  510. package/templates/bmad/tea/workflows/testarch/test-review/test-review-template.md +387 -0
  511. package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +72 -0
  512. package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +114 -0
  513. package/templates/bmad/tea/workflows/testarch/test-review/workflow-plan.md +18 -0
  514. package/templates/bmad/tea/workflows/testarch/test-review/workflow.md +41 -0
  515. package/templates/bmad/tea/workflows/testarch/test-review/workflow.yaml +48 -0
  516. package/templates/bmad/tea/workflows/testarch/trace/checklist.md +647 -0
  517. package/templates/bmad/tea/workflows/testarch/trace/instructions.md +43 -0
  518. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-01-load-context.md +105 -0
  519. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-01b-resume.md +102 -0
  520. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-02-discover-tests.md +112 -0
  521. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-03-map-criteria.md +97 -0
  522. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +330 -0
  523. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-05-gate-decision.md +266 -0
  524. package/templates/bmad/tea/workflows/testarch/trace/steps-e/step-01-assess.md +65 -0
  525. package/templates/bmad/tea/workflows/testarch/trace/steps-e/step-02-apply-edit.md +60 -0
  526. package/templates/bmad/tea/workflows/testarch/trace/steps-v/step-01-validate.md +67 -0
  527. package/templates/bmad/tea/workflows/testarch/trace/trace-template.md +708 -0
  528. package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +73 -0
  529. package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +116 -0
  530. package/templates/bmad/tea/workflows/testarch/trace/workflow-plan.md +21 -0
  531. package/templates/bmad/tea/workflows/testarch/trace/workflow.md +41 -0
  532. package/templates/bmad/tea/workflows/testarch/trace/workflow.yaml +56 -0
  533. package/templates/ecc/agents/architect.md +211 -0
  534. package/templates/ecc/agents/build-error-resolver.md +114 -0
  535. package/templates/ecc/agents/code-reviewer.md +224 -0
  536. package/templates/ecc/agents/database-reviewer.md +91 -0
  537. package/templates/ecc/agents/doc-updater.md +107 -0
  538. package/templates/ecc/agents/e2e-runner.md +107 -0
  539. package/templates/ecc/agents/go-build-resolver.md +94 -0
  540. package/templates/ecc/agents/go-reviewer.md +76 -0
  541. package/templates/ecc/agents/planner.md +212 -0
  542. package/templates/ecc/agents/python-reviewer.md +98 -0
  543. package/templates/ecc/agents/refactor-cleaner.md +85 -0
  544. package/templates/ecc/agents/security-reviewer.md +108 -0
  545. package/templates/ecc/agents/tdd-guide.md +80 -0
  546. package/templates/ecc/commands/build-fix.md +62 -0
  547. package/templates/ecc/commands/checkpoint.md +74 -0
  548. package/templates/ecc/commands/code-review.md +40 -0
  549. package/templates/ecc/commands/e2e.md +363 -0
  550. package/templates/ecc/commands/eval.md +120 -0
  551. package/templates/ecc/commands/evolve.md +193 -0
  552. package/templates/ecc/commands/go-build.md +183 -0
  553. package/templates/ecc/commands/go-review.md +148 -0
  554. package/templates/ecc/commands/go-test.md +268 -0
  555. package/templates/ecc/commands/instinct-export.md +91 -0
  556. package/templates/ecc/commands/instinct-import.md +142 -0
  557. package/templates/ecc/commands/instinct-status.md +86 -0
  558. package/templates/ecc/commands/learn-eval.md +91 -0
  559. package/templates/ecc/commands/learn.md +70 -0
  560. package/templates/ecc/commands/multi-backend.md +158 -0
  561. package/templates/ecc/commands/multi-execute.md +310 -0
  562. package/templates/ecc/commands/multi-frontend.md +158 -0
  563. package/templates/ecc/commands/multi-plan.md +261 -0
  564. package/templates/ecc/commands/multi-workflow.md +183 -0
  565. package/templates/ecc/commands/orchestrate.md +172 -0
  566. package/templates/ecc/commands/plan.md +113 -0
  567. package/templates/ecc/commands/pm2.md +272 -0
  568. package/templates/ecc/commands/python-review.md +297 -0
  569. package/templates/ecc/commands/refactor-clean.md +80 -0
  570. package/templates/ecc/commands/sessions.md +305 -0
  571. package/templates/ecc/commands/setup-pm.md +80 -0
  572. package/templates/ecc/commands/skill-create.md +174 -0
  573. package/templates/ecc/commands/tdd.md +326 -0
  574. package/templates/ecc/commands/test-coverage.md +69 -0
  575. package/templates/ecc/commands/update-codemaps.md +72 -0
  576. package/templates/ecc/commands/update-docs.md +84 -0
  577. package/templates/ecc/commands/verify.md +59 -0
  578. package/templates/ecc/rules/README.md +82 -0
  579. package/templates/ecc/rules/common/agents.md +49 -0
  580. package/templates/ecc/rules/common/coding-style.md +48 -0
  581. package/templates/ecc/rules/common/git-workflow.md +45 -0
  582. package/templates/ecc/rules/common/hooks.md +30 -0
  583. package/templates/ecc/rules/common/patterns.md +31 -0
  584. package/templates/ecc/rules/common/performance.md +55 -0
  585. package/templates/ecc/rules/common/security.md +29 -0
  586. package/templates/ecc/rules/common/testing.md +29 -0
  587. package/templates/ecc/rules/golang/coding-style.md +32 -0
  588. package/templates/ecc/rules/golang/hooks.md +17 -0
  589. package/templates/ecc/rules/golang/patterns.md +45 -0
  590. package/templates/ecc/rules/golang/security.md +34 -0
  591. package/templates/ecc/rules/golang/testing.md +31 -0
  592. package/templates/ecc/rules/python/coding-style.md +42 -0
  593. package/templates/ecc/rules/python/hooks.md +19 -0
  594. package/templates/ecc/rules/python/patterns.md +39 -0
  595. package/templates/ecc/rules/python/security.md +30 -0
  596. package/templates/ecc/rules/python/testing.md +38 -0
  597. package/templates/ecc/rules/typescript/coding-style.md +65 -0
  598. package/templates/ecc/rules/typescript/hooks.md +22 -0
  599. package/templates/ecc/rules/typescript/patterns.md +52 -0
  600. package/templates/ecc/rules/typescript/security.md +28 -0
  601. package/templates/ecc/rules/typescript/testing.md +18 -0
  602. package/templates/ecc/skills/api-design/SKILL.md +522 -0
  603. package/templates/ecc/skills/backend-patterns/SKILL.md +597 -0
  604. package/templates/ecc/skills/clickhouse-io/SKILL.md +438 -0
  605. package/templates/ecc/skills/coding-standards/SKILL.md +529 -0
  606. package/templates/ecc/skills/configure-ecc/SKILL.md +298 -0
  607. package/templates/ecc/skills/content-hash-cache-pattern/SKILL.md +160 -0
  608. package/templates/ecc/skills/continuous-learning/SKILL.md +118 -0
  609. package/templates/ecc/skills/continuous-learning/config.json +18 -0
  610. package/templates/ecc/skills/continuous-learning/evaluate-session.sh +69 -0
  611. package/templates/ecc/skills/continuous-learning-v2/SKILL.md +292 -0
  612. package/templates/ecc/skills/continuous-learning-v2/agents/observer.md +137 -0
  613. package/templates/ecc/skills/continuous-learning-v2/agents/start-observer.sh +143 -0
  614. package/templates/ecc/skills/continuous-learning-v2/config.json +41 -0
  615. package/templates/ecc/skills/continuous-learning-v2/hooks/observe.sh +157 -0
  616. package/templates/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +575 -0
  617. package/templates/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +82 -0
  618. package/templates/ecc/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  619. package/templates/ecc/skills/cpp-coding-standards/SKILL.md +722 -0
  620. package/templates/ecc/skills/cpp-testing/SKILL.md +322 -0
  621. package/templates/ecc/skills/database-migrations/SKILL.md +334 -0
  622. package/templates/ecc/skills/deployment-patterns/SKILL.md +426 -0
  623. package/templates/ecc/skills/django-patterns/SKILL.md +733 -0
  624. package/templates/ecc/skills/django-security/SKILL.md +592 -0
  625. package/templates/ecc/skills/django-tdd/SKILL.md +728 -0
  626. package/templates/ecc/skills/django-verification/SKILL.md +468 -0
  627. package/templates/ecc/skills/docker-patterns/SKILL.md +363 -0
  628. package/templates/ecc/skills/e2e-testing/SKILL.md +325 -0
  629. package/templates/ecc/skills/eval-harness/SKILL.md +235 -0
  630. package/templates/ecc/skills/frontend-patterns/SKILL.md +641 -0
  631. package/templates/ecc/skills/golang-patterns/SKILL.md +673 -0
  632. package/templates/ecc/skills/golang-testing/SKILL.md +719 -0
  633. package/templates/ecc/skills/iterative-retrieval/SKILL.md +210 -0
  634. package/templates/ecc/skills/java-coding-standards/SKILL.md +146 -0
  635. package/templates/ecc/skills/jpa-patterns/SKILL.md +150 -0
  636. package/templates/ecc/skills/nutrient-document-processing/SKILL.md +165 -0
  637. package/templates/ecc/skills/postgres-patterns/SKILL.md +146 -0
  638. package/templates/ecc/skills/project-guidelines-example/SKILL.md +348 -0
  639. package/templates/ecc/skills/python-patterns/SKILL.md +749 -0
  640. package/templates/ecc/skills/python-testing/SKILL.md +815 -0
  641. package/templates/ecc/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  642. package/templates/ecc/skills/search-first/SKILL.md +159 -0
  643. package/templates/ecc/skills/security-review/SKILL.md +494 -0
  644. package/templates/ecc/skills/security-review/cloud-infrastructure-security.md +361 -0
  645. package/templates/ecc/skills/security-scan/SKILL.md +164 -0
  646. package/templates/ecc/skills/springboot-patterns/SKILL.md +313 -0
  647. package/templates/ecc/skills/springboot-security/SKILL.md +271 -0
  648. package/templates/ecc/skills/springboot-tdd/SKILL.md +157 -0
  649. package/templates/ecc/skills/springboot-verification/SKILL.md +230 -0
  650. package/templates/ecc/skills/strategic-compact/SKILL.md +102 -0
  651. package/templates/ecc/skills/strategic-compact/suggest-compact.sh +54 -0
  652. package/templates/ecc/skills/swift-actor-persistence/SKILL.md +142 -0
  653. package/templates/ecc/skills/swift-protocol-di-testing/SKILL.md +189 -0
  654. package/templates/ecc/skills/tdd-workflow/SKILL.md +409 -0
  655. package/templates/ecc/skills/verification-loop/SKILL.md +125 -0
  656. package/templates/ext-skills/pinchtab/SKILL.md +570 -0
  657. package/templates/mcp/claude-code/.mcp.json +35 -0
  658. package/templates/mcp/trae/mcp.json +35 -0
  659. package/templates/trae-bmad/rules/bmad-agent-bmad-master.md +15 -0
  660. package/templates/trae-bmad/rules/bmad-agent-bmm-analyst.md +15 -0
  661. package/templates/trae-bmad/rules/bmad-agent-bmm-architect.md +15 -0
  662. package/templates/trae-bmad/rules/bmad-agent-bmm-dev.md +15 -0
  663. package/templates/trae-bmad/rules/bmad-agent-bmm-pm.md +15 -0
  664. package/templates/trae-bmad/rules/bmad-agent-bmm-qa.md +15 -0
  665. package/templates/trae-bmad/rules/bmad-agent-bmm-quick-flow-solo-dev.md +15 -0
  666. package/templates/trae-bmad/rules/bmad-agent-bmm-sm.md +15 -0
  667. package/templates/trae-bmad/rules/bmad-agent-bmm-tech-writer.md +15 -0
  668. package/templates/trae-bmad/rules/bmad-agent-bmm-ux-designer.md +15 -0
  669. package/templates/trae-bmad/rules/bmad-agent-tea-tea.md +15 -0
  670. package/templates/trae-bmad/rules/bmad-bmm-check-implementation-readiness.md +6 -0
  671. package/templates/trae-bmad/rules/bmad-bmm-code-review.md +14 -0
  672. package/templates/trae-bmad/rules/bmad-bmm-correct-course.md +14 -0
  673. package/templates/trae-bmad/rules/bmad-bmm-create-architecture.md +6 -0
  674. package/templates/trae-bmad/rules/bmad-bmm-create-epics-and-stories.md +6 -0
  675. package/templates/trae-bmad/rules/bmad-bmm-create-prd.md +6 -0
  676. package/templates/trae-bmad/rules/bmad-bmm-create-product-brief.md +6 -0
  677. package/templates/trae-bmad/rules/bmad-bmm-create-story.md +14 -0
  678. package/templates/trae-bmad/rules/bmad-bmm-create-ux-design.md +6 -0
  679. package/templates/trae-bmad/rules/bmad-bmm-dev-story.md +14 -0
  680. package/templates/trae-bmad/rules/bmad-bmm-document-project.md +14 -0
  681. package/templates/trae-bmad/rules/bmad-bmm-domain-research.md +6 -0
  682. package/templates/trae-bmad/rules/bmad-bmm-edit-prd.md +6 -0
  683. package/templates/trae-bmad/rules/bmad-bmm-generate-project-context.md +6 -0
  684. package/templates/trae-bmad/rules/bmad-bmm-market-research.md +6 -0
  685. package/templates/trae-bmad/rules/bmad-bmm-qa-automate.md +15 -0
  686. package/templates/trae-bmad/rules/bmad-bmm-qa-generate-e2e-tests.md +14 -0
  687. package/templates/trae-bmad/rules/bmad-bmm-quick-dev.md +6 -0
  688. package/templates/trae-bmad/rules/bmad-bmm-quick-spec.md +6 -0
  689. package/templates/trae-bmad/rules/bmad-bmm-retrospective.md +14 -0
  690. package/templates/trae-bmad/rules/bmad-bmm-sprint-planning.md +14 -0
  691. package/templates/trae-bmad/rules/bmad-bmm-sprint-status.md +14 -0
  692. package/templates/trae-bmad/rules/bmad-bmm-technical-research.md +6 -0
  693. package/templates/trae-bmad/rules/bmad-bmm-validate-prd.md +6 -0
  694. package/templates/trae-bmad/rules/bmad-brainstorming.md +6 -0
  695. package/templates/trae-bmad/rules/bmad-editorial-review-prose.md +10 -0
  696. package/templates/trae-bmad/rules/bmad-editorial-review-structure.md +10 -0
  697. package/templates/trae-bmad/rules/bmad-help.md +10 -0
  698. package/templates/trae-bmad/rules/bmad-index-docs.md +10 -0
  699. package/templates/trae-bmad/rules/bmad-party-mode.md +6 -0
  700. package/templates/trae-bmad/rules/bmad-review-adversarial-general.md +10 -0
  701. package/templates/trae-bmad/rules/bmad-shard-doc.md +10 -0
  702. package/templates/trae-bmad/rules/bmad-tea-teach-me-testing.md +6 -0
  703. package/templates/trae-bmad/rules/bmad-tea-testarch-atdd.md +14 -0
  704. package/templates/trae-bmad/rules/bmad-tea-testarch-automate.md +14 -0
  705. package/templates/trae-bmad/rules/bmad-tea-testarch-ci.md +14 -0
  706. package/templates/trae-bmad/rules/bmad-tea-testarch-framework.md +14 -0
  707. package/templates/trae-bmad/rules/bmad-tea-testarch-nfr.md +14 -0
  708. package/templates/trae-bmad/rules/bmad-tea-testarch-test-design.md +14 -0
  709. package/templates/trae-bmad/rules/bmad-tea-testarch-test-review.md +14 -0
  710. package/templates/trae-bmad/rules/bmad-tea-testarch-trace.md +14 -0
@@ -0,0 +1,313 @@
1
+ ---
2
+ name: springboot-patterns
3
+ description: Spring Boot architecture patterns, REST API design, layered services, data access, caching, async processing, and logging. Use for Java Spring Boot backend work.
4
+ ---
5
+
6
+ # Spring Boot Development Patterns
7
+
8
+ Spring Boot architecture and API patterns for scalable, production-grade services.
9
+
10
+ ## When to Activate
11
+
12
+ - Building REST APIs with Spring MVC or WebFlux
13
+ - Structuring controller → service → repository layers
14
+ - Configuring Spring Data JPA, caching, or async processing
15
+ - Adding validation, exception handling, or pagination
16
+ - Setting up profiles for dev/staging/production environments
17
+ - Implementing event-driven patterns with Spring Events or Kafka
18
+
19
+ ## REST API Structure
20
+
21
+ ```java
22
+ @RestController
23
+ @RequestMapping("/api/markets")
24
+ @Validated
25
+ class MarketController {
26
+ private final MarketService marketService;
27
+
28
+ MarketController(MarketService marketService) {
29
+ this.marketService = marketService;
30
+ }
31
+
32
+ @GetMapping
33
+ ResponseEntity<Page<MarketResponse>> list(
34
+ @RequestParam(defaultValue = "0") int page,
35
+ @RequestParam(defaultValue = "20") int size) {
36
+ Page<Market> markets = marketService.list(PageRequest.of(page, size));
37
+ return ResponseEntity.ok(markets.map(MarketResponse::from));
38
+ }
39
+
40
+ @PostMapping
41
+ ResponseEntity<MarketResponse> create(@Valid @RequestBody CreateMarketRequest request) {
42
+ Market market = marketService.create(request);
43
+ return ResponseEntity.status(HttpStatus.CREATED).body(MarketResponse.from(market));
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Repository Pattern (Spring Data JPA)
49
+
50
+ ```java
51
+ public interface MarketRepository extends JpaRepository<MarketEntity, Long> {
52
+ @Query("select m from MarketEntity m where m.status = :status order by m.volume desc")
53
+ List<MarketEntity> findActive(@Param("status") MarketStatus status, Pageable pageable);
54
+ }
55
+ ```
56
+
57
+ ## Service Layer with Transactions
58
+
59
+ ```java
60
+ @Service
61
+ public class MarketService {
62
+ private final MarketRepository repo;
63
+
64
+ public MarketService(MarketRepository repo) {
65
+ this.repo = repo;
66
+ }
67
+
68
+ @Transactional
69
+ public Market create(CreateMarketRequest request) {
70
+ MarketEntity entity = MarketEntity.from(request);
71
+ MarketEntity saved = repo.save(entity);
72
+ return Market.from(saved);
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## DTOs and Validation
78
+
79
+ ```java
80
+ public record CreateMarketRequest(
81
+ @NotBlank @Size(max = 200) String name,
82
+ @NotBlank @Size(max = 2000) String description,
83
+ @NotNull @FutureOrPresent Instant endDate,
84
+ @NotEmpty List<@NotBlank String> categories) {}
85
+
86
+ public record MarketResponse(Long id, String name, MarketStatus status) {
87
+ static MarketResponse from(Market market) {
88
+ return new MarketResponse(market.id(), market.name(), market.status());
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Exception Handling
94
+
95
+ ```java
96
+ @ControllerAdvice
97
+ class GlobalExceptionHandler {
98
+ @ExceptionHandler(MethodArgumentNotValidException.class)
99
+ ResponseEntity<ApiError> handleValidation(MethodArgumentNotValidException ex) {
100
+ String message = ex.getBindingResult().getFieldErrors().stream()
101
+ .map(e -> e.getField() + ": " + e.getDefaultMessage())
102
+ .collect(Collectors.joining(", "));
103
+ return ResponseEntity.badRequest().body(ApiError.validation(message));
104
+ }
105
+
106
+ @ExceptionHandler(AccessDeniedException.class)
107
+ ResponseEntity<ApiError> handleAccessDenied() {
108
+ return ResponseEntity.status(HttpStatus.FORBIDDEN).body(ApiError.of("Forbidden"));
109
+ }
110
+
111
+ @ExceptionHandler(Exception.class)
112
+ ResponseEntity<ApiError> handleGeneric(Exception ex) {
113
+ // Log unexpected errors with stack traces
114
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
115
+ .body(ApiError.of("Internal server error"));
116
+ }
117
+ }
118
+ ```
119
+
120
+ ## Caching
121
+
122
+ Requires `@EnableCaching` on a configuration class.
123
+
124
+ ```java
125
+ @Service
126
+ public class MarketCacheService {
127
+ private final MarketRepository repo;
128
+
129
+ public MarketCacheService(MarketRepository repo) {
130
+ this.repo = repo;
131
+ }
132
+
133
+ @Cacheable(value = "market", key = "#id")
134
+ public Market getById(Long id) {
135
+ return repo.findById(id)
136
+ .map(Market::from)
137
+ .orElseThrow(() -> new EntityNotFoundException("Market not found"));
138
+ }
139
+
140
+ @CacheEvict(value = "market", key = "#id")
141
+ public void evict(Long id) {}
142
+ }
143
+ ```
144
+
145
+ ## Async Processing
146
+
147
+ Requires `@EnableAsync` on a configuration class.
148
+
149
+ ```java
150
+ @Service
151
+ public class NotificationService {
152
+ @Async
153
+ public CompletableFuture<Void> sendAsync(Notification notification) {
154
+ // send email/SMS
155
+ return CompletableFuture.completedFuture(null);
156
+ }
157
+ }
158
+ ```
159
+
160
+ ## Logging (SLF4J)
161
+
162
+ ```java
163
+ @Service
164
+ public class ReportService {
165
+ private static final Logger log = LoggerFactory.getLogger(ReportService.class);
166
+
167
+ public Report generate(Long marketId) {
168
+ log.info("generate_report marketId={}", marketId);
169
+ try {
170
+ // logic
171
+ } catch (Exception ex) {
172
+ log.error("generate_report_failed marketId={}", marketId, ex);
173
+ throw ex;
174
+ }
175
+ return new Report();
176
+ }
177
+ }
178
+ ```
179
+
180
+ ## Middleware / Filters
181
+
182
+ ```java
183
+ @Component
184
+ public class RequestLoggingFilter extends OncePerRequestFilter {
185
+ private static final Logger log = LoggerFactory.getLogger(RequestLoggingFilter.class);
186
+
187
+ @Override
188
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
189
+ FilterChain filterChain) throws ServletException, IOException {
190
+ long start = System.currentTimeMillis();
191
+ try {
192
+ filterChain.doFilter(request, response);
193
+ } finally {
194
+ long duration = System.currentTimeMillis() - start;
195
+ log.info("req method={} uri={} status={} durationMs={}",
196
+ request.getMethod(), request.getRequestURI(), response.getStatus(), duration);
197
+ }
198
+ }
199
+ }
200
+ ```
201
+
202
+ ## Pagination and Sorting
203
+
204
+ ```java
205
+ PageRequest page = PageRequest.of(pageNumber, pageSize, Sort.by("createdAt").descending());
206
+ Page<Market> results = marketService.list(page);
207
+ ```
208
+
209
+ ## Error-Resilient External Calls
210
+
211
+ ```java
212
+ public <T> T withRetry(Supplier<T> supplier, int maxRetries) {
213
+ int attempts = 0;
214
+ while (true) {
215
+ try {
216
+ return supplier.get();
217
+ } catch (Exception ex) {
218
+ attempts++;
219
+ if (attempts >= maxRetries) {
220
+ throw ex;
221
+ }
222
+ try {
223
+ Thread.sleep((long) Math.pow(2, attempts) * 100L);
224
+ } catch (InterruptedException ie) {
225
+ Thread.currentThread().interrupt();
226
+ throw ex;
227
+ }
228
+ }
229
+ }
230
+ }
231
+ ```
232
+
233
+ ## Rate Limiting (Filter + Bucket4j)
234
+
235
+ **Security Note**: The `X-Forwarded-For` header is untrusted by default because clients can spoof it.
236
+ Only use forwarded headers when:
237
+ 1. Your app is behind a trusted reverse proxy (nginx, AWS ALB, etc.)
238
+ 2. You have registered `ForwardedHeaderFilter` as a bean
239
+ 3. You have configured `server.forward-headers-strategy=NATIVE` or `FRAMEWORK` in application properties
240
+ 4. Your proxy is configured to overwrite (not append to) the `X-Forwarded-For` header
241
+
242
+ When `ForwardedHeaderFilter` is properly configured, `request.getRemoteAddr()` will automatically
243
+ return the correct client IP from the forwarded headers. Without this configuration, use
244
+ `request.getRemoteAddr()` directly—it returns the immediate connection IP, which is the only
245
+ trustworthy value.
246
+
247
+ ```java
248
+ @Component
249
+ public class RateLimitFilter extends OncePerRequestFilter {
250
+ private final Map<String, Bucket> buckets = new ConcurrentHashMap<>();
251
+
252
+ /*
253
+ * SECURITY: This filter uses request.getRemoteAddr() to identify clients for rate limiting.
254
+ *
255
+ * If your application is behind a reverse proxy (nginx, AWS ALB, etc.), you MUST configure
256
+ * Spring to handle forwarded headers properly for accurate client IP detection:
257
+ *
258
+ * 1. Set server.forward-headers-strategy=NATIVE (for cloud platforms) or FRAMEWORK in
259
+ * application.properties/yaml
260
+ * 2. If using FRAMEWORK strategy, register ForwardedHeaderFilter:
261
+ *
262
+ * @Bean
263
+ * ForwardedHeaderFilter forwardedHeaderFilter() {
264
+ * return new ForwardedHeaderFilter();
265
+ * }
266
+ *
267
+ * 3. Ensure your proxy overwrites (not appends) the X-Forwarded-For header to prevent spoofing
268
+ * 4. Configure server.tomcat.remoteip.trusted-proxies or equivalent for your container
269
+ *
270
+ * Without this configuration, request.getRemoteAddr() returns the proxy IP, not the client IP.
271
+ * Do NOT read X-Forwarded-For directly—it is trivially spoofable without trusted proxy handling.
272
+ */
273
+ @Override
274
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
275
+ FilterChain filterChain) throws ServletException, IOException {
276
+ // Use getRemoteAddr() which returns the correct client IP when ForwardedHeaderFilter
277
+ // is configured, or the direct connection IP otherwise. Never trust X-Forwarded-For
278
+ // headers directly without proper proxy configuration.
279
+ String clientIp = request.getRemoteAddr();
280
+
281
+ Bucket bucket = buckets.computeIfAbsent(clientIp,
282
+ k -> Bucket.builder()
283
+ .addLimit(Bandwidth.classic(100, Refill.greedy(100, Duration.ofMinutes(1))))
284
+ .build());
285
+
286
+ if (bucket.tryConsume(1)) {
287
+ filterChain.doFilter(request, response);
288
+ } else {
289
+ response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value());
290
+ }
291
+ }
292
+ }
293
+ ```
294
+
295
+ ## Background Jobs
296
+
297
+ Use Spring’s `@Scheduled` or integrate with queues (e.g., Kafka, SQS, RabbitMQ). Keep handlers idempotent and observable.
298
+
299
+ ## Observability
300
+
301
+ - Structured logging (JSON) via Logback encoder
302
+ - Metrics: Micrometer + Prometheus/OTel
303
+ - Tracing: Micrometer Tracing with OpenTelemetry or Brave backend
304
+
305
+ ## Production Defaults
306
+
307
+ - Prefer constructor injection, avoid field injection
308
+ - Enable `spring.mvc.problemdetails.enabled=true` for RFC 7807 errors (Spring Boot 3+)
309
+ - Configure HikariCP pool sizes for workload, set timeouts
310
+ - Use `@Transactional(readOnly = true)` for queries
311
+ - Enforce null-safety via `@NonNull` and `Optional` where appropriate
312
+
313
+ **Remember**: Keep controllers thin, services focused, repositories simple, and errors handled centrally. Optimize for maintainability and testability.
@@ -0,0 +1,271 @@
1
+ ---
2
+ name: springboot-security
3
+ description: Spring Security best practices for authn/authz, validation, CSRF, secrets, headers, rate limiting, and dependency security in Java Spring Boot services.
4
+ ---
5
+
6
+ # Spring Boot Security Review
7
+
8
+ Use when adding auth, handling input, creating endpoints, or dealing with secrets.
9
+
10
+ ## When to Activate
11
+
12
+ - Adding authentication (JWT, OAuth2, session-based)
13
+ - Implementing authorization (@PreAuthorize, role-based access)
14
+ - Validating user input (Bean Validation, custom validators)
15
+ - Configuring CORS, CSRF, or security headers
16
+ - Managing secrets (Vault, environment variables)
17
+ - Adding rate limiting or brute-force protection
18
+ - Scanning dependencies for CVEs
19
+
20
+ ## Authentication
21
+
22
+ - Prefer stateless JWT or opaque tokens with revocation list
23
+ - Use `httpOnly`, `Secure`, `SameSite=Strict` cookies for sessions
24
+ - Validate tokens with `OncePerRequestFilter` or resource server
25
+
26
+ ```java
27
+ @Component
28
+ public class JwtAuthFilter extends OncePerRequestFilter {
29
+ private final JwtService jwtService;
30
+
31
+ public JwtAuthFilter(JwtService jwtService) {
32
+ this.jwtService = jwtService;
33
+ }
34
+
35
+ @Override
36
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
37
+ FilterChain chain) throws ServletException, IOException {
38
+ String header = request.getHeader(HttpHeaders.AUTHORIZATION);
39
+ if (header != null && header.startsWith("Bearer ")) {
40
+ String token = header.substring(7);
41
+ Authentication auth = jwtService.authenticate(token);
42
+ SecurityContextHolder.getContext().setAuthentication(auth);
43
+ }
44
+ chain.doFilter(request, response);
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## Authorization
50
+
51
+ - Enable method security: `@EnableMethodSecurity`
52
+ - Use `@PreAuthorize("hasRole('ADMIN')")` or `@PreAuthorize("@authz.canEdit(#id)")`
53
+ - Deny by default; expose only required scopes
54
+
55
+ ```java
56
+ @RestController
57
+ @RequestMapping("/api/admin")
58
+ public class AdminController {
59
+
60
+ @PreAuthorize("hasRole('ADMIN')")
61
+ @GetMapping("/users")
62
+ public List<UserDto> listUsers() {
63
+ return userService.findAll();
64
+ }
65
+
66
+ @PreAuthorize("@authz.isOwner(#id, authentication)")
67
+ @DeleteMapping("/users/{id}")
68
+ public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
69
+ userService.delete(id);
70
+ return ResponseEntity.noContent().build();
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## Input Validation
76
+
77
+ - Use Bean Validation with `@Valid` on controllers
78
+ - Apply constraints on DTOs: `@NotBlank`, `@Email`, `@Size`, custom validators
79
+ - Sanitize any HTML with a whitelist before rendering
80
+
81
+ ```java
82
+ // BAD: No validation
83
+ @PostMapping("/users")
84
+ public User createUser(@RequestBody UserDto dto) {
85
+ return userService.create(dto);
86
+ }
87
+
88
+ // GOOD: Validated DTO
89
+ public record CreateUserDto(
90
+ @NotBlank @Size(max = 100) String name,
91
+ @NotBlank @Email String email,
92
+ @NotNull @Min(0) @Max(150) Integer age
93
+ ) {}
94
+
95
+ @PostMapping("/users")
96
+ public ResponseEntity<UserDto> createUser(@Valid @RequestBody CreateUserDto dto) {
97
+ return ResponseEntity.status(HttpStatus.CREATED)
98
+ .body(userService.create(dto));
99
+ }
100
+ ```
101
+
102
+ ## SQL Injection Prevention
103
+
104
+ - Use Spring Data repositories or parameterized queries
105
+ - For native queries, use `:param` bindings; never concatenate strings
106
+
107
+ ```java
108
+ // BAD: String concatenation in native query
109
+ @Query(value = "SELECT * FROM users WHERE name = '" + name + "'", nativeQuery = true)
110
+
111
+ // GOOD: Parameterized native query
112
+ @Query(value = "SELECT * FROM users WHERE name = :name", nativeQuery = true)
113
+ List<User> findByName(@Param("name") String name);
114
+
115
+ // GOOD: Spring Data derived query (auto-parameterized)
116
+ List<User> findByEmailAndActiveTrue(String email);
117
+ ```
118
+
119
+ ## Password Encoding
120
+
121
+ - Always hash passwords with BCrypt or Argon2 — never store plaintext
122
+ - Use `PasswordEncoder` bean, not manual hashing
123
+
124
+ ```java
125
+ @Bean
126
+ public PasswordEncoder passwordEncoder() {
127
+ return new BCryptPasswordEncoder(12); // cost factor 12
128
+ }
129
+
130
+ // In service
131
+ public User register(CreateUserDto dto) {
132
+ String hashedPassword = passwordEncoder.encode(dto.password());
133
+ return userRepository.save(new User(dto.email(), hashedPassword));
134
+ }
135
+ ```
136
+
137
+ ## CSRF Protection
138
+
139
+ - For browser session apps, keep CSRF enabled; include token in forms/headers
140
+ - For pure APIs with Bearer tokens, disable CSRF and rely on stateless auth
141
+
142
+ ```java
143
+ http
144
+ .csrf(csrf -> csrf.disable())
145
+ .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
146
+ ```
147
+
148
+ ## Secrets Management
149
+
150
+ - No secrets in source; load from env or vault
151
+ - Keep `application.yml` free of credentials; use placeholders
152
+ - Rotate tokens and DB credentials regularly
153
+
154
+ ```yaml
155
+ # BAD: Hardcoded in application.yml
156
+ spring:
157
+ datasource:
158
+ password: mySecretPassword123
159
+
160
+ # GOOD: Environment variable placeholder
161
+ spring:
162
+ datasource:
163
+ password: ${DB_PASSWORD}
164
+
165
+ # GOOD: Spring Cloud Vault integration
166
+ spring:
167
+ cloud:
168
+ vault:
169
+ uri: https://vault.example.com
170
+ token: ${VAULT_TOKEN}
171
+ ```
172
+
173
+ ## Security Headers
174
+
175
+ ```java
176
+ http
177
+ .headers(headers -> headers
178
+ .contentSecurityPolicy(csp -> csp
179
+ .policyDirectives("default-src 'self'"))
180
+ .frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)
181
+ .xssProtection(Customizer.withDefaults())
182
+ .referrerPolicy(rp -> rp.policy(ReferrerPolicyHeaderWriter.ReferrerPolicy.NO_REFERRER)));
183
+ ```
184
+
185
+ ## CORS Configuration
186
+
187
+ - Configure CORS at the security filter level, not per-controller
188
+ - Restrict allowed origins — never use `*` in production
189
+
190
+ ```java
191
+ @Bean
192
+ public CorsConfigurationSource corsConfigurationSource() {
193
+ CorsConfiguration config = new CorsConfiguration();
194
+ config.setAllowedOrigins(List.of("https://app.example.com"));
195
+ config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE"));
196
+ config.setAllowedHeaders(List.of("Authorization", "Content-Type"));
197
+ config.setAllowCredentials(true);
198
+ config.setMaxAge(3600L);
199
+
200
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
201
+ source.registerCorsConfiguration("/api/**", config);
202
+ return source;
203
+ }
204
+
205
+ // In SecurityFilterChain:
206
+ http.cors(cors -> cors.configurationSource(corsConfigurationSource()));
207
+ ```
208
+
209
+ ## Rate Limiting
210
+
211
+ - Apply Bucket4j or gateway-level limits on expensive endpoints
212
+ - Log and alert on bursts; return 429 with retry hints
213
+
214
+ ```java
215
+ // Using Bucket4j for per-endpoint rate limiting
216
+ @Component
217
+ public class RateLimitFilter extends OncePerRequestFilter {
218
+ private final Map<String, Bucket> buckets = new ConcurrentHashMap<>();
219
+
220
+ private Bucket createBucket() {
221
+ return Bucket.builder()
222
+ .addLimit(Bandwidth.classic(100, Refill.intervally(100, Duration.ofMinutes(1))))
223
+ .build();
224
+ }
225
+
226
+ @Override
227
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
228
+ FilterChain chain) throws ServletException, IOException {
229
+ String clientIp = request.getRemoteAddr();
230
+ Bucket bucket = buckets.computeIfAbsent(clientIp, k -> createBucket());
231
+
232
+ if (bucket.tryConsume(1)) {
233
+ chain.doFilter(request, response);
234
+ } else {
235
+ response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value());
236
+ response.getWriter().write("{\"error\": \"Rate limit exceeded\"}");
237
+ }
238
+ }
239
+ }
240
+ ```
241
+
242
+ ## Dependency Security
243
+
244
+ - Run OWASP Dependency Check / Snyk in CI
245
+ - Keep Spring Boot and Spring Security on supported versions
246
+ - Fail builds on known CVEs
247
+
248
+ ## Logging and PII
249
+
250
+ - Never log secrets, tokens, passwords, or full PAN data
251
+ - Redact sensitive fields; use structured JSON logging
252
+
253
+ ## File Uploads
254
+
255
+ - Validate size, content type, and extension
256
+ - Store outside web root; scan if required
257
+
258
+ ## Checklist Before Release
259
+
260
+ - [ ] Auth tokens validated and expired correctly
261
+ - [ ] Authorization guards on every sensitive path
262
+ - [ ] All inputs validated and sanitized
263
+ - [ ] No string-concatenated SQL
264
+ - [ ] CSRF posture correct for app type
265
+ - [ ] Secrets externalized; none committed
266
+ - [ ] Security headers configured
267
+ - [ ] Rate limiting on APIs
268
+ - [ ] Dependencies scanned and up to date
269
+ - [ ] Logs free of sensitive data
270
+
271
+ **Remember**: Deny by default, validate inputs, least privilege, and secure-by-configuration first.