devflow-kit 0.8.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/CHANGELOG.md +185 -29
  2. package/LICENSE +1 -1
  3. package/README.md +179 -308
  4. package/dist/cli.js +3 -1
  5. package/dist/commands/init.d.ts +21 -0
  6. package/dist/commands/init.js +311 -575
  7. package/dist/commands/list.d.ts +3 -0
  8. package/dist/commands/list.js +20 -0
  9. package/dist/commands/uninstall.d.ts +10 -0
  10. package/dist/commands/uninstall.js +351 -78
  11. package/dist/plugins.d.ts +46 -0
  12. package/dist/plugins.js +162 -0
  13. package/dist/utils/cli.d.ts +5 -0
  14. package/dist/utils/cli.js +14 -0
  15. package/dist/utils/installer.d.ts +41 -0
  16. package/dist/utils/installer.js +177 -0
  17. package/dist/utils/paths.d.ts +10 -0
  18. package/dist/utils/paths.js +23 -3
  19. package/dist/utils/post-install.d.ts +68 -0
  20. package/dist/utils/post-install.js +427 -0
  21. package/dist/utils/safe-delete-install.d.ts +22 -0
  22. package/dist/utils/safe-delete-install.js +156 -0
  23. package/dist/utils/safe-delete.d.ts +12 -0
  24. package/dist/utils/safe-delete.js +83 -0
  25. package/package.json +18 -8
  26. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +7 -0
  27. package/plugins/devflow-audit-claude/README.md +46 -0
  28. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +134 -0
  29. package/plugins/devflow-audit-claude/commands/audit-claude.md +85 -0
  30. package/plugins/devflow-code-review/.claude-plugin/plugin.json +31 -0
  31. package/plugins/devflow-code-review/README.md +73 -0
  32. package/plugins/devflow-code-review/agents/git.md +272 -0
  33. package/plugins/devflow-code-review/agents/reviewer.md +119 -0
  34. package/plugins/devflow-code-review/agents/synthesizer.md +204 -0
  35. package/plugins/devflow-code-review/commands/code-review-teams.md +262 -0
  36. package/plugins/devflow-code-review/commands/code-review.md +141 -0
  37. package/plugins/devflow-code-review/skills/accessibility/SKILL.md +229 -0
  38. package/plugins/devflow-code-review/skills/accessibility/references/detection.md +171 -0
  39. package/plugins/devflow-code-review/skills/accessibility/references/patterns.md +670 -0
  40. package/plugins/devflow-code-review/skills/accessibility/references/violations.md +419 -0
  41. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +124 -0
  42. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +104 -0
  43. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +122 -0
  44. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +217 -0
  45. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +153 -0
  46. package/plugins/devflow-code-review/skills/architecture-patterns/references/detection.md +337 -0
  47. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +873 -0
  48. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +575 -0
  49. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +143 -0
  50. package/plugins/devflow-code-review/skills/complexity-patterns/references/detection.md +264 -0
  51. package/plugins/devflow-code-review/skills/complexity-patterns/references/patterns.md +487 -0
  52. package/plugins/devflow-code-review/skills/complexity-patterns/references/violations.md +361 -0
  53. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +140 -0
  54. package/plugins/devflow-code-review/skills/consistency-patterns/references/detection.md +207 -0
  55. package/plugins/devflow-code-review/skills/consistency-patterns/references/patterns.md +202 -0
  56. package/plugins/devflow-code-review/skills/consistency-patterns/references/violations.md +213 -0
  57. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +134 -0
  58. package/plugins/devflow-code-review/skills/database-patterns/references/detection.md +208 -0
  59. package/plugins/devflow-code-review/skills/database-patterns/references/patterns.md +394 -0
  60. package/plugins/devflow-code-review/skills/database-patterns/references/violations.md +332 -0
  61. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +141 -0
  62. package/plugins/devflow-code-review/skills/dependencies-patterns/references/detection.md +181 -0
  63. package/plugins/devflow-code-review/skills/dependencies-patterns/references/patterns.md +225 -0
  64. package/plugins/devflow-code-review/skills/dependencies-patterns/references/violations.md +247 -0
  65. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +125 -0
  66. package/plugins/devflow-code-review/skills/documentation-patterns/references/detection.md +190 -0
  67. package/plugins/devflow-code-review/skills/documentation-patterns/references/patterns.md +189 -0
  68. package/plugins/devflow-code-review/skills/documentation-patterns/references/violations.md +163 -0
  69. package/plugins/devflow-code-review/skills/frontend-design/SKILL.md +254 -0
  70. package/plugins/devflow-code-review/skills/frontend-design/references/detection.md +184 -0
  71. package/plugins/devflow-code-review/skills/frontend-design/references/patterns.md +511 -0
  72. package/plugins/devflow-code-review/skills/frontend-design/references/violations.md +453 -0
  73. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +154 -0
  74. package/plugins/devflow-code-review/skills/performance-patterns/references/detection.md +351 -0
  75. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +503 -0
  76. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +354 -0
  77. package/plugins/devflow-code-review/skills/react/SKILL.md +276 -0
  78. package/plugins/devflow-code-review/skills/react/references/patterns.md +1331 -0
  79. package/plugins/devflow-code-review/skills/react/references/violations.md +565 -0
  80. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +146 -0
  81. package/plugins/devflow-code-review/skills/regression-patterns/references/detection.md +237 -0
  82. package/plugins/devflow-code-review/skills/regression-patterns/references/patterns.md +226 -0
  83. package/plugins/devflow-code-review/skills/regression-patterns/references/violations.md +225 -0
  84. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +119 -0
  85. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +186 -0
  86. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +142 -0
  87. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +125 -0
  88. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +156 -0
  89. package/plugins/devflow-code-review/skills/security-patterns/references/detection.md +287 -0
  90. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +507 -0
  91. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +237 -0
  92. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +183 -0
  93. package/plugins/devflow-code-review/skills/test-patterns/references/detection.md +149 -0
  94. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +220 -0
  95. package/plugins/devflow-code-review/skills/test-patterns/references/report-template.md +108 -0
  96. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +221 -0
  97. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +27 -0
  98. package/plugins/devflow-core-skills/README.md +50 -0
  99. package/plugins/devflow-core-skills/skills/accessibility/SKILL.md +229 -0
  100. package/plugins/devflow-core-skills/skills/accessibility/references/detection.md +171 -0
  101. package/plugins/devflow-core-skills/skills/accessibility/references/patterns.md +670 -0
  102. package/plugins/devflow-core-skills/skills/accessibility/references/violations.md +419 -0
  103. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +162 -0
  104. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +276 -0
  105. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +144 -0
  106. package/plugins/devflow-core-skills/skills/core-patterns/references/detection.md +303 -0
  107. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +576 -0
  108. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +369 -0
  109. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +134 -0
  110. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +346 -0
  111. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +221 -0
  112. package/plugins/devflow-core-skills/skills/frontend-design/SKILL.md +254 -0
  113. package/plugins/devflow-core-skills/skills/frontend-design/references/detection.md +184 -0
  114. package/plugins/devflow-core-skills/skills/frontend-design/references/patterns.md +511 -0
  115. package/plugins/devflow-core-skills/skills/frontend-design/references/violations.md +453 -0
  116. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +122 -0
  117. package/plugins/devflow-core-skills/skills/git-safety/references/detection.md +290 -0
  118. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +289 -0
  119. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +18 -0
  120. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +158 -0
  121. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +115 -0
  122. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +77 -0
  123. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +127 -0
  124. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +96 -0
  125. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +153 -0
  126. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +572 -0
  127. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +298 -0
  128. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +148 -0
  129. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +283 -0
  130. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +361 -0
  131. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +224 -0
  132. package/plugins/devflow-core-skills/skills/react/SKILL.md +276 -0
  133. package/plugins/devflow-core-skills/skills/react/references/patterns.md +1331 -0
  134. package/plugins/devflow-core-skills/skills/react/references/violations.md +565 -0
  135. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +183 -0
  136. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +149 -0
  137. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +220 -0
  138. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +108 -0
  139. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +221 -0
  140. package/plugins/devflow-core-skills/skills/typescript/SKILL.md +176 -0
  141. package/plugins/devflow-core-skills/skills/typescript/references/patterns.md +1105 -0
  142. package/plugins/devflow-core-skills/skills/typescript/references/violations.md +433 -0
  143. package/plugins/devflow-debug/.claude-plugin/plugin.json +18 -0
  144. package/plugins/devflow-debug/README.md +65 -0
  145. package/plugins/devflow-debug/agents/git.md +272 -0
  146. package/plugins/devflow-debug/commands/debug-teams.md +231 -0
  147. package/plugins/devflow-debug/commands/debug.md +160 -0
  148. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +124 -0
  149. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +104 -0
  150. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +122 -0
  151. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +217 -0
  152. package/plugins/devflow-debug/skills/git-safety/SKILL.md +122 -0
  153. package/plugins/devflow-debug/skills/git-safety/references/detection.md +290 -0
  154. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +289 -0
  155. package/plugins/devflow-debug/skills/git-safety/references/violations.md +18 -0
  156. package/plugins/devflow-implement/.claude-plugin/plugin.json +21 -0
  157. package/plugins/devflow-implement/README.md +71 -0
  158. package/plugins/devflow-implement/agents/coder.md +122 -0
  159. package/plugins/devflow-implement/agents/git.md +272 -0
  160. package/plugins/devflow-implement/agents/scrutinizer.md +80 -0
  161. package/plugins/devflow-implement/agents/shepherd.md +94 -0
  162. package/plugins/devflow-implement/agents/simplifier.md +62 -0
  163. package/plugins/devflow-implement/agents/skimmer.md +88 -0
  164. package/plugins/devflow-implement/agents/synthesizer.md +204 -0
  165. package/plugins/devflow-implement/agents/validator.md +86 -0
  166. package/plugins/devflow-implement/commands/implement-teams.md +608 -0
  167. package/plugins/devflow-implement/commands/implement.md +426 -0
  168. package/plugins/devflow-implement/skills/accessibility/SKILL.md +229 -0
  169. package/plugins/devflow-implement/skills/accessibility/references/detection.md +171 -0
  170. package/plugins/devflow-implement/skills/accessibility/references/patterns.md +670 -0
  171. package/plugins/devflow-implement/skills/accessibility/references/violations.md +419 -0
  172. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +124 -0
  173. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +104 -0
  174. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +122 -0
  175. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +217 -0
  176. package/plugins/devflow-implement/skills/frontend-design/SKILL.md +254 -0
  177. package/plugins/devflow-implement/skills/frontend-design/references/detection.md +184 -0
  178. package/plugins/devflow-implement/skills/frontend-design/references/patterns.md +511 -0
  179. package/plugins/devflow-implement/skills/frontend-design/references/violations.md +453 -0
  180. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +162 -0
  181. package/plugins/devflow-implement/skills/implementation-patterns/references/patterns.md +1063 -0
  182. package/plugins/devflow-implement/skills/implementation-patterns/references/violations.md +483 -0
  183. package/plugins/devflow-implement/skills/self-review/SKILL.md +149 -0
  184. package/plugins/devflow-implement/skills/self-review/references/patterns.md +405 -0
  185. package/plugins/devflow-implement/skills/self-review/references/report-template.md +253 -0
  186. package/plugins/devflow-implement/skills/self-review/references/violations.md +308 -0
  187. package/plugins/devflow-resolve/.claude-plugin/plugin.json +19 -0
  188. package/plugins/devflow-resolve/README.md +65 -0
  189. package/plugins/devflow-resolve/agents/git.md +272 -0
  190. package/plugins/devflow-resolve/agents/resolver.md +131 -0
  191. package/plugins/devflow-resolve/agents/simplifier.md +62 -0
  192. package/plugins/devflow-resolve/commands/resolve-teams.md +298 -0
  193. package/plugins/devflow-resolve/commands/resolve.md +237 -0
  194. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +124 -0
  195. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +104 -0
  196. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +122 -0
  197. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +217 -0
  198. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +162 -0
  199. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +1063 -0
  200. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +483 -0
  201. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +156 -0
  202. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +287 -0
  203. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +507 -0
  204. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +237 -0
  205. package/plugins/devflow-self-review/.claude-plugin/plugin.json +7 -0
  206. package/plugins/devflow-self-review/README.md +38 -0
  207. package/plugins/devflow-self-review/agents/scrutinizer.md +80 -0
  208. package/plugins/devflow-self-review/agents/simplifier.md +62 -0
  209. package/plugins/devflow-self-review/agents/validator.md +86 -0
  210. package/plugins/devflow-self-review/commands/self-review.md +126 -0
  211. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +162 -0
  212. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +276 -0
  213. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +144 -0
  214. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +303 -0
  215. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +576 -0
  216. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +369 -0
  217. package/plugins/devflow-self-review/skills/self-review/SKILL.md +149 -0
  218. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +405 -0
  219. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +253 -0
  220. package/plugins/devflow-self-review/skills/self-review/references/violations.md +308 -0
  221. package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -0
  222. package/plugins/devflow-specify/README.md +46 -0
  223. package/plugins/devflow-specify/agents/skimmer.md +88 -0
  224. package/plugins/devflow-specify/agents/synthesizer.md +204 -0
  225. package/plugins/devflow-specify/commands/specify-teams.md +314 -0
  226. package/plugins/devflow-specify/commands/specify.md +179 -0
  227. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +124 -0
  228. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +104 -0
  229. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +122 -0
  230. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +217 -0
  231. package/scripts/hooks/background-memory-update.sh +167 -0
  232. package/scripts/hooks/pre-compact-memory.sh +81 -0
  233. package/scripts/hooks/session-start-memory.sh +84 -0
  234. package/scripts/hooks/stop-update-memory.sh +81 -0
  235. package/shared/agents/coder.md +122 -0
  236. package/shared/agents/git.md +272 -0
  237. package/shared/agents/resolver.md +131 -0
  238. package/shared/agents/reviewer.md +119 -0
  239. package/shared/agents/scrutinizer.md +80 -0
  240. package/shared/agents/shepherd.md +94 -0
  241. package/shared/agents/simplifier.md +62 -0
  242. package/shared/agents/skimmer.md +88 -0
  243. package/shared/agents/synthesizer.md +204 -0
  244. package/shared/agents/validator.md +86 -0
  245. package/shared/skills/accessibility/SKILL.md +229 -0
  246. package/shared/skills/accessibility/references/detection.md +171 -0
  247. package/shared/skills/accessibility/references/patterns.md +670 -0
  248. package/shared/skills/accessibility/references/violations.md +419 -0
  249. package/shared/skills/agent-teams/SKILL.md +124 -0
  250. package/shared/skills/agent-teams/references/cleanup.md +104 -0
  251. package/shared/skills/agent-teams/references/communication.md +122 -0
  252. package/shared/skills/agent-teams/references/team-patterns.md +217 -0
  253. package/shared/skills/architecture-patterns/SKILL.md +153 -0
  254. package/shared/skills/architecture-patterns/references/detection.md +337 -0
  255. package/shared/skills/architecture-patterns/references/patterns.md +873 -0
  256. package/shared/skills/architecture-patterns/references/violations.md +575 -0
  257. package/shared/skills/complexity-patterns/SKILL.md +143 -0
  258. package/shared/skills/complexity-patterns/references/detection.md +264 -0
  259. package/shared/skills/complexity-patterns/references/patterns.md +487 -0
  260. package/shared/skills/complexity-patterns/references/violations.md +361 -0
  261. package/shared/skills/consistency-patterns/SKILL.md +140 -0
  262. package/shared/skills/consistency-patterns/references/detection.md +207 -0
  263. package/shared/skills/consistency-patterns/references/patterns.md +202 -0
  264. package/shared/skills/consistency-patterns/references/violations.md +213 -0
  265. package/shared/skills/core-patterns/SKILL.md +162 -0
  266. package/shared/skills/core-patterns/references/checklist.md +276 -0
  267. package/shared/skills/core-patterns/references/code-smell-violations.md +144 -0
  268. package/shared/skills/core-patterns/references/detection.md +303 -0
  269. package/shared/skills/core-patterns/references/patterns.md +576 -0
  270. package/shared/skills/core-patterns/references/violations.md +369 -0
  271. package/shared/skills/database-patterns/SKILL.md +134 -0
  272. package/shared/skills/database-patterns/references/detection.md +208 -0
  273. package/shared/skills/database-patterns/references/patterns.md +394 -0
  274. package/shared/skills/database-patterns/references/violations.md +332 -0
  275. package/shared/skills/dependencies-patterns/SKILL.md +141 -0
  276. package/shared/skills/dependencies-patterns/references/detection.md +181 -0
  277. package/shared/skills/dependencies-patterns/references/patterns.md +225 -0
  278. package/shared/skills/dependencies-patterns/references/violations.md +247 -0
  279. package/shared/skills/docs-framework/SKILL.md +134 -0
  280. package/shared/skills/docs-framework/references/patterns.md +346 -0
  281. package/shared/skills/docs-framework/references/violations.md +221 -0
  282. package/shared/skills/documentation-patterns/SKILL.md +125 -0
  283. package/shared/skills/documentation-patterns/references/detection.md +190 -0
  284. package/shared/skills/documentation-patterns/references/patterns.md +189 -0
  285. package/shared/skills/documentation-patterns/references/violations.md +163 -0
  286. package/shared/skills/frontend-design/SKILL.md +254 -0
  287. package/shared/skills/frontend-design/references/detection.md +184 -0
  288. package/shared/skills/frontend-design/references/patterns.md +511 -0
  289. package/shared/skills/frontend-design/references/violations.md +453 -0
  290. package/shared/skills/git-safety/SKILL.md +122 -0
  291. package/shared/skills/git-safety/references/detection.md +290 -0
  292. package/shared/skills/git-safety/references/patterns.md +289 -0
  293. package/shared/skills/git-safety/references/violations.md +18 -0
  294. package/shared/skills/git-workflow/SKILL.md +158 -0
  295. package/shared/skills/git-workflow/references/commit-patterns.md +115 -0
  296. package/shared/skills/git-workflow/references/commit-violations.md +77 -0
  297. package/shared/skills/git-workflow/references/pr-patterns.md +127 -0
  298. package/shared/skills/git-workflow/references/pr-violations.md +96 -0
  299. package/shared/skills/github-patterns/SKILL.md +153 -0
  300. package/shared/skills/github-patterns/references/patterns.md +572 -0
  301. package/shared/skills/github-patterns/references/violations.md +298 -0
  302. package/shared/skills/implementation-patterns/SKILL.md +162 -0
  303. package/shared/skills/implementation-patterns/references/patterns.md +1063 -0
  304. package/shared/skills/implementation-patterns/references/violations.md +483 -0
  305. package/shared/skills/input-validation/SKILL.md +148 -0
  306. package/shared/skills/input-validation/references/detection.md +283 -0
  307. package/shared/skills/input-validation/references/patterns.md +361 -0
  308. package/shared/skills/input-validation/references/violations.md +224 -0
  309. package/shared/skills/performance-patterns/SKILL.md +154 -0
  310. package/shared/skills/performance-patterns/references/detection.md +351 -0
  311. package/shared/skills/performance-patterns/references/patterns.md +503 -0
  312. package/shared/skills/performance-patterns/references/violations.md +354 -0
  313. package/shared/skills/react/SKILL.md +276 -0
  314. package/shared/skills/react/references/patterns.md +1331 -0
  315. package/shared/skills/react/references/violations.md +565 -0
  316. package/shared/skills/regression-patterns/SKILL.md +146 -0
  317. package/shared/skills/regression-patterns/references/detection.md +237 -0
  318. package/shared/skills/regression-patterns/references/patterns.md +226 -0
  319. package/shared/skills/regression-patterns/references/violations.md +225 -0
  320. package/shared/skills/review-methodology/SKILL.md +119 -0
  321. package/shared/skills/review-methodology/references/patterns.md +186 -0
  322. package/shared/skills/review-methodology/references/report-template.md +142 -0
  323. package/shared/skills/review-methodology/references/violations.md +125 -0
  324. package/shared/skills/security-patterns/SKILL.md +156 -0
  325. package/shared/skills/security-patterns/references/detection.md +287 -0
  326. package/shared/skills/security-patterns/references/patterns.md +507 -0
  327. package/shared/skills/security-patterns/references/violations.md +237 -0
  328. package/shared/skills/self-review/SKILL.md +149 -0
  329. package/shared/skills/self-review/references/patterns.md +405 -0
  330. package/shared/skills/self-review/references/report-template.md +253 -0
  331. package/shared/skills/self-review/references/violations.md +308 -0
  332. package/shared/skills/test-patterns/SKILL.md +183 -0
  333. package/shared/skills/test-patterns/references/detection.md +149 -0
  334. package/shared/skills/test-patterns/references/patterns.md +220 -0
  335. package/shared/skills/test-patterns/references/report-template.md +108 -0
  336. package/shared/skills/test-patterns/references/violations.md +221 -0
  337. package/shared/skills/typescript/SKILL.md +176 -0
  338. package/shared/skills/typescript/references/patterns.md +1105 -0
  339. package/shared/skills/typescript/references/violations.md +433 -0
  340. package/src/templates/claudeignore.template +188 -0
  341. package/src/templates/managed-settings.json +146 -0
  342. package/src/templates/settings.json +59 -0
  343. package/dist/cli.d.ts.map +0 -1
  344. package/dist/cli.js.map +0 -1
  345. package/dist/commands/init.d.ts.map +0 -1
  346. package/dist/commands/init.js.map +0 -1
  347. package/dist/commands/uninstall.d.ts.map +0 -1
  348. package/dist/commands/uninstall.js.map +0 -1
  349. package/dist/utils/git.d.ts.map +0 -1
  350. package/dist/utils/git.js.map +0 -1
  351. package/dist/utils/paths.d.ts.map +0 -1
  352. package/dist/utils/paths.js.map +0 -1
  353. package/src/claude/CLAUDE.md +0 -400
  354. package/src/claude/agents/devflow/audit-architecture.md +0 -132
  355. package/src/claude/agents/devflow/audit-complexity.md +0 -132
  356. package/src/claude/agents/devflow/audit-database.md +0 -132
  357. package/src/claude/agents/devflow/audit-dependencies.md +0 -132
  358. package/src/claude/agents/devflow/audit-documentation.md +0 -132
  359. package/src/claude/agents/devflow/audit-performance.md +0 -256
  360. package/src/claude/agents/devflow/audit-security.md +0 -259
  361. package/src/claude/agents/devflow/audit-tests.md +0 -132
  362. package/src/claude/agents/devflow/audit-typescript.md +0 -132
  363. package/src/claude/agents/devflow/brainstorm.md +0 -279
  364. package/src/claude/agents/devflow/catch-up.md +0 -345
  365. package/src/claude/agents/devflow/code-review.md +0 -307
  366. package/src/claude/agents/devflow/commit.md +0 -380
  367. package/src/claude/agents/devflow/debug.md +0 -476
  368. package/src/claude/agents/devflow/design.md +0 -491
  369. package/src/claude/agents/devflow/pr-comments.md +0 -285
  370. package/src/claude/agents/devflow/project-state.md +0 -419
  371. package/src/claude/agents/devflow/pull-request.md +0 -423
  372. package/src/claude/agents/devflow/release.md +0 -1137
  373. package/src/claude/agents/devflow/tech-debt.md +0 -338
  374. package/src/claude/commands/devflow/brainstorm.md +0 -68
  375. package/src/claude/commands/devflow/breakdown.md +0 -125
  376. package/src/claude/commands/devflow/catch-up.md +0 -29
  377. package/src/claude/commands/devflow/code-review.md +0 -237
  378. package/src/claude/commands/devflow/commit.md +0 -17
  379. package/src/claude/commands/devflow/debug.md +0 -56
  380. package/src/claude/commands/devflow/design.md +0 -82
  381. package/src/claude/commands/devflow/devlog.md +0 -408
  382. package/src/claude/commands/devflow/implement.md +0 -100
  383. package/src/claude/commands/devflow/plan.md +0 -223
  384. package/src/claude/commands/devflow/pull-request.md +0 -269
  385. package/src/claude/commands/devflow/release.md +0 -251
  386. package/src/claude/commands/devflow/resolve-comments.md +0 -583
  387. package/src/claude/scripts/statusline.sh +0 -47
  388. package/src/claude/settings.json +0 -6
  389. package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
  390. package/src/claude/skills/devflow/debug/SKILL.md +0 -119
  391. package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
  392. package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
  393. package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
  394. package/src/claude/skills/devflow/research/SKILL.md +0 -138
  395. package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
@@ -0,0 +1,220 @@
1
+ # Test Patterns - Correct Examples
2
+
3
+ Reference for proper test patterns and approaches.
4
+
5
+ ---
6
+
7
+ ## Simple Setup Patterns
8
+
9
+ ### Pure Function Testing
10
+
11
+ ```typescript
12
+ // CORRECT: Simple setup indicates good design
13
+ describe('createUser', () => {
14
+ it('should return Ok with valid data', () => {
15
+ const result = createUser({ name: 'test', email: 'test@example.com' });
16
+ expect(result.ok).toBe(true);
17
+ expect(result.value.name).toBe('test');
18
+ });
19
+
20
+ it('should return Err with invalid email', () => {
21
+ const result = createUser({ name: 'test', email: 'invalid' });
22
+ expect(result.ok).toBe(false);
23
+ expect(result.error.type).toBe('ValidationError');
24
+ });
25
+ });
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Minimal Mocking Patterns
31
+
32
+ ### Single Dependency Injection
33
+
34
+ ```typescript
35
+ // CORRECT: Single mock for focused test
36
+ describe('OrderCalculator', () => {
37
+ it('should calculate total with tax', () => {
38
+ const taxService = { getRate: () => 0.1 }; // Simple mock
39
+ const calculator = new OrderCalculator(taxService);
40
+ const result = calculator.calculateTotal([
41
+ { price: 100, quantity: 2 },
42
+ { price: 50, quantity: 1 },
43
+ ]);
44
+ expect(result).toBe(275);
45
+ });
46
+ });
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Behavior-Focused Testing
52
+
53
+ ```typescript
54
+ // CORRECT: Testing behavior, not implementation
55
+ describe('ShoppingCart', () => {
56
+ it('should calculate correct total after adding items', () => {
57
+ const cart = new ShoppingCart();
58
+ cart.addItem({ id: '1', price: 10 });
59
+ cart.addItem({ id: '2', price: 20 });
60
+ expect(cart.getTotal()).toBe(30);
61
+ });
62
+
63
+ it('should be empty after clearing', () => {
64
+ const cart = new ShoppingCart();
65
+ cart.addItem({ id: '1', price: 10 });
66
+ cart.clear();
67
+ expect(cart.getItems()).toEqual([]);
68
+ expect(cart.getTotal()).toBe(0);
69
+ });
70
+ });
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Coverage Patterns
76
+
77
+ ### Branch Coverage
78
+
79
+ ```typescript
80
+ describe('calculateDiscount', () => {
81
+ it('returns 10% for regular customers', () => {
82
+ expect(calculateDiscount(100, 'regular')).toBe(10);
83
+ });
84
+ it('returns 20% for premium customers', () => {
85
+ expect(calculateDiscount(100, 'premium')).toBe(20);
86
+ });
87
+ it('returns 30% for VIP customers', () => {
88
+ expect(calculateDiscount(100, 'vip')).toBe(30);
89
+ });
90
+ });
91
+ ```
92
+
93
+ ### Error Path Coverage
94
+
95
+ ```typescript
96
+ describe('fetchUser', () => {
97
+ it('returns user data on success', async () => { /* ... */ });
98
+ it('throws ApiError on 404', async () => {
99
+ api.get.mockResolvedValue({ ok: false, status: 404 });
100
+ await expect(fetchUser('123')).rejects.toThrow(ApiError);
101
+ });
102
+ it('handles network errors', async () => {
103
+ api.get.mockRejectedValue(new Error('Network error'));
104
+ await expect(fetchUser('123')).rejects.toThrow('Network error');
105
+ });
106
+ });
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Separation of Concerns Testing
112
+
113
+ ```typescript
114
+ // CORRECT: Business logic tested without I/O
115
+ describe('OrderPricing (pure logic)', () => {
116
+ it('should calculate subtotal', () => {
117
+ const items = [{ price: 100, quantity: 2 }, { price: 50, quantity: 1 }];
118
+ expect(calculateSubtotal(items)).toBe(250);
119
+ });
120
+ it('should apply percentage discount', () => {
121
+ expect(applyDiscount(100, { type: 'percent', value: 20 })).toBe(80);
122
+ });
123
+ });
124
+
125
+ // Integration test for I/O wrapper
126
+ describe('OrderService (integration)', () => {
127
+ it('should persist order and return result', async () => {
128
+ const mockRepo = { save: jest.fn().mockResolvedValue({ id: '1' }) };
129
+ const service = new OrderService(mockRepo);
130
+ const result = await service.createOrder({ items: [{ price: 100, quantity: 1 }] });
131
+ expect(result.ok).toBe(true);
132
+ });
133
+ });
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Parameterized Testing
139
+
140
+ ```typescript
141
+ describe('validateEmail', () => {
142
+ const validEmails = ['test@example.com', 'user.name@domain.org', 'user+tag@example.co.uk'];
143
+ const invalidEmails = ['', 'invalid', '@nodomain.com', 'spaces in@email.com'];
144
+
145
+ test.each(validEmails)('should accept valid email: %s', (email) => {
146
+ expect(validateEmail(email).ok).toBe(true);
147
+ });
148
+
149
+ test.each(invalidEmails)('should reject invalid email: %s', (email) => {
150
+ expect(validateEmail(email).ok).toBe(false);
151
+ });
152
+ });
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Boundary Mocking
158
+
159
+ ```typescript
160
+ // CORRECT: Wrap third-party libraries in your own interface
161
+ interface HttpClient {
162
+ get<T>(url: string): Promise<T>;
163
+ }
164
+
165
+ class MockHttpClient implements HttpClient {
166
+ private responses: Map<string, any> = new Map();
167
+ mockResponse(url: string, data: any) { this.responses.set(url, data); }
168
+ async get<T>(url: string): Promise<T> { return this.responses.get(url); }
169
+ }
170
+
171
+ // Tests use MockHttpClient, production uses AxiosHttpClient
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Test Organization
177
+
178
+ ```typescript
179
+ describe('UserService', () => {
180
+ let service: UserService;
181
+ let repo: InMemoryUserRepo;
182
+
183
+ beforeEach(() => {
184
+ repo = new InMemoryUserRepo();
185
+ service = new UserService(repo);
186
+ });
187
+
188
+ describe('create', () => {
189
+ it('creates user with valid data', async () => { /* ... */ });
190
+ it('rejects invalid email', async () => { /* ... */ });
191
+ });
192
+
193
+ describe('update', () => {
194
+ it('updates existing user', async () => { /* ... */ });
195
+ it('returns error for non-existent user', async () => { /* ... */ });
196
+ });
197
+ });
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Test Data Factories
203
+
204
+ ```typescript
205
+ // CORRECT: Factories for test data, not test setup
206
+ const createTestUser = (overrides = {}): User => ({
207
+ id: 'test-id',
208
+ name: 'Test User',
209
+ email: 'test@example.com',
210
+ role: 'user',
211
+ ...overrides,
212
+ });
213
+
214
+ describe('UserPermissions', () => {
215
+ it('should allow admin to delete users', () => {
216
+ const admin = createTestUser({ role: 'admin' });
217
+ expect(canDeleteUser(admin)).toBe(true);
218
+ });
219
+ });
220
+ ```
@@ -0,0 +1,108 @@
1
+ # Test Quality Report Template
2
+
3
+ Use this template when reporting test design issues.
4
+
5
+ ---
6
+
7
+ ## Report Format
8
+
9
+ ```markdown
10
+ ## Test Design Issues Detected
11
+
12
+ ## [SEVERITY] - [Category] ([Root Cause Type])
13
+ **File**: path/to/file.test.ts:line-range
14
+ **Issue**: Brief description of the problem
15
+ **Root Cause**: What architectural issue causes this
16
+ **Symptom**:
17
+ ```code
18
+ // The problematic code snippet
19
+ ```
20
+ **Correct Design**:
21
+ ```code
22
+ // What good design looks like
23
+ ```
24
+ **Action Required**: Specific action to fix
25
+
26
+ ## Summary
27
+ - **Critical**: N issues (block implementation)
28
+ - **High**: N issues (refactor needed)
29
+ - **Files affected**: N test files
30
+ - **Root cause**: Brief architectural diagnosis
31
+
32
+ ## STOP - Design Issues Detected
33
+
34
+ [List fundamental design flaws discovered]
35
+
36
+ **DO NOT work around these issues in tests.**
37
+ **DO NOT add more complex test helpers.**
38
+ **DO NOT mock more things to make tests pass.**
39
+
40
+ ## Next Steps
41
+
42
+ 1. **STOP writing tests** - Current design cannot be tested simply
43
+ 2. **ANALYZE root cause** - Identify architectural issue
44
+ 3. **PROPOSE redesign** - Show correct pattern
45
+ 4. **GET APPROVAL** - User confirms design changes
46
+ 5. **IMPLEMENT redesign** - Fix architecture first
47
+ 6. **WRITE SIMPLE TESTS** - Tests should be trivial after redesign
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Severity Levels
53
+
54
+ | Severity | Use For | Examples |
55
+ |----------|---------|---------|
56
+ | **CRITICAL** | Fundamental design flaws | Complex setup >10 lines, repetitive boilerplate >3 times, mock objects >5 methods, testing private methods |
57
+ | **HIGH** | Maintenance complications | Difficult mocking >20 lines, implementation testing, environment manipulation, database seeding |
58
+ | **MEDIUM** | Reduced clarity | Test helper abuse, inconsistent assertion patterns, missing edge case coverage |
59
+ | **LOW** | Minor improvements | Organization, naming clarity |
60
+
61
+ ---
62
+
63
+ ## Category Labels
64
+
65
+ | Category | Root Cause Type | Indicates |
66
+ |----------|-----------------|-----------|
67
+ | Complex Setup | Design Problem | Too many dependencies |
68
+ | Repetitive Boilerplate | API Problem | Inconsistent error handling |
69
+ | Difficult Mocking | Coupling Problem | Tight coupling to externals |
70
+ | Implementation Testing | Fragile Tests | Tests coupled to internals |
71
+ | Environment Manipulation | DI Problem | Direct environment access |
72
+ | Database Seeding | Separation Problem | Logic mixed with data access |
73
+
74
+ ---
75
+
76
+ ## Test Suite Safety Configuration
77
+
78
+ ### Full Configuration Examples
79
+
80
+ ```typescript
81
+ // vitest.config.ts
82
+ export default defineConfig({
83
+ test: {
84
+ fileParallelism: false,
85
+ maxWorkers: 1,
86
+ pool: 'forks',
87
+ testTimeout: 10000,
88
+ }
89
+ });
90
+
91
+ // jest.config.js
92
+ module.exports = {
93
+ maxWorkers: 1,
94
+ runInBand: true,
95
+ testTimeout: 10000,
96
+ };
97
+ ```
98
+
99
+ ```bash
100
+ # Memory limits
101
+ NODE_OPTIONS="--max-old-space-size=512" npm test
102
+
103
+ # Go
104
+ go test -p 1 ./...
105
+
106
+ # Rust
107
+ cargo test -- --test-threads=1
108
+ ```
@@ -0,0 +1,221 @@
1
+ # Test Pattern Violations - Extended Examples
2
+
3
+ Reference examples for common test quality violations across both design and review contexts.
4
+
5
+ ---
6
+
7
+ ## Complex Setup Violations
8
+
9
+ ### Multi-Dependency Service Setup
10
+
11
+ ```typescript
12
+ // VIOLATION: Complex setup indicates design problem
13
+ describe('UserService', () => {
14
+ let service: UserService;
15
+ let mockDb: MockDatabase;
16
+ let mockCache: MockCache;
17
+ let mockLogger: MockLogger;
18
+ let mockConfig: MockConfig;
19
+
20
+ beforeEach(async () => {
21
+ mockDb = new MockDatabase();
22
+ await mockDb.connect();
23
+ await mockDb.seed();
24
+ mockCache = new MockCache();
25
+ mockCache.clear();
26
+ mockLogger = new MockLogger();
27
+ mockConfig = new MockConfig();
28
+ mockConfig.set('env', 'test');
29
+ // ... 10+ more lines
30
+ service = new UserService(mockDb, mockCache, mockLogger, mockConfig);
31
+ });
32
+
33
+ it('should create user', async () => {
34
+ const result = await service.createUser({ name: 'test' });
35
+ expect(result.ok).toBe(true);
36
+ });
37
+ });
38
+ ```
39
+
40
+ **Root Cause**: UserService has too many dependencies (6+ injected services)
41
+
42
+ **Solution**: Split into focused services with single responsibility
43
+
44
+ ---
45
+
46
+ ## Repetitive Boilerplate Violations
47
+
48
+ ### Try/Catch Pattern Repetition
49
+
50
+ ```typescript
51
+ // VIOLATION: Repetitive error handling indicates API problem
52
+ describe('API endpoints', () => {
53
+ it('should handle user creation error', async () => {
54
+ try {
55
+ await api.createUser(invalidData);
56
+ fail('Should have thrown');
57
+ } catch (error) {
58
+ expect(error.status).toBe(400);
59
+ expect(error.message).toContain('validation');
60
+ }
61
+ });
62
+
63
+ // ... repeated pattern 10+ times
64
+ });
65
+ ```
66
+
67
+ **Root Cause**: API throws exceptions instead of returning Results
68
+
69
+ **Solution**: Migrate API to Result pattern
70
+
71
+ ---
72
+
73
+ ## Difficult Mocking Violations
74
+
75
+ ### Nested Mock Object Structures
76
+
77
+ ```typescript
78
+ // VIOLATION: Complex mocking indicates tight coupling
79
+ beforeEach(() => {
80
+ mockDb = {
81
+ transaction: jest.fn((callback) => callback(mockDb)),
82
+ orders: { create: jest.fn(), update: jest.fn(), findById: jest.fn() },
83
+ users: { findById: jest.fn(), update: jest.fn() },
84
+ inventory: { decrement: jest.fn(), check: jest.fn(), reserve: jest.fn() }
85
+ };
86
+ // 5+ more mock objects...
87
+ });
88
+ ```
89
+
90
+ **Root Cause**: OrderProcessor directly depends on too many external systems
91
+
92
+ **Solution**: Separate pure business logic from I/O; use composition
93
+
94
+ ---
95
+
96
+ ## Implementation Testing Violations
97
+
98
+ ### Spying on Private Methods
99
+
100
+ ```typescript
101
+ // VIOLATION: Testing implementation details
102
+ it('should call updateTotal after addItem', () => {
103
+ const cart = new ShoppingCart();
104
+ const spy = jest.spyOn(cart as any, 'updateTotal');
105
+ cart.addItem({ id: '1', price: 10 });
106
+ expect(spy).toHaveBeenCalled(); // Testing implementation!
107
+ });
108
+ ```
109
+
110
+ **Root Cause**: Tests coupled to implementation details
111
+
112
+ **Solution**: Test observable behavior only
113
+
114
+ ---
115
+
116
+ ## Coverage Violations
117
+
118
+ ### Missing Edge Cases
119
+
120
+ ```typescript
121
+ // INCOMPLETE TESTS
122
+ describe('divide', () => {
123
+ it('divides two numbers', () => {
124
+ expect(divide(10, 2)).toBe(5); // Happy path only
125
+ });
126
+ });
127
+
128
+ // COMPLETE TESTS
129
+ describe('divide', () => {
130
+ it('divides two positive numbers', () => { expect(divide(10, 2)).toBe(5); });
131
+ it('handles division by zero', () => { expect(divide(10, 0)).toBe(Infinity); });
132
+ it('handles negative numbers', () => { expect(divide(-10, 2)).toBe(-5); });
133
+ it('handles decimal results', () => { expect(divide(10, 3)).toBeCloseTo(3.333, 2); });
134
+ });
135
+ ```
136
+
137
+ ### Unclear Test Names
138
+
139
+ ```typescript
140
+ // UNCLEAR: What does this test?
141
+ it('test1', () => { /* ... */ });
142
+ it('should work', () => { /* ... */ });
143
+
144
+ // CLEAR: Describes behavior
145
+ it('validates email format on creation', () => { /* ... */ });
146
+ it('rejects passwords shorter than 8 characters', () => { /* ... */ });
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Test Design Violations
152
+
153
+ ### Slow Tests (Real Delays)
154
+
155
+ ```typescript
156
+ // SLOW: Real delays
157
+ const result = await fetchWithRetry(); // Waits real 1000ms
158
+
159
+ // FAST: Mock timers
160
+ jest.useFakeTimers();
161
+ const promise = fetchWithRetry();
162
+ jest.advanceTimersByTime(1000);
163
+ ```
164
+
165
+ ### Flaky Tests (Timing Dependencies)
166
+
167
+ ```typescript
168
+ // FLAKY: Race condition
169
+ subscribe(callback);
170
+ emit('update', { value: 1 });
171
+ expect(callback).toHaveBeenCalled(); // Might not have fired yet
172
+
173
+ // STABLE: Explicit waiting
174
+ const received = new Promise(resolve => { subscribe(data => resolve(data)); });
175
+ emit('update', { value: 1 });
176
+ const data = await received;
177
+ expect(data.value).toBe(1);
178
+ ```
179
+
180
+ ### Over-Mocking
181
+
182
+ ```typescript
183
+ // OVER-MOCKED: Tests nothing real
184
+ const mockValidator = { validate: jest.fn().mockReturnValue(true) };
185
+ const mockHasher = { hash: jest.fn().mockReturnValue('hashed') };
186
+ const mockRepo = { create: jest.fn().mockResolvedValue({ id: '1' }) };
187
+ // What did we actually test? Just that mocks were called.
188
+
189
+ // BETTER: Use real implementations where possible
190
+ const repo = new InMemoryUserRepo();
191
+ const service = new UserService(new RealValidator(), new RealHasher(), repo);
192
+ const saved = await repo.findByEmail('test@test.com');
193
+ expect(await bcrypt.compare('password', saved.password)).toBe(true);
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Environment & Database Violations
199
+
200
+ ### Environment Manipulation
201
+
202
+ ```typescript
203
+ // VIOLATION: Tests modifying environment
204
+ beforeEach(() => {
205
+ process.env = { ...process.env, DATABASE_URL: 'postgres://test', API_KEY: 'test-key' };
206
+ });
207
+ ```
208
+
209
+ **Solution**: Inject configuration as a dependency
210
+
211
+ ### Database State Dependencies
212
+
213
+ ```typescript
214
+ // VIOLATION: Tests depend on specific seeded data
215
+ beforeAll(async () => {
216
+ await db.users.insert([/* ... */]);
217
+ await db.orders.insert([/* ... */]);
218
+ });
219
+ ```
220
+
221
+ **Solution**: Separate data access from business logic; test calculation separately