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,1105 +0,0 @@
1
- # TypeScript Correct Patterns
2
-
3
- Extended correct patterns for TypeScript development. Reference from main SKILL.md.
4
-
5
- ## Type Safety Patterns
6
-
7
- ### Using Unknown with Type Guards
8
-
9
- ```typescript
10
- // CORRECT: unknown requires type checking
11
- function parse(json: string): unknown {
12
- return JSON.parse(json);
13
- }
14
-
15
- // Usage requires narrowing
16
- const data = parse(input);
17
- if (isUser(data)) {
18
- console.log(data.name); // Now type-safe
19
- }
20
-
21
- // CORRECT: Typed catch clause
22
- try {
23
- riskyOperation();
24
- } catch (e) {
25
- if (e instanceof Error) {
26
- console.log(e.message);
27
- }
28
- }
29
- ```
30
-
31
- ### Exhaustive Pattern Matching
32
-
33
- ```typescript
34
- // CORRECT: Exhaustive switch with never check
35
- type Status = 'pending' | 'active' | 'completed' | 'failed';
36
-
37
- function handleStatus(status: Status): string {
38
- switch (status) {
39
- case 'pending':
40
- return 'Waiting';
41
- case 'active':
42
- return 'Running';
43
- case 'completed':
44
- return 'Done';
45
- case 'failed':
46
- return 'Error';
47
- default:
48
- // Compile error if case missing
49
- const _exhaustive: never = status;
50
- throw new Error(`Unhandled status: ${_exhaustive}`);
51
- }
52
- }
53
-
54
- // CORRECT: Exhaustive discriminated union helper
55
- function assertNever(value: never, message?: string): never {
56
- throw new Error(message ?? `Unexpected value: ${value}`);
57
- }
58
- ```
59
-
60
- ### Safe Property Access
61
-
62
- ```typescript
63
- // CORRECT: Typed property access
64
- function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
65
- return obj[key];
66
- }
67
-
68
- // CORRECT: Optional chaining with nullish coalescing
69
- function getName(user: User | null): string {
70
- return user?.name ?? 'Anonymous';
71
- }
72
-
73
- // CORRECT: Optional property with default
74
- interface Config {
75
- timeout?: number;
76
- }
77
-
78
- function getTimeout(config: Config): number {
79
- return (config.timeout ?? 5000) * 1000;
80
- }
81
- ```
82
-
83
- ---
84
-
85
- ## Type Guard Patterns
86
-
87
- ### Assertion Functions
88
-
89
- ```typescript
90
- // Assert value is defined (not undefined)
91
- function assertDefined<T>(value: T | undefined, message: string): asserts value is T {
92
- if (value === undefined) {
93
- throw new Error(message);
94
- }
95
- }
96
-
97
- // Assert value is non-null
98
- function assertNonNull<T>(value: T | null, message: string): asserts value is T {
99
- if (value === null) {
100
- throw new Error(message);
101
- }
102
- }
103
-
104
- // Assert value exists (not null or undefined)
105
- function assertExists<T>(value: T | null | undefined, message: string): asserts value is T {
106
- if (value === null || value === undefined) {
107
- throw new Error(message);
108
- }
109
- }
110
-
111
- // Usage
112
- function processUser(user: User | undefined): void {
113
- assertDefined(user, 'User is required');
114
- console.log(user.name); // user is definitely defined here
115
- }
116
- ```
117
-
118
- ### Primitive Type Guards
119
-
120
- ```typescript
121
- // Reusable primitive guards
122
- const isString = (value: unknown): value is string =>
123
- typeof value === 'string';
124
-
125
- const isNumber = (value: unknown): value is number =>
126
- typeof value === 'number' && !Number.isNaN(value);
127
-
128
- const isBoolean = (value: unknown): value is boolean =>
129
- typeof value === 'boolean';
130
-
131
- const isNull = (value: unknown): value is null =>
132
- value === null;
133
-
134
- const isUndefined = (value: unknown): value is undefined =>
135
- value === undefined;
136
-
137
- const isNullish = (value: unknown): value is null | undefined =>
138
- value === null || value === undefined;
139
-
140
- const isFunction = (value: unknown): value is (...args: unknown[]) => unknown =>
141
- typeof value === 'function';
142
-
143
- const isObject = (value: unknown): value is object =>
144
- typeof value === 'object' && value !== null;
145
-
146
- const isArray = (value: unknown): value is unknown[] =>
147
- Array.isArray(value);
148
- ```
149
-
150
- ### Array Type Guards
151
-
152
- ```typescript
153
- // Check if array is non-empty
154
- function isNonEmpty<T>(arr: T[]): arr is [T, ...T[]] {
155
- return arr.length > 0;
156
- }
157
-
158
- // Check if all elements match predicate
159
- function allMatch<T, S extends T>(
160
- arr: T[],
161
- guard: (item: T) => item is S
162
- ): arr is S[] {
163
- return arr.every(guard);
164
- }
165
-
166
- // Usage
167
- const items: (string | number)[] = ['a', 'b', 'c'];
168
-
169
- if (allMatch(items, (x): x is string => typeof x === 'string')) {
170
- // items is string[] here
171
- items.forEach(s => console.log(s.toUpperCase()));
172
- }
173
- ```
174
-
175
- ### Object Shape Guards
176
-
177
- ```typescript
178
- // Check if object has specific property
179
- function hasProperty<K extends string>(
180
- obj: unknown,
181
- key: K
182
- ): obj is { [P in K]: unknown } {
183
- return typeof obj === 'object' && obj !== null && key in obj;
184
- }
185
-
186
- // Check if object has property of specific type
187
- function hasTypedProperty<K extends string, V>(
188
- obj: unknown,
189
- key: K,
190
- guard: (value: unknown) => value is V
191
- ): obj is { [P in K]: V } {
192
- return hasProperty(obj, key) && guard(obj[key]);
193
- }
194
-
195
- // Check multiple properties
196
- function hasProperties<K extends string>(
197
- obj: unknown,
198
- ...keys: K[]
199
- ): obj is { [P in K]: unknown } {
200
- return typeof obj === 'object' && obj !== null && keys.every(k => k in obj);
201
- }
202
-
203
- // Usage
204
- function processData(data: unknown): void {
205
- if (hasProperty(data, 'id') && hasProperty(data, 'name')) {
206
- console.log(data.id, data.name);
207
- }
208
- }
209
- ```
210
-
211
- ### Discriminated Union Guards
212
-
213
- ```typescript
214
- // Generic discriminant checker
215
- function isVariant<T extends { type: string }, K extends T['type']>(
216
- obj: T,
217
- type: K
218
- ): obj is Extract<T, { type: K }> {
219
- return obj.type === type;
220
- }
221
-
222
- // Usage
223
- type Event =
224
- | { type: 'click'; x: number; y: number }
225
- | { type: 'keypress'; key: string }
226
- | { type: 'scroll'; offset: number };
227
-
228
- function handleEvent(event: Event): void {
229
- if (isVariant(event, 'click')) {
230
- console.log(`Clicked at ${event.x}, ${event.y}`);
231
- } else if (isVariant(event, 'keypress')) {
232
- console.log(`Pressed ${event.key}`);
233
- }
234
- }
235
- ```
236
-
237
- ### Error Type Guards
238
-
239
- ```typescript
240
- // Check if error has specific shape
241
- function isErrorWithMessage(error: unknown): error is { message: string } {
242
- return (
243
- typeof error === 'object' &&
244
- error !== null &&
245
- 'message' in error &&
246
- typeof (error as { message: unknown }).message === 'string'
247
- );
248
- }
249
-
250
- // Check if error has code
251
- function isErrorWithCode(error: unknown): error is { code: string | number } {
252
- return (
253
- typeof error === 'object' &&
254
- error !== null &&
255
- 'code' in error &&
256
- (typeof (error as { code: unknown }).code === 'string' ||
257
- typeof (error as { code: unknown }).code === 'number')
258
- );
259
- }
260
-
261
- // Usage
262
- try {
263
- riskyOperation();
264
- } catch (error) {
265
- if (isErrorWithMessage(error)) {
266
- console.error(error.message);
267
- }
268
- if (isErrorWithCode(error) && error.code === 'ENOENT') {
269
- console.error('File not found');
270
- }
271
- }
272
- ```
273
-
274
- ### Composable Guards
275
-
276
- ```typescript
277
- // Combine guards with AND
278
- function and<A, B extends A>(
279
- guardA: (v: unknown) => v is A,
280
- guardB: (v: A) => v is B
281
- ): (v: unknown) => v is B {
282
- return (v: unknown): v is B => guardA(v) && guardB(v);
283
- }
284
-
285
- // Combine guards with OR
286
- function or<A, B>(
287
- guardA: (v: unknown) => v is A,
288
- guardB: (v: unknown) => v is B
289
- ): (v: unknown) => v is A | B {
290
- return (v: unknown): v is A | B => guardA(v) || guardB(v);
291
- }
292
-
293
- // Usage
294
- const isStringOrNumber = or(isString, isNumber);
295
- const isNonNullObject = and(isObject, (v): v is object => v !== null);
296
- ```
297
-
298
- ### API Response Guards
299
-
300
- ```typescript
301
- interface SuccessResponse<T> {
302
- status: 'success';
303
- data: T;
304
- }
305
-
306
- interface ErrorResponse {
307
- status: 'error';
308
- error: {
309
- code: string;
310
- message: string;
311
- };
312
- }
313
-
314
- type ApiResponse<T> = SuccessResponse<T> | ErrorResponse;
315
-
316
- function isSuccess<T>(
317
- response: ApiResponse<T>
318
- ): response is SuccessResponse<T> {
319
- return response.status === 'success';
320
- }
321
-
322
- function isError<T>(
323
- response: ApiResponse<T>
324
- ): response is ErrorResponse {
325
- return response.status === 'error';
326
- }
327
-
328
- // Usage
329
- async function fetchData<T>(url: string): Promise<T> {
330
- const response: ApiResponse<T> = await fetch(url).then(r => r.json());
331
-
332
- if (isError(response)) {
333
- throw new Error(response.error.message);
334
- }
335
-
336
- return response.data;
337
- }
338
- ```
339
-
340
- ---
341
-
342
- ## Utility Type Patterns
343
-
344
- ### Property Manipulation
345
-
346
- ```typescript
347
- // Make specific properties required
348
- type RequiredProps<T, K extends keyof T> = T & Required<Pick<T, K>>;
349
- type UserWithEmail = RequiredProps<Partial<User>, 'email'>;
350
-
351
- // Make specific properties optional
352
- type OptionalProps<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
353
- type UserWithOptionalRole = OptionalProps<User, 'role'>;
354
-
355
- // Make specific properties mutable (remove readonly)
356
- type Mutable<T> = { -readonly [P in keyof T]: T[P] };
357
- type MutableUser = Mutable<Readonly<User>>;
358
-
359
- // Make specific properties readonly
360
- type ReadonlyProps<T, K extends keyof T> = Omit<T, K> & Readonly<Pick<T, K>>;
361
- type UserWithReadonlyId = ReadonlyProps<User, 'id'>;
362
- ```
363
-
364
- ### Deep Transformations
365
-
366
- ```typescript
367
- // Deep partial - all nested properties optional
368
- type DeepPartial<T> = {
369
- [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
370
- };
371
-
372
- // Deep readonly - prevents mutation at any depth
373
- type DeepReadonly<T> = {
374
- readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
375
- };
376
-
377
- // Deep required - all nested properties required
378
- type DeepRequired<T> = {
379
- [P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P];
380
- };
381
-
382
- // Usage
383
- interface Config {
384
- database: {
385
- host: string;
386
- port: number;
387
- credentials: {
388
- username: string;
389
- password: string;
390
- };
391
- };
392
- }
393
-
394
- type PartialConfig = DeepPartial<Config>;
395
- const config: DeepReadonly<Config> = { ... };
396
- ```
397
-
398
- ### Nullable Helpers
399
-
400
- ```typescript
401
- // Nullable type
402
- type Nullable<T> = T | null;
403
-
404
- // Maybe type (nullable and optional)
405
- type Maybe<T> = T | null | undefined;
406
-
407
- // NonNullableProps - remove null/undefined from specific properties
408
- type NonNullableProps<T, K extends keyof T> = {
409
- [P in keyof T]: P extends K ? NonNullable<T[P]> : T[P];
410
- };
411
-
412
- // Example
413
- interface ApiResponse {
414
- data: User | null;
415
- error: string | null;
416
- timestamp: number;
417
- }
418
-
419
- type SuccessResponse = NonNullableProps<ApiResponse, 'data'>;
420
- // { data: User; error: string | null; timestamp: number }
421
- ```
422
-
423
- ### Key Manipulation
424
-
425
- ```typescript
426
- // Get keys where value is of specific type
427
- type KeysOfType<T, V> = {
428
- [K in keyof T]: T[K] extends V ? K : never;
429
- }[keyof T];
430
-
431
- interface User {
432
- id: string;
433
- name: string;
434
- age: number;
435
- active: boolean;
436
- }
437
-
438
- type StringKeys = KeysOfType<User, string>; // 'id' | 'name'
439
- type NumberKeys = KeysOfType<User, number>; // 'age'
440
-
441
- // Pick properties by value type
442
- type PickByType<T, V> = {
443
- [K in keyof T as T[K] extends V ? K : never]: T[K];
444
- };
445
-
446
- type StringProps = PickByType<User, string>;
447
- // { id: string; name: string }
448
-
449
- // Omit properties by value type
450
- type OmitByType<T, V> = {
451
- [K in keyof T as T[K] extends V ? never : K]: T[K];
452
- };
453
-
454
- type NonStringProps = OmitByType<User, string>;
455
- // { age: number; active: boolean }
456
- ```
457
-
458
- ### Function Utilities
459
-
460
- ```typescript
461
- // Get return type of async function (unwraps Promise)
462
- type AsyncReturnType<T extends (...args: any[]) => Promise<any>> =
463
- T extends (...args: any[]) => Promise<infer R> ? R : never;
464
-
465
- async function fetchUser(id: string): Promise<User> { ... }
466
- type UserType = AsyncReturnType<typeof fetchUser>; // User
467
-
468
- // Get first argument type
469
- type FirstArgument<T extends (...args: any[]) => any> =
470
- T extends (first: infer F, ...rest: any[]) => any ? F : never;
471
-
472
- // Get last argument type
473
- type LastArgument<T extends (...args: any[]) => any> =
474
- T extends (...args: [...any[], infer L]) => any ? L : never;
475
- ```
476
-
477
- ### Tuple Utilities
478
-
479
- ```typescript
480
- // Head - first element
481
- type Head<T extends any[]> = T extends [infer H, ...any[]] ? H : never;
482
-
483
- // Tail - all but first
484
- type Tail<T extends any[]> = T extends [any, ...infer R] ? R : never;
485
-
486
- // Last - last element
487
- type Last<T extends any[]> = T extends [...any[], infer L] ? L : never;
488
-
489
- // Init - all but last
490
- type Init<T extends any[]> = T extends [...infer I, any] ? I : never;
491
-
492
- // Concat
493
- type Concat<A extends any[], B extends any[]> = [...A, ...B];
494
-
495
- // Usage
496
- type Tuple = [string, number, boolean];
497
- type First = Head<Tuple>; // string
498
- type Rest = Tail<Tuple>; // [number, boolean]
499
- type End = Last<Tuple>; // boolean
500
- ```
501
-
502
- ### String Utilities
503
-
504
- ```typescript
505
- // Split string
506
- type Split<S extends string, D extends string> =
507
- S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];
508
-
509
- // Join array to string
510
- type Join<T extends string[], D extends string> =
511
- T extends [] ? '' :
512
- T extends [infer F extends string] ? F :
513
- T extends [infer F extends string, ...infer R extends string[]] ? `${F}${D}${Join<R, D>}` :
514
- never;
515
-
516
- // Usage
517
- type Parts = Split<'a.b.c', '.'>; // ['a', 'b', 'c']
518
- type Joined = Join<['a', 'b', 'c'], '-'>; // 'a-b-c'
519
- ```
520
-
521
- ### Branded Types
522
-
523
- ```typescript
524
- // Create nominal types that are structurally different
525
- declare const brand: unique symbol;
526
-
527
- type Brand<T, B> = T & { [brand]: B };
528
-
529
- // Usage
530
- type UserId = Brand<string, 'UserId'>;
531
- type OrderId = Brand<string, 'OrderId'>;
532
-
533
- function getUser(id: UserId): User { ... }
534
- function getOrder(id: OrderId): Order { ... }
535
-
536
- const userId = 'abc' as UserId;
537
- const orderId = 'xyz' as OrderId;
538
-
539
- getUser(userId); // OK
540
- getUser(orderId); // Error: OrderId not assignable to UserId
541
- ```
542
-
543
- ---
544
-
545
- ## Async Patterns
546
-
547
- ### Async Function Types
548
-
549
- ```typescript
550
- // Async function type
551
- type AsyncFn<T, R> = (arg: T) => Promise<R>;
552
-
553
- // Async with multiple args
554
- type AsyncFn2<T1, T2, R> = (arg1: T1, arg2: T2) => Promise<R>;
555
-
556
- // Async with result
557
- type AsyncResult<T, E = Error> = Promise<Result<T, E>>;
558
-
559
- // Async void function
560
- type AsyncVoidFn<T> = (arg: T) => Promise<void>;
561
- ```
562
-
563
- ### Result-Based Async
564
-
565
- ```typescript
566
- // Basic async result pattern
567
- async function fetchUser(id: string): AsyncResult<User> {
568
- try {
569
- const user = await db.users.findById(id);
570
- if (!user) {
571
- return { ok: false, error: new Error('User not found') };
572
- }
573
- return { ok: true, value: user };
574
- } catch (error) {
575
- return { ok: false, error: error as Error };
576
- }
577
- }
578
-
579
- // Wrapping async operations
580
- async function tryCatch<T>(
581
- fn: () => Promise<T>
582
- ): Promise<Result<T, Error>> {
583
- try {
584
- const value = await fn();
585
- return { ok: true, value };
586
- } catch (error) {
587
- return { ok: false, error: error as Error };
588
- }
589
- }
590
-
591
- // Usage
592
- const result = await tryCatch(() => fetchUserFromApi(id));
593
- if (!result.ok) {
594
- console.error('Failed:', result.error.message);
595
- }
596
- ```
597
-
598
- ### Promise Utilities
599
-
600
- ```typescript
601
- // Wait for all, but handle errors individually
602
- async function settleAll<T>(
603
- promises: Promise<T>[]
604
- ): Promise<Array<Result<T, Error>>> {
605
- const results = await Promise.allSettled(promises);
606
- return results.map((result) =>
607
- result.status === 'fulfilled'
608
- ? { ok: true as const, value: result.value }
609
- : { ok: false as const, error: result.reason }
610
- );
611
- }
612
-
613
- // Timeout wrapper
614
- function withTimeout<T>(
615
- promise: Promise<T>,
616
- timeoutMs: number,
617
- message = 'Operation timed out'
618
- ): Promise<T> {
619
- return Promise.race([
620
- promise,
621
- new Promise<never>((_, reject) =>
622
- setTimeout(() => reject(new Error(message)), timeoutMs)
623
- ),
624
- ]);
625
- }
626
-
627
- // Retry with exponential backoff
628
- interface RetryOptions {
629
- attempts: number;
630
- delayMs: number;
631
- backoff?: 'linear' | 'exponential';
632
- onRetry?: (error: Error, attempt: number) => void;
633
- }
634
-
635
- async function retry<T>(
636
- fn: () => Promise<T>,
637
- options: RetryOptions
638
- ): Promise<T> {
639
- const { attempts, delayMs, backoff = 'linear', onRetry } = options;
640
- let lastError: Error;
641
-
642
- for (let i = 0; i < attempts; i++) {
643
- try {
644
- return await fn();
645
- } catch (error) {
646
- lastError = error as Error;
647
- onRetry?.(lastError, i + 1);
648
-
649
- if (i < attempts - 1) {
650
- const delay = backoff === 'exponential'
651
- ? delayMs * Math.pow(2, i)
652
- : delayMs;
653
- await sleep(delay);
654
- }
655
- }
656
- }
657
-
658
- throw lastError!;
659
- }
660
-
661
- function sleep(ms: number): Promise<void> {
662
- return new Promise(resolve => setTimeout(resolve, ms));
663
- }
664
- ```
665
-
666
- ### Concurrent Execution
667
-
668
- ```typescript
669
- // Controlled concurrency
670
- async function pMap<T, R>(
671
- items: T[],
672
- fn: (item: T, index: number) => Promise<R>,
673
- concurrency: number
674
- ): Promise<R[]> {
675
- const results: R[] = [];
676
- const executing: Promise<void>[] = [];
677
-
678
- for (let i = 0; i < items.length; i++) {
679
- const promise = fn(items[i], i).then(result => {
680
- results[i] = result;
681
- });
682
-
683
- executing.push(promise);
684
-
685
- if (executing.length >= concurrency) {
686
- await Promise.race(executing);
687
- executing.splice(
688
- executing.findIndex(p => p === promise),
689
- 1
690
- );
691
- }
692
- }
693
-
694
- await Promise.all(executing);
695
- return results;
696
- }
697
-
698
- // Batch processing
699
- async function batch<T, R>(
700
- items: T[],
701
- batchSize: number,
702
- fn: (batch: T[]) => Promise<R[]>
703
- ): Promise<R[]> {
704
- const results: R[] = [];
705
-
706
- for (let i = 0; i < items.length; i += batchSize) {
707
- const batch = items.slice(i, i + batchSize);
708
- const batchResults = await fn(batch);
709
- results.push(...batchResults);
710
- }
711
-
712
- return results;
713
- }
714
- ```
715
-
716
- ### Cancellation
717
-
718
- ```typescript
719
- interface Cancellable<T> {
720
- promise: Promise<T>;
721
- cancel: () => void;
722
- }
723
-
724
- function cancellable<T>(
725
- fn: (signal: AbortSignal) => Promise<T>
726
- ): Cancellable<T> {
727
- const controller = new AbortController();
728
-
729
- const promise = fn(controller.signal);
730
-
731
- return {
732
- promise,
733
- cancel: () => controller.abort()
734
- };
735
- }
736
-
737
- // Usage
738
- const { promise, cancel } = cancellable(async (signal) => {
739
- const response = await fetch(url, { signal });
740
- return response.json();
741
- });
742
-
743
- // Cancel if takes too long
744
- setTimeout(cancel, 5000);
745
-
746
- try {
747
- const data = await promise;
748
- } catch (error) {
749
- if (error.name === 'AbortError') {
750
- console.log('Request cancelled');
751
- }
752
- }
753
- ```
754
-
755
- ### Debounce / Throttle
756
-
757
- ```typescript
758
- // Debounce
759
- function debounce<T extends (...args: any[]) => any>(
760
- fn: T,
761
- delayMs: number
762
- ): (...args: Parameters<T>) => void {
763
- let timeoutId: ReturnType<typeof setTimeout> | null = null;
764
-
765
- return (...args: Parameters<T>) => {
766
- if (timeoutId) clearTimeout(timeoutId);
767
- timeoutId = setTimeout(() => fn(...args), delayMs);
768
- };
769
- }
770
-
771
- // Throttle
772
- function throttle<T extends (...args: any[]) => any>(
773
- fn: T,
774
- limitMs: number
775
- ): (...args: Parameters<T>) => void {
776
- let lastRun = 0;
777
- let timeoutId: ReturnType<typeof setTimeout> | null = null;
778
-
779
- return (...args: Parameters<T>) => {
780
- const now = Date.now();
781
-
782
- if (now - lastRun >= limitMs) {
783
- lastRun = now;
784
- fn(...args);
785
- } else if (!timeoutId) {
786
- timeoutId = setTimeout(() => {
787
- lastRun = Date.now();
788
- timeoutId = null;
789
- fn(...args);
790
- }, limitMs - (now - lastRun));
791
- }
792
- };
793
- }
794
- ```
795
-
796
- ### Lazy Async
797
-
798
- ```typescript
799
- class LazyAsync<T> {
800
- private promise: Promise<T> | null = null;
801
- private value: T | null = null;
802
- private resolved = false;
803
-
804
- constructor(private factory: () => Promise<T>) {}
805
-
806
- async get(): Promise<T> {
807
- if (this.resolved) return this.value!;
808
-
809
- if (!this.promise) {
810
- this.promise = this.factory().then(v => {
811
- this.value = v;
812
- this.resolved = true;
813
- return v;
814
- });
815
- }
816
-
817
- return this.promise;
818
- }
819
-
820
- isResolved(): boolean {
821
- return this.resolved;
822
- }
823
-
824
- reset(): void {
825
- this.promise = null;
826
- this.value = null;
827
- this.resolved = false;
828
- }
829
- }
830
-
831
- // Usage
832
- const config = new LazyAsync(async () => {
833
- const response = await fetch('/config');
834
- return response.json();
835
- });
836
-
837
- // First call fetches
838
- const cfg1 = await config.get();
839
-
840
- // Subsequent calls return cached
841
- const cfg2 = await config.get();
842
- ```
843
-
844
- ---
845
-
846
- ## Module Patterns
847
-
848
- ### Barrel Exports
849
-
850
- ```typescript
851
- // src/models/index.ts
852
- export { User } from './user';
853
- export { Order } from './order';
854
- export { Product } from './product';
855
- export type { UserDTO, CreateUserInput } from './user';
856
-
857
- // Usage
858
- import { User, Order, type UserDTO } from './models';
859
- ```
860
-
861
- ### Type-Only Exports
862
-
863
- ```typescript
864
- // Separate type exports for clarity
865
- export type { User, UserDTO, CreateUserInput };
866
- export { createUser, updateUser, deleteUser };
867
-
868
- // Type-only imports (won't be in JS output)
869
- import type { User } from './user';
870
- import { createUser } from './user';
871
- ```
872
-
873
- ### Dependency Injection Pattern
874
-
875
- ```typescript
876
- // Define interface
877
- interface Logger {
878
- info(message: string, context?: object): void;
879
- error(message: string, context?: object): void;
880
- }
881
-
882
- // Implementation
883
- class ConsoleLogger implements Logger {
884
- info(message: string, context?: object): void {
885
- console.log(message, context);
886
- }
887
- error(message: string, context?: object): void {
888
- console.error(message, context);
889
- }
890
- }
891
-
892
- // Service depends on interface
893
- class UserService {
894
- constructor(
895
- private readonly logger: Logger,
896
- private readonly repository: UserRepository
897
- ) {}
898
-
899
- async createUser(input: CreateUserInput): Promise<Result<User, Error>> {
900
- this.logger.info('Creating user', { email: input.email });
901
- // ...
902
- }
903
- }
904
-
905
- // Composition root
906
- const logger = new ConsoleLogger();
907
- const repository = new PostgresUserRepository(db);
908
- const userService = new UserService(logger, repository);
909
- ```
910
-
911
- ---
912
-
913
- ## Generic Patterns
914
-
915
- ### Generic Classes
916
-
917
- ```typescript
918
- class Cache<T> {
919
- private store = new Map<string, { value: T; expiry: number }>();
920
-
921
- set(key: string, value: T, ttlMs: number): void {
922
- this.store.set(key, {
923
- value,
924
- expiry: Date.now() + ttlMs,
925
- });
926
- }
927
-
928
- get(key: string): T | undefined {
929
- const entry = this.store.get(key);
930
- if (!entry) return undefined;
931
- if (Date.now() > entry.expiry) {
932
- this.store.delete(key);
933
- return undefined;
934
- }
935
- return entry.value;
936
- }
937
-
938
- has(key: string): boolean {
939
- const entry = this.store.get(key);
940
- if (!entry) return false;
941
- if (Date.now() > entry.expiry) {
942
- this.store.delete(key);
943
- return false;
944
- }
945
- return true;
946
- }
947
- }
948
-
949
- // Usage
950
- const userCache = new Cache<User>();
951
- userCache.set('user-1', user, 60000);
952
- ```
953
-
954
- ### Generic Repository Pattern
955
-
956
- ```typescript
957
- interface Repository<T, ID = string> {
958
- findById(id: ID): Promise<T | null>;
959
- findAll(): Promise<T[]>;
960
- findMany(query: Partial<T>): Promise<T[]>;
961
- save(entity: T): Promise<T>;
962
- update(id: ID, changes: Partial<T>): Promise<T>;
963
- delete(id: ID): Promise<void>;
964
- exists(id: ID): Promise<boolean>;
965
- count(query?: Partial<T>): Promise<number>;
966
- }
967
-
968
- // With constraints
969
- interface Identifiable {
970
- id: string;
971
- }
972
-
973
- interface Timestamped {
974
- createdAt: Date;
975
- updatedAt: Date;
976
- }
977
-
978
- interface CRUDRepository<T extends Identifiable & Timestamped> {
979
- findById(id: string): Promise<T | null>;
980
- save(entity: Omit<T, 'id' | 'createdAt' | 'updatedAt'>): Promise<T>;
981
- update(id: string, changes: Partial<Omit<T, 'id' | 'createdAt'>>): Promise<T>;
982
- }
983
- ```
984
-
985
- ### Builder Pattern with Types
986
-
987
- ```typescript
988
- class QueryBuilder<T> {
989
- private conditions: Array<(item: T) => boolean> = [];
990
- private sortFn?: (a: T, b: T) => number;
991
- private limitCount?: number;
992
-
993
- where<K extends keyof T>(key: K, value: T[K]): this {
994
- this.conditions.push((item) => item[key] === value);
995
- return this;
996
- }
997
-
998
- whereIn<K extends keyof T>(key: K, values: T[K][]): this {
999
- this.conditions.push((item) => values.includes(item[key]));
1000
- return this;
1001
- }
1002
-
1003
- orderBy<K extends keyof T>(key: K, direction: 'asc' | 'desc' = 'asc'): this {
1004
- this.sortFn = (a, b) => {
1005
- const aVal = a[key];
1006
- const bVal = b[key];
1007
- if (aVal < bVal) return direction === 'asc' ? -1 : 1;
1008
- if (aVal > bVal) return direction === 'asc' ? 1 : -1;
1009
- return 0;
1010
- };
1011
- return this;
1012
- }
1013
-
1014
- limit(count: number): this {
1015
- this.limitCount = count;
1016
- return this;
1017
- }
1018
-
1019
- execute(items: T[]): T[] {
1020
- let result = items.filter((item) =>
1021
- this.conditions.every((condition) => condition(item))
1022
- );
1023
- if (this.sortFn) {
1024
- result = [...result].sort(this.sortFn);
1025
- }
1026
- if (this.limitCount !== undefined) {
1027
- result = result.slice(0, this.limitCount);
1028
- }
1029
- return result;
1030
- }
1031
- }
1032
-
1033
- // Usage
1034
- const activeAdmins = new QueryBuilder<User>()
1035
- .where('status', 'active')
1036
- .where('role', 'admin')
1037
- .orderBy('createdAt', 'desc')
1038
- .limit(10)
1039
- .execute(users);
1040
- ```
1041
-
1042
- ---
1043
-
1044
- ## Discriminated Unions
1045
-
1046
- ### State Machines
1047
-
1048
- ```typescript
1049
- type RequestState<T> =
1050
- | { status: 'idle' }
1051
- | { status: 'loading' }
1052
- | { status: 'success'; data: T }
1053
- | { status: 'error'; error: Error };
1054
-
1055
- function renderRequest<T>(state: RequestState<T>): string {
1056
- switch (state.status) {
1057
- case 'idle':
1058
- return 'Ready to fetch';
1059
- case 'loading':
1060
- return 'Loading...';
1061
- case 'success':
1062
- return `Data: ${JSON.stringify(state.data)}`;
1063
- case 'error':
1064
- return `Error: ${state.error.message}`;
1065
- }
1066
- }
1067
- ```
1068
-
1069
- ### Event Types
1070
-
1071
- ```typescript
1072
- type AppEvent =
1073
- | { type: 'USER_LOGIN'; userId: string }
1074
- | { type: 'USER_LOGOUT'; userId: string }
1075
- | { type: 'PAGE_VIEW'; path: string }
1076
- | { type: 'CLICK'; elementId: string };
1077
-
1078
- function handleEvent(event: AppEvent): void {
1079
- switch (event.type) {
1080
- case 'USER_LOGIN':
1081
- console.log(`User ${event.userId} logged in`);
1082
- break;
1083
- case 'USER_LOGOUT':
1084
- console.log(`User ${event.userId} logged out`);
1085
- break;
1086
- case 'PAGE_VIEW':
1087
- console.log(`Page viewed: ${event.path}`);
1088
- break;
1089
- case 'CLICK':
1090
- console.log(`Element clicked: ${event.elementId}`);
1091
- break;
1092
- }
1093
- }
1094
- ```
1095
-
1096
- ### Form State
1097
-
1098
- ```typescript
1099
- type FormState<T> =
1100
- | { status: 'pristine'; values: T }
1101
- | { status: 'dirty'; values: T; touched: Set<keyof T> }
1102
- | { status: 'submitting'; values: T }
1103
- | { status: 'submitted'; values: T; result: unknown }
1104
- | { status: 'error'; values: T; errors: Partial<Record<keyof T, string>> };
1105
- ```