devflow-kit 0.9.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/CHANGELOG.md +197 -29
  2. package/LICENSE +1 -1
  3. package/README.md +185 -309
  4. package/dist/cli.js +7 -1
  5. package/dist/commands/ambient.d.ts +18 -0
  6. package/dist/commands/ambient.js +136 -0
  7. package/dist/commands/init.d.ts +23 -0
  8. package/dist/commands/init.js +393 -571
  9. package/dist/commands/list.d.ts +3 -0
  10. package/dist/commands/list.js +20 -0
  11. package/dist/commands/memory.d.ts +22 -0
  12. package/dist/commands/memory.js +175 -0
  13. package/dist/commands/uninstall.d.ts +10 -0
  14. package/dist/commands/uninstall.js +418 -78
  15. package/dist/plugins.d.ts +46 -0
  16. package/dist/plugins.js +169 -0
  17. package/dist/utils/cli.d.ts +5 -0
  18. package/dist/utils/cli.js +14 -0
  19. package/dist/utils/installer.d.ts +41 -0
  20. package/dist/utils/installer.js +177 -0
  21. package/dist/utils/paths.d.ts +10 -0
  22. package/dist/utils/paths.js +23 -3
  23. package/dist/utils/post-install.d.ts +80 -0
  24. package/dist/utils/post-install.js +508 -0
  25. package/dist/utils/safe-delete-install.d.ts +29 -0
  26. package/dist/utils/safe-delete-install.js +191 -0
  27. package/dist/utils/safe-delete.d.ts +12 -0
  28. package/dist/utils/safe-delete.js +83 -0
  29. package/package.json +18 -8
  30. package/plugins/devflow-ambient/.claude-plugin/plugin.json +7 -0
  31. package/plugins/devflow-ambient/README.md +49 -0
  32. package/plugins/devflow-ambient/commands/ambient.md +110 -0
  33. package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +89 -0
  34. package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +64 -0
  35. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +7 -0
  36. package/plugins/devflow-audit-claude/README.md +46 -0
  37. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +134 -0
  38. package/plugins/devflow-audit-claude/commands/audit-claude.md +85 -0
  39. package/plugins/devflow-code-review/.claude-plugin/plugin.json +31 -0
  40. package/plugins/devflow-code-review/README.md +73 -0
  41. package/plugins/devflow-code-review/agents/git.md +272 -0
  42. package/plugins/devflow-code-review/agents/reviewer.md +119 -0
  43. package/plugins/devflow-code-review/agents/synthesizer.md +204 -0
  44. package/plugins/devflow-code-review/commands/code-review-teams.md +262 -0
  45. package/plugins/devflow-code-review/commands/code-review.md +141 -0
  46. package/plugins/devflow-code-review/skills/accessibility/SKILL.md +229 -0
  47. package/plugins/devflow-code-review/skills/accessibility/references/detection.md +171 -0
  48. package/plugins/devflow-code-review/skills/accessibility/references/patterns.md +670 -0
  49. package/plugins/devflow-code-review/skills/accessibility/references/violations.md +419 -0
  50. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +124 -0
  51. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +104 -0
  52. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +122 -0
  53. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +217 -0
  54. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +153 -0
  55. package/plugins/devflow-code-review/skills/architecture-patterns/references/detection.md +337 -0
  56. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +873 -0
  57. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +575 -0
  58. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +143 -0
  59. package/plugins/devflow-code-review/skills/complexity-patterns/references/detection.md +264 -0
  60. package/plugins/devflow-code-review/skills/complexity-patterns/references/patterns.md +487 -0
  61. package/plugins/devflow-code-review/skills/complexity-patterns/references/violations.md +361 -0
  62. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +140 -0
  63. package/plugins/devflow-code-review/skills/consistency-patterns/references/detection.md +207 -0
  64. package/plugins/devflow-code-review/skills/consistency-patterns/references/patterns.md +202 -0
  65. package/plugins/devflow-code-review/skills/consistency-patterns/references/violations.md +213 -0
  66. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +134 -0
  67. package/plugins/devflow-code-review/skills/database-patterns/references/detection.md +208 -0
  68. package/plugins/devflow-code-review/skills/database-patterns/references/patterns.md +394 -0
  69. package/plugins/devflow-code-review/skills/database-patterns/references/violations.md +332 -0
  70. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +141 -0
  71. package/plugins/devflow-code-review/skills/dependencies-patterns/references/detection.md +181 -0
  72. package/plugins/devflow-code-review/skills/dependencies-patterns/references/patterns.md +225 -0
  73. package/plugins/devflow-code-review/skills/dependencies-patterns/references/violations.md +247 -0
  74. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +125 -0
  75. package/plugins/devflow-code-review/skills/documentation-patterns/references/detection.md +190 -0
  76. package/plugins/devflow-code-review/skills/documentation-patterns/references/patterns.md +189 -0
  77. package/plugins/devflow-code-review/skills/documentation-patterns/references/violations.md +163 -0
  78. package/plugins/devflow-code-review/skills/frontend-design/SKILL.md +254 -0
  79. package/plugins/devflow-code-review/skills/frontend-design/references/detection.md +184 -0
  80. package/plugins/devflow-code-review/skills/frontend-design/references/patterns.md +511 -0
  81. package/plugins/devflow-code-review/skills/frontend-design/references/violations.md +453 -0
  82. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +154 -0
  83. package/plugins/devflow-code-review/skills/performance-patterns/references/detection.md +351 -0
  84. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +503 -0
  85. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +354 -0
  86. package/plugins/devflow-code-review/skills/react/SKILL.md +276 -0
  87. package/plugins/devflow-code-review/skills/react/references/patterns.md +1331 -0
  88. package/plugins/devflow-code-review/skills/react/references/violations.md +565 -0
  89. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +146 -0
  90. package/plugins/devflow-code-review/skills/regression-patterns/references/detection.md +237 -0
  91. package/plugins/devflow-code-review/skills/regression-patterns/references/patterns.md +226 -0
  92. package/plugins/devflow-code-review/skills/regression-patterns/references/violations.md +225 -0
  93. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +119 -0
  94. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +186 -0
  95. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +142 -0
  96. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +125 -0
  97. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +156 -0
  98. package/plugins/devflow-code-review/skills/security-patterns/references/detection.md +287 -0
  99. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +507 -0
  100. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +237 -0
  101. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +183 -0
  102. package/plugins/devflow-code-review/skills/test-patterns/references/detection.md +149 -0
  103. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +220 -0
  104. package/plugins/devflow-code-review/skills/test-patterns/references/report-template.md +108 -0
  105. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +221 -0
  106. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +28 -0
  107. package/plugins/devflow-core-skills/README.md +50 -0
  108. package/plugins/devflow-core-skills/skills/accessibility/SKILL.md +229 -0
  109. package/plugins/devflow-core-skills/skills/accessibility/references/detection.md +171 -0
  110. package/plugins/devflow-core-skills/skills/accessibility/references/patterns.md +670 -0
  111. package/plugins/devflow-core-skills/skills/accessibility/references/violations.md +419 -0
  112. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +162 -0
  113. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +276 -0
  114. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +144 -0
  115. package/plugins/devflow-core-skills/skills/core-patterns/references/detection.md +303 -0
  116. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +576 -0
  117. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +369 -0
  118. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +138 -0
  119. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +346 -0
  120. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +221 -0
  121. package/plugins/devflow-core-skills/skills/frontend-design/SKILL.md +254 -0
  122. package/plugins/devflow-core-skills/skills/frontend-design/references/detection.md +184 -0
  123. package/plugins/devflow-core-skills/skills/frontend-design/references/patterns.md +511 -0
  124. package/plugins/devflow-core-skills/skills/frontend-design/references/violations.md +453 -0
  125. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +122 -0
  126. package/plugins/devflow-core-skills/skills/git-safety/references/detection.md +290 -0
  127. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +289 -0
  128. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +18 -0
  129. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +158 -0
  130. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +115 -0
  131. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +77 -0
  132. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +127 -0
  133. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +96 -0
  134. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +153 -0
  135. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +572 -0
  136. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +298 -0
  137. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +148 -0
  138. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +283 -0
  139. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +361 -0
  140. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +224 -0
  141. package/plugins/devflow-core-skills/skills/react/SKILL.md +276 -0
  142. package/plugins/devflow-core-skills/skills/react/references/patterns.md +1331 -0
  143. package/plugins/devflow-core-skills/skills/react/references/violations.md +565 -0
  144. package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +139 -0
  145. package/plugins/devflow-core-skills/skills/test-driven-development/references/rationalization-prevention.md +111 -0
  146. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +183 -0
  147. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +149 -0
  148. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +220 -0
  149. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +108 -0
  150. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +221 -0
  151. package/plugins/devflow-core-skills/skills/typescript/SKILL.md +176 -0
  152. package/plugins/devflow-core-skills/skills/typescript/references/patterns.md +1105 -0
  153. package/plugins/devflow-core-skills/skills/typescript/references/violations.md +433 -0
  154. package/plugins/devflow-debug/.claude-plugin/plugin.json +18 -0
  155. package/plugins/devflow-debug/README.md +65 -0
  156. package/plugins/devflow-debug/agents/git.md +272 -0
  157. package/plugins/devflow-debug/commands/debug-teams.md +231 -0
  158. package/plugins/devflow-debug/commands/debug.md +160 -0
  159. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +124 -0
  160. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +104 -0
  161. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +122 -0
  162. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +217 -0
  163. package/plugins/devflow-debug/skills/git-safety/SKILL.md +122 -0
  164. package/plugins/devflow-debug/skills/git-safety/references/detection.md +290 -0
  165. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +289 -0
  166. package/plugins/devflow-debug/skills/git-safety/references/violations.md +18 -0
  167. package/plugins/devflow-implement/.claude-plugin/plugin.json +21 -0
  168. package/plugins/devflow-implement/README.md +71 -0
  169. package/plugins/devflow-implement/agents/coder.md +122 -0
  170. package/plugins/devflow-implement/agents/git.md +272 -0
  171. package/plugins/devflow-implement/agents/scrutinizer.md +80 -0
  172. package/plugins/devflow-implement/agents/shepherd.md +94 -0
  173. package/plugins/devflow-implement/agents/simplifier.md +62 -0
  174. package/plugins/devflow-implement/agents/skimmer.md +88 -0
  175. package/plugins/devflow-implement/agents/synthesizer.md +204 -0
  176. package/plugins/devflow-implement/agents/validator.md +86 -0
  177. package/plugins/devflow-implement/commands/implement-teams.md +608 -0
  178. package/plugins/devflow-implement/commands/implement.md +426 -0
  179. package/plugins/devflow-implement/skills/accessibility/SKILL.md +229 -0
  180. package/plugins/devflow-implement/skills/accessibility/references/detection.md +171 -0
  181. package/plugins/devflow-implement/skills/accessibility/references/patterns.md +670 -0
  182. package/plugins/devflow-implement/skills/accessibility/references/violations.md +419 -0
  183. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +124 -0
  184. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +104 -0
  185. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +122 -0
  186. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +217 -0
  187. package/plugins/devflow-implement/skills/frontend-design/SKILL.md +254 -0
  188. package/plugins/devflow-implement/skills/frontend-design/references/detection.md +184 -0
  189. package/plugins/devflow-implement/skills/frontend-design/references/patterns.md +511 -0
  190. package/plugins/devflow-implement/skills/frontend-design/references/violations.md +453 -0
  191. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +162 -0
  192. package/plugins/devflow-implement/skills/implementation-patterns/references/patterns.md +1063 -0
  193. package/plugins/devflow-implement/skills/implementation-patterns/references/violations.md +483 -0
  194. package/plugins/devflow-implement/skills/self-review/SKILL.md +149 -0
  195. package/plugins/devflow-implement/skills/self-review/references/patterns.md +405 -0
  196. package/plugins/devflow-implement/skills/self-review/references/report-template.md +253 -0
  197. package/plugins/devflow-implement/skills/self-review/references/violations.md +308 -0
  198. package/plugins/devflow-resolve/.claude-plugin/plugin.json +19 -0
  199. package/plugins/devflow-resolve/README.md +65 -0
  200. package/plugins/devflow-resolve/agents/git.md +272 -0
  201. package/plugins/devflow-resolve/agents/resolver.md +131 -0
  202. package/plugins/devflow-resolve/agents/simplifier.md +62 -0
  203. package/plugins/devflow-resolve/commands/resolve-teams.md +298 -0
  204. package/plugins/devflow-resolve/commands/resolve.md +237 -0
  205. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +124 -0
  206. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +104 -0
  207. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +122 -0
  208. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +217 -0
  209. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +162 -0
  210. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +1063 -0
  211. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +483 -0
  212. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +156 -0
  213. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +287 -0
  214. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +507 -0
  215. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +237 -0
  216. package/plugins/devflow-self-review/.claude-plugin/plugin.json +7 -0
  217. package/plugins/devflow-self-review/README.md +38 -0
  218. package/plugins/devflow-self-review/agents/scrutinizer.md +80 -0
  219. package/plugins/devflow-self-review/agents/simplifier.md +62 -0
  220. package/plugins/devflow-self-review/agents/validator.md +86 -0
  221. package/plugins/devflow-self-review/commands/self-review.md +126 -0
  222. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +162 -0
  223. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +276 -0
  224. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +144 -0
  225. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +303 -0
  226. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +576 -0
  227. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +369 -0
  228. package/plugins/devflow-self-review/skills/self-review/SKILL.md +149 -0
  229. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +405 -0
  230. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +253 -0
  231. package/plugins/devflow-self-review/skills/self-review/references/violations.md +308 -0
  232. package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -0
  233. package/plugins/devflow-specify/README.md +46 -0
  234. package/plugins/devflow-specify/agents/skimmer.md +88 -0
  235. package/plugins/devflow-specify/agents/synthesizer.md +204 -0
  236. package/plugins/devflow-specify/commands/specify-teams.md +314 -0
  237. package/plugins/devflow-specify/commands/specify.md +179 -0
  238. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +124 -0
  239. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +104 -0
  240. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +122 -0
  241. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +217 -0
  242. package/scripts/hooks/ambient-prompt.sh +48 -0
  243. package/scripts/hooks/background-memory-update.sh +208 -0
  244. package/scripts/hooks/ensure-memory-gitignore.sh +17 -0
  245. package/scripts/hooks/pre-compact-memory.sh +87 -0
  246. package/scripts/hooks/session-start-memory.sh +126 -0
  247. package/scripts/hooks/stop-update-memory.sh +85 -0
  248. package/shared/agents/coder.md +122 -0
  249. package/shared/agents/git.md +272 -0
  250. package/shared/agents/resolver.md +131 -0
  251. package/shared/agents/reviewer.md +119 -0
  252. package/shared/agents/scrutinizer.md +80 -0
  253. package/shared/agents/shepherd.md +94 -0
  254. package/shared/agents/simplifier.md +62 -0
  255. package/shared/agents/skimmer.md +88 -0
  256. package/shared/agents/synthesizer.md +204 -0
  257. package/shared/agents/validator.md +86 -0
  258. package/shared/skills/accessibility/SKILL.md +229 -0
  259. package/shared/skills/accessibility/references/detection.md +171 -0
  260. package/shared/skills/accessibility/references/patterns.md +670 -0
  261. package/shared/skills/accessibility/references/violations.md +419 -0
  262. package/shared/skills/agent-teams/SKILL.md +124 -0
  263. package/shared/skills/agent-teams/references/cleanup.md +104 -0
  264. package/shared/skills/agent-teams/references/communication.md +122 -0
  265. package/shared/skills/agent-teams/references/team-patterns.md +217 -0
  266. package/shared/skills/ambient-router/SKILL.md +89 -0
  267. package/shared/skills/ambient-router/references/skill-catalog.md +64 -0
  268. package/shared/skills/architecture-patterns/SKILL.md +153 -0
  269. package/shared/skills/architecture-patterns/references/detection.md +337 -0
  270. package/shared/skills/architecture-patterns/references/patterns.md +873 -0
  271. package/shared/skills/architecture-patterns/references/violations.md +575 -0
  272. package/shared/skills/complexity-patterns/SKILL.md +143 -0
  273. package/shared/skills/complexity-patterns/references/detection.md +264 -0
  274. package/shared/skills/complexity-patterns/references/patterns.md +487 -0
  275. package/shared/skills/complexity-patterns/references/violations.md +361 -0
  276. package/shared/skills/consistency-patterns/SKILL.md +140 -0
  277. package/shared/skills/consistency-patterns/references/detection.md +207 -0
  278. package/shared/skills/consistency-patterns/references/patterns.md +202 -0
  279. package/shared/skills/consistency-patterns/references/violations.md +213 -0
  280. package/shared/skills/core-patterns/SKILL.md +162 -0
  281. package/shared/skills/core-patterns/references/checklist.md +276 -0
  282. package/shared/skills/core-patterns/references/code-smell-violations.md +144 -0
  283. package/shared/skills/core-patterns/references/detection.md +303 -0
  284. package/shared/skills/core-patterns/references/patterns.md +576 -0
  285. package/shared/skills/core-patterns/references/violations.md +369 -0
  286. package/shared/skills/database-patterns/SKILL.md +134 -0
  287. package/shared/skills/database-patterns/references/detection.md +208 -0
  288. package/shared/skills/database-patterns/references/patterns.md +394 -0
  289. package/shared/skills/database-patterns/references/violations.md +332 -0
  290. package/shared/skills/dependencies-patterns/SKILL.md +141 -0
  291. package/shared/skills/dependencies-patterns/references/detection.md +181 -0
  292. package/shared/skills/dependencies-patterns/references/patterns.md +225 -0
  293. package/shared/skills/dependencies-patterns/references/violations.md +247 -0
  294. package/shared/skills/docs-framework/SKILL.md +138 -0
  295. package/shared/skills/docs-framework/references/patterns.md +346 -0
  296. package/shared/skills/docs-framework/references/violations.md +221 -0
  297. package/shared/skills/documentation-patterns/SKILL.md +125 -0
  298. package/shared/skills/documentation-patterns/references/detection.md +190 -0
  299. package/shared/skills/documentation-patterns/references/patterns.md +189 -0
  300. package/shared/skills/documentation-patterns/references/violations.md +163 -0
  301. package/shared/skills/frontend-design/SKILL.md +254 -0
  302. package/shared/skills/frontend-design/references/detection.md +184 -0
  303. package/shared/skills/frontend-design/references/patterns.md +511 -0
  304. package/shared/skills/frontend-design/references/violations.md +453 -0
  305. package/shared/skills/git-safety/SKILL.md +122 -0
  306. package/shared/skills/git-safety/references/detection.md +290 -0
  307. package/shared/skills/git-safety/references/patterns.md +289 -0
  308. package/shared/skills/git-safety/references/violations.md +18 -0
  309. package/shared/skills/git-workflow/SKILL.md +158 -0
  310. package/shared/skills/git-workflow/references/commit-patterns.md +115 -0
  311. package/shared/skills/git-workflow/references/commit-violations.md +77 -0
  312. package/shared/skills/git-workflow/references/pr-patterns.md +127 -0
  313. package/shared/skills/git-workflow/references/pr-violations.md +96 -0
  314. package/shared/skills/github-patterns/SKILL.md +153 -0
  315. package/shared/skills/github-patterns/references/patterns.md +572 -0
  316. package/shared/skills/github-patterns/references/violations.md +298 -0
  317. package/shared/skills/implementation-patterns/SKILL.md +162 -0
  318. package/shared/skills/implementation-patterns/references/patterns.md +1063 -0
  319. package/shared/skills/implementation-patterns/references/violations.md +483 -0
  320. package/shared/skills/input-validation/SKILL.md +148 -0
  321. package/shared/skills/input-validation/references/detection.md +283 -0
  322. package/shared/skills/input-validation/references/patterns.md +361 -0
  323. package/shared/skills/input-validation/references/violations.md +224 -0
  324. package/shared/skills/performance-patterns/SKILL.md +154 -0
  325. package/shared/skills/performance-patterns/references/detection.md +351 -0
  326. package/shared/skills/performance-patterns/references/patterns.md +503 -0
  327. package/shared/skills/performance-patterns/references/violations.md +354 -0
  328. package/shared/skills/react/SKILL.md +276 -0
  329. package/shared/skills/react/references/patterns.md +1331 -0
  330. package/shared/skills/react/references/violations.md +565 -0
  331. package/shared/skills/regression-patterns/SKILL.md +146 -0
  332. package/shared/skills/regression-patterns/references/detection.md +237 -0
  333. package/shared/skills/regression-patterns/references/patterns.md +226 -0
  334. package/shared/skills/regression-patterns/references/violations.md +225 -0
  335. package/shared/skills/review-methodology/SKILL.md +119 -0
  336. package/shared/skills/review-methodology/references/patterns.md +186 -0
  337. package/shared/skills/review-methodology/references/report-template.md +142 -0
  338. package/shared/skills/review-methodology/references/violations.md +125 -0
  339. package/shared/skills/security-patterns/SKILL.md +156 -0
  340. package/shared/skills/security-patterns/references/detection.md +287 -0
  341. package/shared/skills/security-patterns/references/patterns.md +507 -0
  342. package/shared/skills/security-patterns/references/violations.md +237 -0
  343. package/shared/skills/self-review/SKILL.md +149 -0
  344. package/shared/skills/self-review/references/patterns.md +405 -0
  345. package/shared/skills/self-review/references/report-template.md +253 -0
  346. package/shared/skills/self-review/references/violations.md +308 -0
  347. package/shared/skills/test-driven-development/SKILL.md +139 -0
  348. package/shared/skills/test-driven-development/references/rationalization-prevention.md +111 -0
  349. package/shared/skills/test-patterns/SKILL.md +183 -0
  350. package/shared/skills/test-patterns/references/detection.md +149 -0
  351. package/shared/skills/test-patterns/references/patterns.md +220 -0
  352. package/shared/skills/test-patterns/references/report-template.md +108 -0
  353. package/shared/skills/test-patterns/references/violations.md +221 -0
  354. package/shared/skills/typescript/SKILL.md +176 -0
  355. package/shared/skills/typescript/references/patterns.md +1105 -0
  356. package/shared/skills/typescript/references/violations.md +433 -0
  357. package/src/templates/claudeignore.template +188 -0
  358. package/src/templates/managed-settings.json +160 -0
  359. package/src/templates/settings.json +59 -0
  360. package/dist/cli.d.ts.map +0 -1
  361. package/dist/cli.js.map +0 -1
  362. package/dist/commands/init.d.ts.map +0 -1
  363. package/dist/commands/init.js.map +0 -1
  364. package/dist/commands/uninstall.d.ts.map +0 -1
  365. package/dist/commands/uninstall.js.map +0 -1
  366. package/dist/utils/git.d.ts.map +0 -1
  367. package/dist/utils/git.js.map +0 -1
  368. package/dist/utils/paths.d.ts.map +0 -1
  369. package/dist/utils/paths.js.map +0 -1
  370. package/src/claude/CLAUDE.md +0 -400
  371. package/src/claude/agents/devflow/audit-architecture.md +0 -132
  372. package/src/claude/agents/devflow/audit-complexity.md +0 -132
  373. package/src/claude/agents/devflow/audit-database.md +0 -132
  374. package/src/claude/agents/devflow/audit-dependencies.md +0 -132
  375. package/src/claude/agents/devflow/audit-documentation.md +0 -132
  376. package/src/claude/agents/devflow/audit-performance.md +0 -256
  377. package/src/claude/agents/devflow/audit-security.md +0 -259
  378. package/src/claude/agents/devflow/audit-tests.md +0 -132
  379. package/src/claude/agents/devflow/audit-typescript.md +0 -132
  380. package/src/claude/agents/devflow/brainstorm.md +0 -279
  381. package/src/claude/agents/devflow/catch-up.md +0 -345
  382. package/src/claude/agents/devflow/code-review.md +0 -307
  383. package/src/claude/agents/devflow/commit.md +0 -380
  384. package/src/claude/agents/devflow/debug.md +0 -476
  385. package/src/claude/agents/devflow/design.md +0 -491
  386. package/src/claude/agents/devflow/get-issue.md +0 -286
  387. package/src/claude/agents/devflow/pr-comments.md +0 -285
  388. package/src/claude/agents/devflow/project-state.md +0 -419
  389. package/src/claude/agents/devflow/pull-request.md +0 -493
  390. package/src/claude/agents/devflow/release.md +0 -1137
  391. package/src/claude/agents/devflow/tech-debt.md +0 -338
  392. package/src/claude/commands/devflow/brainstorm.md +0 -68
  393. package/src/claude/commands/devflow/breakdown.md +0 -125
  394. package/src/claude/commands/devflow/catch-up.md +0 -29
  395. package/src/claude/commands/devflow/code-review.md +0 -237
  396. package/src/claude/commands/devflow/commit.md +0 -17
  397. package/src/claude/commands/devflow/debug.md +0 -56
  398. package/src/claude/commands/devflow/design.md +0 -82
  399. package/src/claude/commands/devflow/devlog.md +0 -408
  400. package/src/claude/commands/devflow/get-issue.md +0 -16
  401. package/src/claude/commands/devflow/implement.md +0 -100
  402. package/src/claude/commands/devflow/plan.md +0 -223
  403. package/src/claude/commands/devflow/pull-request.md +0 -20
  404. package/src/claude/commands/devflow/release.md +0 -251
  405. package/src/claude/commands/devflow/resolve-comments.md +0 -583
  406. package/src/claude/scripts/statusline.sh +0 -47
  407. package/src/claude/settings.json +0 -6
  408. package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
  409. package/src/claude/skills/devflow/debug/SKILL.md +0 -119
  410. package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
  411. package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
  412. package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
  413. package/src/claude/skills/devflow/research/SKILL.md +0 -138
  414. package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
@@ -0,0 +1,308 @@
1
+ # Self-Review Violations
2
+
3
+ Common anti-patterns and code violations organized by the 9 pillars.
4
+
5
+ ---
6
+
7
+ ## Self-Review Process Violations
8
+
9
+ | Violation | Problem | Fix |
10
+ |-----------|---------|-----|
11
+ | Skipping pillars | Incomplete review | Check all 9 pillars |
12
+ | Ignoring P0/P1 issues | Returning broken code | Fix before returning |
13
+ | Surface-level review | Missing deep issues | Review each pillar thoroughly |
14
+ | No evidence | Unverifiable claims | Reference specific code |
15
+ | Deferring critical fixes | Technical debt | Fix CRITICAL/HIGH immediately |
16
+
17
+ ---
18
+
19
+ ## P0 Pillars (MUST Fix)
20
+
21
+ ### 1. Design Violations
22
+
23
+ **Question**: Does the implementation fit the architecture?
24
+
25
+ **Red Flags**:
26
+ ```typescript
27
+ // BAD: Direct database access in controller
28
+ class UserController {
29
+ async getUser(req, res) {
30
+ const user = await db.query('SELECT * FROM users WHERE id = ?', [req.params.id]);
31
+ }
32
+ }
33
+
34
+ // BAD: God class doing everything
35
+ class ApplicationManager {
36
+ createUser() {}
37
+ processPayment() {}
38
+ sendEmail() {}
39
+ generateReport() {}
40
+ // 500 more methods...
41
+ }
42
+
43
+ // BAD: Circular dependencies
44
+ // a.ts imports b.ts, b.ts imports a.ts
45
+ ```
46
+
47
+ **Checklist**:
48
+ - [ ] Follows existing patterns in codebase
49
+ - [ ] Respects layer boundaries (controller/service/repository)
50
+ - [ ] Dependencies injected, not instantiated
51
+ - [ ] Not over-engineering (YAGNI)
52
+ - [ ] Not under-engineering (technical debt)
53
+ - [ ] Interactions with other components are sound
54
+
55
+ ---
56
+
57
+ ### 2. Functionality Violations
58
+
59
+ **Question**: Does the code work as intended?
60
+
61
+ **Red Flags**:
62
+ ```typescript
63
+ // BAD: Missing null check
64
+ function getDisplayName(user: User) {
65
+ return user.profile.displayName; // user.profile could be undefined!
66
+ }
67
+
68
+ // BAD: Race condition
69
+ let balance = await getBalance();
70
+ if (balance >= amount) {
71
+ await withdraw(amount); // Balance could change between check and withdraw!
72
+ }
73
+
74
+ // BAD: Off-by-one error
75
+ for (let i = 0; i <= array.length; i++) { // Should be < not <=
76
+ process(array[i]);
77
+ }
78
+ ```
79
+
80
+ **Checklist**:
81
+ - [ ] Happy path works correctly
82
+ - [ ] Edge cases handled (null, empty, boundary values)
83
+ - [ ] Error cases handled gracefully
84
+ - [ ] No race conditions in concurrent code
85
+ - [ ] No infinite loops or recursion without base case
86
+ - [ ] State mutations are intentional and correct
87
+
88
+ ---
89
+
90
+ ### 3. Security Violations
91
+
92
+ **Question**: Are there security vulnerabilities?
93
+
94
+ **Red Flags**:
95
+ ```typescript
96
+ // BAD: SQL injection
97
+ const query = `SELECT * FROM users WHERE email = '${email}'`;
98
+
99
+ // BAD: Command injection
100
+ exec(`ls ${userInput}`);
101
+
102
+ // BAD: Hardcoded secret
103
+ const API_KEY = 'sk-abc123xyz789';
104
+
105
+ // BAD: Missing auth check
106
+ app.delete('/api/users/:id', async (req, res) => {
107
+ await deleteUser(req.params.id); // No auth!
108
+ });
109
+ ```
110
+
111
+ **Checklist**:
112
+ - [ ] No SQL/NoSQL injection
113
+ - [ ] No command injection
114
+ - [ ] No XSS vulnerabilities
115
+ - [ ] Input validated at boundaries
116
+ - [ ] No hardcoded secrets
117
+ - [ ] Authentication/authorization checked
118
+ - [ ] Sensitive data not logged
119
+
120
+ ---
121
+
122
+ ## P1 Pillars (SHOULD Fix)
123
+
124
+ ### 4. Complexity Violations
125
+
126
+ **Question**: Can a reader understand this in 5 minutes?
127
+
128
+ **Red Flags**:
129
+ ```typescript
130
+ // BAD: Deep nesting
131
+ if (a) {
132
+ if (b) {
133
+ if (c) {
134
+ if (d) {
135
+ if (e) {
136
+ // actual logic buried here
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+
143
+ // BAD: Magic numbers
144
+ setTimeout(callback, 86400000);
145
+ if (status === 3) { }
146
+ ```
147
+
148
+ **Checklist**:
149
+ - [ ] Functions are < 50 lines
150
+ - [ ] Nesting depth < 4 levels
151
+ - [ ] Cyclomatic complexity < 10
152
+ - [ ] No magic numbers/strings
153
+ - [ ] Single responsibility per function
154
+ - [ ] Complex logic has explanatory comments
155
+
156
+ ---
157
+
158
+ ### 5. Error Handling Violations
159
+
160
+ **Question**: Are errors handled explicitly and consistently?
161
+
162
+ **Red Flags**:
163
+ ```typescript
164
+ // BAD: Swallowed exception
165
+ try {
166
+ await riskyOperation();
167
+ } catch (e) {
168
+ // silently ignored!
169
+ }
170
+
171
+ // BAD: Generic error message
172
+ throw new Error('Something went wrong');
173
+
174
+ // BAD: Resource leak on error
175
+ const file = await openFile(path);
176
+ await processFile(file); // If this throws, file never closed!
177
+ await file.close();
178
+ ```
179
+
180
+ **Checklist**:
181
+ - [ ] Errors are caught and handled appropriately
182
+ - [ ] Error messages are helpful (not generic)
183
+ - [ ] No silent failures (swallowed exceptions)
184
+ - [ ] Consistent error handling pattern (Result types or throws)
185
+ - [ ] Resources cleaned up in error paths
186
+ - [ ] Errors logged with context
187
+
188
+ ---
189
+
190
+ ### 6. Tests Violations
191
+
192
+ **Question**: Is the new functionality tested?
193
+
194
+ **Red Flags**:
195
+ ```typescript
196
+ // BAD: No tests for new function
197
+ export function calculateDiscount(price, type) {
198
+ // 20 lines of logic with no tests
199
+ }
200
+
201
+ // BAD: Test that doesn't verify behavior
202
+ it('creates user', async () => {
203
+ await createUser(data);
204
+ expect(mockDb.insert).toHaveBeenCalled(); // Only checks mock was called
205
+ });
206
+
207
+ // BAD: Missing edge case tests
208
+ describe('divide', () => {
209
+ it('divides numbers', () => {
210
+ expect(divide(10, 2)).toBe(5);
211
+ });
212
+ // No test for divide by zero!
213
+ });
214
+ ```
215
+
216
+ **Checklist**:
217
+ - [ ] New code has corresponding tests
218
+ - [ ] Tests cover happy path
219
+ - [ ] Tests cover error cases
220
+ - [ ] Tests cover edge cases
221
+ - [ ] Tests are not brittle (test behavior, not implementation)
222
+ - [ ] Tests would fail if code breaks
223
+
224
+ ---
225
+
226
+ ## P2 Pillars (FIX if Time Permits)
227
+
228
+ ### 7. Naming Violations
229
+
230
+ **Question**: Are names clear and descriptive?
231
+
232
+ **Red Flags**:
233
+ ```typescript
234
+ // BAD: Cryptic names
235
+ const d = new Date();
236
+ const r = items.filter(i => i.t > d);
237
+ const x = r.reduce((a, b) => a + b.p, 0);
238
+
239
+ // BAD: Misleading name
240
+ function getUser(id) {
241
+ return db.users.findAll(); // Returns ALL users, not one!
242
+ }
243
+ ```
244
+
245
+ **Checklist**:
246
+ - [ ] Variable names describe content
247
+ - [ ] Function names describe action
248
+ - [ ] No single-letter names (except loop indices)
249
+ - [ ] No abbreviations that aren't universal
250
+ - [ ] Consistent naming style (camelCase/snake_case)
251
+
252
+ ---
253
+
254
+ ### 8. Consistency Violations
255
+
256
+ **Question**: Does this match existing patterns?
257
+
258
+ **Red Flags**:
259
+ ```typescript
260
+ // BAD: Different style than rest of codebase
261
+ // Existing code uses Result types
262
+ function existingFunction(): Result<User, Error> { }
263
+
264
+ // Your code throws instead
265
+ function yourFunction(): User {
266
+ throw new Error('...'); // Inconsistent!
267
+ }
268
+ ```
269
+
270
+ **Checklist**:
271
+ - [ ] Follows existing code style
272
+ - [ ] Uses same patterns as surrounding code
273
+ - [ ] Error handling matches project conventions
274
+ - [ ] Import organization matches existing files
275
+ - [ ] No unnecessary divergence from norms
276
+
277
+ ---
278
+
279
+ ### 9. Documentation Violations
280
+
281
+ **Question**: Will others understand this code?
282
+
283
+ **Red Flags**:
284
+ ```typescript
285
+ // BAD: Missing docs on complex function
286
+ export function calculateProratedBilling(plan, start, end, previous) {
287
+ // 50 lines of complex billing logic with no explanation
288
+ }
289
+
290
+ // BAD: Outdated comment
291
+ // Returns user's full name
292
+ function getDisplayName(user) {
293
+ return user.username; // Actually returns username!
294
+ }
295
+ ```
296
+
297
+ **Checklist**:
298
+ - [ ] Complex logic has explanatory comments
299
+ - [ ] Public APIs have JSDoc/docstrings
300
+ - [ ] README updated if behavior changes
301
+ - [ ] No outdated comments
302
+ - [ ] Comments explain "why", not "what"
303
+
304
+ ---
305
+
306
+ ## Quick Reference
307
+
308
+ See [patterns.md](patterns.md) for correct patterns and [report-template.md](report-template.md) for self-review format.
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: test-driven-development
3
+ description: >-
4
+ Enforce RED-GREEN-REFACTOR cycle during implementation. Write failing tests before
5
+ production code. Distinct from test-patterns (which reviews test quality) — this
6
+ skill enforces the TDD workflow during code generation.
7
+ user-invocable: false
8
+ allowed-tools: Read, Grep, Glob
9
+ activation:
10
+ file-patterns:
11
+ - "**/*.ts"
12
+ - "**/*.tsx"
13
+ - "**/*.js"
14
+ - "**/*.jsx"
15
+ - "**/*.py"
16
+ exclude:
17
+ - "node_modules/**"
18
+ - "dist/**"
19
+ - "**/*.test.*"
20
+ - "**/*.spec.*"
21
+ ---
22
+
23
+ # Test-Driven Development
24
+
25
+ Enforce the RED-GREEN-REFACTOR cycle for all implementation work. Tests define the design. Code satisfies the tests. Refactoring improves the design without changing behavior.
26
+
27
+ ## Iron Law
28
+
29
+ > **TESTS FIRST, ALWAYS**
30
+ >
31
+ > Write the failing test before the production code. No exceptions. If you catch
32
+ > yourself writing production code without a failing test, stop immediately, delete
33
+ > the production code, write the test, watch it fail, then write the minimum code
34
+ > to make it pass. The test IS the specification.
35
+
36
+ ---
37
+
38
+ ## The Cycle
39
+
40
+ ### Step 1: RED — Write a Failing Test
41
+
42
+ Write a test that describes the behavior you want. Run it. Watch it fail. The failure message IS your specification.
43
+
44
+ ```
45
+ Describe what the code SHOULD do, not how it does it.
46
+ One behavior per test. One assertion per test (ideally).
47
+ Name tests as sentences: "returns error when email is invalid"
48
+ ```
49
+
50
+ **Checkpoint:** The test MUST fail before proceeding. A test that passes immediately proves nothing.
51
+
52
+ ### Step 2: GREEN — Write Minimum Code to Pass
53
+
54
+ Write the simplest production code that makes the failing test pass. No more, no less.
55
+
56
+ ```
57
+ Hardcode first if that's simplest. Generalize when the next test forces it.
58
+ Don't write code "you'll need later." Write code the test demands NOW.
59
+ Don't optimize. Don't refactor. Don't clean up. Just pass the test.
60
+ ```
61
+
62
+ **Checkpoint:** All tests pass. If any test fails, fix it before moving on.
63
+
64
+ ### Step 3: REFACTOR — Improve Without Changing Behavior
65
+
66
+ Now clean up. Extract helpers, rename variables, simplify logic. Tests stay green throughout.
67
+
68
+ ```
69
+ Run tests after every refactoring step.
70
+ If a test breaks during refactor, undo immediately — you changed behavior.
71
+ Apply DRY, extract patterns, improve readability.
72
+ ```
73
+
74
+ **Checkpoint:** All tests still pass. Code is clean. Repeat from Step 1 for next behavior.
75
+
76
+ ---
77
+
78
+ ## Rationalization Prevention
79
+
80
+ These are the excuses developers use to skip TDD. Recognize and reject them.
81
+
82
+ | Excuse | Why It Feels Right | Why It's Wrong | Correct Action |
83
+ |--------|-------------------|---------------|----------------|
84
+ | "I'll write tests after" | Need to see the shape first | Tests ARE the shape — they define the interface before implementation exists | Write the test first |
85
+ | "Too simple to test" | It's just a getter/setter | Getters break, defaults change, edge cases hide in "simple" code | Write it — takes 30 seconds |
86
+ | "I'll refactor later" | Just get it working now | "Later" never comes; technical debt compounds silently | Refactor now in Step 3 |
87
+ | "Test is too hard to write" | Setup is complex, mocking is painful | Hard-to-test code = bad design; the test is telling you the interface is wrong | Simplify the interface first |
88
+ | "Need to see the whole picture" | Can't test what I haven't designed yet | TDD IS design; each test reveals the next piece of the interface | Let the test guide the design |
89
+ | "Tests slow me down" | Faster to just write the code | Faster until the first regression; TDD is faster for anything > 50 lines | Trust the cycle |
90
+
91
+ See `references/rationalization-prevention.md` for extended examples with code.
92
+
93
+ ---
94
+
95
+ ## Process Enforcement
96
+
97
+ When implementing any feature under ambient BUILD/STANDARD:
98
+
99
+ 1. **Identify the first behavior** — What is the simplest thing this feature must do?
100
+ 2. **Write the test** — Describe that behavior as a failing test
101
+ 3. **Run the test** — Confirm it fails (RED)
102
+ 4. **Write minimum code** — Just enough to pass (GREEN)
103
+ 5. **Refactor** — Clean up while tests stay green (REFACTOR)
104
+ 6. **Repeat** — Next behavior, next test, next cycle
105
+
106
+ ### File Organization
107
+
108
+ - Test file lives next to production file: `user.ts` → `user.test.ts`
109
+ - Follow project's existing test conventions (Jest, Vitest, pytest, etc.)
110
+ - Import the module under test, not internal helpers
111
+
112
+ ### What to Test
113
+
114
+ | Test | Don't Test |
115
+ |------|-----------|
116
+ | Public API behavior | Private implementation details |
117
+ | Error conditions and edge cases | Framework internals |
118
+ | Integration points (boundaries) | Third-party library correctness |
119
+ | State transitions | Getter/setter plumbing (unless non-trivial) |
120
+
121
+ ---
122
+
123
+ ## When TDD Does Not Apply
124
+
125
+ - **QUICK depth** — Ambient classified as QUICK (chat, exploration, trivial edits)
126
+ - **Non-code tasks** — Documentation, configuration, CI changes
127
+ - **Exploratory prototyping** — User explicitly says "just spike this" or "prototype"
128
+ - **Existing test suite changes** — Modifying tests themselves (test-patterns skill applies instead)
129
+
130
+ When skipping TDD, never rationalize. State clearly: "Skipping TDD because: [specific reason from list above]."
131
+
132
+ ---
133
+
134
+ ## Integration with Ambient Mode
135
+
136
+ - **BUILD/STANDARD** → TDD enforced. Every new function/method gets test-first treatment.
137
+ - **BUILD/QUICK** → TDD skipped (trivial single-file edit).
138
+ - **BUILD/ESCALATE** → TDD mentioned in nudge toward `/implement`.
139
+ - **DEBUG/STANDARD** → TDD applies to the fix: write a test that reproduces the bug first, then fix.
@@ -0,0 +1,111 @@
1
+ # TDD Rationalization Prevention — Extended Examples
2
+
3
+ Detailed code examples showing how each rationalization leads to worse outcomes.
4
+
5
+ ## "I'll write tests after"
6
+
7
+ ### What happens:
8
+
9
+ ```typescript
10
+ // Developer writes production code first
11
+ function calculateDiscount(price: number, tier: string): number {
12
+ if (tier === 'gold') return price * 0.8;
13
+ if (tier === 'silver') return price * 0.9;
14
+ return price;
15
+ }
16
+
17
+ // Then "writes tests after" — but only for the happy path they remember
18
+ test('gold tier gets 20% off', () => {
19
+ expect(calculateDiscount(100, 'gold')).toBe(80);
20
+ });
21
+ // Missing: negative prices, unknown tiers, zero prices, NaN handling
22
+ ```
23
+
24
+ ### What TDD would have caught:
25
+
26
+ ```typescript
27
+ // Test first — forces you to think about the contract
28
+ test('returns error for negative price', () => {
29
+ expect(calculateDiscount(-100, 'gold')).toEqual({ ok: false, error: 'NEGATIVE_PRICE' });
30
+ });
31
+ // Now the interface includes error handling from the start
32
+ ```
33
+
34
+ ## "Too simple to test"
35
+
36
+ ### What happens:
37
+
38
+ ```typescript
39
+ // "It's just a config getter, no test needed"
40
+ function getMaxRetries(): number {
41
+ return parseInt(process.env.MAX_RETRIES || '3');
42
+ }
43
+ // 6 months later: someone sets MAX_RETRIES="three" and prod crashes with NaN retries
44
+ ```
45
+
46
+ ### What TDD would have caught:
47
+
48
+ ```typescript
49
+ test('returns default when env var is not a number', () => {
50
+ process.env.MAX_RETRIES = 'three';
51
+ expect(getMaxRetries()).toBe(3); // Forces validation logic
52
+ });
53
+ ```
54
+
55
+ ## "Test is too hard to write"
56
+
57
+ ### What happens:
58
+
59
+ ```typescript
60
+ // "I can't test this easily because it needs database + email + filesystem"
61
+ async function processOrder(orderId: string) {
62
+ const db = new Database();
63
+ const order = await db.find(orderId);
64
+ await sendEmail(order.customerEmail, 'Your order is processing');
65
+ await fs.writeFile(`/invoices/${orderId}.pdf`, generateInvoice(order));
66
+ await db.update(orderId, { status: 'processing' });
67
+ }
68
+ // Result: untestable monolith, test would need real DB + email + filesystem
69
+ ```
70
+
71
+ ### What TDD forces:
72
+
73
+ ```typescript
74
+ // Hard-to-test = bad design. TDD forces dependency injection:
75
+ async function processOrder(
76
+ orderId: string,
77
+ deps: { db: OrderRepository; emailer: Emailer; invoices: InvoiceStore }
78
+ ): Promise<Result<void, OrderError>> {
79
+ // Now trivially testable with mocks
80
+ }
81
+ ```
82
+
83
+ ## "I'll refactor later"
84
+
85
+ ### What happens:
86
+
87
+ ```typescript
88
+ // Sprint 1: "just get it working"
89
+ function handleRequest(req: any) {
90
+ if (req.type === 'create') { /* 50 lines */ }
91
+ else if (req.type === 'update') { /* 50 lines */ }
92
+ else if (req.type === 'delete') { /* 30 lines */ }
93
+ // Sprint 2-10: more conditions added, function grows to 500 lines
94
+ // "Refactor later" never comes because nobody wants to touch it
95
+ }
96
+ ```
97
+
98
+ ### What TDD enforces:
99
+
100
+ Step 3 (REFACTOR) happens every cycle. The function never grows beyond what's clean because you clean it every 5-10 minutes.
101
+
102
+ ## "Tests slow me down"
103
+
104
+ ### The math:
105
+
106
+ | Approach | Time to write | Time to first bug | Time to fix bug | Total (1 month) |
107
+ |----------|:---:|:---:|:---:|:---:|
108
+ | No TDD | 2h | 4h | 3h (no repro test) | 9h+ |
109
+ | TDD | 3h | Caught in test | 15min (test pinpoints) | 3h 15min |
110
+
111
+ TDD is slower for the first 30 minutes. It's faster for everything after that.