devflow-kit 1.8.3 → 2.0.1

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 (867) hide show
  1. package/CHANGELOG.md +182 -7
  2. package/LICENSE +1 -1
  3. package/README.md +139 -219
  4. package/dist/cli/agents-view/index.js +9 -0
  5. package/dist/cli/agents-view/render.js +310 -0
  6. package/dist/cli/agents-view/state.js +423 -0
  7. package/dist/cli/agents-view/terminal.js +179 -0
  8. package/dist/cli/commands/agents.js +585 -0
  9. package/dist/cli/commands/ambient.js +231 -0
  10. package/dist/cli/commands/capture.js +133 -0
  11. package/dist/cli/commands/compliance-prompts.js +174 -0
  12. package/dist/cli/commands/compliance.js +337 -0
  13. package/dist/cli/commands/context.js +66 -0
  14. package/dist/cli/commands/debug.js +122 -0
  15. package/dist/cli/commands/flags.js +119 -0
  16. package/dist/cli/commands/hud.js +229 -0
  17. package/dist/cli/commands/init-seed.js +226 -0
  18. package/dist/cli/commands/init.js +1786 -0
  19. package/dist/cli/commands/knowledge/index.js +25 -0
  20. package/dist/cli/commands/knowledge/list.js +115 -0
  21. package/dist/cli/commands/knowledge/toggle.js +84 -0
  22. package/dist/cli/commands/learning.js +311 -0
  23. package/dist/cli/commands/legacy-hooks.js +40 -0
  24. package/dist/cli/commands/memory.js +349 -0
  25. package/dist/cli/commands/proxy.js +1435 -0
  26. package/dist/cli/commands/rules.js +334 -0
  27. package/dist/cli/commands/safe-delete.js +140 -0
  28. package/dist/cli/commands/security.js +179 -0
  29. package/dist/cli/commands/skills.js +140 -0
  30. package/dist/cli/commands/uninstall.js +1214 -0
  31. package/dist/cli.js +35 -10
  32. package/dist/commands/bug-analysis.md +400 -0
  33. package/dist/commands/code-review.md +403 -0
  34. package/dist/commands/debug.md +282 -0
  35. package/dist/commands/dynamic-build.md +972 -0
  36. package/dist/commands/dynamic-plan.md +383 -0
  37. package/dist/commands/dynamic-profile.md +206 -0
  38. package/dist/commands/dynamic-tickets.md +583 -0
  39. package/dist/commands/explore.md +208 -0
  40. package/dist/commands/implement.md +590 -0
  41. package/dist/commands/plan.md +570 -0
  42. package/dist/commands/release.md +206 -0
  43. package/dist/commands/research.md +212 -0
  44. package/dist/commands/resolve.md +731 -0
  45. package/dist/commands/self-review.md +251 -0
  46. package/dist/core/agent-frontmatter.js +209 -0
  47. package/dist/core/agent-models.js +556 -0
  48. package/dist/core/agent-state.js +44 -0
  49. package/dist/core/assets.js +39 -0
  50. package/dist/core/cache.js +205 -0
  51. package/dist/core/codex-auth-inspect.js +128 -0
  52. package/dist/core/compliance-compose.js +458 -0
  53. package/dist/core/compliance.js +165 -0
  54. package/dist/core/external-models.js +76 -0
  55. package/dist/core/feature-config.js +125 -0
  56. package/dist/core/flags.js +309 -0
  57. package/dist/core/fs-atomic.js +74 -0
  58. package/dist/core/git.js +61 -0
  59. package/dist/core/learning-queue-cleanup.js +92 -0
  60. package/dist/core/learning-tuning-config.js +78 -0
  61. package/dist/core/manifest.js +171 -0
  62. package/dist/core/migrations.js +330 -0
  63. package/dist/core/model-discovery.js +655 -0
  64. package/dist/core/observation-io.js +50 -0
  65. package/dist/core/observations.js +109 -0
  66. package/dist/core/orphan-sweep.js +92 -0
  67. package/dist/core/paths.js +48 -0
  68. package/dist/core/plugins.js +525 -0
  69. package/dist/core/project-paths.js +159 -0
  70. package/dist/core/proxy-log.js +165 -0
  71. package/dist/core/proxy-state.js +305 -0
  72. package/dist/core/safe-delete-install.js +191 -0
  73. package/dist/core/teammate-mode-cleanup.js +33 -0
  74. package/dist/hud/colors.js +13 -2
  75. package/dist/hud/components/config-counts.js +2 -2
  76. package/dist/hud/components/context-usage.js +2 -2
  77. package/dist/hud/components/learning-counts.js +92 -0
  78. package/dist/hud/components/session-cost.js +10 -2
  79. package/dist/hud/components/usage-quota.js +43 -8
  80. package/dist/hud/components/version-badge.js +14 -4
  81. package/dist/hud/config.js +4 -2
  82. package/dist/hud/cost-history.js +281 -0
  83. package/dist/hud/git.js +112 -71
  84. package/dist/hud/index.js +47 -4
  85. package/dist/hud/render.js +8 -20
  86. package/dist/hud/transcript.js +5 -6
  87. package/dist/targets/claude-code/claude-paths.js +106 -0
  88. package/dist/targets/claude-code/compliance-install.js +305 -0
  89. package/dist/targets/claude-code/hooks.js +9 -0
  90. package/dist/targets/claude-code/installer.js +458 -0
  91. package/dist/targets/claude-code/legacy.js +239 -0
  92. package/dist/targets/claude-code/post-install.js +971 -0
  93. package/package.json +23 -17
  94. package/src/assets/agents/code.md +244 -0
  95. package/src/assets/agents/design.md +113 -0
  96. package/src/assets/agents/diagnose.md +210 -0
  97. package/src/assets/agents/evaluate.md +117 -0
  98. package/src/assets/agents/git.md +938 -0
  99. package/src/assets/agents/knowledge.md +89 -0
  100. package/src/assets/agents/learning.md +203 -0
  101. package/src/assets/agents/research.md +134 -0
  102. package/src/assets/agents/review.md +220 -0
  103. package/src/assets/agents/scrutinize.md +95 -0
  104. package/src/assets/agents/simplify.md +108 -0
  105. package/src/assets/agents/skim.md +136 -0
  106. package/src/assets/agents/synthesize.md +402 -0
  107. package/src/assets/agents/test.md +155 -0
  108. package/src/assets/agents/triage.md +141 -0
  109. package/src/assets/agents/validate.md +103 -0
  110. package/src/assets/commands/_partials/_compliance.mds +5 -0
  111. package/src/assets/commands/_partials/_decisions.mds +20 -0
  112. package/src/assets/commands/_partials/_engine.mds +244 -0
  113. package/src/assets/commands/_partials/_factory.mds +216 -0
  114. package/src/assets/commands/_partials/_knowledge.mds +95 -0
  115. package/src/assets/commands/_partials/_plan_contract.mds +51 -0
  116. package/src/assets/commands/_partials/_preamble.mds +82 -0
  117. package/src/assets/commands/_partials/_publication.mds +7 -0
  118. package/src/assets/commands/_partials/_roster.mds +31 -0
  119. package/src/assets/commands/_partials/_ticket_template.mds +59 -0
  120. package/src/assets/commands/_partials/_wave.mds +123 -0
  121. package/src/assets/commands/bug-analysis.mds +353 -0
  122. package/src/assets/commands/code-review.mds +355 -0
  123. package/src/assets/commands/debug.mds +224 -0
  124. package/src/assets/commands/dynamic-build.mds +534 -0
  125. package/src/assets/commands/dynamic-plan.mds +244 -0
  126. package/src/assets/commands/dynamic-profile.mds +132 -0
  127. package/src/assets/commands/dynamic-tickets.mds +226 -0
  128. package/src/assets/commands/explore.mds +150 -0
  129. package/src/assets/commands/implement.mds +496 -0
  130. package/src/assets/commands/plan.mds +523 -0
  131. package/src/assets/commands/release.md +206 -0
  132. package/src/assets/commands/research.mds +164 -0
  133. package/src/assets/commands/resolve.mds +636 -0
  134. package/src/assets/commands/self-review.mds +156 -0
  135. package/src/assets/rules/accessibility.md +11 -0
  136. package/src/assets/rules/compliance.md +15 -0
  137. package/src/assets/rules/engineering.md +13 -0
  138. package/src/assets/rules/go.md +12 -0
  139. package/src/assets/rules/java.md +12 -0
  140. package/src/assets/rules/python.md +12 -0
  141. package/src/assets/rules/quality.md +14 -0
  142. package/src/assets/rules/react.md +11 -0
  143. package/src/assets/rules/reliability.md +12 -0
  144. package/src/assets/rules/rust.md +12 -0
  145. package/src/assets/rules/security.md +12 -0
  146. package/src/assets/rules/typescript.md +12 -0
  147. package/src/assets/rules/ui-design.md +11 -0
  148. package/src/assets/scripts/hooks/assets/orchestrator-charter.md +21 -0
  149. package/src/assets/scripts/hooks/background-memory-update +460 -0
  150. package/src/assets/scripts/hooks/capture-prompt +87 -0
  151. package/src/assets/scripts/hooks/capture-question +153 -0
  152. package/src/assets/scripts/hooks/capture-turn +105 -0
  153. package/src/assets/scripts/hooks/debug-trace +75 -0
  154. package/src/assets/scripts/hooks/decisions-usage-scan.cjs +131 -0
  155. package/src/assets/scripts/hooks/ensure-devflow-init +39 -0
  156. package/src/assets/scripts/hooks/ensure-proxy +294 -0
  157. package/src/assets/scripts/hooks/ensure-root-gitignore +116 -0
  158. package/src/assets/scripts/hooks/get-mtime +23 -0
  159. package/src/assets/scripts/hooks/git-marker +16 -0
  160. package/src/assets/scripts/hooks/hook-bootstrap +25 -0
  161. package/src/assets/scripts/hooks/hook-log-init +41 -0
  162. package/src/assets/scripts/hooks/json-helper.cjs +725 -0
  163. package/src/assets/scripts/hooks/json-parse +243 -0
  164. package/src/assets/scripts/hooks/learning-lock +44 -0
  165. package/src/assets/scripts/hooks/lib/decisions-format.cjs +301 -0
  166. package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +106 -0
  167. package/src/assets/scripts/hooks/lib/project-paths.cjs +230 -0
  168. package/src/assets/scripts/hooks/lib/render-decisions.cjs +398 -0
  169. package/src/assets/scripts/hooks/lib/safe-path.cjs +29 -0
  170. package/src/assets/scripts/hooks/log-paths +24 -0
  171. package/src/assets/scripts/hooks/memory-worker +101 -0
  172. package/src/assets/scripts/hooks/pre-compact-memory +126 -0
  173. package/src/assets/scripts/hooks/preamble +77 -0
  174. package/src/assets/scripts/hooks/queue-append +120 -0
  175. package/src/assets/scripts/hooks/resolve-project-root +37 -0
  176. package/src/assets/scripts/hooks/run-hook +31 -0
  177. package/src/assets/scripts/hooks/session-start-context +180 -0
  178. package/src/assets/scripts/hooks/session-start-memory +318 -0
  179. package/src/assets/scripts/hooks/session-start-orchestrator +54 -0
  180. package/src/assets/scripts/hud.sh +5 -0
  181. package/src/assets/scripts/redact-secrets.cjs +410 -0
  182. package/src/assets/skills/accessibility/SKILL.md +145 -0
  183. package/src/assets/skills/accessibility/references/patterns.md +398 -0
  184. package/src/assets/skills/accessibility/references/sources.md +26 -0
  185. package/src/assets/skills/accessibility/references/violations.md +358 -0
  186. package/src/assets/skills/apply-decisions/SKILL.md +100 -0
  187. package/src/assets/skills/apply-feature-knowledge/SKILL.md +69 -0
  188. package/src/assets/skills/architecture/SKILL.md +138 -0
  189. package/src/assets/skills/architecture/references/patterns.md +378 -0
  190. package/src/assets/skills/architecture/references/sources.md +41 -0
  191. package/src/assets/skills/architecture/references/violations.md +314 -0
  192. package/src/assets/skills/boundary-validation/SKILL.md +119 -0
  193. package/src/assets/skills/boundary-validation/references/detection.md +283 -0
  194. package/src/assets/skills/boundary-validation/references/patterns.md +283 -0
  195. package/src/assets/skills/boundary-validation/references/sources.md +41 -0
  196. package/src/assets/skills/boundary-validation/references/violations.md +211 -0
  197. package/src/assets/skills/complexity/SKILL.md +150 -0
  198. package/src/assets/skills/compliance/SKILL.md +121 -0
  199. package/src/assets/skills/compliance/frameworks/gdpr/fragment.md +11 -0
  200. package/src/assets/skills/compliance/frameworks/gdpr/reference.md +50 -0
  201. package/src/assets/skills/compliance/frameworks/hipaa/fragment.md +11 -0
  202. package/src/assets/skills/compliance/frameworks/hipaa/reference.md +44 -0
  203. package/src/assets/skills/compliance/frameworks/iso-27001/fragment.md +10 -0
  204. package/src/assets/skills/compliance/frameworks/iso-27001/reference.md +45 -0
  205. package/src/assets/skills/compliance/frameworks/pci-dss/fragment.md +11 -0
  206. package/src/assets/skills/compliance/frameworks/pci-dss/reference.md +55 -0
  207. package/src/assets/skills/compliance/frameworks/soc2/fragment.md +10 -0
  208. package/src/assets/skills/compliance/frameworks/soc2/reference.md +53 -0
  209. package/src/assets/skills/compliance/frameworks/sox/fragment.md +10 -0
  210. package/src/assets/skills/compliance/frameworks/sox/reference.md +67 -0
  211. package/src/assets/skills/compliance/references/detection.md +108 -0
  212. package/src/assets/skills/compliance/references/sources.md +28 -0
  213. package/src/assets/skills/consistency/SKILL.md +140 -0
  214. package/src/assets/skills/database/SKILL.md +134 -0
  215. package/src/assets/skills/dependencies/SKILL.md +141 -0
  216. package/src/assets/skills/dependency-research/SKILL.md +133 -0
  217. package/src/assets/skills/dependency-research/references/evaluation-criteria.md +101 -0
  218. package/src/assets/skills/design-review/SKILL.md +155 -0
  219. package/src/assets/skills/design-review/references/anti-patterns.md +207 -0
  220. package/src/assets/skills/docs-framework/SKILL.md +190 -0
  221. package/src/assets/skills/docs-framework/references/patterns.md +381 -0
  222. package/src/assets/skills/docs-framework/references/violations.md +221 -0
  223. package/src/assets/skills/documentation/SKILL.md +126 -0
  224. package/src/assets/skills/feature-knowledge/SKILL.md +341 -0
  225. package/src/assets/skills/gap-analysis/SKILL.md +151 -0
  226. package/src/assets/skills/gap-analysis/references/check-layers.md +125 -0
  227. package/src/assets/skills/git/SKILL.md +287 -0
  228. package/src/assets/skills/git/references/github-api.md +666 -0
  229. package/src/assets/skills/git/references/patterns.md +324 -0
  230. package/src/assets/skills/git/references/sources.md +16 -0
  231. package/src/assets/skills/git/references/violations.md +128 -0
  232. package/src/assets/skills/go/SKILL.md +147 -0
  233. package/src/assets/skills/go/references/concurrency.md +335 -0
  234. package/src/assets/skills/go/references/patterns.md +278 -0
  235. package/src/assets/skills/go/references/sources.md +41 -0
  236. package/src/assets/skills/go/references/violations.md +262 -0
  237. package/src/assets/skills/java/SKILL.md +148 -0
  238. package/src/assets/skills/java/references/modern-java.md +335 -0
  239. package/src/assets/skills/java/references/patterns.md +311 -0
  240. package/src/assets/skills/java/references/sources.md +44 -0
  241. package/src/assets/skills/java/references/violations.md +257 -0
  242. package/src/assets/skills/patterns/SKILL.md +162 -0
  243. package/src/assets/skills/performance/SKILL.md +135 -0
  244. package/src/assets/skills/performance/references/patterns.md +516 -0
  245. package/src/assets/skills/performance/references/sources.md +41 -0
  246. package/src/assets/skills/performance/references/violations.md +417 -0
  247. package/src/assets/skills/python/SKILL.md +156 -0
  248. package/src/assets/skills/python/references/async.md +255 -0
  249. package/src/assets/skills/python/references/patterns.md +280 -0
  250. package/src/assets/skills/python/references/sources.md +41 -0
  251. package/src/assets/skills/python/references/violations.md +272 -0
  252. package/src/assets/skills/qa/SKILL.md +136 -0
  253. package/src/assets/skills/qa/references/browser-testing.md +97 -0
  254. package/src/assets/skills/qa/references/patterns.md +118 -0
  255. package/src/assets/skills/qa/references/scenario-templates.md +102 -0
  256. package/src/assets/skills/qa/references/sources.md +30 -0
  257. package/src/assets/skills/qa/references/violations.md +98 -0
  258. package/src/assets/skills/quality-gates/SKILL.md +152 -0
  259. package/src/assets/skills/quality-gates/references/stub-detection.md +135 -0
  260. package/src/assets/skills/react/SKILL.md +143 -0
  261. package/src/assets/skills/react/references/error-handling.md +179 -0
  262. package/src/assets/skills/react/references/forms.md +214 -0
  263. package/src/assets/skills/react/references/hooks.md +193 -0
  264. package/src/assets/skills/react/references/patterns.md +1336 -0
  265. package/src/assets/skills/react/references/sources.md +35 -0
  266. package/src/assets/skills/react/references/violations.md +570 -0
  267. package/src/assets/skills/regression/SKILL.md +146 -0
  268. package/src/assets/skills/reliability/SKILL.md +153 -0
  269. package/src/assets/skills/reliability/references/detection.md +66 -0
  270. package/src/assets/skills/reliability/references/patterns.md +151 -0
  271. package/src/assets/skills/reliability/references/sources.md +27 -0
  272. package/src/assets/skills/reliability/references/violations.md +125 -0
  273. package/src/assets/skills/research-codebase/SKILL.md +135 -0
  274. package/src/assets/skills/research-competitor/SKILL.md +145 -0
  275. package/src/assets/skills/research-external/SKILL.md +141 -0
  276. package/src/assets/skills/research-market/SKILL.md +145 -0
  277. package/src/assets/skills/research-technology/SKILL.md +180 -0
  278. package/src/assets/skills/review-methodology/SKILL.md +121 -0
  279. package/src/assets/skills/review-methodology/references/patterns.md +186 -0
  280. package/src/assets/skills/review-methodology/references/report-template.md +142 -0
  281. package/src/assets/skills/review-methodology/references/violations.md +125 -0
  282. package/src/assets/skills/rust/SKILL.md +148 -0
  283. package/src/assets/skills/rust/references/ownership.md +278 -0
  284. package/src/assets/skills/rust/references/patterns.md +247 -0
  285. package/src/assets/skills/rust/references/sources.md +46 -0
  286. package/src/assets/skills/rust/references/violations.md +252 -0
  287. package/src/assets/skills/security/SKILL.md +121 -0
  288. package/src/assets/skills/security/references/patterns.md +271 -0
  289. package/src/assets/skills/security/references/sources.md +41 -0
  290. package/src/assets/skills/security/references/violations.md +241 -0
  291. package/src/assets/skills/software-design/SKILL.md +143 -0
  292. package/src/assets/skills/software-design/references/checklist.md +259 -0
  293. package/src/assets/skills/software-design/references/code-smell-violations.md +189 -0
  294. package/src/assets/skills/software-design/references/patterns.md +359 -0
  295. package/src/assets/skills/software-design/references/sources.md +41 -0
  296. package/src/assets/skills/software-design/references/violations.md +341 -0
  297. package/src/assets/skills/test-driven-development/SKILL.md +197 -0
  298. package/src/assets/skills/testing/SKILL.md +139 -0
  299. package/src/assets/skills/testing/references/patterns.md +346 -0
  300. package/src/assets/skills/testing/references/sources.md +53 -0
  301. package/src/assets/skills/testing/references/violations.md +322 -0
  302. package/src/assets/skills/typescript/SKILL.md +150 -0
  303. package/src/assets/skills/typescript/references/async.md +333 -0
  304. package/src/assets/skills/typescript/references/patterns.md +440 -0
  305. package/src/assets/skills/typescript/references/sources.md +41 -0
  306. package/src/assets/skills/typescript/references/type-guards.md +333 -0
  307. package/src/assets/skills/typescript/references/utility-types.md +255 -0
  308. package/src/assets/skills/typescript/references/violations.md +285 -0
  309. package/src/assets/skills/ui-design/SKILL.md +144 -0
  310. package/src/assets/skills/ui-design/references/patterns.md +341 -0
  311. package/src/assets/skills/ui-design/references/sources.md +41 -0
  312. package/src/assets/skills/ui-design/references/violations.md +312 -0
  313. package/src/assets/skills/worktree-support/SKILL.md +92 -0
  314. package/src/targets/claude-code/templates/claudeignore.template +188 -0
  315. package/src/targets/claude-code/templates/settings.json +86 -0
  316. package/dist/cli.d.ts +0 -3
  317. package/dist/commands/ambient.d.ts +0 -18
  318. package/dist/commands/ambient.js +0 -137
  319. package/dist/commands/hud.d.ts +0 -22
  320. package/dist/commands/hud.js +0 -180
  321. package/dist/commands/init.d.ts +0 -16
  322. package/dist/commands/init.js +0 -738
  323. package/dist/commands/list.d.ts +0 -24
  324. package/dist/commands/list.js +0 -89
  325. package/dist/commands/memory.d.ts +0 -22
  326. package/dist/commands/memory.js +0 -175
  327. package/dist/commands/skills.d.ts +0 -11
  328. package/dist/commands/skills.js +0 -116
  329. package/dist/commands/uninstall.d.ts +0 -22
  330. package/dist/commands/uninstall.js +0 -558
  331. package/dist/hud/cache.d.ts +0 -14
  332. package/dist/hud/cache.js +0 -54
  333. package/dist/hud/colors.d.ts +0 -23
  334. package/dist/hud/components/config-counts.d.ts +0 -8
  335. package/dist/hud/components/context-usage.d.ts +0 -8
  336. package/dist/hud/components/diff-stats.d.ts +0 -3
  337. package/dist/hud/components/directory.d.ts +0 -3
  338. package/dist/hud/components/git-ahead-behind.d.ts +0 -3
  339. package/dist/hud/components/git-branch.d.ts +0 -3
  340. package/dist/hud/components/model.d.ts +0 -3
  341. package/dist/hud/components/release-info.d.ts +0 -3
  342. package/dist/hud/components/session-cost.d.ts +0 -3
  343. package/dist/hud/components/session-duration.d.ts +0 -3
  344. package/dist/hud/components/todo-progress.d.ts +0 -3
  345. package/dist/hud/components/usage-quota.d.ts +0 -3
  346. package/dist/hud/components/version-badge.d.ts +0 -3
  347. package/dist/hud/components/worktree-count.d.ts +0 -3
  348. package/dist/hud/config.d.ts +0 -10
  349. package/dist/hud/credentials.d.ts +0 -17
  350. package/dist/hud/credentials.js +0 -99
  351. package/dist/hud/git.d.ts +0 -7
  352. package/dist/hud/index.d.ts +0 -2
  353. package/dist/hud/render.d.ts +0 -7
  354. package/dist/hud/stdin.d.ts +0 -6
  355. package/dist/hud/transcript.d.ts +0 -7
  356. package/dist/hud/types.d.ts +0 -116
  357. package/dist/hud/usage-api.d.ts +0 -7
  358. package/dist/hud/usage-api.js +0 -84
  359. package/dist/plugins.d.ts +0 -46
  360. package/dist/plugins.js +0 -233
  361. package/dist/utils/cli.d.ts +0 -5
  362. package/dist/utils/cli.js +0 -14
  363. package/dist/utils/git.d.ts +0 -11
  364. package/dist/utils/git.js +0 -36
  365. package/dist/utils/installer.d.ts +0 -41
  366. package/dist/utils/installer.js +0 -195
  367. package/dist/utils/manifest.d.ts +0 -46
  368. package/dist/utils/manifest.js +0 -100
  369. package/dist/utils/paths.d.ts +0 -42
  370. package/dist/utils/paths.js +0 -106
  371. package/dist/utils/post-install.d.ts +0 -87
  372. package/dist/utils/post-install.js +0 -546
  373. package/dist/utils/safe-delete-install.d.ts +0 -29
  374. package/dist/utils/safe-delete-install.js +0 -191
  375. package/dist/utils/safe-delete.d.ts +0 -12
  376. package/plugins/devflow-accessibility/.claude-plugin/plugin.json +0 -21
  377. package/plugins/devflow-accessibility/skills/accessibility/SKILL.md +0 -229
  378. package/plugins/devflow-accessibility/skills/accessibility/references/patterns.md +0 -670
  379. package/plugins/devflow-accessibility/skills/accessibility/references/violations.md +0 -419
  380. package/plugins/devflow-ambient/.claude-plugin/plugin.json +0 -33
  381. package/plugins/devflow-ambient/README.md +0 -68
  382. package/plugins/devflow-ambient/agents/coder.md +0 -135
  383. package/plugins/devflow-ambient/agents/reviewer.md +0 -165
  384. package/plugins/devflow-ambient/agents/scrutinizer.md +0 -82
  385. package/plugins/devflow-ambient/agents/shepherd.md +0 -108
  386. package/plugins/devflow-ambient/agents/simplifier.md +0 -102
  387. package/plugins/devflow-ambient/agents/skimmer.md +0 -143
  388. package/plugins/devflow-ambient/agents/validator.md +0 -86
  389. package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +0 -145
  390. package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +0 -74
  391. package/plugins/devflow-ambient/skills/debug-orchestration/SKILL.md +0 -69
  392. package/plugins/devflow-ambient/skills/implementation-orchestration/SKILL.md +0 -92
  393. package/plugins/devflow-ambient/skills/plan-orchestration/SKILL.md +0 -71
  394. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +0 -19
  395. package/plugins/devflow-audit-claude/README.md +0 -46
  396. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +0 -134
  397. package/plugins/devflow-audit-claude/commands/audit-claude.md +0 -89
  398. package/plugins/devflow-code-review/.claude-plugin/plugin.json +0 -38
  399. package/plugins/devflow-code-review/README.md +0 -73
  400. package/plugins/devflow-code-review/agents/git.md +0 -277
  401. package/plugins/devflow-code-review/agents/reviewer.md +0 -165
  402. package/plugins/devflow-code-review/agents/synthesizer.md +0 -211
  403. package/plugins/devflow-code-review/commands/code-review-teams.md +0 -285
  404. package/plugins/devflow-code-review/commands/code-review.md +0 -163
  405. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +0 -124
  406. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +0 -104
  407. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +0 -122
  408. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +0 -217
  409. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +0 -153
  410. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +0 -873
  411. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +0 -575
  412. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +0 -143
  413. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +0 -140
  414. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +0 -134
  415. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +0 -141
  416. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +0 -125
  417. package/plugins/devflow-code-review/skills/knowledge-persistence/SKILL.md +0 -128
  418. package/plugins/devflow-code-review/skills/knowledge-persistence/references/examples.md +0 -44
  419. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +0 -154
  420. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +0 -503
  421. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +0 -354
  422. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +0 -146
  423. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +0 -119
  424. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +0 -186
  425. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +0 -142
  426. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +0 -125
  427. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +0 -156
  428. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +0 -507
  429. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +0 -237
  430. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +0 -183
  431. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +0 -220
  432. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +0 -221
  433. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +0 -31
  434. package/plugins/devflow-core-skills/README.md +0 -50
  435. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +0 -162
  436. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +0 -276
  437. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +0 -144
  438. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +0 -576
  439. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +0 -369
  440. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +0 -143
  441. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +0 -346
  442. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +0 -221
  443. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +0 -122
  444. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +0 -289
  445. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +0 -18
  446. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +0 -158
  447. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +0 -115
  448. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +0 -77
  449. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +0 -127
  450. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +0 -96
  451. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +0 -153
  452. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +0 -572
  453. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +0 -298
  454. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +0 -148
  455. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +0 -283
  456. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +0 -361
  457. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +0 -224
  458. package/plugins/devflow-core-skills/skills/search-first/SKILL.md +0 -133
  459. package/plugins/devflow-core-skills/skills/search-first/references/evaluation-criteria.md +0 -101
  460. package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +0 -137
  461. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +0 -183
  462. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +0 -149
  463. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +0 -220
  464. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +0 -108
  465. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +0 -221
  466. package/plugins/devflow-debug/.claude-plugin/plugin.json +0 -26
  467. package/plugins/devflow-debug/README.md +0 -65
  468. package/plugins/devflow-debug/agents/git.md +0 -277
  469. package/plugins/devflow-debug/agents/synthesizer.md +0 -211
  470. package/plugins/devflow-debug/commands/debug-teams.md +0 -245
  471. package/plugins/devflow-debug/commands/debug.md +0 -174
  472. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +0 -124
  473. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +0 -104
  474. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +0 -122
  475. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +0 -217
  476. package/plugins/devflow-debug/skills/git-safety/SKILL.md +0 -122
  477. package/plugins/devflow-debug/skills/git-safety/references/detection.md +0 -290
  478. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +0 -289
  479. package/plugins/devflow-debug/skills/git-safety/references/violations.md +0 -18
  480. package/plugins/devflow-debug/skills/knowledge-persistence/SKILL.md +0 -128
  481. package/plugins/devflow-debug/skills/knowledge-persistence/references/examples.md +0 -44
  482. package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +0 -21
  483. package/plugins/devflow-frontend-design/skills/frontend-design/SKILL.md +0 -254
  484. package/plugins/devflow-frontend-design/skills/frontend-design/references/patterns.md +0 -511
  485. package/plugins/devflow-frontend-design/skills/frontend-design/references/violations.md +0 -453
  486. package/plugins/devflow-go/.claude-plugin/plugin.json +0 -21
  487. package/plugins/devflow-go/skills/go/SKILL.md +0 -187
  488. package/plugins/devflow-go/skills/go/references/concurrency.md +0 -312
  489. package/plugins/devflow-go/skills/go/references/patterns.md +0 -232
  490. package/plugins/devflow-go/skills/go/references/violations.md +0 -205
  491. package/plugins/devflow-implement/.claude-plugin/plugin.json +0 -35
  492. package/plugins/devflow-implement/README.md +0 -71
  493. package/plugins/devflow-implement/agents/coder.md +0 -135
  494. package/plugins/devflow-implement/agents/git.md +0 -277
  495. package/plugins/devflow-implement/agents/scrutinizer.md +0 -82
  496. package/plugins/devflow-implement/agents/shepherd.md +0 -108
  497. package/plugins/devflow-implement/agents/simplifier.md +0 -102
  498. package/plugins/devflow-implement/agents/skimmer.md +0 -143
  499. package/plugins/devflow-implement/agents/synthesizer.md +0 -211
  500. package/plugins/devflow-implement/agents/validator.md +0 -86
  501. package/plugins/devflow-implement/commands/implement-teams.md +0 -620
  502. package/plugins/devflow-implement/commands/implement.md +0 -430
  503. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +0 -124
  504. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +0 -104
  505. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +0 -122
  506. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +0 -217
  507. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +0 -162
  508. package/plugins/devflow-implement/skills/knowledge-persistence/SKILL.md +0 -128
  509. package/plugins/devflow-implement/skills/knowledge-persistence/references/examples.md +0 -44
  510. package/plugins/devflow-implement/skills/self-review/SKILL.md +0 -149
  511. package/plugins/devflow-implement/skills/self-review/references/stub-detection.md +0 -135
  512. package/plugins/devflow-java/.claude-plugin/plugin.json +0 -21
  513. package/plugins/devflow-java/skills/java/SKILL.md +0 -183
  514. package/plugins/devflow-java/skills/java/references/modern-java.md +0 -270
  515. package/plugins/devflow-java/skills/java/references/patterns.md +0 -235
  516. package/plugins/devflow-java/skills/java/references/violations.md +0 -213
  517. package/plugins/devflow-python/.claude-plugin/plugin.json +0 -21
  518. package/plugins/devflow-python/skills/python/SKILL.md +0 -188
  519. package/plugins/devflow-python/skills/python/references/async.md +0 -220
  520. package/plugins/devflow-python/skills/python/references/patterns.md +0 -226
  521. package/plugins/devflow-python/skills/python/references/violations.md +0 -204
  522. package/plugins/devflow-react/.claude-plugin/plugin.json +0 -21
  523. package/plugins/devflow-react/skills/react/SKILL.md +0 -276
  524. package/plugins/devflow-react/skills/react/references/patterns.md +0 -1331
  525. package/plugins/devflow-react/skills/react/references/violations.md +0 -565
  526. package/plugins/devflow-resolve/.claude-plugin/plugin.json +0 -29
  527. package/plugins/devflow-resolve/README.md +0 -65
  528. package/plugins/devflow-resolve/agents/git.md +0 -277
  529. package/plugins/devflow-resolve/agents/resolver.md +0 -131
  530. package/plugins/devflow-resolve/agents/simplifier.md +0 -102
  531. package/plugins/devflow-resolve/commands/resolve-teams.md +0 -307
  532. package/plugins/devflow-resolve/commands/resolve.md +0 -246
  533. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +0 -124
  534. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +0 -104
  535. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +0 -122
  536. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +0 -217
  537. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +0 -162
  538. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +0 -1063
  539. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +0 -483
  540. package/plugins/devflow-resolve/skills/knowledge-persistence/SKILL.md +0 -128
  541. package/plugins/devflow-resolve/skills/knowledge-persistence/references/examples.md +0 -44
  542. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +0 -156
  543. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +0 -287
  544. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +0 -507
  545. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +0 -237
  546. package/plugins/devflow-rust/.claude-plugin/plugin.json +0 -21
  547. package/plugins/devflow-rust/skills/rust/SKILL.md +0 -193
  548. package/plugins/devflow-rust/skills/rust/references/ownership.md +0 -242
  549. package/plugins/devflow-rust/skills/rust/references/patterns.md +0 -210
  550. package/plugins/devflow-rust/skills/rust/references/violations.md +0 -191
  551. package/plugins/devflow-self-review/.claude-plugin/plugin.json +0 -26
  552. package/plugins/devflow-self-review/README.md +0 -38
  553. package/plugins/devflow-self-review/agents/scrutinizer.md +0 -82
  554. package/plugins/devflow-self-review/agents/simplifier.md +0 -102
  555. package/plugins/devflow-self-review/agents/validator.md +0 -86
  556. package/plugins/devflow-self-review/commands/self-review.md +0 -132
  557. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +0 -162
  558. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +0 -276
  559. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +0 -144
  560. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +0 -303
  561. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +0 -576
  562. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +0 -369
  563. package/plugins/devflow-self-review/skills/self-review/SKILL.md +0 -149
  564. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +0 -405
  565. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +0 -253
  566. package/plugins/devflow-self-review/skills/self-review/references/stub-detection.md +0 -135
  567. package/plugins/devflow-self-review/skills/self-review/references/violations.md +0 -308
  568. package/plugins/devflow-specify/.claude-plugin/plugin.json +0 -25
  569. package/plugins/devflow-specify/README.md +0 -46
  570. package/plugins/devflow-specify/agents/skimmer.md +0 -143
  571. package/plugins/devflow-specify/agents/synthesizer.md +0 -211
  572. package/plugins/devflow-specify/commands/specify-teams.md +0 -321
  573. package/plugins/devflow-specify/commands/specify.md +0 -186
  574. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +0 -124
  575. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +0 -104
  576. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +0 -122
  577. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +0 -217
  578. package/plugins/devflow-typescript/.claude-plugin/plugin.json +0 -21
  579. package/plugins/devflow-typescript/skills/typescript/SKILL.md +0 -176
  580. package/plugins/devflow-typescript/skills/typescript/references/patterns.md +0 -1105
  581. package/plugins/devflow-typescript/skills/typescript/references/violations.md +0 -433
  582. package/scripts/hooks/ambient-prompt +0 -50
  583. package/scripts/hooks/background-memory-update +0 -257
  584. package/scripts/hooks/ensure-memory-gitignore +0 -17
  585. package/scripts/hooks/pre-compact-memory +0 -87
  586. package/scripts/hooks/run-hook +0 -23
  587. package/scripts/hooks/session-start-memory +0 -165
  588. package/scripts/hooks/stop-update-memory +0 -85
  589. package/scripts/hud/cache.d.ts +0 -14
  590. package/scripts/hud/cache.d.ts.map +0 -1
  591. package/scripts/hud/cache.js +0 -54
  592. package/scripts/hud/cache.js.map +0 -1
  593. package/scripts/hud/colors.d.ts +0 -23
  594. package/scripts/hud/colors.d.ts.map +0 -1
  595. package/scripts/hud/colors.js +0 -62
  596. package/scripts/hud/colors.js.map +0 -1
  597. package/scripts/hud/components/config-counts.d.ts +0 -8
  598. package/scripts/hud/components/config-counts.d.ts.map +0 -1
  599. package/scripts/hud/components/config-counts.js +0 -91
  600. package/scripts/hud/components/config-counts.js.map +0 -1
  601. package/scripts/hud/components/context-usage.d.ts +0 -8
  602. package/scripts/hud/components/context-usage.d.ts.map +0 -1
  603. package/scripts/hud/components/context-usage.js +0 -49
  604. package/scripts/hud/components/context-usage.js.map +0 -1
  605. package/scripts/hud/components/diff-stats.d.ts +0 -3
  606. package/scripts/hud/components/diff-stats.d.ts.map +0 -1
  607. package/scripts/hud/components/diff-stats.js +0 -36
  608. package/scripts/hud/components/diff-stats.js.map +0 -1
  609. package/scripts/hud/components/directory.d.ts +0 -3
  610. package/scripts/hud/components/directory.d.ts.map +0 -1
  611. package/scripts/hud/components/directory.js +0 -10
  612. package/scripts/hud/components/directory.js.map +0 -1
  613. package/scripts/hud/components/git-ahead-behind.d.ts +0 -3
  614. package/scripts/hud/components/git-ahead-behind.d.ts.map +0 -1
  615. package/scripts/hud/components/git-ahead-behind.js +0 -16
  616. package/scripts/hud/components/git-ahead-behind.js.map +0 -1
  617. package/scripts/hud/components/git-branch.d.ts +0 -3
  618. package/scripts/hud/components/git-branch.d.ts.map +0 -1
  619. package/scripts/hud/components/git-branch.js +0 -14
  620. package/scripts/hud/components/git-branch.js.map +0 -1
  621. package/scripts/hud/components/model.d.ts +0 -3
  622. package/scripts/hud/components/model.d.ts.map +0 -1
  623. package/scripts/hud/components/model.js +0 -21
  624. package/scripts/hud/components/model.js.map +0 -1
  625. package/scripts/hud/components/release-info.d.ts +0 -3
  626. package/scripts/hud/components/release-info.d.ts.map +0 -1
  627. package/scripts/hud/components/release-info.js +0 -9
  628. package/scripts/hud/components/release-info.js.map +0 -1
  629. package/scripts/hud/components/session-cost.d.ts +0 -3
  630. package/scripts/hud/components/session-cost.d.ts.map +0 -1
  631. package/scripts/hud/components/session-cost.js +0 -9
  632. package/scripts/hud/components/session-cost.js.map +0 -1
  633. package/scripts/hud/components/session-duration.d.ts +0 -3
  634. package/scripts/hud/components/session-duration.d.ts.map +0 -1
  635. package/scripts/hud/components/session-duration.js +0 -18
  636. package/scripts/hud/components/session-duration.js.map +0 -1
  637. package/scripts/hud/components/todo-progress.d.ts +0 -3
  638. package/scripts/hud/components/todo-progress.d.ts.map +0 -1
  639. package/scripts/hud/components/todo-progress.js +0 -11
  640. package/scripts/hud/components/todo-progress.js.map +0 -1
  641. package/scripts/hud/components/usage-quota.d.ts +0 -3
  642. package/scripts/hud/components/usage-quota.d.ts.map +0 -1
  643. package/scripts/hud/components/usage-quota.js +0 -45
  644. package/scripts/hud/components/usage-quota.js.map +0 -1
  645. package/scripts/hud/components/version-badge.d.ts +0 -3
  646. package/scripts/hud/components/version-badge.d.ts.map +0 -1
  647. package/scripts/hud/components/version-badge.js +0 -80
  648. package/scripts/hud/components/version-badge.js.map +0 -1
  649. package/scripts/hud/components/worktree-count.d.ts +0 -3
  650. package/scripts/hud/components/worktree-count.d.ts.map +0 -1
  651. package/scripts/hud/components/worktree-count.js +0 -8
  652. package/scripts/hud/components/worktree-count.js.map +0 -1
  653. package/scripts/hud/config.d.ts +0 -10
  654. package/scripts/hud/config.d.ts.map +0 -1
  655. package/scripts/hud/config.js +0 -55
  656. package/scripts/hud/config.js.map +0 -1
  657. package/scripts/hud/credentials.d.ts +0 -17
  658. package/scripts/hud/credentials.d.ts.map +0 -1
  659. package/scripts/hud/credentials.js +0 -99
  660. package/scripts/hud/credentials.js.map +0 -1
  661. package/scripts/hud/git.d.ts +0 -7
  662. package/scripts/hud/git.d.ts.map +0 -1
  663. package/scripts/hud/git.js +0 -153
  664. package/scripts/hud/git.js.map +0 -1
  665. package/scripts/hud/index.d.ts +0 -2
  666. package/scripts/hud/index.d.ts.map +0 -1
  667. package/scripts/hud/index.js +0 -81
  668. package/scripts/hud/index.js.map +0 -1
  669. package/scripts/hud/render.d.ts +0 -7
  670. package/scripts/hud/render.d.ts.map +0 -1
  671. package/scripts/hud/render.js +0 -111
  672. package/scripts/hud/render.js.map +0 -1
  673. package/scripts/hud/stdin.d.ts +0 -6
  674. package/scripts/hud/stdin.d.ts.map +0 -1
  675. package/scripts/hud/stdin.js +0 -25
  676. package/scripts/hud/stdin.js.map +0 -1
  677. package/scripts/hud/transcript.d.ts +0 -7
  678. package/scripts/hud/transcript.d.ts.map +0 -1
  679. package/scripts/hud/transcript.js +0 -130
  680. package/scripts/hud/transcript.js.map +0 -1
  681. package/scripts/hud/types.d.ts +0 -116
  682. package/scripts/hud/types.d.ts.map +0 -1
  683. package/scripts/hud/types.js +0 -2
  684. package/scripts/hud/types.js.map +0 -1
  685. package/scripts/hud/usage-api.d.ts +0 -7
  686. package/scripts/hud/usage-api.d.ts.map +0 -1
  687. package/scripts/hud/usage-api.js +0 -84
  688. package/scripts/hud/usage-api.js.map +0 -1
  689. package/scripts/hud.sh +0 -5
  690. package/shared/agents/coder.md +0 -135
  691. package/shared/agents/git.md +0 -277
  692. package/shared/agents/resolver.md +0 -131
  693. package/shared/agents/reviewer.md +0 -165
  694. package/shared/agents/scrutinizer.md +0 -82
  695. package/shared/agents/shepherd.md +0 -108
  696. package/shared/agents/simplifier.md +0 -102
  697. package/shared/agents/skimmer.md +0 -143
  698. package/shared/agents/synthesizer.md +0 -211
  699. package/shared/agents/validator.md +0 -86
  700. package/shared/skills/accessibility/SKILL.md +0 -229
  701. package/shared/skills/accessibility/references/detection.md +0 -171
  702. package/shared/skills/accessibility/references/patterns.md +0 -670
  703. package/shared/skills/accessibility/references/violations.md +0 -419
  704. package/shared/skills/agent-teams/SKILL.md +0 -124
  705. package/shared/skills/agent-teams/references/cleanup.md +0 -104
  706. package/shared/skills/agent-teams/references/communication.md +0 -122
  707. package/shared/skills/agent-teams/references/team-patterns.md +0 -217
  708. package/shared/skills/ambient-router/SKILL.md +0 -145
  709. package/shared/skills/ambient-router/references/skill-catalog.md +0 -74
  710. package/shared/skills/architecture-patterns/SKILL.md +0 -153
  711. package/shared/skills/architecture-patterns/references/detection.md +0 -337
  712. package/shared/skills/architecture-patterns/references/patterns.md +0 -873
  713. package/shared/skills/architecture-patterns/references/violations.md +0 -575
  714. package/shared/skills/complexity-patterns/SKILL.md +0 -143
  715. package/shared/skills/complexity-patterns/references/detection.md +0 -264
  716. package/shared/skills/complexity-patterns/references/patterns.md +0 -487
  717. package/shared/skills/complexity-patterns/references/violations.md +0 -361
  718. package/shared/skills/consistency-patterns/SKILL.md +0 -140
  719. package/shared/skills/consistency-patterns/references/detection.md +0 -207
  720. package/shared/skills/consistency-patterns/references/patterns.md +0 -202
  721. package/shared/skills/consistency-patterns/references/violations.md +0 -213
  722. package/shared/skills/core-patterns/SKILL.md +0 -162
  723. package/shared/skills/core-patterns/references/checklist.md +0 -276
  724. package/shared/skills/core-patterns/references/code-smell-violations.md +0 -144
  725. package/shared/skills/core-patterns/references/detection.md +0 -303
  726. package/shared/skills/core-patterns/references/patterns.md +0 -576
  727. package/shared/skills/core-patterns/references/violations.md +0 -369
  728. package/shared/skills/database-patterns/SKILL.md +0 -134
  729. package/shared/skills/database-patterns/references/detection.md +0 -208
  730. package/shared/skills/database-patterns/references/patterns.md +0 -394
  731. package/shared/skills/database-patterns/references/violations.md +0 -332
  732. package/shared/skills/debug-orchestration/SKILL.md +0 -69
  733. package/shared/skills/dependencies-patterns/SKILL.md +0 -141
  734. package/shared/skills/dependencies-patterns/references/detection.md +0 -181
  735. package/shared/skills/dependencies-patterns/references/patterns.md +0 -225
  736. package/shared/skills/dependencies-patterns/references/violations.md +0 -247
  737. package/shared/skills/docs-framework/SKILL.md +0 -143
  738. package/shared/skills/docs-framework/references/patterns.md +0 -346
  739. package/shared/skills/docs-framework/references/violations.md +0 -221
  740. package/shared/skills/documentation-patterns/SKILL.md +0 -125
  741. package/shared/skills/documentation-patterns/references/detection.md +0 -190
  742. package/shared/skills/documentation-patterns/references/patterns.md +0 -189
  743. package/shared/skills/documentation-patterns/references/violations.md +0 -163
  744. package/shared/skills/frontend-design/SKILL.md +0 -254
  745. package/shared/skills/frontend-design/references/detection.md +0 -184
  746. package/shared/skills/frontend-design/references/patterns.md +0 -511
  747. package/shared/skills/frontend-design/references/violations.md +0 -453
  748. package/shared/skills/git-safety/SKILL.md +0 -122
  749. package/shared/skills/git-safety/references/detection.md +0 -290
  750. package/shared/skills/git-safety/references/patterns.md +0 -289
  751. package/shared/skills/git-safety/references/violations.md +0 -18
  752. package/shared/skills/git-workflow/SKILL.md +0 -158
  753. package/shared/skills/git-workflow/references/commit-patterns.md +0 -115
  754. package/shared/skills/git-workflow/references/commit-violations.md +0 -77
  755. package/shared/skills/git-workflow/references/pr-patterns.md +0 -127
  756. package/shared/skills/git-workflow/references/pr-violations.md +0 -96
  757. package/shared/skills/github-patterns/SKILL.md +0 -153
  758. package/shared/skills/github-patterns/references/patterns.md +0 -572
  759. package/shared/skills/github-patterns/references/violations.md +0 -298
  760. package/shared/skills/go/SKILL.md +0 -187
  761. package/shared/skills/go/references/concurrency.md +0 -312
  762. package/shared/skills/go/references/detection.md +0 -129
  763. package/shared/skills/go/references/patterns.md +0 -232
  764. package/shared/skills/go/references/violations.md +0 -205
  765. package/shared/skills/implementation-orchestration/SKILL.md +0 -92
  766. package/shared/skills/implementation-patterns/SKILL.md +0 -162
  767. package/shared/skills/implementation-patterns/references/patterns.md +0 -1063
  768. package/shared/skills/implementation-patterns/references/violations.md +0 -483
  769. package/shared/skills/input-validation/SKILL.md +0 -148
  770. package/shared/skills/input-validation/references/detection.md +0 -283
  771. package/shared/skills/input-validation/references/patterns.md +0 -361
  772. package/shared/skills/input-validation/references/violations.md +0 -224
  773. package/shared/skills/java/SKILL.md +0 -183
  774. package/shared/skills/java/references/detection.md +0 -120
  775. package/shared/skills/java/references/modern-java.md +0 -270
  776. package/shared/skills/java/references/patterns.md +0 -235
  777. package/shared/skills/java/references/violations.md +0 -213
  778. package/shared/skills/knowledge-persistence/SKILL.md +0 -128
  779. package/shared/skills/knowledge-persistence/references/examples.md +0 -44
  780. package/shared/skills/performance-patterns/SKILL.md +0 -154
  781. package/shared/skills/performance-patterns/references/detection.md +0 -351
  782. package/shared/skills/performance-patterns/references/patterns.md +0 -503
  783. package/shared/skills/performance-patterns/references/violations.md +0 -354
  784. package/shared/skills/plan-orchestration/SKILL.md +0 -71
  785. package/shared/skills/python/SKILL.md +0 -188
  786. package/shared/skills/python/references/async.md +0 -220
  787. package/shared/skills/python/references/detection.md +0 -128
  788. package/shared/skills/python/references/patterns.md +0 -226
  789. package/shared/skills/python/references/violations.md +0 -204
  790. package/shared/skills/react/SKILL.md +0 -276
  791. package/shared/skills/react/references/patterns.md +0 -1331
  792. package/shared/skills/react/references/violations.md +0 -565
  793. package/shared/skills/regression-patterns/SKILL.md +0 -146
  794. package/shared/skills/regression-patterns/references/detection.md +0 -237
  795. package/shared/skills/regression-patterns/references/patterns.md +0 -226
  796. package/shared/skills/regression-patterns/references/violations.md +0 -225
  797. package/shared/skills/review-methodology/SKILL.md +0 -119
  798. package/shared/skills/review-methodology/references/patterns.md +0 -186
  799. package/shared/skills/review-methodology/references/report-template.md +0 -142
  800. package/shared/skills/review-methodology/references/violations.md +0 -125
  801. package/shared/skills/rust/SKILL.md +0 -193
  802. package/shared/skills/rust/references/detection.md +0 -131
  803. package/shared/skills/rust/references/ownership.md +0 -242
  804. package/shared/skills/rust/references/patterns.md +0 -210
  805. package/shared/skills/rust/references/violations.md +0 -191
  806. package/shared/skills/search-first/SKILL.md +0 -133
  807. package/shared/skills/search-first/references/evaluation-criteria.md +0 -101
  808. package/shared/skills/security-patterns/SKILL.md +0 -156
  809. package/shared/skills/security-patterns/references/detection.md +0 -287
  810. package/shared/skills/security-patterns/references/patterns.md +0 -507
  811. package/shared/skills/security-patterns/references/violations.md +0 -237
  812. package/shared/skills/self-review/SKILL.md +0 -149
  813. package/shared/skills/self-review/references/patterns.md +0 -405
  814. package/shared/skills/self-review/references/report-template.md +0 -253
  815. package/shared/skills/self-review/references/stub-detection.md +0 -135
  816. package/shared/skills/self-review/references/violations.md +0 -308
  817. package/shared/skills/test-driven-development/SKILL.md +0 -137
  818. package/shared/skills/test-driven-development/references/rationalization-prevention.md +0 -111
  819. package/shared/skills/test-patterns/SKILL.md +0 -183
  820. package/shared/skills/test-patterns/references/detection.md +0 -149
  821. package/shared/skills/test-patterns/references/patterns.md +0 -220
  822. package/shared/skills/test-patterns/references/report-template.md +0 -108
  823. package/shared/skills/test-patterns/references/violations.md +0 -221
  824. package/shared/skills/typescript/SKILL.md +0 -176
  825. package/shared/skills/typescript/references/patterns.md +0 -1105
  826. package/shared/skills/typescript/references/violations.md +0 -433
  827. package/src/templates/claudeignore.template +0 -188
  828. package/src/templates/settings.json +0 -59
  829. /package/dist/{utils → core}/safe-delete.js +0 -0
  830. /package/{plugins/devflow-accessibility → src/assets}/skills/accessibility/references/detection.md +0 -0
  831. /package/{plugins/devflow-code-review/skills/architecture-patterns → src/assets/skills/architecture}/references/detection.md +0 -0
  832. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/detection.md +0 -0
  833. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/patterns.md +0 -0
  834. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/violations.md +0 -0
  835. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/detection.md +0 -0
  836. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/patterns.md +0 -0
  837. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/violations.md +0 -0
  838. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/detection.md +0 -0
  839. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/patterns.md +0 -0
  840. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/violations.md +0 -0
  841. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/detection.md +0 -0
  842. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/patterns.md +0 -0
  843. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/violations.md +0 -0
  844. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/detection.md +0 -0
  845. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/patterns.md +0 -0
  846. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/violations.md +0 -0
  847. /package/{plugins/devflow-core-skills/skills/git-safety → src/assets/skills/git}/references/detection.md +0 -0
  848. /package/{plugins/devflow-go → src/assets}/skills/go/references/detection.md +0 -0
  849. /package/{plugins/devflow-java → src/assets}/skills/java/references/detection.md +0 -0
  850. /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/patterns.md +0 -0
  851. /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/violations.md +0 -0
  852. /package/{plugins/devflow-code-review/skills/performance-patterns → src/assets/skills/performance}/references/detection.md +0 -0
  853. /package/{plugins/devflow-python → src/assets}/skills/python/references/detection.md +0 -0
  854. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/patterns.md +0 -0
  855. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/report-template.md +0 -0
  856. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/violations.md +0 -0
  857. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/detection.md +0 -0
  858. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/patterns.md +0 -0
  859. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/violations.md +0 -0
  860. /package/{plugins/devflow-rust → src/assets}/skills/rust/references/detection.md +0 -0
  861. /package/{plugins/devflow-code-review/skills/security-patterns → src/assets/skills/security}/references/detection.md +0 -0
  862. /package/{plugins/devflow-core-skills/skills/core-patterns → src/assets/skills/software-design}/references/detection.md +0 -0
  863. /package/{plugins/devflow-core-skills → src/assets}/skills/test-driven-development/references/rationalization-prevention.md +0 -0
  864. /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/detection.md +0 -0
  865. /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/report-template.md +0 -0
  866. /package/{plugins/devflow-frontend-design/skills/frontend-design → src/assets/skills/ui-design}/references/detection.md +0 -0
  867. /package/src/{templates → targets/claude-code/templates}/managed-settings.json +0 -0
@@ -1,1063 +0,0 @@
1
- # Implementation Correct Patterns
2
-
3
- Extended correct patterns for implementation. Reference from main SKILL.md.
4
-
5
- ---
6
-
7
- ## CRUD Patterns
8
-
9
- ### Create Operation
10
-
11
- ```typescript
12
- // CORRECT: Validate -> Transform -> Persist -> Return
13
- async function createUser(input: CreateUserInput): Promise<Result<User, CreateError>> {
14
- // 1. Validate input
15
- const validated = validateCreateUser(input);
16
- if (!validated.ok) {
17
- return Err({ type: 'validation', details: validated.error });
18
- }
19
-
20
- // 2. Transform to domain entity
21
- const user: User = {
22
- id: generateId(),
23
- ...validated.value,
24
- createdAt: new Date(),
25
- updatedAt: new Date(),
26
- };
27
-
28
- // 3. Persist
29
- const saved = await userRepository.save(user);
30
- if (!saved.ok) {
31
- return Err({ type: 'persistence', details: saved.error });
32
- }
33
-
34
- // 4. Return created entity
35
- return Ok(saved.value);
36
- }
37
- ```
38
-
39
- ### Read Operation (Single)
40
-
41
- ```typescript
42
- // CORRECT: Fetch -> NotFound check -> Transform -> Return
43
- async function getUser(id: UserId): Promise<Result<UserDTO, GetError>> {
44
- // 1. Fetch from store
45
- const user = await userRepository.findById(id);
46
-
47
- // 2. Handle not found
48
- if (!user.ok) {
49
- return Err({ type: 'not_found', id });
50
- }
51
-
52
- // 3. Transform to DTO (hide internal fields)
53
- const dto = toUserDTO(user.value);
54
-
55
- // 4. Return
56
- return Ok(dto);
57
- }
58
- ```
59
-
60
- ### Read Operation (List)
61
-
62
- ```typescript
63
- // CORRECT: Parse filters -> Query -> Transform -> Paginate
64
- async function listUsers(params: ListParams): Promise<Result<PaginatedResult<UserDTO>, ListError>> {
65
- // 1. Parse and validate filters
66
- const filters = parseFilters(params);
67
- const pagination = parsePagination(params);
68
-
69
- // 2. Query with filters
70
- const result = await userRepository.findMany({
71
- where: filters,
72
- skip: pagination.offset,
73
- take: pagination.limit,
74
- orderBy: pagination.orderBy,
75
- });
76
-
77
- // 3. Transform to DTOs
78
- const items = result.items.map(toUserDTO);
79
-
80
- // 4. Return paginated result
81
- return Ok({
82
- items,
83
- total: result.total,
84
- page: pagination.page,
85
- pageSize: pagination.limit,
86
- hasMore: result.total > pagination.offset + items.length,
87
- });
88
- }
89
- ```
90
-
91
- ### Update Operation
92
-
93
- ```typescript
94
- // CORRECT: Fetch existing -> Validate changes -> Merge -> Persist
95
- async function updateUser(
96
- id: UserId,
97
- input: UpdateUserInput
98
- ): Promise<Result<User, UpdateError>> {
99
- // 1. Fetch existing
100
- const existing = await userRepository.findById(id);
101
- if (!existing.ok) {
102
- return Err({ type: 'not_found', id });
103
- }
104
-
105
- // 2. Validate changes
106
- const validated = validateUpdateUser(input, existing.value);
107
- if (!validated.ok) {
108
- return Err({ type: 'validation', details: validated.error });
109
- }
110
-
111
- // 3. Merge changes (immutable update)
112
- const updated: User = {
113
- ...existing.value,
114
- ...validated.value,
115
- updatedAt: new Date(),
116
- };
117
-
118
- // 4. Persist
119
- const saved = await userRepository.save(updated);
120
- if (!saved.ok) {
121
- return Err({ type: 'persistence', details: saved.error });
122
- }
123
-
124
- return Ok(saved.value);
125
- }
126
- ```
127
-
128
- ### Delete Operation
129
-
130
- ```typescript
131
- // CORRECT: Check exists -> Check constraints -> Delete -> Confirm
132
- async function deleteUser(id: UserId): Promise<Result<void, DeleteError>> {
133
- // 1. Check exists
134
- const existing = await userRepository.findById(id);
135
- if (!existing.ok) {
136
- return Err({ type: 'not_found', id });
137
- }
138
-
139
- // 2. Check constraints (can this be deleted?)
140
- const canDelete = await checkDeleteConstraints(existing.value);
141
- if (!canDelete.ok) {
142
- return Err({ type: 'constraint_violation', details: canDelete.error });
143
- }
144
-
145
- // 3. Delete (soft delete preferred)
146
- const deleted = await userRepository.softDelete(id);
147
- if (!deleted.ok) {
148
- return Err({ type: 'persistence', details: deleted.error });
149
- }
150
-
151
- // 4. Confirm success
152
- return Ok(undefined);
153
- }
154
- ```
155
-
156
- ### Repository Pattern
157
-
158
- ```typescript
159
- // CORRECT: Abstract data access behind interface
160
- interface UserRepository {
161
- findById(id: UserId): Promise<Result<User, NotFoundError>>;
162
- findByEmail(email: string): Promise<Result<User, NotFoundError>>;
163
- findMany(query: UserQuery): Promise<PaginatedResult<User>>;
164
- save(user: User): Promise<Result<User, PersistenceError>>;
165
- delete(id: UserId): Promise<Result<void, PersistenceError>>;
166
- }
167
-
168
- // Implementation
169
- class PostgresUserRepository implements UserRepository {
170
- constructor(private db: Database) {}
171
-
172
- async findById(id: UserId): Promise<Result<User, NotFoundError>> {
173
- const row = await this.db.query(
174
- 'SELECT * FROM users WHERE id = $1',
175
- [id]
176
- );
177
- if (!row) {
178
- return Err({ type: 'not_found', entity: 'User', id });
179
- }
180
- return Ok(rowToUser(row));
181
- }
182
-
183
- // ... other methods
184
- }
185
- ```
186
-
187
- ### Transaction Pattern
188
-
189
- ```typescript
190
- // CORRECT: Start transaction -> Execute operations -> Commit or rollback
191
- async function transferFunds(
192
- from: AccountId,
193
- to: AccountId,
194
- amount: Money
195
- ): Promise<Result<Transfer, TransferError>> {
196
- return db.transaction(async (tx) => {
197
- // 1. Debit source account
198
- const debit = await tx.accounts.debit(from, amount);
199
- if (!debit.ok) {
200
- return Err({ type: 'insufficient_funds', account: from });
201
- }
202
-
203
- // 2. Credit destination account
204
- const credit = await tx.accounts.credit(to, amount);
205
- if (!credit.ok) {
206
- return Err({ type: 'credit_failed', account: to });
207
- }
208
-
209
- // 3. Record transfer
210
- const transfer = await tx.transfers.create({
211
- from,
212
- to,
213
- amount,
214
- timestamp: new Date(),
215
- });
216
-
217
- return Ok(transfer);
218
- });
219
- // Transaction auto-commits on success, auto-rollbacks on error
220
- }
221
- ```
222
-
223
- ---
224
-
225
- ## API Endpoint Patterns
226
-
227
- ### REST Endpoint Structure
228
-
229
- ```typescript
230
- // CORRECT: Parse request -> Validate auth -> Execute -> Format response
231
- export async function handleGetUser(req: Request): Promise<Response> {
232
- // 1. Parse request parameters
233
- const id = parsePathParam(req, 'id');
234
- if (!id.ok) {
235
- return errorResponse(400, 'Invalid user ID');
236
- }
237
-
238
- // 2. Validate authentication/authorization
239
- const auth = await authenticate(req);
240
- if (!auth.ok) {
241
- return errorResponse(401, 'Unauthorized');
242
- }
243
-
244
- const canAccess = authorize(auth.value, 'users:read', id.value);
245
- if (!canAccess) {
246
- return errorResponse(403, 'Forbidden');
247
- }
248
-
249
- // 3. Execute business logic
250
- const result = await getUser(id.value);
251
- if (!result.ok) {
252
- return handleError(result.error);
253
- }
254
-
255
- // 4. Format response
256
- return jsonResponse(200, result.value);
257
- }
258
- ```
259
-
260
- ### Error Response Mapping
261
-
262
- ```typescript
263
- // CORRECT: Map domain errors to HTTP responses
264
- function handleError(error: DomainError): Response {
265
- switch (error.type) {
266
- case 'not_found':
267
- return errorResponse(404, 'Resource not found');
268
- case 'validation':
269
- return errorResponse(400, 'Validation failed', error.details);
270
- case 'conflict':
271
- return errorResponse(409, 'Resource conflict');
272
- case 'unauthorized':
273
- return errorResponse(401, 'Unauthorized');
274
- case 'forbidden':
275
- return errorResponse(403, 'Forbidden');
276
- default:
277
- // Log unexpected errors, return generic message
278
- logger.error('Unexpected error', { error });
279
- return errorResponse(500, 'Internal server error');
280
- }
281
- }
282
- ```
283
-
284
- ### Request Validation
285
-
286
- ```typescript
287
- // CORRECT: Use schema validation at API boundary
288
- import { z } from 'zod';
289
-
290
- const CreateUserSchema = z.object({
291
- email: z.string().email(),
292
- name: z.string().min(1).max(100),
293
- role: z.enum(['user', 'admin']).default('user'),
294
- });
295
-
296
- function parseCreateUserRequest(req: Request): Result<CreateUserInput, ValidationError> {
297
- const parsed = CreateUserSchema.safeParse(req.body);
298
- if (!parsed.success) {
299
- return Err({
300
- type: 'validation',
301
- errors: parsed.error.errors.map(e => ({
302
- field: e.path.join('.'),
303
- message: e.message,
304
- })),
305
- });
306
- }
307
- return Ok(parsed.data);
308
- }
309
- ```
310
-
311
- ### POST Endpoint Example
312
-
313
- ```typescript
314
- // CORRECT: Full POST endpoint with validation and auth
315
- export async function handleCreateUser(req: Request): Promise<Response> {
316
- // 1. Parse and validate request body
317
- const input = parseCreateUserRequest(req);
318
- if (!input.ok) {
319
- return errorResponse(400, 'Invalid request', input.error.errors);
320
- }
321
-
322
- // 2. Authenticate caller
323
- const auth = await authenticate(req);
324
- if (!auth.ok) {
325
- return errorResponse(401, 'Unauthorized');
326
- }
327
-
328
- // 3. Check authorization
329
- if (!authorize(auth.value, 'users:create')) {
330
- return errorResponse(403, 'Forbidden');
331
- }
332
-
333
- // 4. Execute business logic
334
- const result = await createUser(input.value);
335
- if (!result.ok) {
336
- return handleError(result.error);
337
- }
338
-
339
- // 5. Return created resource
340
- return jsonResponse(201, result.value, {
341
- Location: `/api/users/${result.value.id}`,
342
- });
343
- }
344
- ```
345
-
346
- ### Response Helpers
347
-
348
- ```typescript
349
- // CORRECT: Consistent response formatting
350
- function jsonResponse<T>(status: number, data: T, headers?: Record<string, string>): Response {
351
- return new Response(JSON.stringify(data), {
352
- status,
353
- headers: {
354
- 'Content-Type': 'application/json',
355
- ...headers,
356
- },
357
- });
358
- }
359
-
360
- function errorResponse(status: number, message: string, details?: unknown): Response {
361
- return jsonResponse(status, {
362
- error: message,
363
- details,
364
- timestamp: new Date().toISOString(),
365
- });
366
- }
367
-
368
- function emptyResponse(status: number): Response {
369
- return new Response(null, { status });
370
- }
371
- ```
372
-
373
- ---
374
-
375
- ## Event Handler Patterns
376
-
377
- ### Async Event Handler
378
-
379
- ```typescript
380
- // CORRECT: Validate event -> Process -> Handle errors -> Acknowledge
381
- async function handleUserCreated(event: UserCreatedEvent): Promise<void> {
382
- const logger = createLogger({ eventId: event.id, type: event.type });
383
-
384
- try {
385
- // 1. Validate event structure
386
- const validated = validateEvent(event);
387
- if (!validated.ok) {
388
- logger.warn('Invalid event structure', { error: validated.error });
389
- return; // Don't retry invalid events
390
- }
391
-
392
- // 2. Process event (idempotent operations)
393
- await sendWelcomeEmail(event.userId);
394
- await createDefaultSettings(event.userId);
395
- await notifyAdmins(event.userId);
396
-
397
- // 3. Success
398
- logger.info('Event processed successfully');
399
- } catch (error) {
400
- // 4. Handle errors
401
- logger.error('Event processing failed', { error });
402
- throw error; // Rethrow for retry
403
- }
404
- }
405
- ```
406
-
407
- ### Idempotent Processing
408
-
409
- ```typescript
410
- // CORRECT: Check if already processed -> Process -> Mark complete
411
- async function processOrderEvent(event: OrderEvent): Promise<void> {
412
- // 1. Check idempotency key
413
- const alreadyProcessed = await idempotencyStore.exists(event.id);
414
- if (alreadyProcessed) {
415
- logger.info('Event already processed, skipping', { eventId: event.id });
416
- return;
417
- }
418
-
419
- // 2. Process within transaction
420
- await db.transaction(async (tx) => {
421
- await processOrder(tx, event.order);
422
- await idempotencyStore.mark(tx, event.id);
423
- });
424
-
425
- // 3. Event processed
426
- logger.info('Order event processed', { orderId: event.order.id });
427
- }
428
- ```
429
-
430
- ### Event with Retry Logic
431
-
432
- ```typescript
433
- // CORRECT: Exponential backoff retry
434
- interface RetryConfig {
435
- maxAttempts: number;
436
- initialDelayMs: number;
437
- maxDelayMs: number;
438
- backoffMultiplier: number;
439
- }
440
-
441
- async function handleEventWithRetry<T>(
442
- event: T,
443
- handler: (event: T) => Promise<void>,
444
- config: RetryConfig
445
- ): Promise<void> {
446
- let attempt = 0;
447
- let delay = config.initialDelayMs;
448
-
449
- while (attempt < config.maxAttempts) {
450
- try {
451
- await handler(event);
452
- return; // Success
453
- } catch (error) {
454
- attempt++;
455
-
456
- if (attempt >= config.maxAttempts) {
457
- logger.error('Event processing failed after max retries', {
458
- eventId: (event as any).id,
459
- attempts: attempt,
460
- error,
461
- });
462
- throw error;
463
- }
464
-
465
- logger.warn('Event processing failed, retrying', {
466
- eventId: (event as any).id,
467
- attempt,
468
- nextDelayMs: delay,
469
- });
470
-
471
- await sleep(delay);
472
- delay = Math.min(delay * config.backoffMultiplier, config.maxDelayMs);
473
- }
474
- }
475
- }
476
- ```
477
-
478
- ### Dead Letter Queue Pattern
479
-
480
- ```typescript
481
- // CORRECT: Move failed events to DLQ for manual review
482
- interface DeadLetterEvent<T> {
483
- originalEvent: T;
484
- error: string;
485
- failedAt: Date;
486
- attempts: number;
487
- }
488
-
489
- async function handleWithDeadLetter<T>(
490
- event: T,
491
- handler: (event: T) => Promise<void>,
492
- maxAttempts: number = 3
493
- ): Promise<void> {
494
- try {
495
- await handleEventWithRetry(event, handler, {
496
- maxAttempts,
497
- initialDelayMs: 1000,
498
- maxDelayMs: 30000,
499
- backoffMultiplier: 2,
500
- });
501
- } catch (error) {
502
- // Send to dead letter queue
503
- await deadLetterQueue.push({
504
- originalEvent: event,
505
- error: error.message,
506
- failedAt: new Date(),
507
- attempts: maxAttempts,
508
- });
509
-
510
- logger.error('Event moved to dead letter queue', {
511
- eventId: (event as any).id,
512
- });
513
- }
514
- }
515
- ```
516
-
517
- ### Event Batching
518
-
519
- ```typescript
520
- // CORRECT: Process events in batches for efficiency
521
- async function processBatch<T>(
522
- events: T[],
523
- processor: (event: T) => Promise<void>,
524
- batchSize: number = 10
525
- ): Promise<{ success: number; failed: number }> {
526
- let success = 0;
527
- let failed = 0;
528
-
529
- for (let i = 0; i < events.length; i += batchSize) {
530
- const batch = events.slice(i, i + batchSize);
531
-
532
- const results = await Promise.allSettled(
533
- batch.map(event => processor(event))
534
- );
535
-
536
- for (const result of results) {
537
- if (result.status === 'fulfilled') {
538
- success++;
539
- } else {
540
- failed++;
541
- logger.error('Batch item failed', { error: result.reason });
542
- }
543
- }
544
- }
545
-
546
- return { success, failed };
547
- }
548
- ```
549
-
550
- ### Pub/Sub Handler Registration
551
-
552
- ```typescript
553
- // CORRECT: Typed event bus with error handling
554
- type EventHandler<T> = (event: T) => Promise<void>;
555
-
556
- class EventBus {
557
- private handlers = new Map<string, EventHandler<unknown>[]>();
558
-
559
- subscribe<T>(eventType: string, handler: EventHandler<T>): void {
560
- const existing = this.handlers.get(eventType) || [];
561
- this.handlers.set(eventType, [...existing, handler as EventHandler<unknown>]);
562
- }
563
-
564
- async publish<T>(eventType: string, event: T): Promise<void> {
565
- const handlers = this.handlers.get(eventType) || [];
566
-
567
- await Promise.all(
568
- handlers.map(handler =>
569
- handler(event).catch(error => {
570
- logger.error('Event handler failed', { eventType, error });
571
- })
572
- )
573
- );
574
- }
575
- }
576
-
577
- // Usage
578
- const eventBus = new EventBus();
579
- eventBus.subscribe('user.created', handleUserCreated);
580
- eventBus.subscribe('user.created', sendWelcomeEmail);
581
- ```
582
-
583
- ---
584
-
585
- ## Configuration Patterns
586
-
587
- ### Environment Configuration
588
-
589
- ```typescript
590
- // CORRECT: Define schema -> Load from env -> Validate -> Export frozen
591
- import { z } from 'zod';
592
-
593
- const ConfigSchema = z.object({
594
- // Server
595
- PORT: z.coerce.number().default(3000),
596
- HOST: z.string().default('0.0.0.0'),
597
- NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
598
-
599
- // Database
600
- DATABASE_URL: z.string().url(),
601
- DATABASE_POOL_SIZE: z.coerce.number().min(1).max(100).default(10),
602
-
603
- // External services
604
- API_KEY: z.string().min(1),
605
- API_TIMEOUT_MS: z.coerce.number().default(5000),
606
-
607
- // Feature flags
608
- ENABLE_NEW_FEATURE: z.coerce.boolean().default(false),
609
- });
610
-
611
- type Config = z.infer<typeof ConfigSchema>;
612
-
613
- function loadConfig(): Config {
614
- const result = ConfigSchema.safeParse(process.env);
615
- if (!result.success) {
616
- console.error('Configuration validation failed:');
617
- for (const error of result.error.errors) {
618
- console.error(` ${error.path.join('.')}: ${error.message}`);
619
- }
620
- process.exit(1);
621
- }
622
- return Object.freeze(result.data);
623
- }
624
-
625
- export const config = loadConfig();
626
- ```
627
-
628
- ### Feature Flags
629
-
630
- ```typescript
631
- // CORRECT: Centralized flags with typed access
632
- interface FeatureFlags {
633
- newCheckoutFlow: boolean;
634
- betaFeatures: boolean;
635
- debugMode: boolean;
636
- }
637
-
638
- const defaultFlags: FeatureFlags = {
639
- newCheckoutFlow: false,
640
- betaFeatures: false,
641
- debugMode: false,
642
- };
643
-
644
- function loadFeatureFlags(): FeatureFlags {
645
- return {
646
- newCheckoutFlow: config.ENABLE_NEW_CHECKOUT === true,
647
- betaFeatures: config.ENABLE_BETA === true,
648
- debugMode: config.NODE_ENV === 'development',
649
- };
650
- }
651
-
652
- export const features = loadFeatureFlags();
653
-
654
- // Usage
655
- if (features.newCheckoutFlow) {
656
- return newCheckoutProcess(cart);
657
- } else {
658
- return legacyCheckoutProcess(cart);
659
- }
660
- ```
661
-
662
- ### Runtime Feature Flags
663
-
664
- ```typescript
665
- // CORRECT: Dynamic flags that can change at runtime
666
- interface FeatureFlagService {
667
- isEnabled(flag: string, context?: FlagContext): Promise<boolean>;
668
- getVariant(flag: string, context?: FlagContext): Promise<string | null>;
669
- }
670
-
671
- interface FlagContext {
672
- userId?: string;
673
- region?: string;
674
- percentile?: number;
675
- }
676
-
677
- class FeatureFlagClient implements FeatureFlagService {
678
- constructor(private source: FlagSource) {}
679
-
680
- async isEnabled(flag: string, context?: FlagContext): Promise<boolean> {
681
- const flagConfig = await this.source.getFlag(flag);
682
- if (!flagConfig) return false;
683
-
684
- // Percentage rollout
685
- if (flagConfig.percentageEnabled !== undefined && context?.percentile) {
686
- return context.percentile <= flagConfig.percentageEnabled;
687
- }
688
-
689
- // User targeting
690
- if (flagConfig.enabledForUsers && context?.userId) {
691
- return flagConfig.enabledForUsers.includes(context.userId);
692
- }
693
-
694
- return flagConfig.enabled;
695
- }
696
- }
697
- ```
698
-
699
- ### Secrets Management
700
-
701
- ```typescript
702
- // CORRECT: Load secrets separately from config
703
- interface Secrets {
704
- databasePassword: string;
705
- apiKey: string;
706
- jwtSecret: string;
707
- }
708
-
709
- async function loadSecrets(): Promise<Secrets> {
710
- // In production, fetch from secret manager
711
- if (config.NODE_ENV === 'production') {
712
- return {
713
- databasePassword: await secretManager.get('db-password'),
714
- apiKey: await secretManager.get('api-key'),
715
- jwtSecret: await secretManager.get('jwt-secret'),
716
- };
717
- }
718
-
719
- // In development, use environment variables
720
- const SecretsSchema = z.object({
721
- DATABASE_PASSWORD: z.string().min(1),
722
- API_KEY: z.string().min(1),
723
- JWT_SECRET: z.string().min(32),
724
- });
725
-
726
- const result = SecretsSchema.safeParse(process.env);
727
- if (!result.success) {
728
- throw new Error('Missing required secrets');
729
- }
730
-
731
- return {
732
- databasePassword: result.data.DATABASE_PASSWORD,
733
- apiKey: result.data.API_KEY,
734
- jwtSecret: result.data.JWT_SECRET,
735
- };
736
- }
737
- ```
738
-
739
- ### Configuration Validation on Startup
740
-
741
- ```typescript
742
- // CORRECT: Fail fast with clear error messages
743
- async function validateConfiguration(): Promise<void> {
744
- const errors: string[] = [];
745
-
746
- // Check required services are reachable
747
- try {
748
- await db.ping();
749
- } catch (error) {
750
- errors.push(`Database connection failed: ${error.message}`);
751
- }
752
-
753
- try {
754
- await redis.ping();
755
- } catch (error) {
756
- errors.push(`Redis connection failed: ${error.message}`);
757
- }
758
-
759
- // Validate configuration values
760
- if (config.PORT < 1 || config.PORT > 65535) {
761
- errors.push(`Invalid PORT: ${config.PORT}`);
762
- }
763
-
764
- if (config.NODE_ENV === 'production' && config.logLevel === 'debug') {
765
- errors.push('Debug logging should not be enabled in production');
766
- }
767
-
768
- if (errors.length > 0) {
769
- console.error('Configuration validation failed:');
770
- errors.forEach(e => console.error(` - ${e}`));
771
- process.exit(1);
772
- }
773
- }
774
-
775
- // Call on startup
776
- await validateConfiguration();
777
- ```
778
-
779
- ---
780
-
781
- ## Logging Patterns
782
-
783
- ### Structured Logging
784
-
785
- ```typescript
786
- // CORRECT: Context -> Level -> Message -> Data
787
- interface LogContext {
788
- requestId?: string;
789
- userId?: string;
790
- operation?: string;
791
- }
792
-
793
- function createLogger(context: LogContext) {
794
- return {
795
- info: (message: string, data?: object) =>
796
- log('info', message, { ...context, ...data }),
797
- warn: (message: string, data?: object) =>
798
- log('warn', message, { ...context, ...data }),
799
- error: (message: string, data?: object) =>
800
- log('error', message, { ...context, ...data }),
801
- debug: (message: string, data?: object) =>
802
- log('debug', message, { ...context, ...data }),
803
- };
804
- }
805
-
806
- // Usage
807
- const logger = createLogger({ requestId: req.id, userId: user.id });
808
- logger.info('Processing order', { orderId: order.id, items: order.items.length });
809
- ```
810
-
811
- ### Operation Logging
812
-
813
- ```typescript
814
- // CORRECT: Log start -> Execute -> Log result
815
- async function withLogging<T>(
816
- logger: Logger,
817
- operation: string,
818
- fn: () => Promise<T>
819
- ): Promise<T> {
820
- const startTime = Date.now();
821
- logger.info(`${operation} started`);
822
-
823
- try {
824
- const result = await fn();
825
- const duration = Date.now() - startTime;
826
- logger.info(`${operation} completed`, { durationMs: duration });
827
- return result;
828
- } catch (error) {
829
- const duration = Date.now() - startTime;
830
- logger.error(`${operation} failed`, { durationMs: duration, error });
831
- throw error;
832
- }
833
- }
834
-
835
- // Usage
836
- const user = await withLogging(logger, 'CreateUser', () => createUser(input));
837
- ```
838
-
839
- ### JSON Log Format
840
-
841
- ```typescript
842
- // CORRECT: Production-ready JSON logging
843
- interface LogEntry {
844
- timestamp: string;
845
- level: 'debug' | 'info' | 'warn' | 'error';
846
- message: string;
847
- service: string;
848
- environment: string;
849
- requestId?: string;
850
- userId?: string;
851
- durationMs?: number;
852
- error?: {
853
- name: string;
854
- message: string;
855
- stack?: string;
856
- };
857
- [key: string]: unknown;
858
- }
859
-
860
- function log(level: LogEntry['level'], message: string, data: object = {}): void {
861
- const entry: LogEntry = {
862
- timestamp: new Date().toISOString(),
863
- level,
864
- message,
865
- service: config.serviceName,
866
- environment: config.NODE_ENV,
867
- ...data,
868
- };
869
-
870
- // In production, output JSON
871
- if (config.NODE_ENV === 'production') {
872
- console.log(JSON.stringify(entry));
873
- } else {
874
- // In development, pretty print
875
- const color = { debug: '\x1b[34m', info: '\x1b[32m', warn: '\x1b[33m', error: '\x1b[31m' }[level];
876
- console.log(`${color}[${level.toUpperCase()}]\x1b[0m ${message}`, data);
877
- }
878
- }
879
- ```
880
-
881
- ### Request Logging Middleware
882
-
883
- ```typescript
884
- // CORRECT: Log all HTTP requests with timing
885
- function requestLogger(req: Request, res: Response, next: NextFunction): void {
886
- const requestId = req.headers['x-request-id'] || generateId();
887
- const startTime = Date.now();
888
-
889
- // Attach request ID for tracing
890
- req.requestId = requestId;
891
- res.setHeader('x-request-id', requestId);
892
-
893
- // Log on response finish
894
- res.on('finish', () => {
895
- const duration = Date.now() - startTime;
896
-
897
- log(res.statusCode >= 400 ? 'error' : 'info', 'HTTP Request', {
898
- requestId,
899
- method: req.method,
900
- path: req.path,
901
- statusCode: res.statusCode,
902
- durationMs: duration,
903
- userAgent: req.headers['user-agent'],
904
- ip: req.ip,
905
- });
906
- });
907
-
908
- next();
909
- }
910
- ```
911
-
912
- ### Error Logging
913
-
914
- ```typescript
915
- // CORRECT: Log errors with full context
916
- function logError(error: Error, context: object = {}): void {
917
- log('error', error.message, {
918
- ...context,
919
- error: {
920
- name: error.name,
921
- message: error.message,
922
- stack: config.NODE_ENV !== 'production' ? error.stack : undefined,
923
- },
924
- });
925
- }
926
-
927
- // CORRECT: Wrap async handlers with error logging
928
- function withErrorLogging<T extends (...args: any[]) => Promise<any>>(
929
- fn: T,
930
- context: object = {}
931
- ): T {
932
- return (async (...args: Parameters<T>) => {
933
- try {
934
- return await fn(...args);
935
- } catch (error) {
936
- logError(error as Error, context);
937
- throw error;
938
- }
939
- }) as T;
940
- }
941
- ```
942
-
943
- ### Audit Logging
944
-
945
- ```typescript
946
- // CORRECT: Immutable audit trail for sensitive operations
947
- interface AuditEntry {
948
- timestamp: Date;
949
- actor: string;
950
- action: string;
951
- resource: string;
952
- resourceId: string;
953
- changes?: {
954
- before: unknown;
955
- after: unknown;
956
- };
957
- result: 'success' | 'failure';
958
- metadata?: object;
959
- }
960
-
961
- async function audit(entry: Omit<AuditEntry, 'timestamp'>): Promise<void> {
962
- const fullEntry: AuditEntry = {
963
- ...entry,
964
- timestamp: new Date(),
965
- };
966
-
967
- // Write to immutable audit log (not regular logs)
968
- await auditStore.append(fullEntry);
969
-
970
- // Also log for operational visibility
971
- log('info', 'Audit event', {
972
- action: entry.action,
973
- resource: entry.resource,
974
- resourceId: entry.resourceId,
975
- actor: entry.actor,
976
- result: entry.result,
977
- });
978
- }
979
-
980
- // Usage
981
- await audit({
982
- actor: userId,
983
- action: 'user.update',
984
- resource: 'user',
985
- resourceId: targetUserId,
986
- changes: { before: oldUser, after: newUser },
987
- result: 'success',
988
- });
989
- ```
990
-
991
- ### Performance Logging
992
-
993
- ```typescript
994
- // CORRECT: Log slow operations
995
- const SLOW_THRESHOLD_MS = 1000;
996
-
997
- async function withPerformanceLogging<T>(
998
- logger: Logger,
999
- operation: string,
1000
- fn: () => Promise<T>,
1001
- threshold: number = SLOW_THRESHOLD_MS
1002
- ): Promise<T> {
1003
- const start = performance.now();
1004
-
1005
- try {
1006
- const result = await fn();
1007
- const duration = performance.now() - start;
1008
-
1009
- if (duration > threshold) {
1010
- logger.warn(`Slow operation: ${operation}`, {
1011
- durationMs: Math.round(duration),
1012
- threshold,
1013
- });
1014
- } else {
1015
- logger.debug(`${operation} completed`, { durationMs: Math.round(duration) });
1016
- }
1017
-
1018
- return result;
1019
- } catch (error) {
1020
- const duration = performance.now() - start;
1021
- logger.error(`${operation} failed`, {
1022
- durationMs: Math.round(duration),
1023
- error: (error as Error).message,
1024
- });
1025
- throw error;
1026
- }
1027
- }
1028
- ```
1029
-
1030
- ### Correlation IDs
1031
-
1032
- ```typescript
1033
- // CORRECT: Trace requests across services
1034
- import { AsyncLocalStorage } from 'async_hooks';
1035
-
1036
- interface RequestContext {
1037
- requestId: string;
1038
- traceId: string;
1039
- spanId: string;
1040
- userId?: string;
1041
- }
1042
-
1043
- const contextStorage = new AsyncLocalStorage<RequestContext>();
1044
-
1045
- function getContext(): RequestContext | undefined {
1046
- return contextStorage.getStore();
1047
- }
1048
-
1049
- function runWithContext<T>(context: RequestContext, fn: () => T): T {
1050
- return contextStorage.run(context, fn);
1051
- }
1052
-
1053
- // Logger automatically includes context
1054
- function createContextAwareLogger() {
1055
- return {
1056
- info: (message: string, data?: object) => {
1057
- const context = getContext();
1058
- log('info', message, { ...context, ...data });
1059
- },
1060
- // ... other levels
1061
- };
1062
- }
1063
- ```