devflow-kit 0.8.1 → 1.0.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 (395) hide show
  1. package/CHANGELOG.md +185 -29
  2. package/LICENSE +1 -1
  3. package/README.md +179 -308
  4. package/dist/cli.js +3 -1
  5. package/dist/commands/init.d.ts +21 -0
  6. package/dist/commands/init.js +311 -575
  7. package/dist/commands/list.d.ts +3 -0
  8. package/dist/commands/list.js +20 -0
  9. package/dist/commands/uninstall.d.ts +10 -0
  10. package/dist/commands/uninstall.js +351 -78
  11. package/dist/plugins.d.ts +46 -0
  12. package/dist/plugins.js +162 -0
  13. package/dist/utils/cli.d.ts +5 -0
  14. package/dist/utils/cli.js +14 -0
  15. package/dist/utils/installer.d.ts +41 -0
  16. package/dist/utils/installer.js +177 -0
  17. package/dist/utils/paths.d.ts +10 -0
  18. package/dist/utils/paths.js +23 -3
  19. package/dist/utils/post-install.d.ts +68 -0
  20. package/dist/utils/post-install.js +427 -0
  21. package/dist/utils/safe-delete-install.d.ts +22 -0
  22. package/dist/utils/safe-delete-install.js +156 -0
  23. package/dist/utils/safe-delete.d.ts +12 -0
  24. package/dist/utils/safe-delete.js +83 -0
  25. package/package.json +18 -8
  26. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +7 -0
  27. package/plugins/devflow-audit-claude/README.md +46 -0
  28. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +134 -0
  29. package/plugins/devflow-audit-claude/commands/audit-claude.md +85 -0
  30. package/plugins/devflow-code-review/.claude-plugin/plugin.json +31 -0
  31. package/plugins/devflow-code-review/README.md +73 -0
  32. package/plugins/devflow-code-review/agents/git.md +272 -0
  33. package/plugins/devflow-code-review/agents/reviewer.md +119 -0
  34. package/plugins/devflow-code-review/agents/synthesizer.md +204 -0
  35. package/plugins/devflow-code-review/commands/code-review-teams.md +262 -0
  36. package/plugins/devflow-code-review/commands/code-review.md +141 -0
  37. package/plugins/devflow-code-review/skills/accessibility/SKILL.md +229 -0
  38. package/plugins/devflow-code-review/skills/accessibility/references/detection.md +171 -0
  39. package/plugins/devflow-code-review/skills/accessibility/references/patterns.md +670 -0
  40. package/plugins/devflow-code-review/skills/accessibility/references/violations.md +419 -0
  41. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +124 -0
  42. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +104 -0
  43. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +122 -0
  44. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +217 -0
  45. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +153 -0
  46. package/plugins/devflow-code-review/skills/architecture-patterns/references/detection.md +337 -0
  47. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +873 -0
  48. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +575 -0
  49. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +143 -0
  50. package/plugins/devflow-code-review/skills/complexity-patterns/references/detection.md +264 -0
  51. package/plugins/devflow-code-review/skills/complexity-patterns/references/patterns.md +487 -0
  52. package/plugins/devflow-code-review/skills/complexity-patterns/references/violations.md +361 -0
  53. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +140 -0
  54. package/plugins/devflow-code-review/skills/consistency-patterns/references/detection.md +207 -0
  55. package/plugins/devflow-code-review/skills/consistency-patterns/references/patterns.md +202 -0
  56. package/plugins/devflow-code-review/skills/consistency-patterns/references/violations.md +213 -0
  57. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +134 -0
  58. package/plugins/devflow-code-review/skills/database-patterns/references/detection.md +208 -0
  59. package/plugins/devflow-code-review/skills/database-patterns/references/patterns.md +394 -0
  60. package/plugins/devflow-code-review/skills/database-patterns/references/violations.md +332 -0
  61. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +141 -0
  62. package/plugins/devflow-code-review/skills/dependencies-patterns/references/detection.md +181 -0
  63. package/plugins/devflow-code-review/skills/dependencies-patterns/references/patterns.md +225 -0
  64. package/plugins/devflow-code-review/skills/dependencies-patterns/references/violations.md +247 -0
  65. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +125 -0
  66. package/plugins/devflow-code-review/skills/documentation-patterns/references/detection.md +190 -0
  67. package/plugins/devflow-code-review/skills/documentation-patterns/references/patterns.md +189 -0
  68. package/plugins/devflow-code-review/skills/documentation-patterns/references/violations.md +163 -0
  69. package/plugins/devflow-code-review/skills/frontend-design/SKILL.md +254 -0
  70. package/plugins/devflow-code-review/skills/frontend-design/references/detection.md +184 -0
  71. package/plugins/devflow-code-review/skills/frontend-design/references/patterns.md +511 -0
  72. package/plugins/devflow-code-review/skills/frontend-design/references/violations.md +453 -0
  73. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +154 -0
  74. package/plugins/devflow-code-review/skills/performance-patterns/references/detection.md +351 -0
  75. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +503 -0
  76. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +354 -0
  77. package/plugins/devflow-code-review/skills/react/SKILL.md +276 -0
  78. package/plugins/devflow-code-review/skills/react/references/patterns.md +1331 -0
  79. package/plugins/devflow-code-review/skills/react/references/violations.md +565 -0
  80. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +146 -0
  81. package/plugins/devflow-code-review/skills/regression-patterns/references/detection.md +237 -0
  82. package/plugins/devflow-code-review/skills/regression-patterns/references/patterns.md +226 -0
  83. package/plugins/devflow-code-review/skills/regression-patterns/references/violations.md +225 -0
  84. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +119 -0
  85. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +186 -0
  86. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +142 -0
  87. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +125 -0
  88. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +156 -0
  89. package/plugins/devflow-code-review/skills/security-patterns/references/detection.md +287 -0
  90. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +507 -0
  91. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +237 -0
  92. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +183 -0
  93. package/plugins/devflow-code-review/skills/test-patterns/references/detection.md +149 -0
  94. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +220 -0
  95. package/plugins/devflow-code-review/skills/test-patterns/references/report-template.md +108 -0
  96. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +221 -0
  97. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +27 -0
  98. package/plugins/devflow-core-skills/README.md +50 -0
  99. package/plugins/devflow-core-skills/skills/accessibility/SKILL.md +229 -0
  100. package/plugins/devflow-core-skills/skills/accessibility/references/detection.md +171 -0
  101. package/plugins/devflow-core-skills/skills/accessibility/references/patterns.md +670 -0
  102. package/plugins/devflow-core-skills/skills/accessibility/references/violations.md +419 -0
  103. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +162 -0
  104. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +276 -0
  105. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +144 -0
  106. package/plugins/devflow-core-skills/skills/core-patterns/references/detection.md +303 -0
  107. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +576 -0
  108. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +369 -0
  109. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +134 -0
  110. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +346 -0
  111. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +221 -0
  112. package/plugins/devflow-core-skills/skills/frontend-design/SKILL.md +254 -0
  113. package/plugins/devflow-core-skills/skills/frontend-design/references/detection.md +184 -0
  114. package/plugins/devflow-core-skills/skills/frontend-design/references/patterns.md +511 -0
  115. package/plugins/devflow-core-skills/skills/frontend-design/references/violations.md +453 -0
  116. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +122 -0
  117. package/plugins/devflow-core-skills/skills/git-safety/references/detection.md +290 -0
  118. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +289 -0
  119. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +18 -0
  120. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +158 -0
  121. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +115 -0
  122. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +77 -0
  123. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +127 -0
  124. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +96 -0
  125. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +153 -0
  126. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +572 -0
  127. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +298 -0
  128. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +148 -0
  129. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +283 -0
  130. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +361 -0
  131. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +224 -0
  132. package/plugins/devflow-core-skills/skills/react/SKILL.md +276 -0
  133. package/plugins/devflow-core-skills/skills/react/references/patterns.md +1331 -0
  134. package/plugins/devflow-core-skills/skills/react/references/violations.md +565 -0
  135. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +183 -0
  136. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +149 -0
  137. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +220 -0
  138. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +108 -0
  139. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +221 -0
  140. package/plugins/devflow-core-skills/skills/typescript/SKILL.md +176 -0
  141. package/plugins/devflow-core-skills/skills/typescript/references/patterns.md +1105 -0
  142. package/plugins/devflow-core-skills/skills/typescript/references/violations.md +433 -0
  143. package/plugins/devflow-debug/.claude-plugin/plugin.json +18 -0
  144. package/plugins/devflow-debug/README.md +65 -0
  145. package/plugins/devflow-debug/agents/git.md +272 -0
  146. package/plugins/devflow-debug/commands/debug-teams.md +231 -0
  147. package/plugins/devflow-debug/commands/debug.md +160 -0
  148. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +124 -0
  149. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +104 -0
  150. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +122 -0
  151. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +217 -0
  152. package/plugins/devflow-debug/skills/git-safety/SKILL.md +122 -0
  153. package/plugins/devflow-debug/skills/git-safety/references/detection.md +290 -0
  154. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +289 -0
  155. package/plugins/devflow-debug/skills/git-safety/references/violations.md +18 -0
  156. package/plugins/devflow-implement/.claude-plugin/plugin.json +21 -0
  157. package/plugins/devflow-implement/README.md +71 -0
  158. package/plugins/devflow-implement/agents/coder.md +122 -0
  159. package/plugins/devflow-implement/agents/git.md +272 -0
  160. package/plugins/devflow-implement/agents/scrutinizer.md +80 -0
  161. package/plugins/devflow-implement/agents/shepherd.md +94 -0
  162. package/plugins/devflow-implement/agents/simplifier.md +62 -0
  163. package/plugins/devflow-implement/agents/skimmer.md +88 -0
  164. package/plugins/devflow-implement/agents/synthesizer.md +204 -0
  165. package/plugins/devflow-implement/agents/validator.md +86 -0
  166. package/plugins/devflow-implement/commands/implement-teams.md +608 -0
  167. package/plugins/devflow-implement/commands/implement.md +426 -0
  168. package/plugins/devflow-implement/skills/accessibility/SKILL.md +229 -0
  169. package/plugins/devflow-implement/skills/accessibility/references/detection.md +171 -0
  170. package/plugins/devflow-implement/skills/accessibility/references/patterns.md +670 -0
  171. package/plugins/devflow-implement/skills/accessibility/references/violations.md +419 -0
  172. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +124 -0
  173. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +104 -0
  174. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +122 -0
  175. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +217 -0
  176. package/plugins/devflow-implement/skills/frontend-design/SKILL.md +254 -0
  177. package/plugins/devflow-implement/skills/frontend-design/references/detection.md +184 -0
  178. package/plugins/devflow-implement/skills/frontend-design/references/patterns.md +511 -0
  179. package/plugins/devflow-implement/skills/frontend-design/references/violations.md +453 -0
  180. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +162 -0
  181. package/plugins/devflow-implement/skills/implementation-patterns/references/patterns.md +1063 -0
  182. package/plugins/devflow-implement/skills/implementation-patterns/references/violations.md +483 -0
  183. package/plugins/devflow-implement/skills/self-review/SKILL.md +149 -0
  184. package/plugins/devflow-implement/skills/self-review/references/patterns.md +405 -0
  185. package/plugins/devflow-implement/skills/self-review/references/report-template.md +253 -0
  186. package/plugins/devflow-implement/skills/self-review/references/violations.md +308 -0
  187. package/plugins/devflow-resolve/.claude-plugin/plugin.json +19 -0
  188. package/plugins/devflow-resolve/README.md +65 -0
  189. package/plugins/devflow-resolve/agents/git.md +272 -0
  190. package/plugins/devflow-resolve/agents/resolver.md +131 -0
  191. package/plugins/devflow-resolve/agents/simplifier.md +62 -0
  192. package/plugins/devflow-resolve/commands/resolve-teams.md +298 -0
  193. package/plugins/devflow-resolve/commands/resolve.md +237 -0
  194. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +124 -0
  195. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +104 -0
  196. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +122 -0
  197. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +217 -0
  198. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +162 -0
  199. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +1063 -0
  200. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +483 -0
  201. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +156 -0
  202. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +287 -0
  203. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +507 -0
  204. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +237 -0
  205. package/plugins/devflow-self-review/.claude-plugin/plugin.json +7 -0
  206. package/plugins/devflow-self-review/README.md +38 -0
  207. package/plugins/devflow-self-review/agents/scrutinizer.md +80 -0
  208. package/plugins/devflow-self-review/agents/simplifier.md +62 -0
  209. package/plugins/devflow-self-review/agents/validator.md +86 -0
  210. package/plugins/devflow-self-review/commands/self-review.md +126 -0
  211. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +162 -0
  212. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +276 -0
  213. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +144 -0
  214. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +303 -0
  215. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +576 -0
  216. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +369 -0
  217. package/plugins/devflow-self-review/skills/self-review/SKILL.md +149 -0
  218. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +405 -0
  219. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +253 -0
  220. package/plugins/devflow-self-review/skills/self-review/references/violations.md +308 -0
  221. package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -0
  222. package/plugins/devflow-specify/README.md +46 -0
  223. package/plugins/devflow-specify/agents/skimmer.md +88 -0
  224. package/plugins/devflow-specify/agents/synthesizer.md +204 -0
  225. package/plugins/devflow-specify/commands/specify-teams.md +314 -0
  226. package/plugins/devflow-specify/commands/specify.md +179 -0
  227. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +124 -0
  228. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +104 -0
  229. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +122 -0
  230. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +217 -0
  231. package/scripts/hooks/background-memory-update.sh +167 -0
  232. package/scripts/hooks/pre-compact-memory.sh +81 -0
  233. package/scripts/hooks/session-start-memory.sh +84 -0
  234. package/scripts/hooks/stop-update-memory.sh +81 -0
  235. package/shared/agents/coder.md +122 -0
  236. package/shared/agents/git.md +272 -0
  237. package/shared/agents/resolver.md +131 -0
  238. package/shared/agents/reviewer.md +119 -0
  239. package/shared/agents/scrutinizer.md +80 -0
  240. package/shared/agents/shepherd.md +94 -0
  241. package/shared/agents/simplifier.md +62 -0
  242. package/shared/agents/skimmer.md +88 -0
  243. package/shared/agents/synthesizer.md +204 -0
  244. package/shared/agents/validator.md +86 -0
  245. package/shared/skills/accessibility/SKILL.md +229 -0
  246. package/shared/skills/accessibility/references/detection.md +171 -0
  247. package/shared/skills/accessibility/references/patterns.md +670 -0
  248. package/shared/skills/accessibility/references/violations.md +419 -0
  249. package/shared/skills/agent-teams/SKILL.md +124 -0
  250. package/shared/skills/agent-teams/references/cleanup.md +104 -0
  251. package/shared/skills/agent-teams/references/communication.md +122 -0
  252. package/shared/skills/agent-teams/references/team-patterns.md +217 -0
  253. package/shared/skills/architecture-patterns/SKILL.md +153 -0
  254. package/shared/skills/architecture-patterns/references/detection.md +337 -0
  255. package/shared/skills/architecture-patterns/references/patterns.md +873 -0
  256. package/shared/skills/architecture-patterns/references/violations.md +575 -0
  257. package/shared/skills/complexity-patterns/SKILL.md +143 -0
  258. package/shared/skills/complexity-patterns/references/detection.md +264 -0
  259. package/shared/skills/complexity-patterns/references/patterns.md +487 -0
  260. package/shared/skills/complexity-patterns/references/violations.md +361 -0
  261. package/shared/skills/consistency-patterns/SKILL.md +140 -0
  262. package/shared/skills/consistency-patterns/references/detection.md +207 -0
  263. package/shared/skills/consistency-patterns/references/patterns.md +202 -0
  264. package/shared/skills/consistency-patterns/references/violations.md +213 -0
  265. package/shared/skills/core-patterns/SKILL.md +162 -0
  266. package/shared/skills/core-patterns/references/checklist.md +276 -0
  267. package/shared/skills/core-patterns/references/code-smell-violations.md +144 -0
  268. package/shared/skills/core-patterns/references/detection.md +303 -0
  269. package/shared/skills/core-patterns/references/patterns.md +576 -0
  270. package/shared/skills/core-patterns/references/violations.md +369 -0
  271. package/shared/skills/database-patterns/SKILL.md +134 -0
  272. package/shared/skills/database-patterns/references/detection.md +208 -0
  273. package/shared/skills/database-patterns/references/patterns.md +394 -0
  274. package/shared/skills/database-patterns/references/violations.md +332 -0
  275. package/shared/skills/dependencies-patterns/SKILL.md +141 -0
  276. package/shared/skills/dependencies-patterns/references/detection.md +181 -0
  277. package/shared/skills/dependencies-patterns/references/patterns.md +225 -0
  278. package/shared/skills/dependencies-patterns/references/violations.md +247 -0
  279. package/shared/skills/docs-framework/SKILL.md +134 -0
  280. package/shared/skills/docs-framework/references/patterns.md +346 -0
  281. package/shared/skills/docs-framework/references/violations.md +221 -0
  282. package/shared/skills/documentation-patterns/SKILL.md +125 -0
  283. package/shared/skills/documentation-patterns/references/detection.md +190 -0
  284. package/shared/skills/documentation-patterns/references/patterns.md +189 -0
  285. package/shared/skills/documentation-patterns/references/violations.md +163 -0
  286. package/shared/skills/frontend-design/SKILL.md +254 -0
  287. package/shared/skills/frontend-design/references/detection.md +184 -0
  288. package/shared/skills/frontend-design/references/patterns.md +511 -0
  289. package/shared/skills/frontend-design/references/violations.md +453 -0
  290. package/shared/skills/git-safety/SKILL.md +122 -0
  291. package/shared/skills/git-safety/references/detection.md +290 -0
  292. package/shared/skills/git-safety/references/patterns.md +289 -0
  293. package/shared/skills/git-safety/references/violations.md +18 -0
  294. package/shared/skills/git-workflow/SKILL.md +158 -0
  295. package/shared/skills/git-workflow/references/commit-patterns.md +115 -0
  296. package/shared/skills/git-workflow/references/commit-violations.md +77 -0
  297. package/shared/skills/git-workflow/references/pr-patterns.md +127 -0
  298. package/shared/skills/git-workflow/references/pr-violations.md +96 -0
  299. package/shared/skills/github-patterns/SKILL.md +153 -0
  300. package/shared/skills/github-patterns/references/patterns.md +572 -0
  301. package/shared/skills/github-patterns/references/violations.md +298 -0
  302. package/shared/skills/implementation-patterns/SKILL.md +162 -0
  303. package/shared/skills/implementation-patterns/references/patterns.md +1063 -0
  304. package/shared/skills/implementation-patterns/references/violations.md +483 -0
  305. package/shared/skills/input-validation/SKILL.md +148 -0
  306. package/shared/skills/input-validation/references/detection.md +283 -0
  307. package/shared/skills/input-validation/references/patterns.md +361 -0
  308. package/shared/skills/input-validation/references/violations.md +224 -0
  309. package/shared/skills/performance-patterns/SKILL.md +154 -0
  310. package/shared/skills/performance-patterns/references/detection.md +351 -0
  311. package/shared/skills/performance-patterns/references/patterns.md +503 -0
  312. package/shared/skills/performance-patterns/references/violations.md +354 -0
  313. package/shared/skills/react/SKILL.md +276 -0
  314. package/shared/skills/react/references/patterns.md +1331 -0
  315. package/shared/skills/react/references/violations.md +565 -0
  316. package/shared/skills/regression-patterns/SKILL.md +146 -0
  317. package/shared/skills/regression-patterns/references/detection.md +237 -0
  318. package/shared/skills/regression-patterns/references/patterns.md +226 -0
  319. package/shared/skills/regression-patterns/references/violations.md +225 -0
  320. package/shared/skills/review-methodology/SKILL.md +119 -0
  321. package/shared/skills/review-methodology/references/patterns.md +186 -0
  322. package/shared/skills/review-methodology/references/report-template.md +142 -0
  323. package/shared/skills/review-methodology/references/violations.md +125 -0
  324. package/shared/skills/security-patterns/SKILL.md +156 -0
  325. package/shared/skills/security-patterns/references/detection.md +287 -0
  326. package/shared/skills/security-patterns/references/patterns.md +507 -0
  327. package/shared/skills/security-patterns/references/violations.md +237 -0
  328. package/shared/skills/self-review/SKILL.md +149 -0
  329. package/shared/skills/self-review/references/patterns.md +405 -0
  330. package/shared/skills/self-review/references/report-template.md +253 -0
  331. package/shared/skills/self-review/references/violations.md +308 -0
  332. package/shared/skills/test-patterns/SKILL.md +183 -0
  333. package/shared/skills/test-patterns/references/detection.md +149 -0
  334. package/shared/skills/test-patterns/references/patterns.md +220 -0
  335. package/shared/skills/test-patterns/references/report-template.md +108 -0
  336. package/shared/skills/test-patterns/references/violations.md +221 -0
  337. package/shared/skills/typescript/SKILL.md +176 -0
  338. package/shared/skills/typescript/references/patterns.md +1105 -0
  339. package/shared/skills/typescript/references/violations.md +433 -0
  340. package/src/templates/claudeignore.template +188 -0
  341. package/src/templates/managed-settings.json +146 -0
  342. package/src/templates/settings.json +59 -0
  343. package/dist/cli.d.ts.map +0 -1
  344. package/dist/cli.js.map +0 -1
  345. package/dist/commands/init.d.ts.map +0 -1
  346. package/dist/commands/init.js.map +0 -1
  347. package/dist/commands/uninstall.d.ts.map +0 -1
  348. package/dist/commands/uninstall.js.map +0 -1
  349. package/dist/utils/git.d.ts.map +0 -1
  350. package/dist/utils/git.js.map +0 -1
  351. package/dist/utils/paths.d.ts.map +0 -1
  352. package/dist/utils/paths.js.map +0 -1
  353. package/src/claude/CLAUDE.md +0 -400
  354. package/src/claude/agents/devflow/audit-architecture.md +0 -132
  355. package/src/claude/agents/devflow/audit-complexity.md +0 -132
  356. package/src/claude/agents/devflow/audit-database.md +0 -132
  357. package/src/claude/agents/devflow/audit-dependencies.md +0 -132
  358. package/src/claude/agents/devflow/audit-documentation.md +0 -132
  359. package/src/claude/agents/devflow/audit-performance.md +0 -256
  360. package/src/claude/agents/devflow/audit-security.md +0 -259
  361. package/src/claude/agents/devflow/audit-tests.md +0 -132
  362. package/src/claude/agents/devflow/audit-typescript.md +0 -132
  363. package/src/claude/agents/devflow/brainstorm.md +0 -279
  364. package/src/claude/agents/devflow/catch-up.md +0 -345
  365. package/src/claude/agents/devflow/code-review.md +0 -307
  366. package/src/claude/agents/devflow/commit.md +0 -380
  367. package/src/claude/agents/devflow/debug.md +0 -476
  368. package/src/claude/agents/devflow/design.md +0 -491
  369. package/src/claude/agents/devflow/pr-comments.md +0 -285
  370. package/src/claude/agents/devflow/project-state.md +0 -419
  371. package/src/claude/agents/devflow/pull-request.md +0 -423
  372. package/src/claude/agents/devflow/release.md +0 -1137
  373. package/src/claude/agents/devflow/tech-debt.md +0 -338
  374. package/src/claude/commands/devflow/brainstorm.md +0 -68
  375. package/src/claude/commands/devflow/breakdown.md +0 -125
  376. package/src/claude/commands/devflow/catch-up.md +0 -29
  377. package/src/claude/commands/devflow/code-review.md +0 -237
  378. package/src/claude/commands/devflow/commit.md +0 -17
  379. package/src/claude/commands/devflow/debug.md +0 -56
  380. package/src/claude/commands/devflow/design.md +0 -82
  381. package/src/claude/commands/devflow/devlog.md +0 -408
  382. package/src/claude/commands/devflow/implement.md +0 -100
  383. package/src/claude/commands/devflow/plan.md +0 -223
  384. package/src/claude/commands/devflow/pull-request.md +0 -269
  385. package/src/claude/commands/devflow/release.md +0 -251
  386. package/src/claude/commands/devflow/resolve-comments.md +0 -583
  387. package/src/claude/scripts/statusline.sh +0 -47
  388. package/src/claude/settings.json +0 -6
  389. package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
  390. package/src/claude/skills/devflow/debug/SKILL.md +0 -119
  391. package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
  392. package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
  393. package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
  394. package/src/claude/skills/devflow/research/SKILL.md +0 -138
  395. package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: test-patterns
3
+ description: This skill should be used when the user asks to "write tests", "fix failing tests", "improve test coverage", "add integration tests", "debug a flaky test", or reviews test quality. Provides behavior-focused testing patterns, coverage analysis, and detection of brittle test anti-patterns like implementation coupling and non-deterministic assertions.
4
+ user-invocable: false
5
+ allowed-tools: Read, Grep, Glob, AskUserQuestion
6
+ activation:
7
+ file-patterns:
8
+ - "**/*.test.*"
9
+ - "**/*.spec.*"
10
+ - "**/test/**"
11
+ - "**/tests/**"
12
+ - "**/__tests__/**"
13
+ exclude:
14
+ - "node_modules/**"
15
+ ---
16
+
17
+ # Test Patterns
18
+
19
+ ## Iron Law
20
+
21
+ > **TESTS VALIDATE BEHAVIOR, NOT IMPLEMENTATION**
22
+ >
23
+ > A test should fail when behavior breaks, not when implementation changes. If refactoring
24
+ > breaks tests without changing behavior, the tests are wrong. Mock boundaries, not internals.
25
+ > Test the contract, not the code. If tests are hard to write, the design is wrong — fix the
26
+ > architecture, not the tests.
27
+
28
+ ---
29
+
30
+ ## Test Design Red Flags
31
+
32
+ ### 1. Complex Setup
33
+
34
+ **RED FLAG**: Test setup >10 lines means the design is wrong.
35
+
36
+ ```typescript
37
+ // VIOLATION: Too many dependencies
38
+ beforeEach(async () => {
39
+ mockDb = new MockDatabase();
40
+ await mockDb.connect();
41
+ mockCache = new MockCache();
42
+ // ... 10+ more lines
43
+ service = new UserService(mockDb, mockCache, mockLogger, mockConfig);
44
+ });
45
+
46
+ // CORRECT: Simple setup
47
+ it('should return Ok with valid data', () => {
48
+ const result = createUser({ name: 'test', email: 'test@example.com' });
49
+ expect(result.ok).toBe(true);
50
+ });
51
+ ```
52
+
53
+ **Detection**: `beforeEach` >10 lines, multiple mocks, async setup, database seeding
54
+
55
+ ### 2. Repetitive Boilerplate
56
+
57
+ **RED FLAG**: Same pattern repeated >3 times means the API is wrong.
58
+
59
+ ```typescript
60
+ // VIOLATION: Try/catch everywhere
61
+ try { await api.createUser(data); fail(); } catch (e) { expect(e.status).toBe(400); }
62
+
63
+ // CORRECT: Result types eliminate repetition
64
+ const result = createUser(invalidData);
65
+ expect(result.ok).toBe(false);
66
+ expect(result.error.type).toBe('ValidationError');
67
+ ```
68
+
69
+ ### 3. Difficult Mocking
70
+
71
+ **RED FLAG**: Mock setup >20 lines means dependencies are wrong.
72
+
73
+ ```typescript
74
+ // VIOLATION: Nested mock structures
75
+ mockDb = { transaction: jest.fn(), orders: { create: jest.fn(), update: jest.fn() } };
76
+
77
+ // CORRECT: Pure functions need no mocking
78
+ const result = processOrder(order);
79
+ expect(result.ok).toBe(true);
80
+ ```
81
+
82
+ ### 4. Implementation Testing
83
+
84
+ **RED FLAG**: Testing internals means tests are fragile.
85
+
86
+ ```typescript
87
+ // VIOLATION: Spying on private methods
88
+ const spy = jest.spyOn(cart as any, 'updateTotal');
89
+ expect(spy).toHaveBeenCalled();
90
+
91
+ // CORRECT: Test observable behavior
92
+ expect(cart.getTotal()).toBe(10);
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Coverage & Review
98
+
99
+ ### Coverage Issues
100
+
101
+ - **Untested new code**: New functions/branches without corresponding tests
102
+ - **Missing edge cases**: Only happy path tested, no error paths
103
+ - **Missing error paths**: `throw`/`reject` in source without matching test assertions
104
+
105
+ ### Test Quality Issues
106
+
107
+ - **Brittle tests**: Testing HOW (mock call verification) not WHAT (outcome)
108
+ - **Unclear test names**: `it('test1')` instead of `it('validates email format on creation')`
109
+ - **Missing AAA structure**: Mixed arrange/act/assert without clear separation
110
+
111
+ ### Mocking Issues
112
+
113
+ - **Over-mocking**: Everything mocked, nothing actually tested
114
+ - **Mocking third-party internals**: Mock at your own interface boundary instead
115
+
116
+ ---
117
+
118
+ ## Severity Guidelines
119
+
120
+ | Severity | Criteria |
121
+ |----------|----------|
122
+ | **CRITICAL** | Tests pass but don't verify behavior; critical paths untested; tests mock everything |
123
+ | **HIGH** | Missing error path coverage; flaky tests; extremely slow (>10s); >10 line setup |
124
+ | **MEDIUM** | Some edge cases missing; weak assertions; unclear structure |
125
+ | **LOW** | Organization could improve; naming could be clearer |
126
+
127
+ ---
128
+
129
+ ## Test Suite Safety
130
+
131
+ ```typescript
132
+ // vitest.config.ts / jest.config.js
133
+ { fileParallelism: false, maxWorkers: 1, testTimeout: 10000 }
134
+ ```
135
+
136
+ ```bash
137
+ NODE_OPTIONS="--max-old-space-size=512" npm test
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Extended References
143
+
144
+ For comprehensive examples and detection patterns:
145
+
146
+ | Reference | Contents |
147
+ |-----------|----------|
148
+ | `references/violations.md` | Full violation examples for all categories |
149
+ | `references/patterns.md` | Correct test patterns and organization |
150
+ | `references/detection.md` | Bash commands for automated detection |
151
+ | `references/report-template.md` | Full report format for documenting issues |
152
+
153
+ ---
154
+
155
+ ## Quality Gates
156
+
157
+ Tests pass design review when:
158
+ - [ ] Setup code <10 lines per test file
159
+ - [ ] No repetitive try/catch or error handling patterns
160
+ - [ ] Mocking requires <5 lines of setup
161
+ - [ ] No spying on private methods or internal state
162
+ - [ ] Tests verify behavior, not implementation details
163
+ - [ ] Pure business logic testable without mocks
164
+ - [ ] New code has corresponding tests
165
+ - [ ] All branches covered (happy path + errors + edge cases)
166
+ - [ ] Test names describe expected behavior
167
+ - [ ] Tests follow Arrange-Act-Assert structure
168
+ - [ ] No real delays (use mocked timers)
169
+ - [ ] No flaky patterns (race conditions, timing dependencies)
170
+
171
+ ---
172
+
173
+ ## Review Checklist
174
+
175
+ - [ ] New code has corresponding tests
176
+ - [ ] All branches covered (happy path + errors + edge cases)
177
+ - [ ] Tests verify behavior, not implementation
178
+ - [ ] Test names describe expected behavior
179
+ - [ ] Tests follow Arrange-Act-Assert structure
180
+ - [ ] No real delays (use mocked timers)
181
+ - [ ] Assertions are specific and meaningful
182
+ - [ ] Mocking limited to boundaries (not internals)
183
+ - [ ] No flaky patterns (race conditions, timing dependencies)
@@ -0,0 +1,149 @@
1
+ # Test Issue Detection
2
+
3
+ Commands and patterns for detecting test quality issues.
4
+
5
+ ---
6
+
7
+ ## Coverage Detection
8
+
9
+ ### Find Untested Functions
10
+
11
+ ```bash
12
+ # List exported functions in source
13
+ grep -rn "export function\|export async function" --include="*.ts" src/ | cut -d: -f1,3 | sort
14
+
15
+ # List tested functions
16
+ grep -rn "describe\|it\(" --include="*.test.ts" | grep -oE "'[^']+'" | sort -u
17
+
18
+ # Compare to find gaps (manual comparison needed)
19
+ ```
20
+
21
+ ### Find Missing Error Tests
22
+
23
+ ```bash
24
+ # Count error-throwing code in source
25
+ grep -rn "throw\|reject\|Error" --include="*.ts" src/ | grep -v test | wc -l
26
+
27
+ # Count error test assertions
28
+ grep -rn "rejects.toThrow\|toThrow\|toThrowError" --include="*.test.ts" | wc -l
29
+
30
+ # Large discrepancy indicates missing error tests
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Quality Detection
36
+
37
+ ### Tests Without Assertions
38
+
39
+ ```bash
40
+ # Find test blocks that may lack assertions
41
+ grep -rn "it\(.*=>" --include="*.test.ts" -A20 | grep -v "expect" | head -50
42
+
43
+ # Find empty test blocks
44
+ grep -rn "it\(.*{\s*}\)" --include="*.test.ts"
45
+ ```
46
+
47
+ ### Weak Assertions
48
+
49
+ ```bash
50
+ # Find overly permissive assertions
51
+ grep -rn "toBeDefined\|toBeTruthy\|not.toBeNull\|not.toBeUndefined" --include="*.test.ts"
52
+
53
+ # Count for comparison with strong assertions
54
+ grep -rn "toEqual\|toMatchObject\|toHaveLength\|toBe(" --include="*.test.ts" | wc -l
55
+ ```
56
+
57
+ ### Implementation Testing
58
+
59
+ ```bash
60
+ # Find tests that verify mock calls (may indicate implementation testing)
61
+ grep -rn "toHaveBeenCalledWith\|toHaveBeenCalled\|toHaveBeenCalledTimes" --include="*.test.ts"
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Design Detection
67
+
68
+ ### Slow Tests
69
+
70
+ ```bash
71
+ # Find tests with long timeouts (>5000ms)
72
+ grep -rn "}, [0-9][0-9][0-9][0-9][0-9])" --include="*.test.ts"
73
+
74
+ # Find real delays in tests
75
+ grep -rn "setTimeout\|sleep\|delay" --include="*.test.ts"
76
+ ```
77
+
78
+ ### Complex Setup
79
+
80
+ ```bash
81
+ # Find tests with many mock objects
82
+ grep -rn "jest.fn\|sinon.stub\|mock" --include="*.test.ts" | cut -d: -f1 | uniq -c | sort -rn | head -10
83
+
84
+ # Find long beforeEach blocks
85
+ grep -rn "beforeEach" --include="*.test.ts" -A30 | head -100
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Mocking Detection
91
+
92
+ ### Over-Mocking
93
+
94
+ ```bash
95
+ # Count mocks per test file
96
+ for f in $(find . -name "*.test.ts" -type f); do
97
+ count=$(grep -c "jest.fn\|mock" "$f" 2>/dev/null || echo 0)
98
+ echo "$count $f"
99
+ done | sort -rn | head -20
100
+
101
+ # Files with >20 mocks may be over-mocked
102
+ ```
103
+
104
+ ### Third-Party Library Mocking
105
+
106
+ ```bash
107
+ # Find jest.mock of node_modules
108
+ grep -rn "jest.mock\(['\"]" --include="*.test.ts" | grep -v "\./" | grep -v "\.\./"
109
+
110
+ # These should be wrapped in interfaces instead
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Summary Report Script
116
+
117
+ ```bash
118
+ #!/bin/bash
119
+ # test-health-check.sh - Quick test quality assessment
120
+
121
+ echo "=== Test Health Check ==="
122
+ echo ""
123
+
124
+ echo "Coverage Indicators:"
125
+ echo " Source functions: $(grep -rn 'export function' --include='*.ts' src/ 2>/dev/null | wc -l)"
126
+ echo " Test blocks: $(grep -rn 'it\(' --include='*.test.ts' 2>/dev/null | wc -l)"
127
+ echo ""
128
+
129
+ echo "Quality Indicators:"
130
+ echo " Strong assertions: $(grep -rn 'toEqual\|toMatchObject' --include='*.test.ts' 2>/dev/null | wc -l)"
131
+ echo " Weak assertions: $(grep -rn 'toBeDefined\|toBeTruthy' --include='*.test.ts' 2>/dev/null | wc -l)"
132
+ echo ""
133
+
134
+ echo "Design Indicators:"
135
+ echo " Long timeouts: $(grep -rn '}, [0-9]\{5,\})' --include='*.test.ts' 2>/dev/null | wc -l)"
136
+ echo " Mock count: $(grep -rn 'jest.fn\|mock' --include='*.test.ts' 2>/dev/null | wc -l)"
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Test Coverage Guidelines
142
+
143
+ | Code Type | Required Coverage | Test Type |
144
+ |-----------|-------------------|-----------|
145
+ | Business logic | 90%+ | Unit tests |
146
+ | API endpoints | 80%+ | Integration tests |
147
+ | UI components | 70%+ | Component tests |
148
+ | Utilities | 100% | Unit tests |
149
+ | Error paths | 100% | Unit tests |
@@ -0,0 +1,220 @@
1
+ # Test Patterns - Correct Examples
2
+
3
+ Reference for proper test patterns and approaches.
4
+
5
+ ---
6
+
7
+ ## Simple Setup Patterns
8
+
9
+ ### Pure Function Testing
10
+
11
+ ```typescript
12
+ // CORRECT: Simple setup indicates good design
13
+ describe('createUser', () => {
14
+ it('should return Ok with valid data', () => {
15
+ const result = createUser({ name: 'test', email: 'test@example.com' });
16
+ expect(result.ok).toBe(true);
17
+ expect(result.value.name).toBe('test');
18
+ });
19
+
20
+ it('should return Err with invalid email', () => {
21
+ const result = createUser({ name: 'test', email: 'invalid' });
22
+ expect(result.ok).toBe(false);
23
+ expect(result.error.type).toBe('ValidationError');
24
+ });
25
+ });
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Minimal Mocking Patterns
31
+
32
+ ### Single Dependency Injection
33
+
34
+ ```typescript
35
+ // CORRECT: Single mock for focused test
36
+ describe('OrderCalculator', () => {
37
+ it('should calculate total with tax', () => {
38
+ const taxService = { getRate: () => 0.1 }; // Simple mock
39
+ const calculator = new OrderCalculator(taxService);
40
+ const result = calculator.calculateTotal([
41
+ { price: 100, quantity: 2 },
42
+ { price: 50, quantity: 1 },
43
+ ]);
44
+ expect(result).toBe(275);
45
+ });
46
+ });
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Behavior-Focused Testing
52
+
53
+ ```typescript
54
+ // CORRECT: Testing behavior, not implementation
55
+ describe('ShoppingCart', () => {
56
+ it('should calculate correct total after adding items', () => {
57
+ const cart = new ShoppingCart();
58
+ cart.addItem({ id: '1', price: 10 });
59
+ cart.addItem({ id: '2', price: 20 });
60
+ expect(cart.getTotal()).toBe(30);
61
+ });
62
+
63
+ it('should be empty after clearing', () => {
64
+ const cart = new ShoppingCart();
65
+ cart.addItem({ id: '1', price: 10 });
66
+ cart.clear();
67
+ expect(cart.getItems()).toEqual([]);
68
+ expect(cart.getTotal()).toBe(0);
69
+ });
70
+ });
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Coverage Patterns
76
+
77
+ ### Branch Coverage
78
+
79
+ ```typescript
80
+ describe('calculateDiscount', () => {
81
+ it('returns 10% for regular customers', () => {
82
+ expect(calculateDiscount(100, 'regular')).toBe(10);
83
+ });
84
+ it('returns 20% for premium customers', () => {
85
+ expect(calculateDiscount(100, 'premium')).toBe(20);
86
+ });
87
+ it('returns 30% for VIP customers', () => {
88
+ expect(calculateDiscount(100, 'vip')).toBe(30);
89
+ });
90
+ });
91
+ ```
92
+
93
+ ### Error Path Coverage
94
+
95
+ ```typescript
96
+ describe('fetchUser', () => {
97
+ it('returns user data on success', async () => { /* ... */ });
98
+ it('throws ApiError on 404', async () => {
99
+ api.get.mockResolvedValue({ ok: false, status: 404 });
100
+ await expect(fetchUser('123')).rejects.toThrow(ApiError);
101
+ });
102
+ it('handles network errors', async () => {
103
+ api.get.mockRejectedValue(new Error('Network error'));
104
+ await expect(fetchUser('123')).rejects.toThrow('Network error');
105
+ });
106
+ });
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Separation of Concerns Testing
112
+
113
+ ```typescript
114
+ // CORRECT: Business logic tested without I/O
115
+ describe('OrderPricing (pure logic)', () => {
116
+ it('should calculate subtotal', () => {
117
+ const items = [{ price: 100, quantity: 2 }, { price: 50, quantity: 1 }];
118
+ expect(calculateSubtotal(items)).toBe(250);
119
+ });
120
+ it('should apply percentage discount', () => {
121
+ expect(applyDiscount(100, { type: 'percent', value: 20 })).toBe(80);
122
+ });
123
+ });
124
+
125
+ // Integration test for I/O wrapper
126
+ describe('OrderService (integration)', () => {
127
+ it('should persist order and return result', async () => {
128
+ const mockRepo = { save: jest.fn().mockResolvedValue({ id: '1' }) };
129
+ const service = new OrderService(mockRepo);
130
+ const result = await service.createOrder({ items: [{ price: 100, quantity: 1 }] });
131
+ expect(result.ok).toBe(true);
132
+ });
133
+ });
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Parameterized Testing
139
+
140
+ ```typescript
141
+ describe('validateEmail', () => {
142
+ const validEmails = ['test@example.com', 'user.name@domain.org', 'user+tag@example.co.uk'];
143
+ const invalidEmails = ['', 'invalid', '@nodomain.com', 'spaces in@email.com'];
144
+
145
+ test.each(validEmails)('should accept valid email: %s', (email) => {
146
+ expect(validateEmail(email).ok).toBe(true);
147
+ });
148
+
149
+ test.each(invalidEmails)('should reject invalid email: %s', (email) => {
150
+ expect(validateEmail(email).ok).toBe(false);
151
+ });
152
+ });
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Boundary Mocking
158
+
159
+ ```typescript
160
+ // CORRECT: Wrap third-party libraries in your own interface
161
+ interface HttpClient {
162
+ get<T>(url: string): Promise<T>;
163
+ }
164
+
165
+ class MockHttpClient implements HttpClient {
166
+ private responses: Map<string, any> = new Map();
167
+ mockResponse(url: string, data: any) { this.responses.set(url, data); }
168
+ async get<T>(url: string): Promise<T> { return this.responses.get(url); }
169
+ }
170
+
171
+ // Tests use MockHttpClient, production uses AxiosHttpClient
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Test Organization
177
+
178
+ ```typescript
179
+ describe('UserService', () => {
180
+ let service: UserService;
181
+ let repo: InMemoryUserRepo;
182
+
183
+ beforeEach(() => {
184
+ repo = new InMemoryUserRepo();
185
+ service = new UserService(repo);
186
+ });
187
+
188
+ describe('create', () => {
189
+ it('creates user with valid data', async () => { /* ... */ });
190
+ it('rejects invalid email', async () => { /* ... */ });
191
+ });
192
+
193
+ describe('update', () => {
194
+ it('updates existing user', async () => { /* ... */ });
195
+ it('returns error for non-existent user', async () => { /* ... */ });
196
+ });
197
+ });
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Test Data Factories
203
+
204
+ ```typescript
205
+ // CORRECT: Factories for test data, not test setup
206
+ const createTestUser = (overrides = {}): User => ({
207
+ id: 'test-id',
208
+ name: 'Test User',
209
+ email: 'test@example.com',
210
+ role: 'user',
211
+ ...overrides,
212
+ });
213
+
214
+ describe('UserPermissions', () => {
215
+ it('should allow admin to delete users', () => {
216
+ const admin = createTestUser({ role: 'admin' });
217
+ expect(canDeleteUser(admin)).toBe(true);
218
+ });
219
+ });
220
+ ```
@@ -0,0 +1,108 @@
1
+ # Test Quality Report Template
2
+
3
+ Use this template when reporting test design issues.
4
+
5
+ ---
6
+
7
+ ## Report Format
8
+
9
+ ```markdown
10
+ ## Test Design Issues Detected
11
+
12
+ ## [SEVERITY] - [Category] ([Root Cause Type])
13
+ **File**: path/to/file.test.ts:line-range
14
+ **Issue**: Brief description of the problem
15
+ **Root Cause**: What architectural issue causes this
16
+ **Symptom**:
17
+ ```code
18
+ // The problematic code snippet
19
+ ```
20
+ **Correct Design**:
21
+ ```code
22
+ // What good design looks like
23
+ ```
24
+ **Action Required**: Specific action to fix
25
+
26
+ ## Summary
27
+ - **Critical**: N issues (block implementation)
28
+ - **High**: N issues (refactor needed)
29
+ - **Files affected**: N test files
30
+ - **Root cause**: Brief architectural diagnosis
31
+
32
+ ## STOP - Design Issues Detected
33
+
34
+ [List fundamental design flaws discovered]
35
+
36
+ **DO NOT work around these issues in tests.**
37
+ **DO NOT add more complex test helpers.**
38
+ **DO NOT mock more things to make tests pass.**
39
+
40
+ ## Next Steps
41
+
42
+ 1. **STOP writing tests** - Current design cannot be tested simply
43
+ 2. **ANALYZE root cause** - Identify architectural issue
44
+ 3. **PROPOSE redesign** - Show correct pattern
45
+ 4. **GET APPROVAL** - User confirms design changes
46
+ 5. **IMPLEMENT redesign** - Fix architecture first
47
+ 6. **WRITE SIMPLE TESTS** - Tests should be trivial after redesign
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Severity Levels
53
+
54
+ | Severity | Use For | Examples |
55
+ |----------|---------|---------|
56
+ | **CRITICAL** | Fundamental design flaws | Complex setup >10 lines, repetitive boilerplate >3 times, mock objects >5 methods, testing private methods |
57
+ | **HIGH** | Maintenance complications | Difficult mocking >20 lines, implementation testing, environment manipulation, database seeding |
58
+ | **MEDIUM** | Reduced clarity | Test helper abuse, inconsistent assertion patterns, missing edge case coverage |
59
+ | **LOW** | Minor improvements | Organization, naming clarity |
60
+
61
+ ---
62
+
63
+ ## Category Labels
64
+
65
+ | Category | Root Cause Type | Indicates |
66
+ |----------|-----------------|-----------|
67
+ | Complex Setup | Design Problem | Too many dependencies |
68
+ | Repetitive Boilerplate | API Problem | Inconsistent error handling |
69
+ | Difficult Mocking | Coupling Problem | Tight coupling to externals |
70
+ | Implementation Testing | Fragile Tests | Tests coupled to internals |
71
+ | Environment Manipulation | DI Problem | Direct environment access |
72
+ | Database Seeding | Separation Problem | Logic mixed with data access |
73
+
74
+ ---
75
+
76
+ ## Test Suite Safety Configuration
77
+
78
+ ### Full Configuration Examples
79
+
80
+ ```typescript
81
+ // vitest.config.ts
82
+ export default defineConfig({
83
+ test: {
84
+ fileParallelism: false,
85
+ maxWorkers: 1,
86
+ pool: 'forks',
87
+ testTimeout: 10000,
88
+ }
89
+ });
90
+
91
+ // jest.config.js
92
+ module.exports = {
93
+ maxWorkers: 1,
94
+ runInBand: true,
95
+ testTimeout: 10000,
96
+ };
97
+ ```
98
+
99
+ ```bash
100
+ # Memory limits
101
+ NODE_OPTIONS="--max-old-space-size=512" npm test
102
+
103
+ # Go
104
+ go test -p 1 ./...
105
+
106
+ # Rust
107
+ cargo test -- --test-threads=1
108
+ ```