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,576 @@
1
+ # Extended Correct Pattern Examples
2
+
3
+ Additional examples of correct implementations beyond the core examples in SKILL.md.
4
+
5
+ ---
6
+
7
+ ## Result Types - Extended Patterns
8
+
9
+ ### Chaining Results
10
+
11
+ ```typescript
12
+ // Chain multiple Result operations
13
+ function processUserOrder(
14
+ userId: string,
15
+ orderId: string
16
+ ): Result<Receipt, ProcessError> {
17
+ const userResult = getUser(userId);
18
+ if (!userResult.ok) return userResult;
19
+
20
+ const orderResult = getOrder(orderId);
21
+ if (!orderResult.ok) return orderResult;
22
+
23
+ const validationResult = validateOrder(orderResult.value, userResult.value);
24
+ if (!validationResult.ok) return validationResult;
25
+
26
+ return processPayment(orderResult.value);
27
+ }
28
+
29
+ // Using pipe helper
30
+ const pipe = <T, E>(...fns: Array<(r: Result<T, E>) => Result<T, E>>) =>
31
+ (initial: Result<T, E>) => fns.reduce((r, fn) => r.ok ? fn(r) : r, initial);
32
+
33
+ // Map over Result
34
+ const map = <T, U, E>(fn: (value: T) => U) =>
35
+ (result: Result<T, E>): Result<U, E> =>
36
+ result.ok ? Ok(fn(result.value)) : result;
37
+
38
+ // FlatMap for Result chains
39
+ const flatMap = <T, U, E>(fn: (value: T) => Result<U, E>) =>
40
+ (result: Result<T, E>): Result<U, E> =>
41
+ result.ok ? fn(result.value) : result;
42
+ ```
43
+
44
+ ### Async Result Patterns
45
+
46
+ ```typescript
47
+ // Async function returning Result
48
+ async function fetchUser(id: string): Promise<Result<User, FetchError>> {
49
+ try {
50
+ const response = await fetch(`/api/users/${id}`);
51
+ if (!response.ok) {
52
+ return Err({ type: 'HttpError', status: response.status });
53
+ }
54
+ const user = await response.json();
55
+ return Ok(user);
56
+ } catch (error) {
57
+ return Err({ type: 'NetworkError', message: error.message });
58
+ }
59
+ }
60
+
61
+ // Collecting multiple async Results
62
+ async function fetchAllUsers(ids: string[]): Promise<Result<User[], FetchError>> {
63
+ const results = await Promise.all(ids.map(fetchUser));
64
+
65
+ for (const result of results) {
66
+ if (!result.ok) return result; // Return first error
67
+ }
68
+
69
+ return Ok(results.map(r => r.value));
70
+ }
71
+
72
+ // Parallel with partial success
73
+ async function fetchUsersPartial(ids: string[]): Promise<{
74
+ successes: User[];
75
+ failures: Array<{ id: string; error: FetchError }>;
76
+ }> {
77
+ const results = await Promise.all(
78
+ ids.map(async id => ({ id, result: await fetchUser(id) }))
79
+ );
80
+
81
+ return {
82
+ successes: results.filter(r => r.result.ok).map(r => r.result.value),
83
+ failures: results
84
+ .filter(r => !r.result.ok)
85
+ .map(r => ({ id: r.id, error: r.result.error }))
86
+ };
87
+ }
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Dependency Injection - Extended Patterns
93
+
94
+ ### Factory Pattern with DI
95
+
96
+ ```typescript
97
+ // Factory that creates configured instances
98
+ interface ServiceFactory {
99
+ createUserService(): UserService;
100
+ createOrderService(): OrderService;
101
+ }
102
+
103
+ class ProductionServiceFactory implements ServiceFactory {
104
+ constructor(
105
+ private db: Database,
106
+ private emailer: EmailService,
107
+ private logger: Logger
108
+ ) {}
109
+
110
+ createUserService(): UserService {
111
+ return new UserService(this.db, this.emailer, this.logger);
112
+ }
113
+
114
+ createOrderService(): OrderService {
115
+ return new OrderService(this.db, this.logger);
116
+ }
117
+ }
118
+
119
+ // Test factory with mocks
120
+ class TestServiceFactory implements ServiceFactory {
121
+ createUserService(): UserService {
122
+ return new UserService(mockDb, mockEmailer, mockLogger);
123
+ }
124
+
125
+ createOrderService(): OrderService {
126
+ return new OrderService(mockDb, mockLogger);
127
+ }
128
+ }
129
+ ```
130
+
131
+ ### Functional DI Pattern
132
+
133
+ ```typescript
134
+ // Dependencies as function parameters
135
+ type CreateUser = (
136
+ db: Database,
137
+ emailer: EmailService
138
+ ) => (data: UserData) => Promise<Result<User, Error>>;
139
+
140
+ const createUser: CreateUser = (db, emailer) => async (data) => {
141
+ const validation = validateUserData(data);
142
+ if (!validation.ok) return validation;
143
+
144
+ const user = await db.users.create(data);
145
+ await emailer.sendWelcome(user.email);
146
+ return Ok(user);
147
+ };
148
+
149
+ // Partial application for context
150
+ const createUserWithDeps = createUser(productionDb, productionEmailer);
151
+ const result = await createUserWithDeps(userData);
152
+ ```
153
+
154
+ ### Interface Segregation
155
+
156
+ ```typescript
157
+ // Small, focused interfaces
158
+ interface UserReader {
159
+ findById(id: string): Promise<User | null>;
160
+ findByEmail(email: string): Promise<User | null>;
161
+ }
162
+
163
+ interface UserWriter {
164
+ create(data: UserData): Promise<User>;
165
+ update(id: string, data: Partial<UserData>): Promise<User>;
166
+ delete(id: string): Promise<void>;
167
+ }
168
+
169
+ // Service depends only on what it needs
170
+ class UserQueryService {
171
+ constructor(private reader: UserReader) {} // Only needs read operations
172
+
173
+ async getUser(id: string): Promise<Result<User, NotFoundError>> {
174
+ const user = await this.reader.findById(id);
175
+ return user ? Ok(user) : Err({ type: 'NotFound', id });
176
+ }
177
+ }
178
+
179
+ class UserCommandService {
180
+ constructor(
181
+ private reader: UserReader,
182
+ private writer: UserWriter
183
+ ) {} // Needs both for validation and writing
184
+ }
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Immutability - Extended Patterns
190
+
191
+ ### Deep Updates
192
+
193
+ ```typescript
194
+ // Immutable deep update
195
+ function updateNestedAddress(
196
+ user: User,
197
+ city: string
198
+ ): User {
199
+ return {
200
+ ...user,
201
+ address: {
202
+ ...user.address,
203
+ city
204
+ }
205
+ };
206
+ }
207
+
208
+ // Using immer for complex updates
209
+ import { produce } from 'immer';
210
+
211
+ function updateOrderItem(
212
+ order: Order,
213
+ itemId: string,
214
+ quantity: number
215
+ ): Order {
216
+ return produce(order, draft => {
217
+ const item = draft.items.find(i => i.id === itemId);
218
+ if (item) item.quantity = quantity;
219
+ });
220
+ }
221
+ ```
222
+
223
+ ### Immutable Collections
224
+
225
+ ```typescript
226
+ // Immutable array operations
227
+ function removeItem<T>(items: T[], index: number): T[] {
228
+ return [...items.slice(0, index), ...items.slice(index + 1)];
229
+ }
230
+
231
+ function insertItem<T>(items: T[], index: number, item: T): T[] {
232
+ return [...items.slice(0, index), item, ...items.slice(index)];
233
+ }
234
+
235
+ function updateItem<T>(items: T[], index: number, item: T): T[] {
236
+ return items.map((existing, i) => i === index ? item : existing);
237
+ }
238
+
239
+ // Immutable object operations
240
+ function omit<T extends object, K extends keyof T>(
241
+ obj: T,
242
+ ...keys: K[]
243
+ ): Omit<T, K> {
244
+ const result = { ...obj };
245
+ for (const key of keys) {
246
+ delete result[key];
247
+ }
248
+ return result;
249
+ }
250
+
251
+ function pick<T extends object, K extends keyof T>(
252
+ obj: T,
253
+ ...keys: K[]
254
+ ): Pick<T, K> {
255
+ const result = {} as Pick<T, K>;
256
+ for (const key of keys) {
257
+ result[key] = obj[key];
258
+ }
259
+ return result;
260
+ }
261
+ ```
262
+
263
+ ---
264
+
265
+ ## Pure Functions - Extended Patterns
266
+
267
+ ### Dependency Injection for Impurity
268
+
269
+ ```typescript
270
+ // Inject impure dependencies
271
+ interface Clock {
272
+ now(): Date;
273
+ }
274
+
275
+ interface RandomGenerator {
276
+ next(): number;
277
+ }
278
+
279
+ // Function becomes pure relative to its inputs
280
+ function generateToken(random: RandomGenerator, length: number): string {
281
+ return Array.from({ length }, () =>
282
+ Math.floor(random.next() * 36).toString(36)
283
+ ).join('');
284
+ }
285
+
286
+ // Easy to test
287
+ const mockRandom: RandomGenerator = {
288
+ next: () => 0.5 // Deterministic
289
+ };
290
+ const token = generateToken(mockRandom, 10); // Always same result
291
+
292
+ // Production usage
293
+ const productionRandom: RandomGenerator = {
294
+ next: () => Math.random()
295
+ };
296
+ ```
297
+
298
+ ### Separating Pure Logic
299
+
300
+ ```typescript
301
+ // Pure: business logic
302
+ function calculateOrderTotal(
303
+ items: OrderItem[],
304
+ discount: Discount | null,
305
+ taxRate: number
306
+ ): OrderTotal {
307
+ const subtotal = items.reduce((sum, item) => sum + item.price * item.quantity, 0);
308
+ const discountAmount = discount ? applyDiscount(subtotal, discount) : 0;
309
+ const taxableAmount = subtotal - discountAmount;
310
+ const tax = taxableAmount * taxRate;
311
+
312
+ return {
313
+ subtotal,
314
+ discount: discountAmount,
315
+ tax,
316
+ total: taxableAmount + tax
317
+ };
318
+ }
319
+
320
+ // Impure: I/O wrapper
321
+ async function processOrder(orderId: string): Promise<Result<Order, Error>> {
322
+ // I/O: fetch data
323
+ const order = await orderRepository.findById(orderId);
324
+ if (!order) return Err({ type: 'NotFound' });
325
+
326
+ const discount = await discountService.getActive(order.customerId);
327
+ const taxRate = await taxService.getRate(order.shippingAddress);
328
+
329
+ // Pure: calculation
330
+ const total = calculateOrderTotal(order.items, discount, taxRate);
331
+
332
+ // I/O: persist
333
+ const updated = await orderRepository.update(orderId, { total });
334
+ return Ok(updated);
335
+ }
336
+ ```
337
+
338
+ ---
339
+
340
+ ## Error Types - Extended Patterns
341
+
342
+ ### Hierarchical Error Types
343
+
344
+ ```typescript
345
+ // Base error type
346
+ type AppError =
347
+ | ValidationError
348
+ | BusinessError
349
+ | InfrastructureError;
350
+
351
+ // Validation errors
352
+ type ValidationError =
353
+ | { type: 'RequiredField'; field: string }
354
+ | { type: 'InvalidFormat'; field: string; expected: string }
355
+ | { type: 'OutOfRange'; field: string; min?: number; max?: number };
356
+
357
+ // Business errors
358
+ type BusinessError =
359
+ | { type: 'InsufficientFunds'; available: number; required: number }
360
+ | { type: 'ItemOutOfStock'; itemId: string; available: number }
361
+ | { type: 'OrderCancelled'; orderId: string; reason: string };
362
+
363
+ // Infrastructure errors
364
+ type InfrastructureError =
365
+ | { type: 'DatabaseError'; operation: string; message: string }
366
+ | { type: 'NetworkError'; endpoint: string; status?: number }
367
+ | { type: 'TimeoutError'; operation: string; durationMs: number };
368
+ ```
369
+
370
+ ### Error Conversion
371
+
372
+ ```typescript
373
+ // Convert between error types at boundaries
374
+ function toHttpError(error: AppError): HttpError {
375
+ switch (error.type) {
376
+ // Validation -> 400
377
+ case 'RequiredField':
378
+ case 'InvalidFormat':
379
+ case 'OutOfRange':
380
+ return { status: 400, message: formatValidationError(error) };
381
+
382
+ // Business -> 422
383
+ case 'InsufficientFunds':
384
+ case 'ItemOutOfStock':
385
+ case 'OrderCancelled':
386
+ return { status: 422, message: formatBusinessError(error) };
387
+
388
+ // Infrastructure -> 500/503
389
+ case 'DatabaseError':
390
+ case 'NetworkError':
391
+ return { status: 503, message: 'Service temporarily unavailable' };
392
+ case 'TimeoutError':
393
+ return { status: 504, message: 'Request timed out' };
394
+ }
395
+ }
396
+ ```
397
+
398
+ ---
399
+
400
+ ## Resource Cleanup - Extended Patterns
401
+
402
+ ### Resource Pool Pattern
403
+
404
+ ```typescript
405
+ // Connection pool with proper cleanup
406
+ class ConnectionPool {
407
+ private connections: DbConnection[] = [];
408
+ private available: DbConnection[] = [];
409
+
410
+ async acquire(): Promise<DbConnection> {
411
+ if (this.available.length > 0) {
412
+ return this.available.pop()!;
413
+ }
414
+ const conn = await this.createConnection();
415
+ this.connections.push(conn);
416
+ return conn;
417
+ }
418
+
419
+ release(conn: DbConnection): void {
420
+ this.available.push(conn);
421
+ }
422
+
423
+ async close(): Promise<void> {
424
+ await Promise.all(this.connections.map(c => c.close()));
425
+ this.connections = [];
426
+ this.available = [];
427
+ }
428
+ }
429
+
430
+ // Usage with automatic release
431
+ async function withConnection<T>(
432
+ pool: ConnectionPool,
433
+ fn: (conn: DbConnection) => Promise<T>
434
+ ): Promise<T> {
435
+ const conn = await pool.acquire();
436
+ try {
437
+ return await fn(conn);
438
+ } finally {
439
+ pool.release(conn);
440
+ }
441
+ }
442
+ ```
443
+
444
+ ### Subscription Management
445
+
446
+ ```typescript
447
+ // Subscription manager for cleanup
448
+ class SubscriptionManager {
449
+ private subscriptions: Array<() => void> = [];
450
+
451
+ add(unsubscribe: () => void): void {
452
+ this.subscriptions.push(unsubscribe);
453
+ }
454
+
455
+ cleanup(): void {
456
+ for (const unsub of this.subscriptions) {
457
+ unsub();
458
+ }
459
+ this.subscriptions = [];
460
+ }
461
+ }
462
+
463
+ // Usage in component/service lifecycle
464
+ class DataService {
465
+ private subscriptions = new SubscriptionManager();
466
+
467
+ initialize(): void {
468
+ this.subscriptions.add(
469
+ eventBus.on('user-updated', this.handleUserUpdate)
470
+ );
471
+ this.subscriptions.add(
472
+ socket.on('message', this.handleMessage)
473
+ );
474
+ }
475
+
476
+ dispose(): void {
477
+ this.subscriptions.cleanup();
478
+ }
479
+ }
480
+ ```
481
+
482
+ ---
483
+
484
+ ## Language-Specific Patterns
485
+
486
+ ### Python Result Pattern
487
+
488
+ ```python
489
+ from dataclasses import dataclass
490
+ from typing import Generic, TypeVar, Union
491
+
492
+ T = TypeVar('T')
493
+ E = TypeVar('E')
494
+
495
+ @dataclass(frozen=True)
496
+ class Ok(Generic[T]):
497
+ value: T
498
+ ok: bool = True
499
+
500
+ @dataclass(frozen=True)
501
+ class Err(Generic[E]):
502
+ error: E
503
+ ok: bool = False
504
+
505
+ Result = Union[Ok[T], Err[E]]
506
+
507
+ def create_user(data: dict) -> Result[User, ValidationError]:
508
+ validation = validate(data)
509
+ if not validation.ok:
510
+ return Err(ValidationError(validation.errors))
511
+ return Ok(User(**data))
512
+ ```
513
+
514
+ ### Go Result Pattern
515
+
516
+ ```go
517
+ // Using tuple returns (idiomatic Go)
518
+ func CreateUser(data UserData) (*User, error) {
519
+ if err := validate(data); err != nil {
520
+ return nil, fmt.Errorf("validation failed: %w", err)
521
+ }
522
+ user := buildUser(data)
523
+ return &user, nil
524
+ }
525
+
526
+ // Custom Result type for complex cases
527
+ type Result[T any] struct {
528
+ Value T
529
+ Err error
530
+ }
531
+
532
+ func (r Result[T]) IsOk() bool {
533
+ return r.Err == nil
534
+ }
535
+
536
+ func Ok[T any](value T) Result[T] {
537
+ return Result[T]{Value: value}
538
+ }
539
+
540
+ func Fail[T any](err error) Result[T] {
541
+ return Result[T]{Err: err}
542
+ }
543
+ ```
544
+
545
+ ### Rust Result Pattern
546
+
547
+ ```rust
548
+ use std::result::Result;
549
+
550
+ #[derive(Debug)]
551
+ enum UserError {
552
+ ValidationFailed(String),
553
+ NotFound(String),
554
+ DatabaseError(String),
555
+ }
556
+
557
+ fn create_user(data: &UserData) -> Result<User, UserError> {
558
+ validate(data).map_err(|e| UserError::ValidationFailed(e.to_string()))?;
559
+
560
+ let user = User::from(data);
561
+ Ok(user)
562
+ }
563
+
564
+ // With custom error trait
565
+ impl std::error::Error for UserError {}
566
+
567
+ impl std::fmt::Display for UserError {
568
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
569
+ match self {
570
+ UserError::ValidationFailed(msg) => write!(f, "Validation failed: {}", msg),
571
+ UserError::NotFound(id) => write!(f, "User not found: {}", id),
572
+ UserError::DatabaseError(msg) => write!(f, "Database error: {}", msg),
573
+ }
574
+ }
575
+ }
576
+ ```