devflow-kit 0.9.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/CHANGELOG.md +197 -29
  2. package/LICENSE +1 -1
  3. package/README.md +185 -309
  4. package/dist/cli.js +7 -1
  5. package/dist/commands/ambient.d.ts +18 -0
  6. package/dist/commands/ambient.js +136 -0
  7. package/dist/commands/init.d.ts +23 -0
  8. package/dist/commands/init.js +393 -571
  9. package/dist/commands/list.d.ts +3 -0
  10. package/dist/commands/list.js +20 -0
  11. package/dist/commands/memory.d.ts +22 -0
  12. package/dist/commands/memory.js +175 -0
  13. package/dist/commands/uninstall.d.ts +10 -0
  14. package/dist/commands/uninstall.js +418 -78
  15. package/dist/plugins.d.ts +46 -0
  16. package/dist/plugins.js +169 -0
  17. package/dist/utils/cli.d.ts +5 -0
  18. package/dist/utils/cli.js +14 -0
  19. package/dist/utils/installer.d.ts +41 -0
  20. package/dist/utils/installer.js +177 -0
  21. package/dist/utils/paths.d.ts +10 -0
  22. package/dist/utils/paths.js +23 -3
  23. package/dist/utils/post-install.d.ts +80 -0
  24. package/dist/utils/post-install.js +508 -0
  25. package/dist/utils/safe-delete-install.d.ts +29 -0
  26. package/dist/utils/safe-delete-install.js +191 -0
  27. package/dist/utils/safe-delete.d.ts +12 -0
  28. package/dist/utils/safe-delete.js +83 -0
  29. package/package.json +18 -8
  30. package/plugins/devflow-ambient/.claude-plugin/plugin.json +7 -0
  31. package/plugins/devflow-ambient/README.md +49 -0
  32. package/plugins/devflow-ambient/commands/ambient.md +110 -0
  33. package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +89 -0
  34. package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +64 -0
  35. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +7 -0
  36. package/plugins/devflow-audit-claude/README.md +46 -0
  37. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +134 -0
  38. package/plugins/devflow-audit-claude/commands/audit-claude.md +85 -0
  39. package/plugins/devflow-code-review/.claude-plugin/plugin.json +31 -0
  40. package/plugins/devflow-code-review/README.md +73 -0
  41. package/plugins/devflow-code-review/agents/git.md +272 -0
  42. package/plugins/devflow-code-review/agents/reviewer.md +119 -0
  43. package/plugins/devflow-code-review/agents/synthesizer.md +204 -0
  44. package/plugins/devflow-code-review/commands/code-review-teams.md +262 -0
  45. package/plugins/devflow-code-review/commands/code-review.md +141 -0
  46. package/plugins/devflow-code-review/skills/accessibility/SKILL.md +229 -0
  47. package/plugins/devflow-code-review/skills/accessibility/references/detection.md +171 -0
  48. package/plugins/devflow-code-review/skills/accessibility/references/patterns.md +670 -0
  49. package/plugins/devflow-code-review/skills/accessibility/references/violations.md +419 -0
  50. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +124 -0
  51. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +104 -0
  52. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +122 -0
  53. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +217 -0
  54. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +153 -0
  55. package/plugins/devflow-code-review/skills/architecture-patterns/references/detection.md +337 -0
  56. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +873 -0
  57. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +575 -0
  58. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +143 -0
  59. package/plugins/devflow-code-review/skills/complexity-patterns/references/detection.md +264 -0
  60. package/plugins/devflow-code-review/skills/complexity-patterns/references/patterns.md +487 -0
  61. package/plugins/devflow-code-review/skills/complexity-patterns/references/violations.md +361 -0
  62. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +140 -0
  63. package/plugins/devflow-code-review/skills/consistency-patterns/references/detection.md +207 -0
  64. package/plugins/devflow-code-review/skills/consistency-patterns/references/patterns.md +202 -0
  65. package/plugins/devflow-code-review/skills/consistency-patterns/references/violations.md +213 -0
  66. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +134 -0
  67. package/plugins/devflow-code-review/skills/database-patterns/references/detection.md +208 -0
  68. package/plugins/devflow-code-review/skills/database-patterns/references/patterns.md +394 -0
  69. package/plugins/devflow-code-review/skills/database-patterns/references/violations.md +332 -0
  70. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +141 -0
  71. package/plugins/devflow-code-review/skills/dependencies-patterns/references/detection.md +181 -0
  72. package/plugins/devflow-code-review/skills/dependencies-patterns/references/patterns.md +225 -0
  73. package/plugins/devflow-code-review/skills/dependencies-patterns/references/violations.md +247 -0
  74. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +125 -0
  75. package/plugins/devflow-code-review/skills/documentation-patterns/references/detection.md +190 -0
  76. package/plugins/devflow-code-review/skills/documentation-patterns/references/patterns.md +189 -0
  77. package/plugins/devflow-code-review/skills/documentation-patterns/references/violations.md +163 -0
  78. package/plugins/devflow-code-review/skills/frontend-design/SKILL.md +254 -0
  79. package/plugins/devflow-code-review/skills/frontend-design/references/detection.md +184 -0
  80. package/plugins/devflow-code-review/skills/frontend-design/references/patterns.md +511 -0
  81. package/plugins/devflow-code-review/skills/frontend-design/references/violations.md +453 -0
  82. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +154 -0
  83. package/plugins/devflow-code-review/skills/performance-patterns/references/detection.md +351 -0
  84. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +503 -0
  85. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +354 -0
  86. package/plugins/devflow-code-review/skills/react/SKILL.md +276 -0
  87. package/plugins/devflow-code-review/skills/react/references/patterns.md +1331 -0
  88. package/plugins/devflow-code-review/skills/react/references/violations.md +565 -0
  89. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +146 -0
  90. package/plugins/devflow-code-review/skills/regression-patterns/references/detection.md +237 -0
  91. package/plugins/devflow-code-review/skills/regression-patterns/references/patterns.md +226 -0
  92. package/plugins/devflow-code-review/skills/regression-patterns/references/violations.md +225 -0
  93. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +119 -0
  94. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +186 -0
  95. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +142 -0
  96. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +125 -0
  97. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +156 -0
  98. package/plugins/devflow-code-review/skills/security-patterns/references/detection.md +287 -0
  99. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +507 -0
  100. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +237 -0
  101. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +183 -0
  102. package/plugins/devflow-code-review/skills/test-patterns/references/detection.md +149 -0
  103. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +220 -0
  104. package/plugins/devflow-code-review/skills/test-patterns/references/report-template.md +108 -0
  105. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +221 -0
  106. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +28 -0
  107. package/plugins/devflow-core-skills/README.md +50 -0
  108. package/plugins/devflow-core-skills/skills/accessibility/SKILL.md +229 -0
  109. package/plugins/devflow-core-skills/skills/accessibility/references/detection.md +171 -0
  110. package/plugins/devflow-core-skills/skills/accessibility/references/patterns.md +670 -0
  111. package/plugins/devflow-core-skills/skills/accessibility/references/violations.md +419 -0
  112. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +162 -0
  113. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +276 -0
  114. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +144 -0
  115. package/plugins/devflow-core-skills/skills/core-patterns/references/detection.md +303 -0
  116. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +576 -0
  117. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +369 -0
  118. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +138 -0
  119. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +346 -0
  120. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +221 -0
  121. package/plugins/devflow-core-skills/skills/frontend-design/SKILL.md +254 -0
  122. package/plugins/devflow-core-skills/skills/frontend-design/references/detection.md +184 -0
  123. package/plugins/devflow-core-skills/skills/frontend-design/references/patterns.md +511 -0
  124. package/plugins/devflow-core-skills/skills/frontend-design/references/violations.md +453 -0
  125. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +122 -0
  126. package/plugins/devflow-core-skills/skills/git-safety/references/detection.md +290 -0
  127. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +289 -0
  128. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +18 -0
  129. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +158 -0
  130. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +115 -0
  131. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +77 -0
  132. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +127 -0
  133. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +96 -0
  134. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +153 -0
  135. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +572 -0
  136. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +298 -0
  137. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +148 -0
  138. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +283 -0
  139. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +361 -0
  140. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +224 -0
  141. package/plugins/devflow-core-skills/skills/react/SKILL.md +276 -0
  142. package/plugins/devflow-core-skills/skills/react/references/patterns.md +1331 -0
  143. package/plugins/devflow-core-skills/skills/react/references/violations.md +565 -0
  144. package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +139 -0
  145. package/plugins/devflow-core-skills/skills/test-driven-development/references/rationalization-prevention.md +111 -0
  146. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +183 -0
  147. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +149 -0
  148. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +220 -0
  149. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +108 -0
  150. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +221 -0
  151. package/plugins/devflow-core-skills/skills/typescript/SKILL.md +176 -0
  152. package/plugins/devflow-core-skills/skills/typescript/references/patterns.md +1105 -0
  153. package/plugins/devflow-core-skills/skills/typescript/references/violations.md +433 -0
  154. package/plugins/devflow-debug/.claude-plugin/plugin.json +18 -0
  155. package/plugins/devflow-debug/README.md +65 -0
  156. package/plugins/devflow-debug/agents/git.md +272 -0
  157. package/plugins/devflow-debug/commands/debug-teams.md +231 -0
  158. package/plugins/devflow-debug/commands/debug.md +160 -0
  159. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +124 -0
  160. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +104 -0
  161. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +122 -0
  162. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +217 -0
  163. package/plugins/devflow-debug/skills/git-safety/SKILL.md +122 -0
  164. package/plugins/devflow-debug/skills/git-safety/references/detection.md +290 -0
  165. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +289 -0
  166. package/plugins/devflow-debug/skills/git-safety/references/violations.md +18 -0
  167. package/plugins/devflow-implement/.claude-plugin/plugin.json +21 -0
  168. package/plugins/devflow-implement/README.md +71 -0
  169. package/plugins/devflow-implement/agents/coder.md +122 -0
  170. package/plugins/devflow-implement/agents/git.md +272 -0
  171. package/plugins/devflow-implement/agents/scrutinizer.md +80 -0
  172. package/plugins/devflow-implement/agents/shepherd.md +94 -0
  173. package/plugins/devflow-implement/agents/simplifier.md +62 -0
  174. package/plugins/devflow-implement/agents/skimmer.md +88 -0
  175. package/plugins/devflow-implement/agents/synthesizer.md +204 -0
  176. package/plugins/devflow-implement/agents/validator.md +86 -0
  177. package/plugins/devflow-implement/commands/implement-teams.md +608 -0
  178. package/plugins/devflow-implement/commands/implement.md +426 -0
  179. package/plugins/devflow-implement/skills/accessibility/SKILL.md +229 -0
  180. package/plugins/devflow-implement/skills/accessibility/references/detection.md +171 -0
  181. package/plugins/devflow-implement/skills/accessibility/references/patterns.md +670 -0
  182. package/plugins/devflow-implement/skills/accessibility/references/violations.md +419 -0
  183. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +124 -0
  184. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +104 -0
  185. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +122 -0
  186. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +217 -0
  187. package/plugins/devflow-implement/skills/frontend-design/SKILL.md +254 -0
  188. package/plugins/devflow-implement/skills/frontend-design/references/detection.md +184 -0
  189. package/plugins/devflow-implement/skills/frontend-design/references/patterns.md +511 -0
  190. package/plugins/devflow-implement/skills/frontend-design/references/violations.md +453 -0
  191. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +162 -0
  192. package/plugins/devflow-implement/skills/implementation-patterns/references/patterns.md +1063 -0
  193. package/plugins/devflow-implement/skills/implementation-patterns/references/violations.md +483 -0
  194. package/plugins/devflow-implement/skills/self-review/SKILL.md +149 -0
  195. package/plugins/devflow-implement/skills/self-review/references/patterns.md +405 -0
  196. package/plugins/devflow-implement/skills/self-review/references/report-template.md +253 -0
  197. package/plugins/devflow-implement/skills/self-review/references/violations.md +308 -0
  198. package/plugins/devflow-resolve/.claude-plugin/plugin.json +19 -0
  199. package/plugins/devflow-resolve/README.md +65 -0
  200. package/plugins/devflow-resolve/agents/git.md +272 -0
  201. package/plugins/devflow-resolve/agents/resolver.md +131 -0
  202. package/plugins/devflow-resolve/agents/simplifier.md +62 -0
  203. package/plugins/devflow-resolve/commands/resolve-teams.md +298 -0
  204. package/plugins/devflow-resolve/commands/resolve.md +237 -0
  205. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +124 -0
  206. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +104 -0
  207. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +122 -0
  208. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +217 -0
  209. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +162 -0
  210. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +1063 -0
  211. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +483 -0
  212. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +156 -0
  213. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +287 -0
  214. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +507 -0
  215. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +237 -0
  216. package/plugins/devflow-self-review/.claude-plugin/plugin.json +7 -0
  217. package/plugins/devflow-self-review/README.md +38 -0
  218. package/plugins/devflow-self-review/agents/scrutinizer.md +80 -0
  219. package/plugins/devflow-self-review/agents/simplifier.md +62 -0
  220. package/plugins/devflow-self-review/agents/validator.md +86 -0
  221. package/plugins/devflow-self-review/commands/self-review.md +126 -0
  222. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +162 -0
  223. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +276 -0
  224. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +144 -0
  225. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +303 -0
  226. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +576 -0
  227. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +369 -0
  228. package/plugins/devflow-self-review/skills/self-review/SKILL.md +149 -0
  229. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +405 -0
  230. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +253 -0
  231. package/plugins/devflow-self-review/skills/self-review/references/violations.md +308 -0
  232. package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -0
  233. package/plugins/devflow-specify/README.md +46 -0
  234. package/plugins/devflow-specify/agents/skimmer.md +88 -0
  235. package/plugins/devflow-specify/agents/synthesizer.md +204 -0
  236. package/plugins/devflow-specify/commands/specify-teams.md +314 -0
  237. package/plugins/devflow-specify/commands/specify.md +179 -0
  238. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +124 -0
  239. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +104 -0
  240. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +122 -0
  241. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +217 -0
  242. package/scripts/hooks/ambient-prompt.sh +48 -0
  243. package/scripts/hooks/background-memory-update.sh +208 -0
  244. package/scripts/hooks/ensure-memory-gitignore.sh +17 -0
  245. package/scripts/hooks/pre-compact-memory.sh +87 -0
  246. package/scripts/hooks/session-start-memory.sh +126 -0
  247. package/scripts/hooks/stop-update-memory.sh +85 -0
  248. package/shared/agents/coder.md +122 -0
  249. package/shared/agents/git.md +272 -0
  250. package/shared/agents/resolver.md +131 -0
  251. package/shared/agents/reviewer.md +119 -0
  252. package/shared/agents/scrutinizer.md +80 -0
  253. package/shared/agents/shepherd.md +94 -0
  254. package/shared/agents/simplifier.md +62 -0
  255. package/shared/agents/skimmer.md +88 -0
  256. package/shared/agents/synthesizer.md +204 -0
  257. package/shared/agents/validator.md +86 -0
  258. package/shared/skills/accessibility/SKILL.md +229 -0
  259. package/shared/skills/accessibility/references/detection.md +171 -0
  260. package/shared/skills/accessibility/references/patterns.md +670 -0
  261. package/shared/skills/accessibility/references/violations.md +419 -0
  262. package/shared/skills/agent-teams/SKILL.md +124 -0
  263. package/shared/skills/agent-teams/references/cleanup.md +104 -0
  264. package/shared/skills/agent-teams/references/communication.md +122 -0
  265. package/shared/skills/agent-teams/references/team-patterns.md +217 -0
  266. package/shared/skills/ambient-router/SKILL.md +89 -0
  267. package/shared/skills/ambient-router/references/skill-catalog.md +64 -0
  268. package/shared/skills/architecture-patterns/SKILL.md +153 -0
  269. package/shared/skills/architecture-patterns/references/detection.md +337 -0
  270. package/shared/skills/architecture-patterns/references/patterns.md +873 -0
  271. package/shared/skills/architecture-patterns/references/violations.md +575 -0
  272. package/shared/skills/complexity-patterns/SKILL.md +143 -0
  273. package/shared/skills/complexity-patterns/references/detection.md +264 -0
  274. package/shared/skills/complexity-patterns/references/patterns.md +487 -0
  275. package/shared/skills/complexity-patterns/references/violations.md +361 -0
  276. package/shared/skills/consistency-patterns/SKILL.md +140 -0
  277. package/shared/skills/consistency-patterns/references/detection.md +207 -0
  278. package/shared/skills/consistency-patterns/references/patterns.md +202 -0
  279. package/shared/skills/consistency-patterns/references/violations.md +213 -0
  280. package/shared/skills/core-patterns/SKILL.md +162 -0
  281. package/shared/skills/core-patterns/references/checklist.md +276 -0
  282. package/shared/skills/core-patterns/references/code-smell-violations.md +144 -0
  283. package/shared/skills/core-patterns/references/detection.md +303 -0
  284. package/shared/skills/core-patterns/references/patterns.md +576 -0
  285. package/shared/skills/core-patterns/references/violations.md +369 -0
  286. package/shared/skills/database-patterns/SKILL.md +134 -0
  287. package/shared/skills/database-patterns/references/detection.md +208 -0
  288. package/shared/skills/database-patterns/references/patterns.md +394 -0
  289. package/shared/skills/database-patterns/references/violations.md +332 -0
  290. package/shared/skills/dependencies-patterns/SKILL.md +141 -0
  291. package/shared/skills/dependencies-patterns/references/detection.md +181 -0
  292. package/shared/skills/dependencies-patterns/references/patterns.md +225 -0
  293. package/shared/skills/dependencies-patterns/references/violations.md +247 -0
  294. package/shared/skills/docs-framework/SKILL.md +138 -0
  295. package/shared/skills/docs-framework/references/patterns.md +346 -0
  296. package/shared/skills/docs-framework/references/violations.md +221 -0
  297. package/shared/skills/documentation-patterns/SKILL.md +125 -0
  298. package/shared/skills/documentation-patterns/references/detection.md +190 -0
  299. package/shared/skills/documentation-patterns/references/patterns.md +189 -0
  300. package/shared/skills/documentation-patterns/references/violations.md +163 -0
  301. package/shared/skills/frontend-design/SKILL.md +254 -0
  302. package/shared/skills/frontend-design/references/detection.md +184 -0
  303. package/shared/skills/frontend-design/references/patterns.md +511 -0
  304. package/shared/skills/frontend-design/references/violations.md +453 -0
  305. package/shared/skills/git-safety/SKILL.md +122 -0
  306. package/shared/skills/git-safety/references/detection.md +290 -0
  307. package/shared/skills/git-safety/references/patterns.md +289 -0
  308. package/shared/skills/git-safety/references/violations.md +18 -0
  309. package/shared/skills/git-workflow/SKILL.md +158 -0
  310. package/shared/skills/git-workflow/references/commit-patterns.md +115 -0
  311. package/shared/skills/git-workflow/references/commit-violations.md +77 -0
  312. package/shared/skills/git-workflow/references/pr-patterns.md +127 -0
  313. package/shared/skills/git-workflow/references/pr-violations.md +96 -0
  314. package/shared/skills/github-patterns/SKILL.md +153 -0
  315. package/shared/skills/github-patterns/references/patterns.md +572 -0
  316. package/shared/skills/github-patterns/references/violations.md +298 -0
  317. package/shared/skills/implementation-patterns/SKILL.md +162 -0
  318. package/shared/skills/implementation-patterns/references/patterns.md +1063 -0
  319. package/shared/skills/implementation-patterns/references/violations.md +483 -0
  320. package/shared/skills/input-validation/SKILL.md +148 -0
  321. package/shared/skills/input-validation/references/detection.md +283 -0
  322. package/shared/skills/input-validation/references/patterns.md +361 -0
  323. package/shared/skills/input-validation/references/violations.md +224 -0
  324. package/shared/skills/performance-patterns/SKILL.md +154 -0
  325. package/shared/skills/performance-patterns/references/detection.md +351 -0
  326. package/shared/skills/performance-patterns/references/patterns.md +503 -0
  327. package/shared/skills/performance-patterns/references/violations.md +354 -0
  328. package/shared/skills/react/SKILL.md +276 -0
  329. package/shared/skills/react/references/patterns.md +1331 -0
  330. package/shared/skills/react/references/violations.md +565 -0
  331. package/shared/skills/regression-patterns/SKILL.md +146 -0
  332. package/shared/skills/regression-patterns/references/detection.md +237 -0
  333. package/shared/skills/regression-patterns/references/patterns.md +226 -0
  334. package/shared/skills/regression-patterns/references/violations.md +225 -0
  335. package/shared/skills/review-methodology/SKILL.md +119 -0
  336. package/shared/skills/review-methodology/references/patterns.md +186 -0
  337. package/shared/skills/review-methodology/references/report-template.md +142 -0
  338. package/shared/skills/review-methodology/references/violations.md +125 -0
  339. package/shared/skills/security-patterns/SKILL.md +156 -0
  340. package/shared/skills/security-patterns/references/detection.md +287 -0
  341. package/shared/skills/security-patterns/references/patterns.md +507 -0
  342. package/shared/skills/security-patterns/references/violations.md +237 -0
  343. package/shared/skills/self-review/SKILL.md +149 -0
  344. package/shared/skills/self-review/references/patterns.md +405 -0
  345. package/shared/skills/self-review/references/report-template.md +253 -0
  346. package/shared/skills/self-review/references/violations.md +308 -0
  347. package/shared/skills/test-driven-development/SKILL.md +139 -0
  348. package/shared/skills/test-driven-development/references/rationalization-prevention.md +111 -0
  349. package/shared/skills/test-patterns/SKILL.md +183 -0
  350. package/shared/skills/test-patterns/references/detection.md +149 -0
  351. package/shared/skills/test-patterns/references/patterns.md +220 -0
  352. package/shared/skills/test-patterns/references/report-template.md +108 -0
  353. package/shared/skills/test-patterns/references/violations.md +221 -0
  354. package/shared/skills/typescript/SKILL.md +176 -0
  355. package/shared/skills/typescript/references/patterns.md +1105 -0
  356. package/shared/skills/typescript/references/violations.md +433 -0
  357. package/src/templates/claudeignore.template +188 -0
  358. package/src/templates/managed-settings.json +160 -0
  359. package/src/templates/settings.json +59 -0
  360. package/dist/cli.d.ts.map +0 -1
  361. package/dist/cli.js.map +0 -1
  362. package/dist/commands/init.d.ts.map +0 -1
  363. package/dist/commands/init.js.map +0 -1
  364. package/dist/commands/uninstall.d.ts.map +0 -1
  365. package/dist/commands/uninstall.js.map +0 -1
  366. package/dist/utils/git.d.ts.map +0 -1
  367. package/dist/utils/git.js.map +0 -1
  368. package/dist/utils/paths.d.ts.map +0 -1
  369. package/dist/utils/paths.js.map +0 -1
  370. package/src/claude/CLAUDE.md +0 -400
  371. package/src/claude/agents/devflow/audit-architecture.md +0 -132
  372. package/src/claude/agents/devflow/audit-complexity.md +0 -132
  373. package/src/claude/agents/devflow/audit-database.md +0 -132
  374. package/src/claude/agents/devflow/audit-dependencies.md +0 -132
  375. package/src/claude/agents/devflow/audit-documentation.md +0 -132
  376. package/src/claude/agents/devflow/audit-performance.md +0 -256
  377. package/src/claude/agents/devflow/audit-security.md +0 -259
  378. package/src/claude/agents/devflow/audit-tests.md +0 -132
  379. package/src/claude/agents/devflow/audit-typescript.md +0 -132
  380. package/src/claude/agents/devflow/brainstorm.md +0 -279
  381. package/src/claude/agents/devflow/catch-up.md +0 -345
  382. package/src/claude/agents/devflow/code-review.md +0 -307
  383. package/src/claude/agents/devflow/commit.md +0 -380
  384. package/src/claude/agents/devflow/debug.md +0 -476
  385. package/src/claude/agents/devflow/design.md +0 -491
  386. package/src/claude/agents/devflow/get-issue.md +0 -286
  387. package/src/claude/agents/devflow/pr-comments.md +0 -285
  388. package/src/claude/agents/devflow/project-state.md +0 -419
  389. package/src/claude/agents/devflow/pull-request.md +0 -493
  390. package/src/claude/agents/devflow/release.md +0 -1137
  391. package/src/claude/agents/devflow/tech-debt.md +0 -338
  392. package/src/claude/commands/devflow/brainstorm.md +0 -68
  393. package/src/claude/commands/devflow/breakdown.md +0 -125
  394. package/src/claude/commands/devflow/catch-up.md +0 -29
  395. package/src/claude/commands/devflow/code-review.md +0 -237
  396. package/src/claude/commands/devflow/commit.md +0 -17
  397. package/src/claude/commands/devflow/debug.md +0 -56
  398. package/src/claude/commands/devflow/design.md +0 -82
  399. package/src/claude/commands/devflow/devlog.md +0 -408
  400. package/src/claude/commands/devflow/get-issue.md +0 -16
  401. package/src/claude/commands/devflow/implement.md +0 -100
  402. package/src/claude/commands/devflow/plan.md +0 -223
  403. package/src/claude/commands/devflow/pull-request.md +0 -20
  404. package/src/claude/commands/devflow/release.md +0 -251
  405. package/src/claude/commands/devflow/resolve-comments.md +0 -583
  406. package/src/claude/scripts/statusline.sh +0 -47
  407. package/src/claude/settings.json +0 -6
  408. package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
  409. package/src/claude/skills/devflow/debug/SKILL.md +0 -119
  410. package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
  411. package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
  412. package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
  413. package/src/claude/skills/devflow/research/SKILL.md +0 -138
  414. package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
@@ -0,0 +1,237 @@
1
+ # Security Violation Examples
2
+
3
+ Extended violation patterns for security reviews. Reference from main SKILL.md.
4
+
5
+ ## Injection Vulnerabilities
6
+
7
+ ### SQL Injection
8
+ ```typescript
9
+ // VULNERABLE: String interpolation in query
10
+ const user = await db.query(`SELECT * FROM users WHERE id = '${userId}'`);
11
+ const result = await db.query(`SELECT * FROM products WHERE name LIKE '%${search}%'`);
12
+ ```
13
+
14
+ ### NoSQL Injection
15
+ ```typescript
16
+ // VULNERABLE: Direct object from request
17
+ const user = await db.users.findOne({ username: req.body.username });
18
+ // Attacker sends: { username: { $gt: "" } }
19
+
20
+ // VULNERABLE: $where operator accepts arbitrary JS
21
+ db.users.find({ $where: `this.name === '${userInput}'` });
22
+
23
+ // VULNERABLE: regex injection
24
+ db.users.find({ name: { $regex: userInput } });
25
+ // Attacker sends: ".*" (matches everything)
26
+ ```
27
+
28
+ ### Command Injection
29
+ ```typescript
30
+ // VULNERABLE: User input in shell command
31
+ exec(`ls ${userInput}`);
32
+ exec(`convert ${filename} output.png`);
33
+ exec(`ping -c 4 ${hostname}`);
34
+
35
+ // Dangerous characters: ; | & $ ` ( ) < > \ ' "
36
+ // Example attack: userInput = "file.txt; rm -rf /"
37
+ ```
38
+
39
+ ### Path Traversal
40
+ ```typescript
41
+ // VULNERABLE: Direct path concatenation
42
+ const file = req.params.filename;
43
+ fs.readFile(`./uploads/${file}`); // Attacker: ../../../etc/passwd
44
+
45
+ // VULNERABLE: Encoded traversal
46
+ // Attacker sends: %2e%2e%2f%2e%2e%2fetc/passwd (URL encoded ../..)
47
+ const decoded = decodeURIComponent(req.params.filename);
48
+ fs.readFile(`./uploads/${decoded}`);
49
+
50
+ // VULNERABLE: Double encoding
51
+ // Attacker sends: %252e%252e%252f (double-encoded ../)
52
+ ```
53
+
54
+ ### LDAP Injection
55
+ ```typescript
56
+ // VULNERABLE: Unescaped LDAP filter
57
+ const filter = `(uid=${username})`;
58
+ ldap.search(baseDN, filter);
59
+ // Attacker: username = "admin)(&(password=*)"
60
+ ```
61
+
62
+ ### Template Injection (SSTI)
63
+ ```typescript
64
+ // VULNERABLE: User input in template
65
+ const template = `Hello ${req.body.name}!`;
66
+ ejs.render(template);
67
+ // Attacker: name = "<%= process.env.SECRET %>"
68
+ ```
69
+
70
+ ### Header Injection
71
+ ```typescript
72
+ // VULNERABLE: CRLF injection
73
+ res.setHeader('Location', `/user/${userInput}`);
74
+ // Attacker: userInput = "test\r\nSet-Cookie: admin=true"
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Authentication Vulnerabilities
80
+
81
+ ### Weak Password Policies
82
+ ```typescript
83
+ // VULNERABLE: Weak password requirements
84
+ if (password.length >= 6) { /* accept */ }
85
+ ```
86
+
87
+ ### Session Management Issues
88
+ ```typescript
89
+ // VULNERABLE: Session ID in URL
90
+ app.get('/dashboard?session=abc123');
91
+
92
+ // VULNERABLE: Predictable session IDs
93
+ const sessionId = `user_${userId}`;
94
+
95
+ // VULNERABLE: No session timeout or rotation
96
+ ```
97
+
98
+ ### JWT Misuse
99
+ ```typescript
100
+ // VULNERABLE: Weak secret
101
+ jwt.sign(payload, 'secret123');
102
+
103
+ // VULNERABLE: No expiration
104
+ jwt.sign(payload, secret);
105
+
106
+ // VULNERABLE: Algorithm confusion (accepts 'none')
107
+ jwt.verify(token, secret); // Without algorithm specification
108
+ ```
109
+
110
+ ### Missing Authorization
111
+ ```typescript
112
+ // VULNERABLE: No auth checks
113
+ app.delete('/api/users/:id', async (req, res) => {
114
+ await deleteUser(req.params.id); // No auth check!
115
+ });
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Cryptography Vulnerabilities
121
+
122
+ ### Hardcoded Secrets
123
+ ```typescript
124
+ // VULNERABLE: Secrets in code
125
+ const API_KEY = 'sk-abc123xyz789';
126
+ const dbPassword = 'admin123';
127
+ const jwtSecret = 'mysecret';
128
+
129
+ // VULNERABLE: Secrets in config files
130
+ const config = {
131
+ database: {
132
+ password: 'prod_password_123'
133
+ },
134
+ api: {
135
+ key: 'sk-live-abcdef123456'
136
+ }
137
+ };
138
+ ```
139
+
140
+ ### Weak Cryptography
141
+ ```typescript
142
+ // VULNERABLE: Broken hash algorithms
143
+ crypto.createHash('md5').update(password); // MD5 is broken
144
+ crypto.createHash('sha1').update(password); // SHA1 weak for passwords
145
+
146
+ // VULNERABLE: Using password directly as key
147
+ const key = password;
148
+ crypto.createCipheriv('aes-256-gcm', key, iv);
149
+ ```
150
+
151
+ ### Insecure Random
152
+ ```typescript
153
+ // VULNERABLE: Predictable random
154
+ const token = Math.random().toString(36); // Predictable!
155
+ const id = Date.now().toString();
156
+ const code = Math.floor(Math.random() * 1000000);
157
+ ```
158
+
159
+ ### Weak Encryption
160
+ ```typescript
161
+ // VULNERABLE: ECB mode (patterns visible)
162
+ crypto.createCipheriv('aes-256-ecb', key, null);
163
+
164
+ // VULNERABLE: No authentication (CBC without HMAC)
165
+ crypto.createCipheriv('aes-256-cbc', key, iv);
166
+ ```
167
+
168
+ ### Timing Attacks
169
+ ```typescript
170
+ // VULNERABLE: Early exit reveals length info
171
+ function verifyToken(provided: string, stored: string): boolean {
172
+ return provided === stored; // Early exit reveals info
173
+ }
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Detection Grep Commands
179
+
180
+ ### Injection Detection
181
+ ```bash
182
+ # SQL Injection
183
+ grep -rn "query.*\${" --include="*.ts" --include="*.js"
184
+ grep -rn "query.*+ " --include="*.ts" --include="*.js"
185
+ grep -rn "execute.*\`" --include="*.ts" --include="*.js"
186
+
187
+ # NoSQL Injection
188
+ grep -rn "findOne.*req\.\|find.*req\." --include="*.ts" --include="*.js"
189
+ grep -rn "\$where" --include="*.ts" --include="*.js"
190
+
191
+ # Command Injection
192
+ grep -rn "exec\s*\(" --include="*.ts" --include="*.js"
193
+ grep -rn "spawn.*\`\|execSync.*\`" --include="*.ts" --include="*.js"
194
+
195
+ # Path Traversal
196
+ grep -rn "readFile.*req\.\|readFileSync.*req\." --include="*.ts" --include="*.js"
197
+ grep -rn "path\.join.*req\." --include="*.ts" --include="*.js"
198
+ ```
199
+
200
+ ### Auth Detection
201
+ ```bash
202
+ # Missing auth middleware
203
+ grep -rn "app\.\(get\|post\|put\|delete\).*async" --include="*.ts" --include="*.js" | \
204
+ grep -v "requireAuth\|isAuthenticated\|authorize"
205
+
206
+ # Weak JWT configuration
207
+ grep -rn "jwt\.sign\|jwt\.verify" --include="*.ts" --include="*.js" -A 5 | \
208
+ grep -v "algorithm\|expiresIn"
209
+
210
+ # Session issues
211
+ grep -rn "session\|cookie" --include="*.ts" --include="*.js" | \
212
+ grep -v "httpOnly\|secure\|sameSite"
213
+
214
+ # Password handling
215
+ grep -rn "password.*length" --include="*.ts" --include="*.js"
216
+ ```
217
+
218
+ ### Crypto Detection
219
+ ```bash
220
+ # Hardcoded secrets
221
+ grep -rn "password.*=.*['\"]" --include="*.ts" --include="*.js"
222
+ grep -rn "api.key.*=.*['\"]" --include="*.ts" --include="*.js"
223
+ grep -rn "secret.*=.*['\"]" --include="*.ts" --include="*.js"
224
+ grep -rn "sk-\|pk-\|api_" --include="*.ts" --include="*.js"
225
+
226
+ # Weak crypto
227
+ grep -rn "createHash.*md5\|sha1" --include="*.ts" --include="*.js"
228
+ grep -rn "DES\|RC4\|Blowfish" --include="*.ts" --include="*.js"
229
+ grep -rn "aes-.*-ecb\|aes-.*-cbc" --include="*.ts" --include="*.js"
230
+
231
+ # Insecure random
232
+ grep -rn "Math.random" --include="*.ts" --include="*.js"
233
+ grep -rn "Date.now.*id\|Date.now.*token" --include="*.ts" --include="*.js"
234
+
235
+ # String comparison for secrets
236
+ grep -rn "token.*===\|secret.*===\|key.*===" --include="*.ts" --include="*.js"
237
+ ```
@@ -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 |