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
@@ -1,597 +0,0 @@
1
- ---
2
- name: error-handling
3
- description: Automatically enforce Result type pattern and consistent error handling throughout the codebase. Use when writing functions that can fail, handling errors, or reviewing error handling consistency.
4
- allowed-tools: Read, Grep, Glob, AskUserQuestion
5
- ---
6
-
7
- # Error Handling Skill
8
-
9
- ## Purpose
10
-
11
- Enforce consistent, type-safe error handling using Result pattern:
12
- 1. **Result types everywhere** - No throwing exceptions in business logic
13
- 2. **Explicit error handling** - Force callers to handle errors
14
- 3. **Type-safe errors** - Leverage type system for error cases
15
- 4. **Consistent patterns** - Same approach throughout codebase
16
-
17
- ## When This Skill Activates
18
-
19
- Automatically triggers when:
20
- - Functions are being written that can fail
21
- - Try/catch blocks are being added
22
- - Error handling code is being modified
23
- - New error types are being defined
24
- - Functions are refactored to add error cases
25
-
26
- ## Core Pattern: Result Types
27
-
28
- **CRITICAL**: Business logic NEVER throws exceptions.
29
-
30
- ### Result Type Definition
31
-
32
- ```typescript
33
- type Result<T, E = Error> =
34
- | { ok: true; value: T }
35
- | { ok: false; error: E };
36
-
37
- // Helper constructors
38
- const Ok = <T>(value: T): Result<T, never> => ({ ok: true, value });
39
- const Err = <E>(error: E): Result<never, E> => ({ ok: false, error });
40
- ```
41
-
42
- ### Pattern Examples
43
-
44
- ```typescript
45
- // ❌ VIOLATION: Throwing exceptions in business logic
46
- function divide(a: number, b: number): number {
47
- if (b === 0) {
48
- throw new Error('Division by zero');
49
- }
50
- return a / b;
51
- }
52
-
53
- function processOrder(orderId: string): Order {
54
- const order = findOrder(orderId);
55
- if (!order) {
56
- throw new Error('Order not found');
57
- }
58
- if (order.status !== 'pending') {
59
- throw new Error('Order not pending');
60
- }
61
- return order;
62
- }
63
-
64
- // ✅ CORRECT: Return Result types
65
- function divide(a: number, b: number): Result<number, string> {
66
- if (b === 0) {
67
- return Err('Division by zero');
68
- }
69
- return Ok(a / b);
70
- }
71
-
72
- type OrderError =
73
- | { type: 'NotFound'; orderId: string }
74
- | { type: 'InvalidStatus'; expected: string; actual: string };
75
-
76
- function processOrder(orderId: string): Result<Order, OrderError> {
77
- const order = findOrder(orderId);
78
- if (!order) {
79
- return Err({ type: 'NotFound', orderId });
80
- }
81
- if (order.status !== 'pending') {
82
- return Err({
83
- type: 'InvalidStatus',
84
- expected: 'pending',
85
- actual: order.status
86
- });
87
- }
88
- return Ok(order);
89
- }
90
- ```
91
-
92
- ## Exception Boundaries
93
-
94
- Exceptions are ONLY allowed at system boundaries:
95
-
96
- ### Boundary Layer (Allowed)
97
-
98
- ```typescript
99
- // ✅ API boundary - convert exceptions to HTTP responses
100
- app.post('/api/orders/:id', async (req, res) => {
101
- try {
102
- const result = await processOrder(req.params.id);
103
-
104
- if (!result.ok) {
105
- // Handle Result error
106
- const statusCode = result.error.type === 'NotFound' ? 404 : 400;
107
- return res.status(statusCode).json({
108
- error: result.error
109
- });
110
- }
111
-
112
- return res.json(result.value);
113
- } catch (error) {
114
- // Unexpected errors only (infrastructure failures)
115
- console.error('Unexpected error:', error);
116
- return res.status(500).json({ error: 'Internal server error' });
117
- }
118
- });
119
-
120
- // ✅ Database boundary - convert DB exceptions to Result
121
- async function saveOrder(order: Order): Promise<Result<void, DbError>> {
122
- try {
123
- await db.orders.insert(order);
124
- return Ok(undefined);
125
- } catch (error) {
126
- // Convert infrastructure exception to Result
127
- if (error.code === 'UNIQUE_VIOLATION') {
128
- return Err({ type: 'DuplicateOrder', orderId: order.id });
129
- }
130
- return Err({ type: 'DatabaseError', message: error.message });
131
- }
132
- }
133
-
134
- // ✅ External API boundary - convert network errors to Result
135
- async function fetchPaymentStatus(orderId: string): Promise<Result<PaymentStatus, ApiError>> {
136
- try {
137
- const response = await fetch(`https://payment-api.com/orders/${orderId}`);
138
- const data = await response.json();
139
-
140
- // Validate response
141
- const validation = PaymentStatusSchema.safeParse(data);
142
- if (!validation.success) {
143
- return Err({ type: 'InvalidResponse', details: validation.error });
144
- }
145
-
146
- return Ok(validation.data);
147
- } catch (error) {
148
- // Network/infrastructure errors
149
- return Err({ type: 'NetworkError', message: error.message });
150
- }
151
- }
152
- ```
153
-
154
- ### Business Logic (No Exceptions)
155
-
156
- ```typescript
157
- // ✅ Pure business logic - only Result types
158
- function calculateDiscount(
159
- order: Order,
160
- discountCode: string
161
- ): Result<number, DiscountError> {
162
- const discount = findDiscount(discountCode);
163
-
164
- if (!discount) {
165
- return Err({ type: 'InvalidCode', code: discountCode });
166
- }
167
-
168
- if (isExpired(discount)) {
169
- return Err({ type: 'ExpiredCode', code: discountCode });
170
- }
171
-
172
- if (order.total < discount.minimumPurchase) {
173
- return Err({
174
- type: 'MinimumNotMet',
175
- required: discount.minimumPurchase,
176
- actual: order.total
177
- });
178
- }
179
-
180
- return Ok(order.total * discount.percentage);
181
- }
182
-
183
- // ✅ Composing Result-returning functions
184
- function applyDiscountToOrder(
185
- order: Order,
186
- discountCode: string
187
- ): Result<Order, DiscountError | OrderError> {
188
- const discountResult = calculateDiscount(order, discountCode);
189
-
190
- if (!discountResult.ok) {
191
- return Err(discountResult.error);
192
- }
193
-
194
- const newTotal = order.total - discountResult.value;
195
-
196
- if (newTotal < 0) {
197
- return Err({ type: 'InvalidTotal', total: newTotal });
198
- }
199
-
200
- return Ok({ ...order, total: newTotal, discount: discountResult.value });
201
- }
202
- ```
203
-
204
- ## Error Type Design
205
-
206
- ### Discriminated Unions for Errors
207
-
208
- ```typescript
209
- // ✅ CORRECT: Discriminated union with specific error types
210
- type UserError =
211
- | { type: 'NotFound'; userId: string }
212
- | { type: 'ValidationError'; field: string; message: string }
213
- | { type: 'DuplicateEmail'; email: string }
214
- | { type: 'PermissionDenied'; action: string; userId: string };
215
-
216
- function getUser(userId: string): Result<User, UserError> {
217
- // Implementation that returns specific error types
218
- }
219
-
220
- // Exhaustive error handling
221
- const result = getUser('123');
222
- if (!result.ok) {
223
- switch (result.error.type) {
224
- case 'NotFound':
225
- console.log(`User ${result.error.userId} not found`);
226
- break;
227
- case 'ValidationError':
228
- console.log(`Invalid ${result.error.field}: ${result.error.message}`);
229
- break;
230
- case 'DuplicateEmail':
231
- console.log(`Email ${result.error.email} already exists`);
232
- break;
233
- case 'PermissionDenied':
234
- console.log(`Cannot ${result.error.action} for user ${result.error.userId}`);
235
- break;
236
- }
237
- }
238
- ```
239
-
240
- ### Error Hierarchy
241
-
242
- ```typescript
243
- // Base error types
244
- type DbError =
245
- | { type: 'ConnectionFailed'; details: string }
246
- | { type: 'QueryFailed'; query: string; details: string }
247
- | { type: 'DuplicateKey'; table: string; key: string }
248
- | { type: 'NotFound'; table: string; id: string };
249
-
250
- type ValidationError =
251
- | { type: 'RequiredField'; field: string }
252
- | { type: 'InvalidFormat'; field: string; format: string }
253
- | { type: 'OutOfRange'; field: string; min: number; max: number };
254
-
255
- // Domain-specific errors compose base types
256
- type OrderError =
257
- | { type: 'InvalidStatus'; expected: string; actual: string }
258
- | { type: 'InsufficientStock'; productId: string; available: number; requested: number }
259
- | ValidationError
260
- | DbError;
261
- ```
262
-
263
- ## Error Handling Patterns
264
-
265
- ### Pattern 1: Early Return
266
-
267
- ```typescript
268
- function processPayment(order: Order, payment: Payment): Result<Receipt, PaymentError> {
269
- // Validate order
270
- const orderValidation = validateOrder(order);
271
- if (!orderValidation.ok) {
272
- return Err({ type: 'InvalidOrder', details: orderValidation.error });
273
- }
274
-
275
- // Validate payment
276
- const paymentValidation = validatePayment(payment);
277
- if (!paymentValidation.ok) {
278
- return Err({ type: 'InvalidPayment', details: paymentValidation.error });
279
- }
280
-
281
- // Check balance
282
- const balanceCheck = checkBalance(payment);
283
- if (!balanceCheck.ok) {
284
- return Err(balanceCheck.error);
285
- }
286
-
287
- // All validations passed, process
288
- const receipt = createReceipt(order, payment);
289
- return Ok(receipt);
290
- }
291
- ```
292
-
293
- ### Pattern 2: Result Chaining (Monadic)
294
-
295
- ```typescript
296
- // Helper for chaining Result-returning functions
297
- function chain<T, U, E>(
298
- result: Result<T, E>,
299
- fn: (value: T) => Result<U, E>
300
- ): Result<U, E> {
301
- if (!result.ok) {
302
- return result;
303
- }
304
- return fn(result.value);
305
- }
306
-
307
- // Usage
308
- const result = chain(
309
- validateOrder(order),
310
- (validOrder) => chain(
311
- validatePayment(payment),
312
- (validPayment) => processPayment(validOrder, validPayment)
313
- )
314
- );
315
- ```
316
-
317
- ### Pattern 3: Collecting Multiple Errors
318
-
319
- ```typescript
320
- type ValidationResult<T> = Result<T, ValidationError[]>;
321
-
322
- function validateUser(data: unknown): ValidationResult<User> {
323
- const errors: ValidationError[] = [];
324
-
325
- if (!isValidEmail(data.email)) {
326
- errors.push({ type: 'InvalidFormat', field: 'email', format: 'email' });
327
- }
328
-
329
- if (!isValidAge(data.age)) {
330
- errors.push({ type: 'OutOfRange', field: 'age', min: 0, max: 150 });
331
- }
332
-
333
- if (!isValidName(data.name)) {
334
- errors.push({ type: 'RequiredField', field: 'name' });
335
- }
336
-
337
- if (errors.length > 0) {
338
- return Err(errors);
339
- }
340
-
341
- return Ok({ email: data.email, age: data.age, name: data.name });
342
- }
343
- ```
344
-
345
- ## Error Handling Report Format
346
-
347
- ```markdown
348
- ⚠️ ERROR HANDLING INCONSISTENCIES DETECTED
349
-
350
- ## 🔴 CRITICAL - Throwing in Business Logic
351
- **File**: src/services/order.ts:45
352
- **Issue**: Business logic throws exceptions instead of returning Result
353
-
354
- **Current Code**:
355
- ```typescript
356
- function processOrder(orderId: string): Order {
357
- const order = findOrder(orderId);
358
- if (!order) {
359
- throw new Error('Order not found');
360
- }
361
- return order;
362
- }
363
- ```
364
-
365
- **Required Fix**:
366
- ```typescript
367
- type OrderError = { type: 'NotFound'; orderId: string };
368
-
369
- function processOrder(orderId: string): Result<Order, OrderError> {
370
- const order = findOrder(orderId);
371
- if (!order) {
372
- return Err({ type: 'NotFound', orderId });
373
- }
374
- return Ok(order);
375
- }
376
- ```
377
-
378
- **Impact**: Forces explicit error handling, prevents uncaught exceptions
379
-
380
- ## 🔴 CRITICAL - Inconsistent Error Handling
381
- **File**: src/services/user.ts
382
- **Issue**: Some functions return Result, others throw exceptions
383
-
384
- **Inconsistency**:
385
- ```typescript
386
- // Function 1: Returns Result
387
- function getUser(id: string): Result<User, UserError> { ... }
388
-
389
- // Function 2: Throws exception (inconsistent!)
390
- function createUser(data: UserData): User {
391
- if (!valid(data)) {
392
- throw new Error('Invalid data');
393
- }
394
- return user;
395
- }
396
- ```
397
-
398
- **Required Fix**:
399
- ```typescript
400
- // ALL functions in module must use Result
401
- function createUser(data: unknown): Result<User, UserError> {
402
- const validation = UserSchema.safeParse(data);
403
- if (!validation.success) {
404
- return Err({ type: 'ValidationError', details: validation.error });
405
- }
406
- return Ok(createUserFromValid(validation.data));
407
- }
408
- ```
409
-
410
- **Impact**: Consistent error handling throughout module
411
-
412
- ## 🟡 HIGH - Missing Error Types
413
- **File**: src/services/payment.ts:67
414
- **Issue**: Using generic Error instead of specific error types
415
-
416
- **Current**:
417
- ```typescript
418
- function processPayment(payment: Payment): Result<Receipt, Error> {
419
- if (payment.amount <= 0) {
420
- return Err(new Error('Invalid amount'));
421
- }
422
- // ...
423
- }
424
- ```
425
-
426
- **Required Fix**:
427
- ```typescript
428
- type PaymentError =
429
- | { type: 'InvalidAmount'; amount: number }
430
- | { type: 'InsufficientFunds'; required: number; available: number }
431
- | { type: 'PaymentGatewayError'; details: string };
432
-
433
- function processPayment(payment: Payment): Result<Receipt, PaymentError> {
434
- if (payment.amount <= 0) {
435
- return Err({ type: 'InvalidAmount', amount: payment.amount });
436
- }
437
- // ...
438
- }
439
- ```
440
-
441
- **Impact**: Type-safe, actionable error handling
442
-
443
- ## 🟡 HIGH - Try/Catch in Business Logic
444
- **File**: src/utils/calculation.ts:34
445
- **Issue**: Try/catch used where Result type should be used
446
-
447
- **Current**:
448
- ```typescript
449
- function calculateTotal(items: Item[]): number {
450
- try {
451
- return items.reduce((sum, item) => {
452
- if (item.price < 0) {
453
- throw new Error('Negative price');
454
- }
455
- return sum + item.price;
456
- }, 0);
457
- } catch (error) {
458
- return 0; // Swallowing error!
459
- }
460
- }
461
- ```
462
-
463
- **Required Fix**:
464
- ```typescript
465
- type CalculationError = { type: 'NegativePrice'; itemId: string; price: number };
466
-
467
- function calculateTotal(items: Item[]): Result<number, CalculationError> {
468
- let sum = 0;
469
-
470
- for (const item of items) {
471
- if (item.price < 0) {
472
- return Err({ type: 'NegativePrice', itemId: item.id, price: item.price });
473
- }
474
- sum += item.price;
475
- }
476
-
477
- return Ok(sum);
478
- }
479
- ```
480
-
481
- **Impact**: Explicit error handling, no silent failures
482
-
483
- ## 📊 Summary
484
- - **Critical**: 12 functions throwing instead of Result
485
- - **Critical**: 3 modules with inconsistent error handling
486
- - **High**: 8 functions using generic Error
487
- - **High**: 5 try/catch blocks in business logic
488
- - **Files affected**: 15
489
-
490
- ## 🛑 CONSISTENCY CHECK FAILED
491
-
492
- Error handling is inconsistent across codebase:
493
- - Some functions use Result pattern
494
- - Others throw exceptions
495
- - Generic Error types used instead of specific types
496
- - Silent error swallowing in several places
497
-
498
- ## ✅ Required Actions
499
-
500
- **Phase 1: Critical (Stop throwing)**
501
- 1. Convert all business logic to Result types
502
- 2. Remove exception throwing from services
503
- 3. Define error type hierarchies
504
-
505
- **Phase 2: Consistency**
506
- 4. Ensure entire modules use same pattern
507
- 5. Replace generic Error with specific types
508
- 6. Add discriminated union error types
509
-
510
- **Phase 3: Boundaries**
511
- 7. Keep try/catch only at system boundaries
512
- 8. Convert exceptions to Result at boundaries
513
- 9. Document boundary vs business logic split
514
-
515
- ## 📚 Implementation Checklist
516
-
517
- - [ ] Define Result<T, E> type
518
- - [ ] Define error type hierarchies
519
- - [ ] Convert throwing functions to Result
520
- - [ ] Update callers to handle Result
521
- - [ ] Move try/catch to boundaries only
522
- - [ ] Add tests for error cases
523
- - [ ] Document error handling pattern
524
-
525
- ## 🎯 Module Migration Example
526
-
527
- Before (Inconsistent):
528
- ```typescript
529
- // Some throw, some return Result
530
- function getUser(id: string): Result<User, Error> { ... }
531
- function createUser(data: any): User { throw ... }
532
- function updateUser(id: string, data: any): User { throw ... }
533
- ```
534
-
535
- After (Consistent):
536
- ```typescript
537
- // All use Result with specific errors
538
- type UserError =
539
- | { type: 'NotFound'; userId: string }
540
- | { type: 'ValidationError'; details: unknown }
541
- | { type: 'DuplicateEmail'; email: string };
542
-
543
- function getUser(id: string): Result<User, UserError> { ... }
544
- function createUser(data: unknown): Result<User, UserError> { ... }
545
- function updateUser(id: string, data: unknown): Result<User, UserError> { ... }
546
- ```
547
- ```
548
-
549
- ## Consistency Rules
550
-
551
- **Module-level consistency:**
552
- - If ONE function in a module uses Result, ALL must use Result
553
- - If ONE function uses specific error types, ALL must use specific types
554
- - NO mixing of Result and exception throwing in same module
555
-
556
- **Project-level consistency:**
557
- - Business logic NEVER throws
558
- - Boundaries ALWAYS catch and convert to Result
559
- - Error types ALWAYS use discriminated unions
560
- - Functions ALWAYS document possible errors in return type
561
-
562
- ## Integration Points
563
-
564
- This skill works with:
565
-
566
- **pattern-check**: Part of core pattern enforcement
567
- **test-design**: Result types simplify test design
568
- **code-smell**: Catches silent error swallowing
569
- **input-validation**: Validation returns Result types
570
-
571
- ## Success Criteria
572
-
573
- Error handling passes when:
574
- - ✅ No exceptions thrown in business logic
575
- - ✅ All functions use Result types consistently
576
- - ✅ Specific error types (discriminated unions)
577
- - ✅ Try/catch only at boundaries
578
- - ✅ Boundary functions convert exceptions to Result
579
- - ✅ Module consistency (all or nothing)
580
- - ✅ Error cases tested
581
- - ✅ Type system enforces error handling
582
-
583
- ## Example Scenario
584
-
585
- ```
586
- User: "Add function to charge customer"
587
- → error-handling activates
588
- → Analyzes: Function can fail (insufficient funds, invalid card, etc.)
589
- → Checks: Does module use Result pattern?
590
- → Enforces: Define PaymentError type
591
- → Enforces: Return Result<Receipt, PaymentError>
592
- → Verifies: No exceptions thrown
593
- → Confirms: Callers handle errors
594
- → Approves: Consistent with module patterns
595
- ```
596
-
597
- This ensures every function that can fail has explicit, type-safe error handling.