devflow-kit 0.9.0 → 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 (397) hide show
  1. package/CHANGELOG.md +167 -29
  2. package/LICENSE +1 -1
  3. package/README.md +179 -310
  4. package/dist/cli.js +3 -1
  5. package/dist/commands/init.d.ts +21 -0
  6. package/dist/commands/init.js +311 -576
  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/get-issue.md +0 -286
  370. package/src/claude/agents/devflow/pr-comments.md +0 -285
  371. package/src/claude/agents/devflow/project-state.md +0 -419
  372. package/src/claude/agents/devflow/pull-request.md +0 -493
  373. package/src/claude/agents/devflow/release.md +0 -1137
  374. package/src/claude/agents/devflow/tech-debt.md +0 -338
  375. package/src/claude/commands/devflow/brainstorm.md +0 -68
  376. package/src/claude/commands/devflow/breakdown.md +0 -125
  377. package/src/claude/commands/devflow/catch-up.md +0 -29
  378. package/src/claude/commands/devflow/code-review.md +0 -237
  379. package/src/claude/commands/devflow/commit.md +0 -17
  380. package/src/claude/commands/devflow/debug.md +0 -56
  381. package/src/claude/commands/devflow/design.md +0 -82
  382. package/src/claude/commands/devflow/devlog.md +0 -408
  383. package/src/claude/commands/devflow/get-issue.md +0 -16
  384. package/src/claude/commands/devflow/implement.md +0 -100
  385. package/src/claude/commands/devflow/plan.md +0 -223
  386. package/src/claude/commands/devflow/pull-request.md +0 -20
  387. package/src/claude/commands/devflow/release.md +0 -251
  388. package/src/claude/commands/devflow/resolve-comments.md +0 -583
  389. package/src/claude/scripts/statusline.sh +0 -47
  390. package/src/claude/settings.json +0 -6
  391. package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
  392. package/src/claude/skills/devflow/debug/SKILL.md +0 -119
  393. package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
  394. package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
  395. package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
  396. package/src/claude/skills/devflow/research/SKILL.md +0 -138
  397. package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
@@ -0,0 +1,565 @@
1
+ # React Violation Examples
2
+
3
+ Extended violation patterns for React reviews. Reference from main SKILL.md.
4
+
5
+ ## Vercel Performance Violations
6
+
7
+ ### Sequential Fetches
8
+
9
+ ```tsx
10
+ // VIOLATION: Sequential fetches (waterfall)
11
+ async function loadDashboard(userId: string) {
12
+ const user = await fetchUser(userId);
13
+ const orders = await fetchOrders(userId); // Waits for user
14
+ const prefs = await fetchPreferences(userId); // Waits for orders
15
+ return { user, orders, prefs };
16
+ }
17
+ // Total time: T(user) + T(orders) + T(prefs)
18
+ // Should be: max(T(user), T(orders), T(prefs))
19
+
20
+ // VIOLATION: Sequential in useEffect
21
+ useEffect(() => {
22
+ async function load() {
23
+ setUser(await fetchUser(id));
24
+ setOrders(await fetchOrders(id)); // Sequential
25
+ setStats(await fetchStats(id)); // Sequential
26
+ }
27
+ load();
28
+ }, [id]);
29
+ ```
30
+
31
+ ### Barrel Import Anti-Patterns
32
+
33
+ ```tsx
34
+ // VIOLATION: Barrel import pulls entire library
35
+ import { Button } from '@/components';
36
+ import { formatDate, formatCurrency, formatNumber } from '@/utils';
37
+ import { IconHome, IconUser } from '@/icons';
38
+
39
+ // VIOLATION: Named imports from large packages
40
+ import { debounce } from 'lodash'; // Imports entire lodash
41
+ import { Button, Input, Select } from 'antd'; // Large bundle
42
+
43
+ // VIOLATION: Not lazy loading heavy dependencies
44
+ import Editor from '@monaco-editor/react'; // 2MB+ bundle
45
+ import { Chart } from 'chart.js'; // Heavy charting library
46
+
47
+ function Dashboard() {
48
+ const [showChart, setShowChart] = useState(false);
49
+ return (
50
+ <div>
51
+ {showChart && <Chart />} {/* Loaded even when not shown */}
52
+ </div>
53
+ );
54
+ }
55
+ ```
56
+
57
+ ### Re-render Causing Patterns
58
+
59
+ ```tsx
60
+ // VIOLATION: Object literal in deps (new ref every render)
61
+ useEffect(() => {
62
+ fetchData(config);
63
+ }, [{ page: 1, limit: 10 }]); // Always "changed"
64
+
65
+ // VIOLATION: Array in deps
66
+ useEffect(() => {
67
+ updateFilters(filters);
68
+ }, [[filter1, filter2, filter3]]); // New array every render
69
+
70
+ // VIOLATION: Inline callback to memoized child
71
+ const MemoChild = memo(Child);
72
+
73
+ function Parent() {
74
+ return (
75
+ <MemoChild
76
+ onClick={() => console.log('clicked')} // New fn = re-render
77
+ style={{ color: 'blue' }} // New object = re-render
78
+ />
79
+ );
80
+ }
81
+
82
+ // VIOLATION: Computed value in render without memo
83
+ function FilteredList({ items, filter }: Props) {
84
+ const filtered = items.filter(i => i.includes(filter)); // Every render
85
+ return <List items={filtered} />;
86
+ }
87
+ ```
88
+
89
+ ### Unoptimized Images
90
+
91
+ ```tsx
92
+ // VIOLATION: No dimensions (causes layout shift)
93
+ <img src={url} alt={alt} />
94
+
95
+ // VIOLATION: No lazy loading (loads all images immediately)
96
+ {images.map(img => <img src={img.src} alt={img.alt} />)}
97
+
98
+ // VIOLATION: No aspect ratio (jumps on load)
99
+ <img
100
+ src={url}
101
+ width={400}
102
+ height={300}
103
+ // Missing: style={{ aspectRatio: '4/3' }}
104
+ />
105
+
106
+ // VIOLATION: Eager loading below fold
107
+ <img
108
+ src={heroImage}
109
+ alt="Hero"
110
+ loading="eager" // Should be lazy for non-critical images
111
+ />
112
+ ```
113
+
114
+ ### Inefficient Data Structures
115
+
116
+ ```tsx
117
+ // VIOLATION: Array.includes for frequent checks (O(n))
118
+ function SelectableList({ items, selected }: Props) {
119
+ return (
120
+ <ul>
121
+ {items.map(item => (
122
+ <li className={selected.includes(item.id) ? 'selected' : ''}>
123
+ {/* O(n) check on every item render */}
124
+ {item.name}
125
+ </li>
126
+ ))}
127
+ </ul>
128
+ );
129
+ }
130
+
131
+ // VIOLATION: Array.find for lookups (O(n))
132
+ function UserDisplay({ userId, users }: Props) {
133
+ const user = users.find(u => u.id === userId); // O(n) every render
134
+ return <span>{user?.name}</span>;
135
+ }
136
+
137
+ // VIOLATION: Filter + map in render (double iteration)
138
+ function ActiveUsers({ users }: Props) {
139
+ return (
140
+ <ul>
141
+ {users
142
+ .filter(u => u.active)
143
+ .map(u => <li key={u.id}>{u.name}</li>)
144
+ }
145
+ </ul>
146
+ );
147
+ }
148
+
149
+ // VIOLATION: Recreating Set every render
150
+ function Tags({ tags, selected }: Props) {
151
+ const selectedSet = new Set(selected); // Created every render
152
+ return tags.map(tag => (
153
+ <Tag selected={selectedSet.has(tag)} />
154
+ ));
155
+ }
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Component Violations
161
+
162
+ ### Prop Drilling
163
+
164
+ ```tsx
165
+ // VIOLATION: Passing data through multiple intermediate components
166
+ function App() {
167
+ const [user, setUser] = useState<User | null>(null);
168
+
169
+ return (
170
+ <Layout user={user}>
171
+ <Sidebar user={user}>
172
+ <Navigation user={user}>
173
+ <UserMenu user={user} /> {/* Props drilled through 3 levels */}
174
+ </Navigation>
175
+ </Sidebar>
176
+ </Layout>
177
+ );
178
+ }
179
+ ```
180
+
181
+ ### Rigid Component Structure
182
+
183
+ ```tsx
184
+ // VIOLATION: Too many props, no composition
185
+ function Card({
186
+ title,
187
+ subtitle,
188
+ content,
189
+ footer,
190
+ headerIcon,
191
+ showCloseButton,
192
+ onClose,
193
+ variant,
194
+ size,
195
+ className
196
+ }: CardProps) {
197
+ return (
198
+ <div className={className}>
199
+ <header>
200
+ {headerIcon && <Icon name={headerIcon} />}
201
+ <h2>{title}</h2>
202
+ <p>{subtitle}</p>
203
+ {showCloseButton && <button onClick={onClose}>X</button>}
204
+ </header>
205
+ <div>{content}</div>
206
+ <footer>{footer}</footer>
207
+ </div>
208
+ );
209
+ }
210
+ ```
211
+
212
+ ### Direct State Mutation
213
+
214
+ ```tsx
215
+ // VIOLATION: Mutating state directly
216
+ function UserList() {
217
+ const [users, setUsers] = useState<User[]>([]);
218
+
219
+ const updateUser = (index: number, name: string) => {
220
+ users[index].name = name; // BAD: Direct mutation
221
+ setUsers(users); // Won't trigger re-render
222
+ };
223
+ }
224
+ ```
225
+
226
+ ### Missing Keys
227
+
228
+ ```tsx
229
+ // VIOLATION: Index as key causes reconciliation issues
230
+ {items.map((item, index) => (
231
+ <Item key={index} {...item} /> // Index key breaks reordering
232
+ ))}
233
+
234
+ // VIOLATION: Missing key entirely
235
+ {items.map((item) => (
236
+ <Item {...item} /> // React warning, poor performance
237
+ ))}
238
+ ```
239
+
240
+ ---
241
+
242
+ ## Hooks Violations
243
+
244
+ ### Missing Dependencies
245
+
246
+ ```tsx
247
+ // VIOLATION: Missing dependency causes stale closure
248
+ function SearchResults({ query }: { query: string }) {
249
+ const [results, setResults] = useState<Result[]>([]);
250
+
251
+ useEffect(() => {
252
+ fetchResults(query).then(setResults);
253
+ }, []); // BAD: Missing 'query' dependency
254
+
255
+ return <ResultsList results={results} />;
256
+ }
257
+ ```
258
+
259
+ ### Conditional Hooks
260
+
261
+ ```tsx
262
+ // VIOLATION: Hook called conditionally
263
+ function UserProfile({ user }: { user: User | null }) {
264
+ if (!user) {
265
+ return <LoginPrompt />;
266
+ }
267
+
268
+ // BAD: Hook called after conditional return
269
+ const [isEditing, setIsEditing] = useState(false);
270
+
271
+ return <ProfileEditor user={user} isEditing={isEditing} />;
272
+ }
273
+ ```
274
+
275
+ ### Stale Closure in Callbacks
276
+
277
+ ```tsx
278
+ // VIOLATION: Callback captures stale state
279
+ function Counter() {
280
+ const [count, setCount] = useState(0);
281
+
282
+ useEffect(() => {
283
+ const interval = setInterval(() => {
284
+ setCount(count + 1); // BAD: Always references initial count (0)
285
+ }, 1000);
286
+
287
+ return () => clearInterval(interval);
288
+ }, []); // Missing count dependency
289
+
290
+ return <span>{count}</span>;
291
+ }
292
+ ```
293
+
294
+ ### Effects Without Cleanup
295
+
296
+ ```tsx
297
+ // VIOLATION: Event listener never removed
298
+ function WindowSize() {
299
+ const [size, setSize] = useState({ width: 0, height: 0 });
300
+
301
+ useEffect(() => {
302
+ const handleResize = () => {
303
+ setSize({ width: window.innerWidth, height: window.innerHeight });
304
+ };
305
+
306
+ window.addEventListener('resize', handleResize);
307
+ // BAD: Missing cleanup - memory leak
308
+ }, []);
309
+
310
+ return <span>{size.width} x {size.height}</span>;
311
+ }
312
+ ```
313
+
314
+ ### Derived State in useState
315
+
316
+ ```tsx
317
+ // VIOLATION: Storing computed value in state
318
+ function ProductList({ products, filter }: Props) {
319
+ const [filteredProducts, setFilteredProducts] = useState<Product[]>([]);
320
+
321
+ useEffect(() => {
322
+ setFilteredProducts(products.filter(p => p.category === filter));
323
+ }, [products, filter]); // BAD: Unnecessary state and effect
324
+
325
+ return <List items={filteredProducts} />;
326
+ }
327
+ ```
328
+
329
+ ---
330
+
331
+ ## Forms Violations
332
+
333
+ ### Uncontrolled to Controlled Switch
334
+
335
+ ```tsx
336
+ // VIOLATION: Switching from uncontrolled to controlled
337
+ function SearchInput() {
338
+ const [value, setValue] = useState<string>(); // undefined initially
339
+
340
+ return (
341
+ <input
342
+ value={value} // BAD: undefined -> string causes warning
343
+ onChange={(e) => setValue(e.target.value)}
344
+ />
345
+ );
346
+ }
347
+ ```
348
+
349
+ ### Missing Form Validation
350
+
351
+ ```tsx
352
+ // VIOLATION: No validation, direct submission
353
+ function LoginForm({ onSubmit }: Props) {
354
+ const [email, setEmail] = useState('');
355
+ const [password, setPassword] = useState('');
356
+
357
+ const handleSubmit = (e: React.FormEvent) => {
358
+ e.preventDefault();
359
+ onSubmit({ email, password }); // BAD: No validation
360
+ };
361
+
362
+ return (
363
+ <form onSubmit={handleSubmit}>
364
+ <input value={email} onChange={(e) => setEmail(e.target.value)} />
365
+ <input value={password} onChange={(e) => setPassword(e.target.value)} />
366
+ <button type="submit">Login</button>
367
+ </form>
368
+ );
369
+ }
370
+ ```
371
+
372
+ ### Missing Accessibility Attributes
373
+
374
+ ```tsx
375
+ // VIOLATION: Form inputs without proper accessibility
376
+ function ContactForm() {
377
+ return (
378
+ <form>
379
+ {/* BAD: No labels, no aria attributes, no error announcements */}
380
+ <input placeholder="Email" />
381
+ {error && <span style={{ color: 'red' }}>{error}</span>}
382
+ <button>Submit</button>
383
+ </form>
384
+ );
385
+ }
386
+ ```
387
+
388
+ ### Form State Not Reset After Submit
389
+
390
+ ```tsx
391
+ // VIOLATION: Form keeps stale data after successful submit
392
+ function CommentForm({ onSubmit }: Props) {
393
+ const [comment, setComment] = useState('');
394
+
395
+ const handleSubmit = async (e: React.FormEvent) => {
396
+ e.preventDefault();
397
+ await onSubmit(comment);
398
+ // BAD: Missing state reset after successful submit
399
+ };
400
+
401
+ return (
402
+ <form onSubmit={handleSubmit}>
403
+ <textarea value={comment} onChange={(e) => setComment(e.target.value)} />
404
+ <button type="submit">Post</button>
405
+ </form>
406
+ );
407
+ }
408
+ ```
409
+
410
+ ---
411
+
412
+ ## Error Handling Violations
413
+
414
+ ### Missing Error Boundaries
415
+
416
+ ```tsx
417
+ // VIOLATION: No error boundary around risky component
418
+ function App() {
419
+ return (
420
+ <div>
421
+ <Header />
422
+ <main>
423
+ <UserProfile userId={userId} /> {/* If this crashes, entire app crashes */}
424
+ <OrderHistory userId={userId} />
425
+ </main>
426
+ <Footer />
427
+ </div>
428
+ );
429
+ }
430
+ ```
431
+
432
+ ### Swallowed Errors
433
+
434
+ ```tsx
435
+ // VIOLATION: Error caught but not handled
436
+ function DataLoader({ url }: { url: string }) {
437
+ const [data, setData] = useState(null);
438
+
439
+ useEffect(() => {
440
+ fetch(url)
441
+ .then(res => res.json())
442
+ .then(setData)
443
+ .catch(() => {}); // BAD: Silently swallows error
444
+ }, [url]);
445
+
446
+ return data ? <DataDisplay data={data} /> : <Spinner />;
447
+ }
448
+ ```
449
+
450
+ ### No Loading/Error States
451
+
452
+ ```tsx
453
+ // VIOLATION: Only handles success case
454
+ function UserProfile({ userId }: { userId: string }) {
455
+ const [user, setUser] = useState<User | null>(null);
456
+
457
+ useEffect(() => {
458
+ fetchUser(userId).then(setUser);
459
+ }, [userId]);
460
+
461
+ // BAD: No loading spinner, no error handling
462
+ return user ? <Profile user={user} /> : null;
463
+ }
464
+ ```
465
+
466
+ ### Error State Not Cleared
467
+
468
+ ```tsx
469
+ // VIOLATION: Error persists after retry
470
+ function DataFetcher({ url }: { url: string }) {
471
+ const [data, setData] = useState(null);
472
+ const [error, setError] = useState<Error | null>(null);
473
+
474
+ const fetchData = async () => {
475
+ try {
476
+ const result = await fetch(url).then(r => r.json());
477
+ setData(result);
478
+ // BAD: Error state not cleared on success
479
+ } catch (e) {
480
+ setError(e as Error);
481
+ }
482
+ };
483
+
484
+ return (
485
+ <div>
486
+ {error && <ErrorMessage error={error} />}
487
+ <button onClick={fetchData}>Retry</button>
488
+ </div>
489
+ );
490
+ }
491
+ ```
492
+
493
+ ---
494
+
495
+ ## Performance Violations
496
+
497
+ ### Inline Objects in JSX
498
+
499
+ ```tsx
500
+ // VIOLATION: New reference every render
501
+ <Component
502
+ options={{ show: true, animate: false }} // New object each render
503
+ items={[1, 2, 3]} // New array each render
504
+ />
505
+ ```
506
+
507
+ ### Inline Arrow Functions in JSX
508
+
509
+ ```tsx
510
+ // VIOLATION: New function every render
511
+ <Button onClick={() => handleClick(item.id)} />
512
+
513
+ // Also creates new function each render
514
+ {items.map(item => (
515
+ <Item
516
+ key={item.id}
517
+ onClick={() => onSelect(item)} // New function per item per render
518
+ />
519
+ ))}
520
+ ```
521
+
522
+ ### Missing useMemo for Expensive Computations
523
+
524
+ ```tsx
525
+ // VIOLATION: Recalculates on every render
526
+ function Dashboard({ data }: { data: DataPoint[] }) {
527
+ const stats = computeExpensiveStats(data); // Runs every render
528
+ const chartData = transformForChart(data); // Also runs every render
529
+
530
+ return (
531
+ <div>
532
+ <Stats data={stats} />
533
+ <Chart data={chartData} />
534
+ </div>
535
+ );
536
+ }
537
+ ```
538
+
539
+ ### State Updates in Render
540
+
541
+ ```tsx
542
+ // VIOLATION: Causes infinite loop
543
+ function Sync({ value }: { value: string }) {
544
+ const [state, setState] = useState(value);
545
+
546
+ if (value !== state) {
547
+ setState(value); // BAD: State update during render
548
+ }
549
+
550
+ return <span>{state}</span>;
551
+ }
552
+ ```
553
+
554
+ ### Unthrottled Event Handlers
555
+
556
+ ```tsx
557
+ // VIOLATION: Fires on every scroll pixel
558
+ function ParallaxEffect() {
559
+ useEffect(() => {
560
+ window.addEventListener('scroll', () => {
561
+ updateParallax(); // 60+ calls per second
562
+ });
563
+ }, []);
564
+ }
565
+ ```
@@ -0,0 +1,146 @@
1
+ ---
2
+ name: regression-patterns
3
+ description: Regression analysis patterns for code review. Detects lost functionality, removed exports, changed signatures, and behavioral changes that break existing consumers. Loaded by Reviewer agent when focus=regression.
4
+ user-invocable: false
5
+ allowed-tools: Read, Grep, Glob
6
+ ---
7
+
8
+ # Regression Patterns
9
+
10
+ Domain expertise for detecting functionality regressions and validating implementation intent. Use alongside `review-methodology` for complete regression reviews.
11
+
12
+ ## Iron Law
13
+
14
+ > **WHAT WORKED BEFORE MUST WORK AFTER**
15
+ >
16
+ > Every change carries regression risk. Removed exports break consumers. Changed signatures
17
+ > break callers. Modified behavior breaks expectations. The burden of proof is on the change:
18
+ > demonstrate no regression, or document the intentional breaking change.
19
+
20
+ ---
21
+
22
+ ## Regression Categories
23
+
24
+ ### 1. Lost Functionality
25
+
26
+ Features, exports, or capabilities that existed before but are missing after.
27
+
28
+ | Type | Risk | Detection |
29
+ |------|------|-----------|
30
+ | Removed exports | Breaks consumers | Compare `export` statements |
31
+ | Removed CLI options | Breaks scripts | Compare option definitions |
32
+ | Removed API endpoints | Breaks clients | Compare route handlers |
33
+ | Removed event handlers | Breaks integrations | Compare `.on()` calls |
34
+
35
+ ```typescript
36
+ // VIOLATION: Export removed without deprecation
37
+ // BEFORE: export function deleteUser(id: string): void { }
38
+ // AFTER: (removed) - consumers will break!
39
+ ```
40
+
41
+ ### 2. Broken Behavior
42
+
43
+ Code still exists but behaves differently in breaking ways.
44
+
45
+ | Type | Risk | Detection |
46
+ |------|------|-----------|
47
+ | Changed return types | Null dereference | Compare function signatures |
48
+ | Changed defaults | Unexpected behavior | Compare default values |
49
+ | Removed side effects | Missing events/logs | Compare emit/log calls |
50
+ | Changed error handling | Uncaught errors | Compare throw/return patterns |
51
+
52
+ ```typescript
53
+ // VIOLATION: Return type widened without migration
54
+ // BEFORE: function getUser(id: string): User { }
55
+ // AFTER: function getUser(id: string): User | null { }
56
+ // Callers assuming non-null will break!
57
+ ```
58
+
59
+ ### 3. Intent vs Reality Mismatch
60
+
61
+ Commit message promises one thing, code does another.
62
+
63
+ | Type | Risk | Detection |
64
+ |------|------|-----------|
65
+ | Commit says X, code does Y | False confidence | Compare message to diff |
66
+ | Partial implementation | Incomplete feature | Check all stated changes |
67
+ | Missing edge cases | Fragile code | Verify claimed coverage |
68
+
69
+ ```typescript
70
+ // VIOLATION: Commit says "Add retry logic" but no retry implemented
71
+ async function fetchData(): Promise<Data> {
72
+ return api.get('/data'); // No retry!
73
+ }
74
+ ```
75
+
76
+ ### 4. Incomplete Migrations
77
+
78
+ Old API deprecated but not all consumers updated.
79
+
80
+ | Type | Risk | Detection |
81
+ |------|------|-----------|
82
+ | Some call sites updated | Mixed behavior | Search for old API usage |
83
+ | Consumers not updated | Type errors | Check all importers |
84
+ | Tests not updated | False passes | Compare test coverage |
85
+
86
+ ```typescript
87
+ // VIOLATION: Migration incomplete
88
+ // file1.ts: newFunction({ a, b }) // Updated
89
+ // file2.ts: oldFunction(a, b) // NOT updated!
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Quick Detection Commands
95
+
96
+ ```bash
97
+ # Find removed exports
98
+ git diff main...HEAD | grep "^-export"
99
+
100
+ # Find removed files
101
+ git diff main...HEAD --name-status | grep "^D"
102
+
103
+ # Find incomplete migration (old API still used)
104
+ grep -r "oldFunction" src/ --include="*.ts"
105
+
106
+ # Find new TODOs (incomplete work)
107
+ git diff main...HEAD | grep "^\+.*TODO"
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Extended References
113
+
114
+ For extended examples and detection techniques:
115
+
116
+ - **[violations.md](references/violations.md)** - Detailed violation examples for each category
117
+ - **[patterns.md](references/patterns.md)** - Correct patterns for regression-safe changes
118
+ - **[detection.md](references/detection.md)** - Comprehensive bash commands for detection
119
+
120
+ ---
121
+
122
+ ## Severity Guidelines
123
+
124
+ | Severity | Criteria | Examples |
125
+ |----------|----------|----------|
126
+ | **CRITICAL** | Breaking changes without migration | Public exports removed, return types incompatible, required params added |
127
+ | **HIGH** | Significant behavior changes | Defaults changed, error handling changed, side effects removed |
128
+ | **MEDIUM** | Moderate regression risk | Internal APIs changed, logging reduced, performance changed |
129
+ | **LOW** | Minor concerns | Documentation drift, internal refactoring |
130
+
131
+ ---
132
+
133
+ ## Regression Checklist
134
+
135
+ Before approving changes:
136
+
137
+ - [ ] No exports removed without deprecation
138
+ - [ ] Return types backward compatible
139
+ - [ ] Default values unchanged (or documented)
140
+ - [ ] Side effects preserved (events, logging)
141
+ - [ ] All consumers of changed code updated
142
+ - [ ] Migration complete across codebase
143
+ - [ ] CLI options preserved or deprecated
144
+ - [ ] API endpoints preserved or versioned
145
+ - [ ] Commit message matches implementation
146
+ - [ ] Breaking changes documented in CHANGELOG