@dsalazardev/ai-hub-cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1288) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +34 -0
  3. package/README.md +64 -2
  4. package/agents/cpp-build-resolver.md +25 -0
  5. package/agents/cpp-reviewer.md +28 -0
  6. package/agents/csharp-reviewer.md +28 -0
  7. package/agents/django-build-resolver.md +25 -0
  8. package/agents/django-reviewer.md +28 -0
  9. package/agents/explorer-domain.md +28 -0
  10. package/agents/fastapi-reviewer.md +28 -0
  11. package/agents/flutter-build-resolver.md +25 -0
  12. package/agents/flutter-reviewer.md +28 -0
  13. package/agents/go-build-resolver.md +25 -0
  14. package/agents/go-reviewer.md +28 -0
  15. package/agents/implementer-backend.md +30 -0
  16. package/agents/implementer-frontend.md +30 -0
  17. package/agents/java-build-resolver.md +26 -0
  18. package/agents/java-reviewer.md +29 -0
  19. package/agents/kotlin-build-resolver.md +25 -0
  20. package/agents/kotlin-reviewer.md +28 -0
  21. package/agents/mle-reviewer.md +28 -0
  22. package/agents/php-reviewer.md +29 -0
  23. package/agents/postgres-reviewer.md +28 -0
  24. package/agents/python-reviewer.md +28 -0
  25. package/agents/pytorch-build-resolver.md +25 -0
  26. package/agents/rag-reviewer.md +28 -0
  27. package/agents/react-build-resolver.md +26 -0
  28. package/agents/react-reviewer.md +29 -0
  29. package/agents/reviewer-architecture.md +32 -0
  30. package/agents/reviewer-tests.md +31 -0
  31. package/agents/rust-build-resolver.md +25 -0
  32. package/agents/rust-reviewer.md +28 -0
  33. package/agents/spec-author.md +36 -0
  34. package/agents/spec-miner.md +14 -0
  35. package/agents/swift-build-resolver.md +25 -0
  36. package/agents/swift-reviewer.md +28 -0
  37. package/agents/typescript-reviewer.md +28 -0
  38. package/agents/vue-reviewer.md +28 -0
  39. package/dist/backup/snapshots.d.ts +24 -0
  40. package/dist/backup/snapshots.js +171 -0
  41. package/dist/bin/ai-hub.d.ts +2 -0
  42. package/dist/bin/ai-hub.js +11 -0
  43. package/dist/cli/args.d.ts +4 -0
  44. package/dist/cli/args.js +63 -0
  45. package/dist/cli/context.d.ts +7 -0
  46. package/dist/cli/context.js +74 -0
  47. package/dist/cli/doctor.d.ts +14 -0
  48. package/dist/cli/doctor.js +200 -0
  49. package/dist/cli/drift.d.ts +2 -0
  50. package/dist/cli/drift.js +34 -0
  51. package/dist/cli/items.d.ts +5 -0
  52. package/dist/cli/items.js +10 -0
  53. package/dist/cli/legacy.d.ts +3 -0
  54. package/dist/cli/legacy.js +18 -0
  55. package/dist/cli/maintenance.d.ts +8 -0
  56. package/dist/cli/maintenance.js +262 -0
  57. package/dist/cli/memory.d.ts +2 -0
  58. package/dist/cli/memory.js +84 -0
  59. package/dist/cli/onboarding.d.ts +17 -0
  60. package/dist/cli/onboarding.js +234 -0
  61. package/dist/cli/run.d.ts +15 -0
  62. package/dist/cli/run.js +183 -0
  63. package/dist/cli/source.d.ts +5 -0
  64. package/dist/cli/source.js +22 -0
  65. package/dist/cli/trunk.d.ts +8 -0
  66. package/dist/cli/trunk.js +54 -0
  67. package/dist/cli/types.d.ts +17 -0
  68. package/dist/cli/types.js +4 -0
  69. package/dist/cli/worktrees.d.ts +11 -0
  70. package/dist/cli/worktrees.js +141 -0
  71. package/dist/engine/engine.d.ts +48 -0
  72. package/dist/engine/engine.js +114 -0
  73. package/dist/engine/gates.d.ts +2 -0
  74. package/dist/engine/gates.js +93 -0
  75. package/dist/frontmatter.d.ts +11 -0
  76. package/dist/frontmatter.js +30 -0
  77. package/dist/harness/guards/adapters/context.d.ts +19 -0
  78. package/dist/harness/guards/adapters/context.js +153 -0
  79. package/dist/harness/guards/adapters/hermes.d.ts +13 -0
  80. package/dist/harness/guards/adapters/hermes.js +18 -0
  81. package/dist/harness/guards/adapters/hooks.d.ts +25 -0
  82. package/dist/harness/guards/adapters/hooks.js +52 -0
  83. package/dist/harness/guards/branch.d.ts +5 -0
  84. package/dist/harness/guards/branch.js +43 -0
  85. package/dist/harness/guards/danger.d.ts +13 -0
  86. package/dist/harness/guards/danger.js +157 -0
  87. package/dist/harness/guards/index.d.ts +6 -0
  88. package/dist/harness/guards/index.js +6 -0
  89. package/dist/harness/guards/preflight.d.ts +14 -0
  90. package/dist/harness/guards/preflight.js +37 -0
  91. package/dist/harness/guards/ship.d.ts +2 -0
  92. package/dist/harness/guards/ship.js +35 -0
  93. package/dist/harness/guards/trunk.d.ts +5 -0
  94. package/dist/harness/guards/trunk.js +41 -0
  95. package/dist/harness/guards/types.d.ts +50 -0
  96. package/dist/harness/guards/types.js +1 -0
  97. package/dist/harness/memory/ledger.d.ts +53 -0
  98. package/dist/harness/memory/ledger.js +136 -0
  99. package/dist/harness/memory/state.d.ts +35 -0
  100. package/dist/harness/memory/state.js +121 -0
  101. package/dist/harness/worktree/reaper.d.ts +32 -0
  102. package/dist/harness/worktree/reaper.js +54 -0
  103. package/dist/manifest/build.d.ts +1 -0
  104. package/dist/manifest/build.js +1 -0
  105. package/dist/manifest/cli.d.ts +2 -0
  106. package/dist/manifest/cli.js +44 -0
  107. package/dist/manifest/dispatch.d.ts +13 -0
  108. package/dist/manifest/dispatch.js +36 -0
  109. package/dist/manifest/labels.d.ts +15 -0
  110. package/dist/manifest/labels.js +70 -0
  111. package/dist/manifest/manifest.d.ts +113 -0
  112. package/dist/manifest/manifest.js +202 -0
  113. package/dist/package-info.d.ts +4 -0
  114. package/dist/package-info.js +7 -0
  115. package/dist/paths.d.ts +33 -0
  116. package/dist/paths.js +123 -0
  117. package/dist/presets/detect.d.ts +24 -0
  118. package/dist/presets/detect.js +116 -0
  119. package/dist/presets/materialize.d.ts +18 -0
  120. package/dist/presets/materialize.js +101 -0
  121. package/dist/presets/resolve.d.ts +37 -0
  122. package/dist/presets/resolve.js +83 -0
  123. package/dist/presets/schema.d.ts +57 -0
  124. package/dist/presets/schema.js +68 -0
  125. package/dist/source-checkout.d.ts +8 -0
  126. package/dist/source-checkout.js +19 -0
  127. package/dist/sync/config.d.ts +47 -0
  128. package/dist/sync/config.js +85 -0
  129. package/dist/sync/lock.d.ts +16 -0
  130. package/dist/sync/lock.js +43 -0
  131. package/dist/sync/render.d.ts +18 -0
  132. package/dist/sync/render.js +255 -0
  133. package/dist/sync/sync.d.ts +38 -0
  134. package/dist/sync/sync.js +288 -0
  135. package/dist/sync/targets.d.ts +24 -0
  136. package/dist/sync/targets.js +78 -0
  137. package/engine/coupling.json +4 -0
  138. package/engine/engine.yaml +250 -0
  139. package/engine/legacy-paths.json +4 -0
  140. package/engine/preflight.md +11 -0
  141. package/manifest.json +393 -0
  142. package/package.json +61 -4
  143. package/presets/angular-express/harness/rules/01-zero-any.sh +25 -0
  144. package/presets/angular-express/harness/rules/02-no-ng-module.sh +21 -0
  145. package/presets/angular-express/harness/rules/03-no-constructor-injection.sh +21 -0
  146. package/presets/angular-express/harness/rules/04-no-legacy-directives.sh +21 -0
  147. package/presets/angular-express/harness/rules/05-no-dolibarrdal-inheritance.sh +25 -0
  148. package/presets/angular-express/harness/rules/06-no-todos.sh +22 -0
  149. package/presets/angular-express/harness/run-all.sh +13 -0
  150. package/presets/angular-express/preset.yaml +55 -0
  151. package/presets/angular-express/references/common-imports-catalog.md +146 -0
  152. package/presets/angular-express/references/fichajes-migration-notes.md +57 -0
  153. package/presets/angular-express/references/module-implementation-flow.md +260 -0
  154. package/presets/angular-express/references/products-coding-standard.md +143 -0
  155. package/presets/angular-express/references/products-module-blueprint.md +860 -0
  156. package/presets/angular-express/references/replicate-module-checklist.md +72 -0
  157. package/presets/angular-express/references/users-migration-notes.md +172 -0
  158. package/presets/angular-express/rules/architecture.md +8 -0
  159. package/presets/angular-express/rules/backend.md +4 -0
  160. package/presets/angular-express/rules/frontend.md +53 -0
  161. package/presets/angular-express/skills/angular-developer/SKILL.md +130 -0
  162. package/presets/angular-express/skills/angular-developer/references/angular-animations.md +160 -0
  163. package/presets/angular-express/skills/angular-developer/references/angular-aria.md +410 -0
  164. package/presets/angular-express/skills/angular-developer/references/cli.md +86 -0
  165. package/presets/angular-express/skills/angular-developer/references/component-harnesses.md +59 -0
  166. package/presets/angular-express/skills/angular-developer/references/component-styling.md +91 -0
  167. package/presets/angular-express/skills/angular-developer/references/components.md +117 -0
  168. package/presets/angular-express/skills/angular-developer/references/creating-services.md +97 -0
  169. package/presets/angular-express/skills/angular-developer/references/data-resolvers.md +69 -0
  170. package/presets/angular-express/skills/angular-developer/references/define-routes.md +67 -0
  171. package/presets/angular-express/skills/angular-developer/references/defining-providers.md +72 -0
  172. package/presets/angular-express/skills/angular-developer/references/di-fundamentals.md +120 -0
  173. package/presets/angular-express/skills/angular-developer/references/e2e-testing.md +66 -0
  174. package/presets/angular-express/skills/angular-developer/references/effects.md +83 -0
  175. package/presets/angular-express/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  176. package/presets/angular-express/skills/angular-developer/references/host-elements.md +80 -0
  177. package/presets/angular-express/skills/angular-developer/references/injection-context.md +63 -0
  178. package/presets/angular-express/skills/angular-developer/references/inputs.md +101 -0
  179. package/presets/angular-express/skills/angular-developer/references/linked-signal.md +59 -0
  180. package/presets/angular-express/skills/angular-developer/references/loading-strategies.md +61 -0
  181. package/presets/angular-express/skills/angular-developer/references/mcp.md +106 -0
  182. package/presets/angular-express/skills/angular-developer/references/migrations.md +30 -0
  183. package/presets/angular-express/skills/angular-developer/references/navigate-to-routes.md +69 -0
  184. package/presets/angular-express/skills/angular-developer/references/outputs.md +86 -0
  185. package/presets/angular-express/skills/angular-developer/references/reactive-forms.md +122 -0
  186. package/presets/angular-express/skills/angular-developer/references/rendering-strategies.md +44 -0
  187. package/presets/angular-express/skills/angular-developer/references/resource.md +74 -0
  188. package/presets/angular-express/skills/angular-developer/references/route-animations.md +56 -0
  189. package/presets/angular-express/skills/angular-developer/references/route-guards.md +52 -0
  190. package/presets/angular-express/skills/angular-developer/references/router-lifecycle.md +45 -0
  191. package/presets/angular-express/skills/angular-developer/references/router-testing.md +87 -0
  192. package/presets/angular-express/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  193. package/presets/angular-express/skills/angular-developer/references/signal-forms.md +897 -0
  194. package/presets/angular-express/skills/angular-developer/references/signals-overview.md +94 -0
  195. package/presets/angular-express/skills/angular-developer/references/tailwind-css.md +69 -0
  196. package/presets/angular-express/skills/angular-developer/references/template-driven-forms.md +114 -0
  197. package/presets/angular-express/skills/angular-developer/references/testing-fundamentals.md +66 -0
  198. package/presets/angular-express/skills/angular-new-app/SKILL.md +62 -0
  199. package/presets/angular-express/skills/frontend-design/LICENSE.txt +177 -0
  200. package/presets/angular-express/skills/frontend-design/SKILL.md +55 -0
  201. package/presets/angular-express/skills/onna-architecture-angular/SKILL.md +229 -0
  202. package/presets/angular-express/skills/onna-architecture-bff/SKILL.md +446 -0
  203. package/presets/angular-express/skills/onna-architecture-common/SKILL.md +313 -0
  204. package/presets/angular-express/skills/onna-design-system/SKILL.md +615 -0
  205. package/presets/base/preset.yaml +27 -0
  206. package/presets/base/rules/core.md +35 -0
  207. package/presets/generic-ts/preset.yaml +46 -0
  208. package/presets/python/preset.yaml +47 -0
  209. package/presets/python/rules/python.md +10 -0
  210. package/schema/engine.schema.json +73 -0
  211. package/schema/manifest.schema.json +140 -0
  212. package/schema/preset.schema.json +98 -0
  213. package/schema/state.schema.json +27 -0
  214. package/skills/shared/ab-testing/SKILL.md +159 -0
  215. package/skills/shared/ab-testing/evals/README.md +8 -0
  216. package/skills/shared/ab-testing/evals/cases.yaml +49 -0
  217. package/skills/shared/ab-testing/references/pitfalls.md +74 -0
  218. package/skills/shared/ab-testing/references/sample-size-and-cuped.md +128 -0
  219. package/skills/shared/ab-testing/scripts/verify.sh +89 -0
  220. package/skills/shared/accessibility/SKILL.md +216 -0
  221. package/skills/shared/accessibility/evals/README.md +3 -0
  222. package/skills/shared/accessibility/evals/cases.yaml +47 -0
  223. package/skills/shared/accessibility/references/aria-patterns.md +113 -0
  224. package/skills/shared/accessibility/references/wcag22-checklist.md +83 -0
  225. package/skills/shared/accessibility/scripts/verify.sh +103 -0
  226. package/skills/shared/agent-eval/SKILL.md +187 -0
  227. package/skills/shared/agent-eval/evals/README.md +12 -0
  228. package/skills/shared/agent-eval/evals/cases.yaml +45 -0
  229. package/skills/shared/agent-eval/references/judge-design.md +118 -0
  230. package/skills/shared/agent-eval/references/runner-and-gate.md +183 -0
  231. package/skills/shared/agent-eval/scripts/verify.sh +161 -0
  232. package/skills/shared/agent-safety/SKILL.md +169 -0
  233. package/skills/shared/agent-safety/evals/README.md +12 -0
  234. package/skills/shared/agent-safety/evals/cases.yaml +46 -0
  235. package/skills/shared/agent-safety/references/threat-model.md +51 -0
  236. package/skills/shared/analyze/SKILL.md +123 -0
  237. package/skills/shared/analyze/evals/README.md +72 -0
  238. package/skills/shared/analyze/evals/cases.yaml +74 -0
  239. package/skills/shared/angular/SKILL.md +275 -0
  240. package/skills/shared/angular/evals/README.md +3 -0
  241. package/skills/shared/angular/evals/cases.yaml +38 -0
  242. package/skills/shared/angular/references/migration.md +81 -0
  243. package/skills/shared/angular/references/signals-rxjs.md +92 -0
  244. package/skills/shared/angular/scripts/verify.sh +122 -0
  245. package/skills/shared/api-connector-builder/SKILL.md +268 -0
  246. package/skills/shared/api-connector-builder/evals/README.md +11 -0
  247. package/skills/shared/api-connector-builder/evals/cases.yaml +47 -0
  248. package/skills/shared/api-connector-builder/references/auth-flows.md +132 -0
  249. package/skills/shared/api-connector-builder/references/pagination.md +144 -0
  250. package/skills/shared/api-connector-builder/scripts/verify.sh +172 -0
  251. package/skills/shared/api-design/SKILL.md +182 -0
  252. package/skills/shared/api-design/evals/README.md +3 -0
  253. package/skills/shared/api-design/evals/cases.yaml +45 -0
  254. package/skills/shared/api-design/references/graphql-design.md +70 -0
  255. package/skills/shared/api-design/references/openapi-contract.md +86 -0
  256. package/skills/shared/api-design/references/rest-conventions.md +63 -0
  257. package/skills/shared/api-design/references/versioning-and-evolution.md +49 -0
  258. package/skills/shared/api-design/scripts/verify.sh +138 -0
  259. package/skills/shared/astro/SKILL.md +257 -0
  260. package/skills/shared/astro/evals/README.md +3 -0
  261. package/skills/shared/astro/evals/cases.yaml +41 -0
  262. package/skills/shared/astro/references/content-layer.md +118 -0
  263. package/skills/shared/astro/references/deploy-and-integrations.md +163 -0
  264. package/skills/shared/astro/scripts/verify.sh +137 -0
  265. package/skills/shared/author-skill/SKILL.md +194 -0
  266. package/skills/shared/author-skill/evals/README.md +66 -0
  267. package/skills/shared/author-skill/evals/cases.yaml +75 -0
  268. package/skills/shared/author-skill/references/description-recipe.md +85 -0
  269. package/skills/shared/author-skill/references/eval-authoring.md +108 -0
  270. package/skills/shared/author-skill/references/skill-conventions.md +95 -0
  271. package/skills/shared/automation-flows/SKILL.md +122 -0
  272. package/skills/shared/automation-flows/evals/README.md +5 -0
  273. package/skills/shared/automation-flows/evals/cases.yaml +44 -0
  274. package/skills/shared/automation-flows/references/error-handling.md +58 -0
  275. package/skills/shared/automation-flows/references/n8n-workflow-json.md +63 -0
  276. package/skills/shared/automation-flows/scripts/verify.sh +78 -0
  277. package/skills/shared/aws-essentials/SKILL.md +206 -0
  278. package/skills/shared/aws-essentials/evals/README.md +10 -0
  279. package/skills/shared/aws-essentials/evals/cases.yaml +44 -0
  280. package/skills/shared/aws-essentials/references/iam-least-privilege.md +134 -0
  281. package/skills/shared/aws-essentials/references/rds-cloudfront-recipes.md +127 -0
  282. package/skills/shared/aws-essentials/scripts/verify.sh +99 -0
  283. package/skills/shared/backups/SKILL.md +131 -0
  284. package/skills/shared/backups/evals/README.md +3 -0
  285. package/skills/shared/backups/evals/cases.yaml +42 -0
  286. package/skills/shared/backups/references/engine-recipes.md +121 -0
  287. package/skills/shared/backups/references/restore-runbook.md +65 -0
  288. package/skills/shared/backups/scripts/verify.sh +80 -0
  289. package/skills/shared/bash-scripting/SKILL.md +227 -0
  290. package/skills/shared/bash-scripting/evals/README.md +3 -0
  291. package/skills/shared/bash-scripting/evals/cases.yaml +45 -0
  292. package/skills/shared/bash-scripting/references/portability.md +97 -0
  293. package/skills/shared/bash-scripting/scripts/verify.sh +140 -0
  294. package/skills/shared/building-agents/SKILL.md +386 -0
  295. package/skills/shared/building-agents/evals/README.md +68 -0
  296. package/skills/shared/building-agents/evals/cases.yaml +60 -0
  297. package/skills/shared/building-agents/references/agent-loops-and-harness.md +371 -0
  298. package/skills/shared/building-agents/references/evals-and-observability.md +420 -0
  299. package/skills/shared/building-agents/references/mcp-servers.md +294 -0
  300. package/skills/shared/building-agents/references/provider-abstraction.md +489 -0
  301. package/skills/shared/building-agents/references/tools-and-rag.md +417 -0
  302. package/skills/shared/building-agents/scripts/verify.sh +121 -0
  303. package/skills/shared/chatbot/SKILL.md +151 -0
  304. package/skills/shared/chatbot/evals/README.md +13 -0
  305. package/skills/shared/chatbot/evals/cases.yaml +43 -0
  306. package/skills/shared/chatbot/references/handoff-and-sales.md +71 -0
  307. package/skills/shared/chatbot/references/system-prompt-and-guardrails.md +78 -0
  308. package/skills/shared/chatbot/scripts/verify.sh +162 -0
  309. package/skills/shared/chrome-extension/SKILL.md +169 -0
  310. package/skills/shared/chrome-extension/evals/README.md +12 -0
  311. package/skills/shared/chrome-extension/evals/cases.yaml +40 -0
  312. package/skills/shared/chrome-extension/references/store-and-migration.md +84 -0
  313. package/skills/shared/chrome-extension/scripts/verify.sh +62 -0
  314. package/skills/shared/clarify/SKILL.md +161 -0
  315. package/skills/shared/clarify/evals/README.md +70 -0
  316. package/skills/shared/clarify/evals/cases.yaml +71 -0
  317. package/skills/shared/clickhouse-analytics/SKILL.md +159 -0
  318. package/skills/shared/clickhouse-analytics/evals/README.md +3 -0
  319. package/skills/shared/clickhouse-analytics/evals/cases.yaml +45 -0
  320. package/skills/shared/clickhouse-analytics/references/ingestion-and-mvs.md +109 -0
  321. package/skills/shared/clickhouse-analytics/references/query-optimization.md +76 -0
  322. package/skills/shared/clickhouse-analytics/references/schema-and-engines.md +63 -0
  323. package/skills/shared/clickhouse-analytics/scripts/verify.sh +109 -0
  324. package/skills/shared/cloudflare/SKILL.md +186 -0
  325. package/skills/shared/cloudflare/evals/README.md +15 -0
  326. package/skills/shared/cloudflare/evals/cases.yaml +46 -0
  327. package/skills/shared/cloudflare/references/storage-primitives.md +104 -0
  328. package/skills/shared/cloudflare/references/wrangler-config.md +91 -0
  329. package/skills/shared/cloudflare/scripts/verify.sh +133 -0
  330. package/skills/shared/code-review/SKILL.md +132 -0
  331. package/skills/shared/code-review/evals/README.md +3 -0
  332. package/skills/shared/code-review/evals/cases.yaml +55 -0
  333. package/skills/shared/code-review/references/pr-workflow.md +67 -0
  334. package/skills/shared/codebase-onboarding/SKILL.md +128 -0
  335. package/skills/shared/codebase-onboarding/evals/README.md +3 -0
  336. package/skills/shared/codebase-onboarding/evals/cases.yaml +69 -0
  337. package/skills/shared/codebase-onboarding/references/recon-playbook.md +57 -0
  338. package/skills/shared/codebase-onboarding/scripts/verify.sh +54 -0
  339. package/skills/shared/compose-multiplatform/SKILL.md +198 -0
  340. package/skills/shared/compose-multiplatform/evals/README.md +3 -0
  341. package/skills/shared/compose-multiplatform/evals/cases.yaml +40 -0
  342. package/skills/shared/compose-multiplatform/references/ios-interop.md +91 -0
  343. package/skills/shared/compose-multiplatform/references/project-setup.md +96 -0
  344. package/skills/shared/compose-multiplatform/scripts/verify.sh +123 -0
  345. package/skills/shared/connect-tool/SKILL.md +163 -0
  346. package/skills/shared/connect-tool/evals/cases.yaml +58 -0
  347. package/skills/shared/constitution/SKILL.md +158 -0
  348. package/skills/shared/constitution/evals/README.md +68 -0
  349. package/skills/shared/constitution/evals/cases.yaml +72 -0
  350. package/skills/shared/constitution/references/constitution-template.md +100 -0
  351. package/skills/shared/context-budget/SKILL.md +114 -0
  352. package/skills/shared/context-budget/evals/README.md +11 -0
  353. package/skills/shared/context-budget/evals/cases.yaml +40 -0
  354. package/skills/shared/context-budget/references/handoff-and-compaction.md +96 -0
  355. package/skills/shared/continuous-learning/SKILL.md +106 -0
  356. package/skills/shared/continuous-learning/evals/README.md +16 -0
  357. package/skills/shared/continuous-learning/evals/cases.yaml +39 -0
  358. package/skills/shared/continuous-learning/references/lesson-routing.md +106 -0
  359. package/skills/shared/coolify/SKILL.md +194 -0
  360. package/skills/shared/coolify/evals/README.md +21 -0
  361. package/skills/shared/coolify/evals/cases.yaml +46 -0
  362. package/skills/shared/coolify/references/databases-and-backups.md +99 -0
  363. package/skills/shared/coolify/references/deploy-recipes.md +105 -0
  364. package/skills/shared/coolify/references/install-and-proxy.md +80 -0
  365. package/skills/shared/coolify/scripts/verify.sh +123 -0
  366. package/skills/shared/cost-tracking/SKILL.md +176 -0
  367. package/skills/shared/cost-tracking/evals/README.md +3 -0
  368. package/skills/shared/cost-tracking/evals/cases.yaml +45 -0
  369. package/skills/shared/cost-tracking/references/cloud-caps.md +52 -0
  370. package/skills/shared/cost-tracking/references/pricing-tables.md +51 -0
  371. package/skills/shared/cost-tracking/scripts/verify.sh +135 -0
  372. package/skills/shared/cpp/SKILL.md +302 -0
  373. package/skills/shared/cpp/evals/README.md +14 -0
  374. package/skills/shared/cpp/evals/cases.yaml +44 -0
  375. package/skills/shared/cpp/references/cmake.md +167 -0
  376. package/skills/shared/cpp/references/move-and-templates.md +130 -0
  377. package/skills/shared/cpp/references/undefined-behavior.md +86 -0
  378. package/skills/shared/cpp/scripts/verify.sh +165 -0
  379. package/skills/shared/csharp-dotnet/SKILL.md +272 -0
  380. package/skills/shared/csharp-dotnet/evals/README.md +3 -0
  381. package/skills/shared/csharp-dotnet/evals/cases.yaml +48 -0
  382. package/skills/shared/csharp-dotnet/references/aspnetcore.md +99 -0
  383. package/skills/shared/csharp-dotnet/references/async.md +82 -0
  384. package/skills/shared/csharp-dotnet/references/efcore.md +96 -0
  385. package/skills/shared/csharp-dotnet/scripts/verify.sh +90 -0
  386. package/skills/shared/data-cleaning/SKILL.md +259 -0
  387. package/skills/shared/data-cleaning/evals/README.md +16 -0
  388. package/skills/shared/data-cleaning/evals/cases.yaml +57 -0
  389. package/skills/shared/data-cleaning/references/normalization-recipes.md +136 -0
  390. package/skills/shared/data-cleaning/references/validation-patterns.md +134 -0
  391. package/skills/shared/data-cleaning/scripts/verify.sh +115 -0
  392. package/skills/shared/data-scraper/SKILL.md +130 -0
  393. package/skills/shared/data-scraper/evals/README.md +3 -0
  394. package/skills/shared/data-scraper/evals/cases.yaml +46 -0
  395. package/skills/shared/data-scraper/references/anti-bot.md +85 -0
  396. package/skills/shared/data-scraper/references/frameworks.md +116 -0
  397. package/skills/shared/data-scraper/references/legal-compliance.md +64 -0
  398. package/skills/shared/data-scraper/scripts/verify.sh +166 -0
  399. package/skills/shared/db-migrations/SKILL.md +237 -0
  400. package/skills/shared/db-migrations/evals/README.md +10 -0
  401. package/skills/shared/db-migrations/evals/cases.yaml +46 -0
  402. package/skills/shared/db-migrations/references/backfill-and-batching.md +105 -0
  403. package/skills/shared/db-migrations/references/expand-contract-playbook.md +152 -0
  404. package/skills/shared/db-migrations/references/tools-and-runners.md +88 -0
  405. package/skills/shared/db-migrations/scripts/verify.sh +112 -0
  406. package/skills/shared/debug/SKILL.md +188 -0
  407. package/skills/shared/debug/evals/README.md +88 -0
  408. package/skills/shared/debug/evals/cases.yaml +74 -0
  409. package/skills/shared/decision-challenge/SKILL.md +113 -0
  410. package/skills/shared/decision-challenge/evals/README.md +3 -0
  411. package/skills/shared/decision-challenge/evals/cases.yaml +42 -0
  412. package/skills/shared/decision-records/SKILL.md +202 -0
  413. package/skills/shared/decision-records/evals/README.md +3 -0
  414. package/skills/shared/decision-records/evals/cases.yaml +43 -0
  415. package/skills/shared/decision-records/references/templates.md +252 -0
  416. package/skills/shared/decision-records/scripts/verify.sh +105 -0
  417. package/skills/shared/deep-learning/SKILL.md +226 -0
  418. package/skills/shared/deep-learning/evals/README.md +11 -0
  419. package/skills/shared/deep-learning/evals/cases.yaml +48 -0
  420. package/skills/shared/deep-learning/references/distributed.md +105 -0
  421. package/skills/shared/deep-learning/references/training-recipes.md +135 -0
  422. package/skills/shared/deployment/SKILL.md +374 -0
  423. package/skills/shared/deployment/evals/README.md +50 -0
  424. package/skills/shared/deployment/evals/cases.yaml +53 -0
  425. package/skills/shared/deployment/references/coolify.md +216 -0
  426. package/skills/shared/deployment/references/dockerfiles-by-stack.md +319 -0
  427. package/skills/shared/deployment/references/github-actions.md +295 -0
  428. package/skills/shared/deployment/references/hosting-targets.md +272 -0
  429. package/skills/shared/deployment/scripts/verify.sh +134 -0
  430. package/skills/shared/deprecation/SKILL.md +123 -0
  431. package/skills/shared/deprecation/evals/README.md +3 -0
  432. package/skills/shared/deprecation/evals/cases.yaml +42 -0
  433. package/skills/shared/design/IMPECCABLE-LICENSE.txt +191 -0
  434. package/skills/shared/design/SKILL.md +111 -0
  435. package/skills/shared/design/THIRD_PARTY.md +26 -0
  436. package/skills/shared/design/engine/LICENSE +21 -0
  437. package/skills/shared/design/engine/RUN.md +515 -0
  438. package/skills/shared/design/engine/UPSTREAM.json +4 -0
  439. package/skills/shared/design/engine/assets/app.css +216 -0
  440. package/skills/shared/design/engine/assets/base.css +105 -0
  441. package/skills/shared/design/engine/assets/base.js +37 -0
  442. package/skills/shared/design/engine/assets/charts.js +617 -0
  443. package/skills/shared/design/engine/assets/scenes/stage.css +28 -0
  444. package/skills/shared/design/engine/assets/scenes/stage.js +133 -0
  445. package/skills/shared/design/engine/library/app.json +1327 -0
  446. package/skills/shared/design/engine/library/directions.json +1078 -0
  447. package/skills/shared/design/engine/library/heroes.json +1086 -0
  448. package/skills/shared/design/engine/library/motions.json +92 -0
  449. package/skills/shared/design/engine/library/palettes.json +1485 -0
  450. package/skills/shared/design/engine/library/photos.json +7240 -0
  451. package/skills/shared/design/engine/library/sections.json +4429 -0
  452. package/skills/shared/design/engine/library/sites.json +8350 -0
  453. package/skills/shared/design/engine/library/type.json +2024 -0
  454. package/skills/shared/design/engine/references/app-screens.md +1199 -0
  455. package/skills/shared/design/engine/references/colour.md +141 -0
  456. package/skills/shared/design/engine/references/copy.md +177 -0
  457. package/skills/shared/design/engine/references/critique.md +182 -0
  458. package/skills/shared/design/engine/references/imagery.md +791 -0
  459. package/skills/shared/design/engine/references/layout.md +292 -0
  460. package/skills/shared/design/engine/references/motion.md +980 -0
  461. package/skills/shared/design/engine/references/research.md +356 -0
  462. package/skills/shared/design/engine/references/scenes.md +174 -0
  463. package/skills/shared/design/engine/references/tells.md +115 -0
  464. package/skills/shared/design/engine/references/type.md +170 -0
  465. package/skills/shared/design/engine/scripts/assets.mjs +865 -0
  466. package/skills/shared/design/engine/scripts/draw.mjs +584 -0
  467. package/skills/shared/design/engine/scripts/inspect.mjs +303 -0
  468. package/skills/shared/design/engine/scripts/lib/app-draw.mjs +203 -0
  469. package/skills/shared/design/engine/scripts/lib/cdp.mjs +248 -0
  470. package/skills/shared/design/engine/scripts/lib/probe.mjs +909 -0
  471. package/skills/shared/design/engine/scripts/lib/rules.mjs +243 -0
  472. package/skills/shared/design/engine/scripts/lint.mjs +119 -0
  473. package/skills/shared/design/engine/scripts/scenes.mjs +124 -0
  474. package/skills/shared/design/evals/cases.yaml +45 -0
  475. package/skills/shared/design/references/design-md.md +49 -0
  476. package/skills/shared/design/references/finish-review.md +46 -0
  477. package/skills/shared/design/references/modes.md +51 -0
  478. package/skills/shared/digitalocean/SKILL.md +227 -0
  479. package/skills/shared/digitalocean/evals/README.md +10 -0
  480. package/skills/shared/digitalocean/evals/cases.yaml +37 -0
  481. package/skills/shared/digitalocean/references/app-spec.md +126 -0
  482. package/skills/shared/digitalocean/references/droplet-ops.md +95 -0
  483. package/skills/shared/digitalocean/scripts/verify.sh +102 -0
  484. package/skills/shared/django/SKILL.md +263 -0
  485. package/skills/shared/django/evals/README.md +11 -0
  486. package/skills/shared/django/evals/cases.yaml +47 -0
  487. package/skills/shared/django/references/drf.md +109 -0
  488. package/skills/shared/django/references/orm-performance.md +91 -0
  489. package/skills/shared/django/references/security.md +81 -0
  490. package/skills/shared/django/references/testing.md +86 -0
  491. package/skills/shared/django/scripts/verify.sh +115 -0
  492. package/skills/shared/docker/SKILL.md +251 -0
  493. package/skills/shared/docker/evals/README.md +10 -0
  494. package/skills/shared/docker/evals/cases.yaml +44 -0
  495. package/skills/shared/docker/references/base-images-and-stages.md +104 -0
  496. package/skills/shared/docker/references/compose-recipes.md +109 -0
  497. package/skills/shared/docker/scripts/verify.sh +149 -0
  498. package/skills/shared/domains-dns/SKILL.md +131 -0
  499. package/skills/shared/domains-dns/evals/README.md +16 -0
  500. package/skills/shared/domains-dns/evals/cases.yaml +47 -0
  501. package/skills/shared/domains-dns/references/record-cookbook.md +94 -0
  502. package/skills/shared/domains-dns/references/tls-and-acme.md +90 -0
  503. package/skills/shared/domains-dns/references/verify-and-debug.md +64 -0
  504. package/skills/shared/domains-dns/scripts/verify.sh +163 -0
  505. package/skills/shared/drizzle-orm/SKILL.md +231 -0
  506. package/skills/shared/drizzle-orm/evals/README.md +12 -0
  507. package/skills/shared/drizzle-orm/evals/cases.yaml +47 -0
  508. package/skills/shared/drizzle-orm/references/relations-and-drivers.md +118 -0
  509. package/skills/shared/drizzle-orm/scripts/verify.sh +155 -0
  510. package/skills/shared/duckdb/SKILL.md +202 -0
  511. package/skills/shared/duckdb/evals/README.md +31 -0
  512. package/skills/shared/duckdb/evals/cases.yaml +41 -0
  513. package/skills/shared/duckdb/references/python-and-interop.md +105 -0
  514. package/skills/shared/duckdb/references/remote-and-lakehouse.md +101 -0
  515. package/skills/shared/duckdb/scripts/verify.sh +71 -0
  516. package/skills/shared/dynamodb/SKILL.md +204 -0
  517. package/skills/shared/dynamodb/evals/README.md +8 -0
  518. package/skills/shared/dynamodb/evals/cases.yaml +46 -0
  519. package/skills/shared/dynamodb/references/access-patterns.md +127 -0
  520. package/skills/shared/dynamodb/references/capacity-and-limits.md +78 -0
  521. package/skills/shared/dynamodb/scripts/verify.sh +108 -0
  522. package/skills/shared/e2e-testing/SKILL.md +233 -0
  523. package/skills/shared/e2e-testing/evals/README.md +10 -0
  524. package/skills/shared/e2e-testing/evals/cases.yaml +64 -0
  525. package/skills/shared/e2e-testing/references/config-and-ci.md +156 -0
  526. package/skills/shared/e2e-testing/references/flakiness-playbook.md +124 -0
  527. package/skills/shared/e2e-testing/scripts/verify.sh +117 -0
  528. package/skills/shared/electron/SKILL.md +209 -0
  529. package/skills/shared/electron/evals/README.md +13 -0
  530. package/skills/shared/electron/evals/cases.yaml +38 -0
  531. package/skills/shared/electron/references/packaging-and-updates.md +122 -0
  532. package/skills/shared/electron/references/security-and-ipc.md +158 -0
  533. package/skills/shared/electron/scripts/verify.sh +143 -0
  534. package/skills/shared/elixir/SKILL.md +209 -0
  535. package/skills/shared/elixir/evals/README.md +3 -0
  536. package/skills/shared/elixir/evals/cases.yaml +41 -0
  537. package/skills/shared/elixir/references/mix-and-releases.md +91 -0
  538. package/skills/shared/elixir/references/otp-patterns.md +96 -0
  539. package/skills/shared/elixir/scripts/verify.sh +76 -0
  540. package/skills/shared/email-deliverability/SKILL.md +148 -0
  541. package/skills/shared/email-deliverability/evals/README.md +21 -0
  542. package/skills/shared/email-deliverability/evals/cases.yaml +45 -0
  543. package/skills/shared/email-deliverability/scripts/verify.sh +98 -0
  544. package/skills/shared/embeddings-search/SKILL.md +184 -0
  545. package/skills/shared/embeddings-search/evals/README.md +10 -0
  546. package/skills/shared/embeddings-search/evals/cases.yaml +44 -0
  547. package/skills/shared/embeddings-search/references/evaluation.md +86 -0
  548. package/skills/shared/embeddings-search/references/models.md +73 -0
  549. package/skills/shared/embeddings-search/scripts/verify.sh +103 -0
  550. package/skills/shared/error-handling/SKILL.md +273 -0
  551. package/skills/shared/error-handling/evals/README.md +12 -0
  552. package/skills/shared/error-handling/evals/cases.yaml +46 -0
  553. package/skills/shared/error-handling/references/boundaries-and-messaging.md +120 -0
  554. package/skills/shared/error-handling/references/retry-and-resilience.md +154 -0
  555. package/skills/shared/error-handling/scripts/verify.sh +110 -0
  556. package/skills/shared/expo/SKILL.md +243 -0
  557. package/skills/shared/expo/evals/README.md +13 -0
  558. package/skills/shared/expo/evals/cases.yaml +44 -0
  559. package/skills/shared/expo/references/config-plugins.md +117 -0
  560. package/skills/shared/expo/references/eas-update.md +118 -0
  561. package/skills/shared/expo/scripts/verify.sh +132 -0
  562. package/skills/shared/fal/SKILL.md +196 -0
  563. package/skills/shared/fal/evals/README.md +3 -0
  564. package/skills/shared/fal/evals/cases.yaml +42 -0
  565. package/skills/shared/fal/references/models-and-cost.md +53 -0
  566. package/skills/shared/fal/references/queue-and-webhooks.md +153 -0
  567. package/skills/shared/fal/scripts/verify.sh +72 -0
  568. package/skills/shared/fastapi/SKILL.md +469 -0
  569. package/skills/shared/fastapi/evals/README.md +50 -0
  570. package/skills/shared/fastapi/evals/cases.yaml +55 -0
  571. package/skills/shared/fastapi/references/database.md +347 -0
  572. package/skills/shared/fastapi/references/production.md +338 -0
  573. package/skills/shared/fastapi/references/security.md +330 -0
  574. package/skills/shared/fastapi/references/testing.md +349 -0
  575. package/skills/shared/fastapi/scripts/verify.sh +157 -0
  576. package/skills/shared/finetuning/SKILL.md +232 -0
  577. package/skills/shared/finetuning/evals/README.md +13 -0
  578. package/skills/shared/finetuning/evals/cases.yaml +50 -0
  579. package/skills/shared/finetuning/references/hyperparameters-and-eval.md +74 -0
  580. package/skills/shared/finetuning/references/methods.md +189 -0
  581. package/skills/shared/firebase/SKILL.md +237 -0
  582. package/skills/shared/firebase/evals/README.md +12 -0
  583. package/skills/shared/firebase/evals/cases.yaml +45 -0
  584. package/skills/shared/firebase/references/cloud-functions.md +102 -0
  585. package/skills/shared/firebase/references/data-modeling.md +108 -0
  586. package/skills/shared/firebase/references/security-rules.md +137 -0
  587. package/skills/shared/firebase/scripts/verify.sh +98 -0
  588. package/skills/shared/flutter/SKILL.md +400 -0
  589. package/skills/shared/flutter/evals/README.md +54 -0
  590. package/skills/shared/flutter/evals/cases.yaml +69 -0
  591. package/skills/shared/flutter/references/architecture-and-state.md +499 -0
  592. package/skills/shared/flutter/references/i18n-and-dependencies.md +197 -0
  593. package/skills/shared/flutter/references/performance.md +299 -0
  594. package/skills/shared/flutter/references/testing.md +385 -0
  595. package/skills/shared/flutter/references/ui-and-navigation.md +378 -0
  596. package/skills/shared/flutter/scripts/verify.sh +104 -0
  597. package/skills/shared/fly-io/SKILL.md +197 -0
  598. package/skills/shared/fly-io/evals/README.md +3 -0
  599. package/skills/shared/fly-io/evals/cases.yaml +42 -0
  600. package/skills/shared/fly-io/references/fly-toml.md +155 -0
  601. package/skills/shared/fly-io/references/multi-region.md +66 -0
  602. package/skills/shared/fly-io/scripts/verify.sh +90 -0
  603. package/skills/shared/ftd/SKILL.md +111 -0
  604. package/skills/shared/ftd/evals/cases.yaml +66 -0
  605. package/skills/shared/ftd/evals/routing.json +24 -0
  606. package/skills/shared/game-design/SKILL.md +146 -0
  607. package/skills/shared/game-design/evals/README.md +13 -0
  608. package/skills/shared/game-design/evals/cases.yaml +47 -0
  609. package/skills/shared/game-design/references/mechanics-and-loops.md +78 -0
  610. package/skills/shared/game-design/references/playtesting-and-scope.md +58 -0
  611. package/skills/shared/game-design/references/progression-and-economy.md +70 -0
  612. package/skills/shared/game-storytelling/SKILL.md +134 -0
  613. package/skills/shared/game-storytelling/evals/README.md +28 -0
  614. package/skills/shared/game-storytelling/evals/cases.yaml +51 -0
  615. package/skills/shared/game-storytelling/references/branching-and-state.md +134 -0
  616. package/skills/shared/game-storytelling/references/dialogue-tools.md +117 -0
  617. package/skills/shared/game-storytelling/references/environmental-storytelling.md +71 -0
  618. package/skills/shared/gamedev-multiplayer/SKILL.md +237 -0
  619. package/skills/shared/gamedev-multiplayer/evals/README.md +12 -0
  620. package/skills/shared/gamedev-multiplayer/evals/cases.yaml +44 -0
  621. package/skills/shared/gamedev-multiplayer/references/godot-high-level-multiplayer.md +133 -0
  622. package/skills/shared/gamedev-multiplayer/references/prediction-and-latency.md +104 -0
  623. package/skills/shared/gamedev-multiplayer/references/unity-and-unreal-netcode.md +166 -0
  624. package/skills/shared/gamedev-pathing/SKILL.md +233 -0
  625. package/skills/shared/gamedev-pathing/evals/README.md +14 -0
  626. package/skills/shared/gamedev-pathing/evals/cases.yaml +49 -0
  627. package/skills/shared/gamedev-pathing/references/navmesh-workflow.md +110 -0
  628. package/skills/shared/gamedev-pathing/references/search-algorithms.md +135 -0
  629. package/skills/shared/gamedev-pathing/references/steering-and-avoidance.md +120 -0
  630. package/skills/shared/gamedev-physics/SKILL.md +225 -0
  631. package/skills/shared/gamedev-physics/evals/README.md +12 -0
  632. package/skills/shared/gamedev-physics/evals/cases.yaml +54 -0
  633. package/skills/shared/gamedev-physics/references/character-controllers.md +120 -0
  634. package/skills/shared/gamedev-physics/references/determinism-and-queries.md +124 -0
  635. package/skills/shared/gamedev-physics/references/layers-and-masks.md +115 -0
  636. package/skills/shared/gamedev-shaders/SKILL.md +232 -0
  637. package/skills/shared/gamedev-shaders/evals/README.md +14 -0
  638. package/skills/shared/gamedev-shaders/evals/cases.yaml +45 -0
  639. package/skills/shared/gamedev-shaders/references/effect-recipes.md +205 -0
  640. package/skills/shared/gamedev-shaders/references/godot-shading-language.md +133 -0
  641. package/skills/shared/gamedev-shaders/references/unity-and-unreal-shaders.md +169 -0
  642. package/skills/shared/gamedev-shipping/SKILL.md +220 -0
  643. package/skills/shared/gamedev-shipping/evals/README.md +9 -0
  644. package/skills/shared/gamedev-shipping/evals/cases.yaml +55 -0
  645. package/skills/shared/gamedev-shipping/references/mobile-and-desktop.md +127 -0
  646. package/skills/shared/gamedev-shipping/references/stores-and-ci.md +162 -0
  647. package/skills/shared/gamedev-shipping/references/web-export-headers.md +140 -0
  648. package/skills/shared/gcp-essentials/SKILL.md +324 -0
  649. package/skills/shared/gcp-essentials/evals/README.md +12 -0
  650. package/skills/shared/gcp-essentials/evals/cases.yaml +38 -0
  651. package/skills/shared/gcp-essentials/references/deploy-recipes.md +81 -0
  652. package/skills/shared/gcp-essentials/references/iam-and-auth.md +94 -0
  653. package/skills/shared/gcp-essentials/references/networking-and-sql.md +74 -0
  654. package/skills/shared/gcp-essentials/scripts/verify.sh +158 -0
  655. package/skills/shared/git-workflow/SKILL.md +214 -0
  656. package/skills/shared/git-workflow/evals/README.md +10 -0
  657. package/skills/shared/git-workflow/evals/cases.yaml +52 -0
  658. package/skills/shared/git-workflow/references/gitmoji.md +157 -0
  659. package/skills/shared/git-workflow/references/interactive-rebase.md +89 -0
  660. package/skills/shared/github-actions/SKILL.md +244 -0
  661. package/skills/shared/github-actions/evals/README.md +3 -0
  662. package/skills/shared/github-actions/evals/cases.yaml +45 -0
  663. package/skills/shared/github-actions/references/caching-and-matrix.md +92 -0
  664. package/skills/shared/github-actions/references/oidc-deploys.md +130 -0
  665. package/skills/shared/github-actions/scripts/verify.sh +105 -0
  666. package/skills/shared/gitlab-auth/SKILL.md +99 -0
  667. package/skills/shared/gitlab-workflow/SKILL.md +138 -0
  668. package/skills/shared/go/SKILL.md +390 -0
  669. package/skills/shared/go/evals/README.md +56 -0
  670. package/skills/shared/go/evals/cases.yaml +55 -0
  671. package/skills/shared/go/references/concurrency.md +557 -0
  672. package/skills/shared/go/references/http-services.md +529 -0
  673. package/skills/shared/go/references/testing.md +338 -0
  674. package/skills/shared/go/scripts/verify.sh +134 -0
  675. package/skills/shared/godot/SKILL.md +300 -0
  676. package/skills/shared/godot/evals/README.md +13 -0
  677. package/skills/shared/godot/evals/cases.yaml +50 -0
  678. package/skills/shared/godot/references/export-and-testing.md +102 -0
  679. package/skills/shared/godot/references/gdscript-style.md +84 -0
  680. package/skills/shared/godot/references/godot3-to-4-traps.md +89 -0
  681. package/skills/shared/godot/references/nodes-scenes-resources.md +109 -0
  682. package/skills/shared/harness/SKILL.md +316 -0
  683. package/skills/shared/harness/assets/_TEMPLATE/.env.example +8 -0
  684. package/skills/shared/harness/assets/_TEMPLATE/CREDENTIALS.md +25 -0
  685. package/skills/shared/harness/assets/_TEMPLATE/README.md +25 -0
  686. package/skills/shared/harness/assets/_TEMPLATE/gitignore +10 -0
  687. package/skills/shared/harness/assets/_TEMPLATE/test_connection.sh +30 -0
  688. package/skills/shared/harness/evals/README.md +54 -0
  689. package/skills/shared/harness/evals/cases.yaml +72 -0
  690. package/skills/shared/harness/examples/audit-example.md +120 -0
  691. package/skills/shared/harness/references/agents-md-template.md +41 -0
  692. package/skills/shared/harness/references/audit-report-template.html +140 -0
  693. package/skills/shared/harness/references/audit-report-template.md +116 -0
  694. package/skills/shared/harness/references/claude-md-template.md +85 -0
  695. package/skills/shared/harness/references/daily-curation-automation.md +68 -0
  696. package/skills/shared/harness/references/inbox-readme-template.md +51 -0
  697. package/skills/shared/harness/references/ingest-formats.md +185 -0
  698. package/skills/shared/harness/references/ingest-ignore-defaults.md +48 -0
  699. package/skills/shared/harness/references/obsidian-scaffolding.md +103 -0
  700. package/skills/shared/harness/references/providers.yaml +3546 -0
  701. package/skills/shared/harness/references/tools-readme-template.md +88 -0
  702. package/skills/shared/harness/references/wiki-archive-template.html +81 -0
  703. package/skills/shared/harness/references/wiki-article-template.md +60 -0
  704. package/skills/shared/harness/references/wiki-dashboard-template.html +136 -0
  705. package/skills/shared/harness/references/wiki-deep-improve-report-template.html +126 -0
  706. package/skills/shared/harness/references/wiki-gaps-template.md +22 -0
  707. package/skills/shared/harness/references/wiki-index-template.md +32 -0
  708. package/skills/shared/harness/references/wiki-protocol.md +926 -0
  709. package/skills/shared/harness/references/wiki-raw-template.md +7 -0
  710. package/skills/shared/harness/references/wiki-worklog-template.md +60 -0
  711. package/skills/shared/hetzner/SKILL.md +203 -0
  712. package/skills/shared/hetzner/evals/README.md +35 -0
  713. package/skills/shared/hetzner/evals/cases.yaml +46 -0
  714. package/skills/shared/hetzner/references/cloud-init.md +120 -0
  715. package/skills/shared/hetzner/references/plans-and-locations.md +56 -0
  716. package/skills/shared/hetzner/scripts/verify.sh +122 -0
  717. package/skills/shared/htmx/SKILL.md +261 -0
  718. package/skills/shared/htmx/evals/README.md +3 -0
  719. package/skills/shared/htmx/evals/cases.yaml +38 -0
  720. package/skills/shared/htmx/references/patterns.md +113 -0
  721. package/skills/shared/htmx/references/server-contract.md +91 -0
  722. package/skills/shared/htmx/scripts/verify.sh +93 -0
  723. package/skills/shared/huggingface/SKILL.md +191 -0
  724. package/skills/shared/huggingface/evals/README.md +11 -0
  725. package/skills/shared/huggingface/evals/cases.yaml +41 -0
  726. package/skills/shared/huggingface/references/endpoints-and-spaces.md +99 -0
  727. package/skills/shared/huggingface/references/hub-and-cli.md +85 -0
  728. package/skills/shared/huggingface/references/inference-providers.md +115 -0
  729. package/skills/shared/huggingface/scripts/verify.sh +123 -0
  730. package/skills/shared/idea-refinement/SKILL.md +121 -0
  731. package/skills/shared/idea-refinement/evals/README.md +3 -0
  732. package/skills/shared/idea-refinement/evals/cases.yaml +42 -0
  733. package/skills/shared/implement/SKILL.md +383 -0
  734. package/skills/shared/implement/evals/README.md +56 -0
  735. package/skills/shared/implement/evals/cases.yaml +43 -0
  736. package/skills/shared/implement/references/per-task-review.md +46 -0
  737. package/skills/shared/implement/scripts/review-package +59 -0
  738. package/skills/shared/implement/scripts/sdd-workspace +47 -0
  739. package/skills/shared/implement/scripts/task-brief +77 -0
  740. package/skills/shared/init/SKILL.md +209 -0
  741. package/skills/shared/init/evals/README.md +49 -0
  742. package/skills/shared/init/evals/cases.yaml +74 -0
  743. package/skills/shared/init/references/accompaniment-and-profile.md +122 -0
  744. package/skills/shared/init/references/discovery.md +90 -0
  745. package/skills/shared/init/references/recommend-skills.md +115 -0
  746. package/skills/shared/init/scripts/verify.sh +118 -0
  747. package/skills/shared/java/SKILL.md +341 -0
  748. package/skills/shared/java/evals/README.md +23 -0
  749. package/skills/shared/java/evals/cases.yaml +43 -0
  750. package/skills/shared/java/references/builds.md +133 -0
  751. package/skills/shared/java/references/concurrency.md +108 -0
  752. package/skills/shared/java/references/streams.md +102 -0
  753. package/skills/shared/java/scripts/verify.sh +107 -0
  754. package/skills/shared/knowledge-ops/SKILL.md +122 -0
  755. package/skills/shared/knowledge-ops/evals/README.md +16 -0
  756. package/skills/shared/knowledge-ops/evals/cases.yaml +50 -0
  757. package/skills/shared/knowledge-ops/references/gardening-playbook.md +126 -0
  758. package/skills/shared/kotlin-android/SKILL.md +245 -0
  759. package/skills/shared/kotlin-android/evals/README.md +13 -0
  760. package/skills/shared/kotlin-android/evals/cases.yaml +56 -0
  761. package/skills/shared/kotlin-android/references/architecture.md +200 -0
  762. package/skills/shared/kotlin-android/references/gradle-setup.md +125 -0
  763. package/skills/shared/kotlin-android/scripts/verify.sh +109 -0
  764. package/skills/shared/laravel/SKILL.md +301 -0
  765. package/skills/shared/laravel/evals/README.md +10 -0
  766. package/skills/shared/laravel/evals/cases.yaml +45 -0
  767. package/skills/shared/laravel/references/eloquent-patterns.md +126 -0
  768. package/skills/shared/laravel/references/queues-and-scheduling.md +153 -0
  769. package/skills/shared/laravel/scripts/verify.sh +128 -0
  770. package/skills/shared/level-design/SKILL.md +143 -0
  771. package/skills/shared/level-design/evals/README.md +35 -0
  772. package/skills/shared/level-design/evals/cases.yaml +58 -0
  773. package/skills/shared/level-design/references/blockout-to-art.md +118 -0
  774. package/skills/shared/level-design/references/guidance-and-readability.md +152 -0
  775. package/skills/shared/level-design/references/pacing-and-encounters.md +142 -0
  776. package/skills/shared/llm-pipeline/SKILL.md +150 -0
  777. package/skills/shared/llm-pipeline/evals/README.md +3 -0
  778. package/skills/shared/llm-pipeline/evals/cases.yaml +44 -0
  779. package/skills/shared/llm-pipeline/references/caching-layers.md +60 -0
  780. package/skills/shared/llm-pipeline/references/litellm-router.md +101 -0
  781. package/skills/shared/llm-pipeline/scripts/verify.sh +169 -0
  782. package/skills/shared/machine-learning/SKILL.md +228 -0
  783. package/skills/shared/machine-learning/evals/README.md +15 -0
  784. package/skills/shared/machine-learning/evals/cases.yaml +54 -0
  785. package/skills/shared/machine-learning/references/gbdt-and-tuning.md +83 -0
  786. package/skills/shared/machine-learning/references/metrics-and-imbalance.md +82 -0
  787. package/skills/shared/machine-learning/references/pipelines-and-cv.md +135 -0
  788. package/skills/shared/modal/SKILL.md +290 -0
  789. package/skills/shared/modal/evals/README.md +29 -0
  790. package/skills/shared/modal/evals/cases.yaml +50 -0
  791. package/skills/shared/modal/references/images-gpu-cookbook.md +160 -0
  792. package/skills/shared/modal/references/web-and-scaling.md +138 -0
  793. package/skills/shared/modal/scripts/verify.sh +127 -0
  794. package/skills/shared/mongodb/SKILL.md +342 -0
  795. package/skills/shared/mongodb/evals/README.md +29 -0
  796. package/skills/shared/mongodb/evals/cases.yaml +41 -0
  797. package/skills/shared/mongodb/references/aggregation.md +115 -0
  798. package/skills/shared/mongodb/references/data-modeling.md +135 -0
  799. package/skills/shared/mongodb/references/transactions-and-ops.md +128 -0
  800. package/skills/shared/mongodb/scripts/verify.sh +151 -0
  801. package/skills/shared/monitoring/SKILL.md +155 -0
  802. package/skills/shared/monitoring/evals/README.md +3 -0
  803. package/skills/shared/monitoring/evals/cases.yaml +47 -0
  804. package/skills/shared/monitoring/references/burn-rate-and-oncall.md +128 -0
  805. package/skills/shared/monitoring/references/tool-setup.md +154 -0
  806. package/skills/shared/monitoring/scripts/verify.sh +145 -0
  807. package/skills/shared/mysql/SKILL.md +249 -0
  808. package/skills/shared/mysql/evals/README.md +12 -0
  809. package/skills/shared/mysql/evals/cases.yaml +49 -0
  810. package/skills/shared/mysql/references/indexing-and-explain.md +161 -0
  811. package/skills/shared/mysql/references/mysql-vs-mariadb.md +78 -0
  812. package/skills/shared/mysql/references/online-ddl-and-migrations.md +120 -0
  813. package/skills/shared/mysql/references/replication-and-ha.md +115 -0
  814. package/skills/shared/mysql/scripts/verify.sh +141 -0
  815. package/skills/shared/neon/SKILL.md +218 -0
  816. package/skills/shared/neon/evals/README.md +11 -0
  817. package/skills/shared/neon/evals/cases.yaml +45 -0
  818. package/skills/shared/neon/references/branching-ci.md +86 -0
  819. package/skills/shared/neon/scripts/verify.sh +78 -0
  820. package/skills/shared/nestjs/SKILL.md +217 -0
  821. package/skills/shared/nestjs/evals/README.md +3 -0
  822. package/skills/shared/nestjs/evals/cases.yaml +38 -0
  823. package/skills/shared/nestjs/references/cross-cutting.md +135 -0
  824. package/skills/shared/nestjs/references/testing-recipes.md +105 -0
  825. package/skills/shared/nestjs/scripts/verify.sh +98 -0
  826. package/skills/shared/netlify/SKILL.md +208 -0
  827. package/skills/shared/netlify/evals/README.md +13 -0
  828. package/skills/shared/netlify/evals/cases.yaml +43 -0
  829. package/skills/shared/netlify/references/functions.md +97 -0
  830. package/skills/shared/netlify/references/netlify-toml.md +115 -0
  831. package/skills/shared/netlify/scripts/verify.sh +95 -0
  832. package/skills/shared/nextjs/SKILL.md +400 -0
  833. package/skills/shared/nextjs/evals/README.md +59 -0
  834. package/skills/shared/nextjs/evals/cases.yaml +56 -0
  835. package/skills/shared/nextjs/references/data-and-caching.md +309 -0
  836. package/skills/shared/nextjs/references/metadata.md +208 -0
  837. package/skills/shared/nextjs/references/performance.md +325 -0
  838. package/skills/shared/nextjs/references/react.md +383 -0
  839. package/skills/shared/nextjs/references/security.md +239 -0
  840. package/skills/shared/nextjs/references/testing.md +290 -0
  841. package/skills/shared/nextjs/scripts/verify.sh +141 -0
  842. package/skills/shared/nlp/SKILL.md +225 -0
  843. package/skills/shared/nlp/evals/README.md +10 -0
  844. package/skills/shared/nlp/evals/cases.yaml +45 -0
  845. package/skills/shared/nlp/references/evaluation.md +107 -0
  846. package/skills/shared/nlp/references/tokenization.md +95 -0
  847. package/skills/shared/no-code-app/SKILL.md +145 -0
  848. package/skills/shared/no-code-app/evals/README.md +3 -0
  849. package/skills/shared/no-code-app/evals/cases.yaml +43 -0
  850. package/skills/shared/no-code-app/references/platform-limits.md +100 -0
  851. package/skills/shared/nodejs/SKILL.md +229 -0
  852. package/skills/shared/nodejs/evals/README.md +3 -0
  853. package/skills/shared/nodejs/evals/cases.yaml +39 -0
  854. package/skills/shared/nodejs/references/express5-migration.md +53 -0
  855. package/skills/shared/nodejs/references/graceful-shutdown.md +73 -0
  856. package/skills/shared/nodejs/scripts/verify.sh +122 -0
  857. package/skills/shared/observability/SKILL.md +235 -0
  858. package/skills/shared/observability/evals/README.md +3 -0
  859. package/skills/shared/observability/evals/cases.yaml +51 -0
  860. package/skills/shared/observability/references/collector-config.md +98 -0
  861. package/skills/shared/observability/references/instrumentation-recipes.md +115 -0
  862. package/skills/shared/observability/scripts/verify.sh +156 -0
  863. package/skills/shared/ollama/SKILL.md +213 -0
  864. package/skills/shared/ollama/evals/README.md +9 -0
  865. package/skills/shared/ollama/evals/cases.yaml +43 -0
  866. package/skills/shared/ollama/references/api.md +148 -0
  867. package/skills/shared/ollama/references/hardware-sizing.md +87 -0
  868. package/skills/shared/ollama/scripts/verify.sh +116 -0
  869. package/skills/shared/open-weights/SKILL.md +239 -0
  870. package/skills/shared/open-weights/evals/README.md +14 -0
  871. package/skills/shared/open-weights/evals/cases.yaml +42 -0
  872. package/skills/shared/open-weights/references/licenses.md +123 -0
  873. package/skills/shared/open-weights/references/model-families.md +83 -0
  874. package/skills/shared/open-weights/references/sizing-and-quant.md +89 -0
  875. package/skills/shared/orient/SKILL.md +92 -0
  876. package/skills/shared/orient/evals/README.md +18 -0
  877. package/skills/shared/orient/evals/cases.yaml +67 -0
  878. package/skills/shared/orient/references/explain-ladder.md +93 -0
  879. package/skills/shared/orient/references/orientation-contract.md +86 -0
  880. package/skills/shared/parallel/SKILL.md +168 -0
  881. package/skills/shared/parallel/evals/README.md +62 -0
  882. package/skills/shared/parallel/evals/cases.yaml +44 -0
  883. package/skills/shared/performance/SKILL.md +229 -0
  884. package/skills/shared/performance/evals/README.md +3 -0
  885. package/skills/shared/performance/evals/cases.yaml +49 -0
  886. package/skills/shared/performance/references/profiling-playbook.md +54 -0
  887. package/skills/shared/performance/scripts/verify.sh +94 -0
  888. package/skills/shared/phoenix/SKILL.md +169 -0
  889. package/skills/shared/phoenix/evals/README.md +3 -0
  890. package/skills/shared/phoenix/evals/cases.yaml +40 -0
  891. package/skills/shared/phoenix/references/auth-and-scopes.md +82 -0
  892. package/skills/shared/phoenix/references/ecto-patterns.md +93 -0
  893. package/skills/shared/phoenix/references/liveview.md +134 -0
  894. package/skills/shared/phoenix/scripts/verify.sh +73 -0
  895. package/skills/shared/php/SKILL.md +397 -0
  896. package/skills/shared/php/evals/README.md +12 -0
  897. package/skills/shared/php/evals/cases.yaml +45 -0
  898. package/skills/shared/php/references/tooling.md +170 -0
  899. package/skills/shared/php/references/type-system.md +220 -0
  900. package/skills/shared/php/scripts/verify.sh +155 -0
  901. package/skills/shared/plan/SKILL.md +166 -0
  902. package/skills/shared/plan/evals/README.md +62 -0
  903. package/skills/shared/plan/evals/cases.yaml +49 -0
  904. package/skills/shared/plan/references/plan-template.md +153 -0
  905. package/skills/shared/planetscale/SKILL.md +198 -0
  906. package/skills/shared/planetscale/evals/README.md +11 -0
  907. package/skills/shared/planetscale/evals/cases.yaml +46 -0
  908. package/skills/shared/planetscale/references/deploy-requests.md +75 -0
  909. package/skills/shared/planetscale/references/no-foreign-keys.md +88 -0
  910. package/skills/shared/planetscale/scripts/verify.sh +115 -0
  911. package/skills/shared/planning-with-files/SKILL.md +278 -0
  912. package/skills/shared/planning-with-files/examples.md +202 -0
  913. package/skills/shared/planning-with-files/reference.md +218 -0
  914. package/skills/shared/planning-with-files/scripts/attest-plan.ps1 +118 -0
  915. package/skills/shared/planning-with-files/scripts/attest-plan.sh +110 -0
  916. package/skills/shared/planning-with-files/scripts/check-complete.ps1 +44 -0
  917. package/skills/shared/planning-with-files/scripts/check-complete.sh +46 -0
  918. package/skills/shared/planning-with-files/scripts/init-session.ps1 +166 -0
  919. package/skills/shared/planning-with-files/scripts/init-session.sh +284 -0
  920. package/skills/shared/planning-with-files/scripts/resolve-plan-dir.ps1 +44 -0
  921. package/skills/shared/planning-with-files/scripts/resolve-plan-dir.sh +76 -0
  922. package/skills/shared/planning-with-files/scripts/session-catchup.py +438 -0
  923. package/skills/shared/planning-with-files/scripts/set-active-plan.ps1 +50 -0
  924. package/skills/shared/planning-with-files/scripts/set-active-plan.sh +50 -0
  925. package/skills/shared/planning-with-files/templates/findings.md +95 -0
  926. package/skills/shared/planning-with-files/templates/progress.md +114 -0
  927. package/skills/shared/planning-with-files/templates/task_plan.md +132 -0
  928. package/skills/shared/postgresdb/SKILL.md +354 -0
  929. package/skills/shared/postgresdb/evals/README.md +55 -0
  930. package/skills/shared/postgresdb/evals/cases.yaml +57 -0
  931. package/skills/shared/postgresdb/references/migrations.md +279 -0
  932. package/skills/shared/postgresdb/references/operations-and-security.md +267 -0
  933. package/skills/shared/postgresdb/references/query-optimization.md +374 -0
  934. package/skills/shared/postgresdb/references/schema-and-indexing.md +379 -0
  935. package/skills/shared/postgresdb/scripts/verify.sh +191 -0
  936. package/skills/shared/prisma-orm/SKILL.md +313 -0
  937. package/skills/shared/prisma-orm/evals/README.md +12 -0
  938. package/skills/shared/prisma-orm/evals/cases.yaml +56 -0
  939. package/skills/shared/prisma-orm/references/migrations-and-v7-upgrade.md +197 -0
  940. package/skills/shared/prisma-orm/references/queries-and-performance.md +169 -0
  941. package/skills/shared/prisma-orm/scripts/verify.sh +137 -0
  942. package/skills/shared/prompt-engineering/SKILL.md +127 -0
  943. package/skills/shared/prompt-engineering/evals/README.md +11 -0
  944. package/skills/shared/prompt-engineering/evals/cases.yaml +46 -0
  945. package/skills/shared/prompt-engineering/references/eval-templates.md +94 -0
  946. package/skills/shared/prompt-engineering/references/output-contracts.md +120 -0
  947. package/skills/shared/prompt-engineering/scripts/verify.sh +84 -0
  948. package/skills/shared/python/SKILL.md +320 -0
  949. package/skills/shared/python/evals/README.md +19 -0
  950. package/skills/shared/python/evals/cases.yaml +46 -0
  951. package/skills/shared/python/references/async.md +136 -0
  952. package/skills/shared/python/references/stdlib.md +162 -0
  953. package/skills/shared/python/references/typing.md +160 -0
  954. package/skills/shared/python/scripts/verify.sh +125 -0
  955. package/skills/shared/rag/SKILL.md +209 -0
  956. package/skills/shared/rag/evals/README.md +13 -0
  957. package/skills/shared/rag/evals/cases.yaml +45 -0
  958. package/skills/shared/rag/references/evaluation.md +99 -0
  959. package/skills/shared/rag/references/pipeline.md +151 -0
  960. package/skills/shared/rag/scripts/verify.sh +99 -0
  961. package/skills/shared/rails/SKILL.md +264 -0
  962. package/skills/shared/rails/evals/README.md +12 -0
  963. package/skills/shared/rails/evals/cases.yaml +47 -0
  964. package/skills/shared/rails/references/activerecord.md +148 -0
  965. package/skills/shared/rails/references/hotwire.md +139 -0
  966. package/skills/shared/rails/references/testing.md +110 -0
  967. package/skills/shared/rails/scripts/verify.sh +128 -0
  968. package/skills/shared/railway/SKILL.md +245 -0
  969. package/skills/shared/railway/evals/README.md +14 -0
  970. package/skills/shared/railway/evals/cases.yaml +44 -0
  971. package/skills/shared/railway/references/cli-cookbook.md +137 -0
  972. package/skills/shared/railway/references/config-as-code.md +120 -0
  973. package/skills/shared/railway/scripts/verify.sh +162 -0
  974. package/skills/shared/react/SKILL.md +182 -0
  975. package/skills/shared/react/evals/README.md +3 -0
  976. package/skills/shared/react/evals/cases.yaml +43 -0
  977. package/skills/shared/react/references/data-and-state.md +152 -0
  978. package/skills/shared/react/references/performance.md +75 -0
  979. package/skills/shared/react/references/routing.md +99 -0
  980. package/skills/shared/react/scripts/verify.sh +123 -0
  981. package/skills/shared/react-native/SKILL.md +215 -0
  982. package/skills/shared/react-native/evals/README.md +3 -0
  983. package/skills/shared/react-native/evals/cases.yaml +42 -0
  984. package/skills/shared/react-native/references/native-modules.md +123 -0
  985. package/skills/shared/react-native/references/performance-debugging.md +46 -0
  986. package/skills/shared/react-native/scripts/verify.sh +120 -0
  987. package/skills/shared/redis/SKILL.md +298 -0
  988. package/skills/shared/redis/evals/README.md +10 -0
  989. package/skills/shared/redis/evals/cases.yaml +43 -0
  990. package/skills/shared/redis/references/caching.md +116 -0
  991. package/skills/shared/redis/references/locks-and-rate-limiting.md +140 -0
  992. package/skills/shared/redis/references/queues.md +102 -0
  993. package/skills/shared/redis/scripts/verify.sh +164 -0
  994. package/skills/shared/render/SKILL.md +256 -0
  995. package/skills/shared/render/evals/README.md +12 -0
  996. package/skills/shared/render/evals/cases.yaml +45 -0
  997. package/skills/shared/render/references/blueprint-reference.md +203 -0
  998. package/skills/shared/render/scripts/verify.sh +167 -0
  999. package/skills/shared/replicate/SKILL.md +210 -0
  1000. package/skills/shared/replicate/evals/README.md +9 -0
  1001. package/skills/shared/replicate/evals/cases.yaml +45 -0
  1002. package/skills/shared/replicate/references/cog-packaging.md +89 -0
  1003. package/skills/shared/replicate/references/deployments-api.md +87 -0
  1004. package/skills/shared/replicate/references/webhooks-and-async.md +110 -0
  1005. package/skills/shared/replicate/scripts/verify.sh +162 -0
  1006. package/skills/shared/research-ops/SKILL.md +200 -0
  1007. package/skills/shared/research-ops/evals/README.md +13 -0
  1008. package/skills/shared/research-ops/evals/cases.yaml +38 -0
  1009. package/skills/shared/research-ops/references/credibility-rubric.md +78 -0
  1010. package/skills/shared/research-ops/references/memo-template.md +63 -0
  1011. package/skills/shared/research-ops/scripts/verify.sh +181 -0
  1012. package/skills/shared/review/SKILL.md +314 -0
  1013. package/skills/shared/review/evals/README.md +84 -0
  1014. package/skills/shared/review/evals/cases.yaml +55 -0
  1015. package/skills/shared/ruby/SKILL.md +295 -0
  1016. package/skills/shared/ruby/evals/README.md +12 -0
  1017. package/skills/shared/ruby/evals/cases.yaml +41 -0
  1018. package/skills/shared/ruby/references/gems-and-testing.md +208 -0
  1019. package/skills/shared/ruby/references/metaprogramming.md +161 -0
  1020. package/skills/shared/ruby/scripts/verify.sh +83 -0
  1021. package/skills/shared/runpod/SKILL.md +238 -0
  1022. package/skills/shared/runpod/evals/README.md +11 -0
  1023. package/skills/shared/runpod/evals/cases.yaml +47 -0
  1024. package/skills/shared/runpod/references/cost-and-scaling.md +85 -0
  1025. package/skills/shared/runpod/references/serverless-workers.md +101 -0
  1026. package/skills/shared/runpod/scripts/verify.sh +126 -0
  1027. package/skills/shared/rust/SKILL.md +320 -0
  1028. package/skills/shared/rust/evals/README.md +12 -0
  1029. package/skills/shared/rust/evals/cases.yaml +42 -0
  1030. package/skills/shared/rust/references/async-tokio.md +141 -0
  1031. package/skills/shared/rust/references/axum-service.md +132 -0
  1032. package/skills/shared/rust/references/ownership.md +86 -0
  1033. package/skills/shared/rust/references/testing.md +108 -0
  1034. package/skills/shared/rust/scripts/verify.sh +91 -0
  1035. package/skills/shared/scaling/SKILL.md +137 -0
  1036. package/skills/shared/scaling/evals/README.md +3 -0
  1037. package/skills/shared/scaling/evals/cases.yaml +42 -0
  1038. package/skills/shared/scaling/references/load-testing-k6.md +127 -0
  1039. package/skills/shared/scaling/scripts/example.load.js +24 -0
  1040. package/skills/shared/scaling/scripts/verify.sh +70 -0
  1041. package/skills/shared/sdd/SKILL.md +250 -0
  1042. package/skills/shared/sdd/evals/README.md +60 -0
  1043. package/skills/shared/sdd/evals/cases.yaml +90 -0
  1044. package/skills/shared/sdd/references/model-routing.md +194 -0
  1045. package/skills/shared/sdd-init/SKILL.md +189 -0
  1046. package/skills/shared/sdd-init/evals/README.md +3 -0
  1047. package/skills/shared/sdd-init/evals/cases.yaml +43 -0
  1048. package/skills/shared/secure-coding/SKILL.md +336 -0
  1049. package/skills/shared/secure-coding/evals/README.md +68 -0
  1050. package/skills/shared/secure-coding/evals/cases.yaml +55 -0
  1051. package/skills/shared/secure-coding/references/authn-authz.md +249 -0
  1052. package/skills/shared/secure-coding/references/owasp-by-stack.md +574 -0
  1053. package/skills/shared/secure-coding/references/secrets-and-supply-chain.md +205 -0
  1054. package/skills/shared/secure-coding/references/threat-modeling.md +213 -0
  1055. package/skills/shared/secure-coding/scripts/verify.sh +208 -0
  1056. package/skills/shared/security-scan/SKILL.md +219 -0
  1057. package/skills/shared/security-scan/evals/README.md +14 -0
  1058. package/skills/shared/security-scan/evals/cases.yaml +50 -0
  1059. package/skills/shared/security-scan/references/tools.md +97 -0
  1060. package/skills/shared/security-scan/references/triage.md +92 -0
  1061. package/skills/shared/security-scan/scripts/verify.sh +108 -0
  1062. package/skills/shared/ship/SKILL.md +272 -0
  1063. package/skills/shared/ship/evals/README.md +89 -0
  1064. package/skills/shared/ship/evals/cases.yaml +44 -0
  1065. package/skills/shared/shopify/SKILL.md +229 -0
  1066. package/skills/shared/shopify/evals/README.md +14 -0
  1067. package/skills/shared/shopify/evals/cases.yaml +41 -0
  1068. package/skills/shared/shopify/references/apps-graphql.md +103 -0
  1069. package/skills/shared/shopify/references/checkout-extensibility.md +71 -0
  1070. package/skills/shared/shopify/references/liquid-themes.md +89 -0
  1071. package/skills/shared/shopify/scripts/verify.sh +120 -0
  1072. package/skills/shared/simplify-code/SKILL.md +101 -0
  1073. package/skills/shared/simplify-code/evals/README.md +3 -0
  1074. package/skills/shared/simplify-code/evals/cases.yaml +42 -0
  1075. package/skills/shared/skill-scout/SKILL.md +169 -0
  1076. package/skills/shared/skill-scout/evals/README.md +12 -0
  1077. package/skills/shared/skill-scout/evals/cases.yaml +56 -0
  1078. package/skills/shared/skill-scout/references/install-commands.md +76 -0
  1079. package/skills/shared/skill-scout/scripts/verify.sh +154 -0
  1080. package/skills/shared/solid-js/SKILL.md +260 -0
  1081. package/skills/shared/solid-js/evals/README.md +3 -0
  1082. package/skills/shared/solid-js/evals/cases.yaml +38 -0
  1083. package/skills/shared/solid-js/references/reactivity-deep-dive.md +89 -0
  1084. package/skills/shared/solid-js/references/router-and-start.md +93 -0
  1085. package/skills/shared/solid-js/scripts/verify.sh +130 -0
  1086. package/skills/shared/source-grounded-development/SKILL.md +108 -0
  1087. package/skills/shared/source-grounded-development/evals/README.md +3 -0
  1088. package/skills/shared/source-grounded-development/evals/cases.yaml +42 -0
  1089. package/skills/shared/specify/SKILL.md +391 -0
  1090. package/skills/shared/specify/evals/README.md +73 -0
  1091. package/skills/shared/specify/evals/cases.yaml +93 -0
  1092. package/skills/shared/specify/references/eliciting-requirements.md +117 -0
  1093. package/skills/shared/specify/references/spec-template.md +101 -0
  1094. package/skills/shared/speckit-analyze/SKILL.md +35 -0
  1095. package/skills/shared/speckit-assess-decide/SKILL.md +36 -0
  1096. package/skills/shared/speckit-assess-define/SKILL.md +36 -0
  1097. package/skills/shared/speckit-assess-intake/SKILL.md +38 -0
  1098. package/skills/shared/speckit-assess-research/SKILL.md +36 -0
  1099. package/skills/shared/speckit-assess-shape/SKILL.md +36 -0
  1100. package/skills/shared/speckit-bug-assess/SKILL.md +38 -0
  1101. package/skills/shared/speckit-bug-fix/SKILL.md +37 -0
  1102. package/skills/shared/speckit-bug-test/SKILL.md +37 -0
  1103. package/skills/shared/speckit-checklist/SKILL.md +35 -0
  1104. package/skills/shared/speckit-clarify/SKILL.md +32 -0
  1105. package/skills/shared/speckit-constitution/SKILL.md +35 -0
  1106. package/skills/shared/speckit-converge/SKILL.md +36 -0
  1107. package/skills/shared/speckit-implement/SKILL.md +32 -0
  1108. package/skills/shared/speckit-plan/SKILL.md +37 -0
  1109. package/skills/shared/speckit-specify/SKILL.md +36 -0
  1110. package/skills/shared/speckit-tasks/SKILL.md +34 -0
  1111. package/skills/shared/spreadsheet-ops/SKILL.md +180 -0
  1112. package/skills/shared/spreadsheet-ops/evals/README.md +33 -0
  1113. package/skills/shared/spreadsheet-ops/evals/cases.yaml +42 -0
  1114. package/skills/shared/spreadsheet-ops/references/formula-cookbook.md +70 -0
  1115. package/skills/shared/spreadsheet-ops/references/python-excel.md +87 -0
  1116. package/skills/shared/spreadsheet-ops/references/sheets-api-appsscript.md +118 -0
  1117. package/skills/shared/spreadsheet-ops/scripts/verify.sh +152 -0
  1118. package/skills/shared/spring-boot/SKILL.md +350 -0
  1119. package/skills/shared/spring-boot/evals/README.md +11 -0
  1120. package/skills/shared/spring-boot/evals/cases.yaml +49 -0
  1121. package/skills/shared/spring-boot/references/jpa.md +94 -0
  1122. package/skills/shared/spring-boot/references/security.md +92 -0
  1123. package/skills/shared/spring-boot/references/testing.md +95 -0
  1124. package/skills/shared/spring-boot/scripts/verify.sh +115 -0
  1125. package/skills/shared/sql/SKILL.md +286 -0
  1126. package/skills/shared/sql/evals/README.md +9 -0
  1127. package/skills/shared/sql/evals/cases.yaml +49 -0
  1128. package/skills/shared/sql/references/ctes-and-recursion.md +63 -0
  1129. package/skills/shared/sql/references/joins-and-sets.md +71 -0
  1130. package/skills/shared/sql/references/portability.md +38 -0
  1131. package/skills/shared/sql/references/window-functions.md +72 -0
  1132. package/skills/shared/sql/scripts/verify.sh +139 -0
  1133. package/skills/shared/sqlite-turso/SKILL.md +214 -0
  1134. package/skills/shared/sqlite-turso/evals/README.md +24 -0
  1135. package/skills/shared/sqlite-turso/evals/cases.yaml +45 -0
  1136. package/skills/shared/sqlite-turso/references/embedded-replicas.md +96 -0
  1137. package/skills/shared/sqlite-turso/scripts/verify.sh +95 -0
  1138. package/skills/shared/structured-extraction/SKILL.md +230 -0
  1139. package/skills/shared/structured-extraction/evals/README.md +13 -0
  1140. package/skills/shared/structured-extraction/evals/cases.yaml +70 -0
  1141. package/skills/shared/structured-extraction/references/providers.md +152 -0
  1142. package/skills/shared/structured-extraction/scripts/verify.sh +160 -0
  1143. package/skills/shared/suggest/SKILL.md +123 -0
  1144. package/skills/shared/suggest/evals/README.md +17 -0
  1145. package/skills/shared/suggest/evals/cases.yaml +78 -0
  1146. package/skills/shared/supabase/SKILL.md +268 -0
  1147. package/skills/shared/supabase/evals/README.md +12 -0
  1148. package/skills/shared/supabase/evals/cases.yaml +42 -0
  1149. package/skills/shared/supabase/references/auth-ssr.md +173 -0
  1150. package/skills/shared/supabase/references/rls-cookbook.md +122 -0
  1151. package/skills/shared/supabase/scripts/verify.sh +149 -0
  1152. package/skills/shared/svelte/SKILL.md +238 -0
  1153. package/skills/shared/svelte/evals/README.md +3 -0
  1154. package/skills/shared/svelte/evals/cases.yaml +41 -0
  1155. package/skills/shared/svelte/references/runes.md +97 -0
  1156. package/skills/shared/svelte/references/sveltekit-data.md +156 -0
  1157. package/skills/shared/svelte/scripts/verify.sh +128 -0
  1158. package/skills/shared/swift-ios/SKILL.md +224 -0
  1159. package/skills/shared/swift-ios/evals/README.md +3 -0
  1160. package/skills/shared/swift-ios/evals/cases.yaml +46 -0
  1161. package/skills/shared/swift-ios/references/concurrency.md +132 -0
  1162. package/skills/shared/swift-ios/references/testing.md +112 -0
  1163. package/skills/shared/swift-ios/scripts/verify.sh +98 -0
  1164. package/skills/shared/tasks/SKILL.md +265 -0
  1165. package/skills/shared/tasks/evals/README.md +70 -0
  1166. package/skills/shared/tasks/evals/cases.yaml +75 -0
  1167. package/skills/shared/tauri/SKILL.md +219 -0
  1168. package/skills/shared/tauri/evals/README.md +12 -0
  1169. package/skills/shared/tauri/evals/cases.yaml +46 -0
  1170. package/skills/shared/tauri/references/bundling-distribution.md +129 -0
  1171. package/skills/shared/tauri/references/security.md +143 -0
  1172. package/skills/shared/tauri/scripts/verify.sh +178 -0
  1173. package/skills/shared/technical-writing/SKILL.md +230 -0
  1174. package/skills/shared/technical-writing/evals/README.md +12 -0
  1175. package/skills/shared/technical-writing/evals/cases.yaml +53 -0
  1176. package/skills/shared/technical-writing/references/diataxis-modes.md +131 -0
  1177. package/skills/shared/technical-writing/references/vale-starter.md +90 -0
  1178. package/skills/shared/technical-writing/scripts/verify.sh +83 -0
  1179. package/skills/shared/testing-go/SKILL.md +263 -0
  1180. package/skills/shared/testing-go/evals/README.md +3 -0
  1181. package/skills/shared/testing-go/evals/cases.yaml +46 -0
  1182. package/skills/shared/testing-go/references/coverage-and-benchmarks.md +85 -0
  1183. package/skills/shared/testing-go/references/mocks-and-fakes.md +140 -0
  1184. package/skills/shared/testing-go/references/synctest-and-concurrency.md +82 -0
  1185. package/skills/shared/testing-go/scripts/verify.sh +72 -0
  1186. package/skills/shared/testing-py/SKILL.md +197 -0
  1187. package/skills/shared/testing-py/evals/README.md +5 -0
  1188. package/skills/shared/testing-py/evals/cases.yaml +44 -0
  1189. package/skills/shared/testing-py/references/mocking.md +141 -0
  1190. package/skills/shared/testing-py/references/property-testing.md +99 -0
  1191. package/skills/shared/testing-py/scripts/verify.sh +117 -0
  1192. package/skills/shared/testing-web/SKILL.md +244 -0
  1193. package/skills/shared/testing-web/evals/README.md +11 -0
  1194. package/skills/shared/testing-web/evals/cases.yaml +52 -0
  1195. package/skills/shared/testing-web/references/jest-setup.md +88 -0
  1196. package/skills/shared/testing-web/references/recipes.md +116 -0
  1197. package/skills/shared/testing-web/scripts/verify.sh +111 -0
  1198. package/skills/shared/together-fireworks/SKILL.md +176 -0
  1199. package/skills/shared/together-fireworks/evals/README.md +3 -0
  1200. package/skills/shared/together-fireworks/evals/cases.yaml +50 -0
  1201. package/skills/shared/together-fireworks/references/batch-and-tuning.md +59 -0
  1202. package/skills/shared/together-fireworks/references/models-and-pricing.md +79 -0
  1203. package/skills/shared/together-fireworks/scripts/verify.sh +165 -0
  1204. package/skills/shared/training-data/SKILL.md +226 -0
  1205. package/skills/shared/training-data/evals/README.md +13 -0
  1206. package/skills/shared/training-data/evals/cases.yaml +41 -0
  1207. package/skills/shared/training-data/references/formats.md +118 -0
  1208. package/skills/shared/training-data/references/synthesis-dedup-quality.md +134 -0
  1209. package/skills/shared/translation-l10n/SKILL.md +229 -0
  1210. package/skills/shared/translation-l10n/evals/README.md +3 -0
  1211. package/skills/shared/translation-l10n/evals/cases.yaml +39 -0
  1212. package/skills/shared/translation-l10n/references/icu-cookbook.md +82 -0
  1213. package/skills/shared/translation-l10n/references/rtl-and-bidi.md +60 -0
  1214. package/skills/shared/typescript/SKILL.md +225 -0
  1215. package/skills/shared/typescript/evals/README.md +15 -0
  1216. package/skills/shared/typescript/evals/cases.yaml +46 -0
  1217. package/skills/shared/typescript/references/build-and-monorepo.md +141 -0
  1218. package/skills/shared/typescript/references/type-system.md +162 -0
  1219. package/skills/shared/typescript/scripts/verify.sh +52 -0
  1220. package/skills/shared/ui-engineering/SKILL.md +113 -0
  1221. package/skills/shared/ui-engineering/evals/cases.yaml +38 -0
  1222. package/skills/shared/unity/SKILL.md +282 -0
  1223. package/skills/shared/unity/evals/README.md +8 -0
  1224. package/skills/shared/unity/evals/cases.yaml +43 -0
  1225. package/skills/shared/unity/references/build-and-platforms.md +65 -0
  1226. package/skills/shared/unity/references/input-system.md +102 -0
  1227. package/skills/shared/unity/references/lifecycle-deep-dive.md +75 -0
  1228. package/skills/shared/unreal/SKILL.md +270 -0
  1229. package/skills/shared/unreal/evals/README.md +12 -0
  1230. package/skills/shared/unreal/evals/cases.yaml +45 -0
  1231. package/skills/shared/unreal/references/blueprint-cpp-parity.md +109 -0
  1232. package/skills/shared/unreal/references/gameplay-framework.md +95 -0
  1233. package/skills/shared/unreal/references/packaging.md +83 -0
  1234. package/skills/shared/unslop/SKILL.md +143 -0
  1235. package/skills/shared/unslop/evals/README.md +25 -0
  1236. package/skills/shared/unslop/evals/cases.yaml +61 -0
  1237. package/skills/shared/unsloth/SKILL.md +254 -0
  1238. package/skills/shared/unsloth/evals/README.md +10 -0
  1239. package/skills/shared/unsloth/evals/cases.yaml +42 -0
  1240. package/skills/shared/unsloth/references/export.md +75 -0
  1241. package/skills/shared/unsloth/references/grpo.md +91 -0
  1242. package/skills/shared/unsloth/references/masking-and-templates.md +91 -0
  1243. package/skills/shared/variant-explorer/SKILL.md +93 -0
  1244. package/skills/shared/variant-explorer/evals/cases.yaml +38 -0
  1245. package/skills/shared/vector-db/SKILL.md +189 -0
  1246. package/skills/shared/vector-db/evals/README.md +10 -0
  1247. package/skills/shared/vector-db/evals/cases.yaml +45 -0
  1248. package/skills/shared/vector-db/references/engines.md +175 -0
  1249. package/skills/shared/vector-db/references/tuning.md +62 -0
  1250. package/skills/shared/vector-db/scripts/verify.sh +110 -0
  1251. package/skills/shared/vercel/SKILL.md +242 -0
  1252. package/skills/shared/vercel/evals/README.md +23 -0
  1253. package/skills/shared/vercel/evals/cases.yaml +45 -0
  1254. package/skills/shared/vercel/references/cli-cookbook.md +98 -0
  1255. package/skills/shared/vercel/references/vercel-json.md +120 -0
  1256. package/skills/shared/vercel/scripts/verify.sh +168 -0
  1257. package/skills/shared/verify/SKILL.md +230 -0
  1258. package/skills/shared/verify/evals/README.md +78 -0
  1259. package/skills/shared/verify/evals/cases.yaml +104 -0
  1260. package/skills/shared/vllm/SKILL.md +235 -0
  1261. package/skills/shared/vllm/evals/README.md +9 -0
  1262. package/skills/shared/vllm/evals/cases.yaml +47 -0
  1263. package/skills/shared/vllm/references/flags-and-endpoints.md +105 -0
  1264. package/skills/shared/vllm/references/memory-and-throughput.md +78 -0
  1265. package/skills/shared/vue-nuxt/SKILL.md +323 -0
  1266. package/skills/shared/vue-nuxt/evals/README.md +11 -0
  1267. package/skills/shared/vue-nuxt/evals/cases.yaml +49 -0
  1268. package/skills/shared/vue-nuxt/references/data-and-state.md +127 -0
  1269. package/skills/shared/vue-nuxt/references/migration-nuxt4.md +79 -0
  1270. package/skills/shared/vue-nuxt/references/nitro-and-rendering.md +117 -0
  1271. package/skills/shared/vue-nuxt/references/reactivity.md +135 -0
  1272. package/skills/shared/vue-nuxt/scripts/verify.sh +148 -0
  1273. package/skills/shared/webhooks/SKILL.md +229 -0
  1274. package/skills/shared/webhooks/evals/README.md +15 -0
  1275. package/skills/shared/webhooks/evals/cases.yaml +46 -0
  1276. package/skills/shared/webhooks/references/framework-raw-body.md +97 -0
  1277. package/skills/shared/webhooks/references/signature-schemes.md +66 -0
  1278. package/skills/shared/webhooks/scripts/verify.sh +142 -0
  1279. package/skills/shared/wordpress/SKILL.md +224 -0
  1280. package/skills/shared/wordpress/evals/README.md +3 -0
  1281. package/skills/shared/wordpress/evals/cases.yaml +50 -0
  1282. package/skills/shared/wordpress/references/hardening.md +108 -0
  1283. package/skills/shared/wordpress/references/performance.md +80 -0
  1284. package/skills/shared/wordpress/references/woocommerce.md +65 -0
  1285. package/skills/shared/wordpress/scripts/verify.sh +96 -0
  1286. package/skills/shared/worktrees/SKILL.md +204 -0
  1287. package/skills/shared/worktrees/evals/README.md +78 -0
  1288. package/skills/shared/worktrees/evals/cases.yaml +47 -0
@@ -0,0 +1,118 @@
1
+ # Drizzle: driver matrix & v1↔v2 relations migration
2
+
3
+ Offloaded depth for `../SKILL.md`. Facts current as of 2026-06-02: npm `latest` is
4
+ `drizzle-orm@0.45.2` (0.45 line `latest` since 2025-12-04), and the `rc` dist-tag is
5
+ `1.0.0-rc.3` (2026-05-18).
6
+
7
+ ## Driver entrypoint matrix
8
+
9
+ `drizzle()` is imported from a driver-specific path and wraps that driver's own client. Match the
10
+ import to your database and host runtime.
11
+
12
+ | Database / host | Import | Client dep | Notes |
13
+ |---|---|---|---|
14
+ | Postgres (Node, pooled) | `drizzle-orm/node-postgres` | `pg` | `new Pool(...)`; classic Node server |
15
+ | Postgres (postgres-js) | `drizzle-orm/postgres-js` | `postgres` | fast; fine for Node and long-lived workers |
16
+ | Neon (HTTP, edge) | `drizzle-orm/neon-http` | `@neondatabase/serverless` | HTTP — no TCP; ideal for edge/serverless. Platform setup → `../neon/SKILL.md` |
17
+ | Neon (WebSocket) | `drizzle-orm/neon-serverless` | `@neondatabase/serverless` | supports transactions over WS |
18
+ | Turso / libSQL | `drizzle-orm/libsql` | `@libsql/client` | SQLite-compatible; edge. Platform → `../sqlite-turso/SKILL.md` |
19
+ | PlanetScale | `drizzle-orm/planetscale-serverless` | `@planetscale/database` | MySQL over HTTP; serverless. Platform → `../planetscale/SKILL.md` |
20
+ | MySQL (Node) | `drizzle-orm/mysql2` | `mysql2` | standard MySQL server |
21
+ | SQLite (Node native) | `drizzle-orm/better-sqlite3` | `better-sqlite3` | synchronous local SQLite |
22
+ | SQLite (Bun) | `drizzle-orm/bun-sqlite` | built into Bun | Bun runtime only |
23
+ | SQLite (`node:sqlite`) | `drizzle-orm/node-sqlite` | Node ≥ built-in | auto-detected by recent drizzle-kit for migrate + Studio |
24
+
25
+ Supabase: it is Postgres — connect with `postgres-js` or `node-postgres` against the Supabase
26
+ connection string. Platform/auth specifics → `../supabase/SKILL.md`.
27
+
28
+ ### Edge / serverless caveats
29
+
30
+ - Edge runtimes (Vercel Edge, Cloudflare Workers) have no TCP sockets — use HTTP drivers
31
+ (`neon-http`, `planetscale-serverless`, libSQL HTTP).
32
+ - HTTP drivers run each statement as a separate request; multi-statement interactive transactions
33
+ need a WebSocket driver (`neon-serverless`) or a pooled TCP connection.
34
+ - Create the client at module scope and reuse it; do not open a new client per request in a
35
+ long-lived process.
36
+
37
+ ### Connect shapes
38
+
39
+ ```ts
40
+ // node-postgres
41
+ import { drizzle } from 'drizzle-orm/node-postgres';
42
+ import { Pool } from 'pg';
43
+ export const db = drizzle(new Pool({ connectionString: process.env.DATABASE_URL }), { schema });
44
+
45
+ // neon-http (edge)
46
+ import { drizzle } from 'drizzle-orm/neon-http';
47
+ import { neon } from '@neondatabase/serverless';
48
+ export const db = drizzle(neon(process.env.DATABASE_URL!), { schema });
49
+
50
+ // libsql / Turso
51
+ import { drizzle } from 'drizzle-orm/libsql';
52
+ import { createClient } from '@libsql/client';
53
+ export const db = drizzle(createClient({ url: process.env.TURSO_URL!, authToken: process.env.TURSO_TOKEN }), { schema });
54
+ ```
55
+
56
+ ## Relations v1 vs v2
57
+
58
+ ### 0.45 / v1-compat — `relations()`
59
+
60
+ Define relations next to the tables, pass the whole module as `{ schema }`.
61
+
62
+ ```ts
63
+ import { relations } from 'drizzle-orm';
64
+
65
+ export const usersRelations = relations(users, ({ many }) => ({
66
+ posts: many(posts),
67
+ }));
68
+ export const postsRelations = relations(posts, ({ one }) => ({
69
+ author: one(users, { fields: [posts.authorId], references: [users.id] }),
70
+ }));
71
+ ```
72
+
73
+ ```ts
74
+ import * as schema from './schema';
75
+ export const db = drizzle(client, { schema });
76
+
77
+ const data = await db.query.users.findMany({ with: { posts: true } });
78
+ ```
79
+
80
+ ### v1.0 beta — `defineRelations()`
81
+
82
+ One call describes every relation; pass the result as `{ relations }`.
83
+
84
+ ```ts
85
+ import { defineRelations } from 'drizzle-orm';
86
+ import * as schema from './schema';
87
+
88
+ export const relations = defineRelations(schema, (r) => ({
89
+ users: { posts: r.many.posts() },
90
+ posts: { author: r.one.users({ from: r.posts.authorId, to: r.users.id }) },
91
+ }));
92
+ ```
93
+
94
+ ```ts
95
+ export const db = drizzle(client, { relations });
96
+
97
+ // db.query is RQBv2
98
+ const data = await db.query.users.findMany({ with: { posts: true } });
99
+
100
+ // db._query keeps the v1 syntax for back-compat during migration
101
+ const legacy = await db._query.users.findMany({ with: { posts: true } });
102
+ ```
103
+
104
+ ### Migration walkthrough (v1 → v2)
105
+
106
+ 1. Upgrade `drizzle-orm` to `1.0.0-beta.x` and `drizzle-kit` to the matching beta.
107
+ 2. Keep tables in `schema.ts` unchanged — only the relation declarations move.
108
+ 3. Replace each `relations(table, ...)` block with one entry in a single `defineRelations(schema, ...)`.
109
+ 4. Swap `drizzle(client, { schema })` → `drizzle(client, { relations })`.
110
+ 5. New code calls `db.query`; existing v1 relational calls can stay on `db._query` until ported.
111
+ 6. Do not leave both `relations()` and `defineRelations` active for the same tables — pick one.
112
+
113
+ ## Decision: relational query vs manual join
114
+
115
+ - **Relational query (`db.query` + `with`)** → nested reads: a user with their posts as a tree. The
116
+ builder returns shaped objects.
117
+ - **Manual `.leftJoin()` / `.innerJoin()`** → flat projections, aggregates, `GROUP BY`, or when you
118
+ need exact control over the emitted SQL. Returns rows, not trees; you assemble the shape.
@@ -0,0 +1,155 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # verify.sh — drizzle-orm skill gate. Static lint of Drizzle TS source. NO DB connection.
5
+ #
6
+ # Usage:
7
+ # scripts/verify.sh [files...] # lint the given .ts files
8
+ # scripts/verify.sh # discover *.ts under cwd (excludes vendor dirs)
9
+ #
10
+ # What it does (read-only, idempotent, never writes):
11
+ # 1. Finds a drizzle.config.ts (given or discovered) and checks it carries dialect/schema/out.
12
+ # 2. Reads the configured `dialect` and checks any table helper (pgTable/mysqlTable/sqliteTable)
13
+ # in the scanned files matches it.
14
+ # 3. Checks a drizzle() call exists somewhere; and if db.query is used, that drizzle() is passed
15
+ # { schema } or { relations } (else db.query is undefined at runtime).
16
+ # 4. Bans Prisma-isms (schema.prisma, PrismaClient, prisma generate) that mean the wrong ORM leaked in.
17
+ #
18
+ # Exit code: non-zero ONLY on a real failure. An empty/clean target (no Drizzle files found) is a
19
+ # clean pass, not a failure. Missing optional context (e.g. no config) is a [skip], not a [fail].
20
+ #
21
+ # Portability: stock macOS bash 3.2 (no mapfile, no associative arrays). Arrays initialised so
22
+ # expansion is safe under `set -u`.
23
+
24
+ YELLOW=$'\033[33m'; GREEN=$'\033[32m'; RED=$'\033[31m'; NC=$'\033[0m'
25
+ EXIT=0
26
+ warn() { printf '%s[skip]%s %s\n' "$YELLOW" "$NC" "$*"; }
27
+ note() { printf '%s[warn]%s %s\n' "$YELLOW" "$NC" "$*"; }
28
+ ok() { printf '%s[ok]%s %s\n' "$GREEN" "$NC" "$*"; }
29
+ err() { printf '%s[fail]%s %s\n' "$RED" "$NC" "$*"; EXIT=1; }
30
+
31
+ ROOT="$(pwd)"
32
+
33
+ # ---- collect target files ----
34
+ FILES=()
35
+ if [ "$#" -gt 0 ]; then
36
+ for f in "$@"; do
37
+ if [ -f "$f" ]; then FILES+=("$f"); else err "no such file: $f"; fi
38
+ done
39
+ else
40
+ while IFS= read -r -d '' f; do
41
+ FILES+=("$f")
42
+ done < <(
43
+ find "$ROOT" \
44
+ \( -path '*/node_modules/*' -o -path '*/.git/*' -o -path '*/dist/*' -o -path '*/.next/*' \) -prune -o \
45
+ -type f -name '*.ts' -print0 2>/dev/null
46
+ )
47
+ fi
48
+
49
+ # Filter to files that actually look like Drizzle source (import from drizzle-orm/-kit, or a config).
50
+ DRIZ_FILES=()
51
+ for f in "${FILES[@]:-}"; do
52
+ [ -z "$f" ] && continue
53
+ if grep -Eq "drizzle-orm|drizzle-kit|drizzle\(|defineConfig" "$f" 2>/dev/null; then
54
+ DRIZ_FILES+=("$f")
55
+ fi
56
+ done
57
+
58
+ if [ "${#DRIZ_FILES[@]}" -eq 0 ]; then
59
+ ok "no Drizzle source found — nothing to verify (clean)"
60
+ exit 0
61
+ fi
62
+
63
+ # ---- locate a config among the targets, else discover one ----
64
+ CONFIG=""
65
+ for f in "${DRIZ_FILES[@]}"; do
66
+ case "$f" in *drizzle.config.ts) CONFIG="$f"; break;; esac
67
+ done
68
+ if [ -z "$CONFIG" ] && [ -f "$ROOT/drizzle.config.ts" ]; then
69
+ CONFIG="$ROOT/drizzle.config.ts"
70
+ fi
71
+
72
+ # ---- 1. config keys ----
73
+ DIALECT=""
74
+ if [ -n "$CONFIG" ]; then
75
+ miss=""
76
+ grep -Eq "\bdialect\b" "$CONFIG" || miss="$miss dialect"
77
+ grep -Eq "\bschema\b" "$CONFIG" || miss="$miss schema"
78
+ grep -Eq "\bout\b" "$CONFIG" || miss="$miss out"
79
+ if [ -n "$miss" ]; then
80
+ err "drizzle.config.ts missing key(s):$miss"
81
+ else
82
+ ok "drizzle.config.ts has dialect/schema/out"
83
+ fi
84
+ DIALECT="$(grep -Eo "dialect[[:space:]]*:[[:space:]]*['\"][a-z]+['\"]" "$CONFIG" \
85
+ | grep -Eo "['\"][a-z]+['\"]" | tr -d "\"'" | head -n1 || true)"
86
+ else
87
+ warn "no drizzle.config.ts found — skipping config + dialect-match checks"
88
+ fi
89
+
90
+ # ---- 2. table helper matches dialect ----
91
+ HELPERS="$(grep -hEo '\b(pgTable|mysqlTable|sqliteTable)\b' "${DRIZ_FILES[@]}" 2>/dev/null | sort -u | tr '\n' ' ' || true)"
92
+ if [ -n "$HELPERS" ]; then
93
+ if [ -n "$DIALECT" ]; then
94
+ case "$DIALECT" in
95
+ postgresql) want="pgTable";;
96
+ mysql) want="mysqlTable";;
97
+ sqlite|turso) want="sqliteTable";;
98
+ *) want="";;
99
+ esac
100
+ if [ -n "$want" ]; then
101
+ bad=""
102
+ for h in $HELPERS; do [ "$h" != "$want" ] && bad="$bad $h"; done
103
+ if [ -n "$bad" ]; then
104
+ err "dialect '$DIALECT' expects $want but found:$bad — table helper does not match config"
105
+ else
106
+ ok "table helper ($HELPERS) matches dialect '$DIALECT'"
107
+ fi
108
+ fi
109
+ else
110
+ note "table helper(s) found ($HELPERS) but no dialect to compare against"
111
+ fi
112
+ fi
113
+
114
+ # ---- 3. drizzle() present; db.query needs { schema } | { relations } ----
115
+ HAS_DRIZZLE=0
116
+ HAS_SCHEMA_OR_REL=0
117
+ HAS_DBQUERY=0
118
+ for f in "${DRIZ_FILES[@]}"; do
119
+ grep -Eq "\bdrizzle\(" "$f" && HAS_DRIZZLE=1
120
+ grep -Eq "drizzle\([^)]*\{[^}]*(schema|relations)" "$f" && HAS_SCHEMA_OR_REL=1
121
+ grep -Eq "\bdb\.query\b|\b_query\b" "$f" && HAS_DBQUERY=1
122
+ done
123
+
124
+ # Tolerate multi-line drizzle(...) calls: re-scan whole-file (newline-flattened) for the option.
125
+ if [ "$HAS_SCHEMA_OR_REL" -eq 0 ] && [ "$HAS_DRIZZLE" -eq 1 ]; then
126
+ for f in "${DRIZ_FILES[@]}"; do
127
+ if tr '\n' ' ' < "$f" | grep -Eq "drizzle\(.*\{[^}]*(schema|relations)"; then
128
+ HAS_SCHEMA_OR_REL=1; break
129
+ fi
130
+ done
131
+ fi
132
+
133
+ if [ "$HAS_DRIZZLE" -eq 1 ]; then
134
+ ok "drizzle() connection call present"
135
+ else
136
+ note "no drizzle() call in scanned files (schema-only file?)"
137
+ fi
138
+
139
+ if [ "$HAS_DBQUERY" -eq 1 ] && [ "$HAS_SCHEMA_OR_REL" -eq 0 ]; then
140
+ err "db.query used but drizzle() is not passed { schema } or { relations } — db.query will be undefined"
141
+ elif [ "$HAS_DBQUERY" -eq 1 ]; then
142
+ ok "db.query usage has { schema } | { relations } on drizzle()"
143
+ fi
144
+
145
+ # ---- 4. Prisma-ism banlist ----
146
+ for f in "${DRIZ_FILES[@]}"; do
147
+ if grep -Eq "schema\.prisma|PrismaClient|prisma[[:space:]]+generate" "$f"; then
148
+ err "$f: Prisma-ism found (schema.prisma/PrismaClient/prisma generate) — wrong ORM leaked in"
149
+ fi
150
+ done
151
+ [ "$EXIT" -eq 0 ] && ok "no Prisma-isms"
152
+
153
+ printf '\n'
154
+ if [ "$EXIT" -eq 0 ]; then ok "verify.sh passed"; else err "verify.sh found failures"; fi
155
+ exit "$EXIT"
@@ -0,0 +1,202 @@
1
+ ---
2
+ name: duckdb
3
+ description: "Use when analytical SQL must run in-process with no server: Parquet/CSV/JSON/Arrow queried in place, OLAP embedded in an app or notebook, a slow pandas groupby on multi-GB data, or S3/lakehouse data read without downloading. NOT a multi-user analytics server (that is clickhouse-analytics), NOT an app's transactional CRUD store (that is postgresdb)."
4
+ tags: [duckdb, olap, analytics, parquet, embedded-database, sql, columnar]
5
+ recommends: [clickhouse-analytics, postgresdb, sql, sqlite-turso, data-cleaning, business-intelligence]
6
+ origin: ai-hub
7
+ ---
8
+
9
+ # DuckDB — embedded columnar OLAP, no server
10
+
11
+ DuckDB is an in-process analytical (OLAP) database: it links into your process like SQLite, but stores
12
+ data column-by-column and vectorizes execution for aggregates, joins, and window functions. There is no
13
+ server, no port, no daemon — you `pip install duckdb` (or drop one CLI binary) and query. Its killer move
14
+ is reading Parquet/CSV/JSON/Arrow **in place**, without a load step, so a folder of files becomes a table.
15
+
16
+ The fact that drives every routing decision below: DuckDB is **one writer, many readers, single process**.
17
+ It is brilliant for analysis on one machine and wrong for multi-user serving or transactional app writes.
18
+
19
+ Latest stable is **v1.5.3** (released 2026-05-20). Pin the **LTS line (v1.4.x; v1.4.4 LTS shipped
20
+ 2026-01-26)** for anything long-lived — LTS gets ~1 year of patches and a stable storage format. Use 1.5.x
21
+ for greenfield exploration.
22
+
23
+ ## Is DuckDB the tool? (decide first)
24
+
25
+ | Your workload | Reach for |
26
+ | --- | --- |
27
+ | Analytics over local/remote files, one process, one writer | **duckdb** (this skill) |
28
+ | Many concurrent users, production query API, dashboards-as-a-service, petabyte scale | [`clickhouse-analytics`](../clickhouse-analytics/SKILL.md) |
29
+ | App transactional CRUD: users, orders, many small writes, FKs, connection pool | [`postgresdb`](../postgresdb/SKILL.md) |
30
+ | Embedded single-file **transactional** store / edge / sync | [`sqlite-turso`](../sqlite-turso/SKILL.md) |
31
+ | Pure SQL syntax question, engine-agnostic (window fns, CTEs) | [`sql`](../sql/SKILL.md) |
32
+ | Similarity / embedding search as the core workflow | [`vector-db`](../vector-db/SKILL.md) |
33
+
34
+ The two you will confuse most: DuckDB vs ClickHouse is **embedded-single-node vs server-distributed** —
35
+ under ~10GB on one box DuckDB usually wins; pick ClickHouse when many people query concurrently. DuckDB vs
36
+ SQLite is **same niche, opposite workload** — both embedded single-file, but SQLite is row-store OLTP and
37
+ DuckDB is column-store OLAP. Don't run your app's writes through DuckDB.
38
+
39
+ ## Install & version
40
+
41
+ ```bash
42
+ # Python (replacement-scan + relational API)
43
+ pip install 'duckdb==1.4.4' # LTS, for long-lived projects — stable storage format + patches
44
+ pip install duckdb # current stable, for greenfield exploration
45
+
46
+ # CLI (single static binary)
47
+ curl https://install.duckdb.org | sh # or: brew install duckdb
48
+ duckdb -version
49
+ ```
50
+
51
+ Why pin LTS for production: the on-disk `.duckdb` format and extension ABI are stable within an LTS line,
52
+ so a routine upgrade won't strand a persisted database or break an installed extension mid-project.
53
+
54
+ ## Query files directly — the killer feature
55
+
56
+ Do **not** load a file into pandas just to query it. Point DuckDB at the path and let it scan only the
57
+ columns and row groups it needs (Parquet metadata pushdown). A bare string path is a replacement scan, so
58
+ `FROM 'data/*.parquet'` works without naming a reader.
59
+
60
+ ```python
61
+ import duckdb
62
+
63
+ # BAD: read the whole file into RAM, then aggregate in pandas
64
+ import pandas as pd
65
+ df = pd.read_parquet("sales/") # pulls every column of every file into memory
66
+ out = df.groupby("region")["amount"].sum()
67
+
68
+ # GOOD: scan in place, only the two needed columns ever touch memory
69
+ out = duckdb.sql("""
70
+ FROM 'sales/*.parquet'
71
+ SELECT region, sum(amount) AS revenue
72
+ GROUP BY ALL
73
+ ORDER BY revenue DESC
74
+ """).df()
75
+ ```
76
+
77
+ Readers and globs you will actually use:
78
+
79
+ ```sql
80
+ SELECT * FROM read_parquet('s3://bkt/y=*/m=*/*.parquet', filename = true); -- glob + source col
81
+ SELECT * FROM read_csv_auto('events.csv'); -- sniff delimiter/types/header
82
+ SELECT * FROM read_csv('raw.csv', header = false, types = {'id': 'BIGINT'}); -- when sniffing is wrong
83
+ SELECT * FROM read_json_auto('logs/*.ndjson'); -- newline-delimited or array JSON
84
+ ```
85
+
86
+ `filename = true` adds a `filename` column — essential when a glob mixes partitions and you need to know
87
+ which file a row came from.
88
+
89
+ ## In-memory vs persistent
90
+
91
+ ```python
92
+ con = duckdb.connect() # in-memory: default, gone when the process exits
93
+ con = duckdb.connect("analytics.duckdb") # single file, created if absent; extension is not significant
94
+ ```
95
+
96
+ Persist when: the dataset is reused across runs, an intermediate result is larger than RAM (DuckDB spills
97
+ to the file), or you are curating a dataset to share. Otherwise stay in-memory — it is the fast path and
98
+ needs no cleanup. The whole database is **one file**; copy it to move the database.
99
+
100
+ ## Python / dataframe interop
101
+
102
+ In-scope pandas/Polars/Arrow frames are queryable **by variable name** — that is a replacement scan, no
103
+ registration needed. The relational API is lazy; nothing executes until you materialize.
104
+
105
+ ```python
106
+ import duckdb, pandas as pd
107
+ orders = pd.read_parquet("orders.parquet") # ordinary frame in local scope
108
+
109
+ rel = duckdb.sql("FROM orders SELECT region, sum(amount) AS rev GROUP BY ALL") # lazy, by name
110
+ rel.df() # -> pandas rel.pl() # -> Polars
111
+ rel.arrow() # -> Arrow table rel.fetchall() # -> list[tuple]
112
+ ```
113
+
114
+ Use a single connection per thread, never share one cursor across threads. Full client surface —
115
+ parameterized queries, relational operators, NumPy/torch round-trips, threading rules — is in
116
+ [references/python-and-interop.md](references/python-and-interop.md).
117
+
118
+ ## Friendly SQL — use the dialect
119
+
120
+ DuckDB's dialect removes the boilerplate that makes analytics SQL tedious. Prefer it in DuckDB-only code.
121
+
122
+ ```sql
123
+ FROM events SELECT count(*); -- FROM-first: pipe-friendly, valid on its own
124
+ SELECT * EXCLUDE (raw_payload) FROM events; -- everything but the noisy column
125
+ SELECT * REPLACE (lower(email) AS email) FROM users; -- transform one column, keep the rest
126
+ SELECT region, sum(amount) FROM sales GROUP BY ALL; -- no restating non-aggregates
127
+ SELECT * FROM sales ORDER BY ALL; -- deterministic order without listing columns
128
+ SELECT COLUMNS('amount_.*') FROM sales; -- regex over column names
129
+ SELECT 1, 2, 3, -- trailing commas are legal
130
+ ```
131
+
132
+ `GROUP BY ALL` / `ORDER BY ALL` are the biggest wins: add a column to the SELECT and the grouping follows
133
+ automatically, so the two clauses can't drift out of sync.
134
+
135
+ ## Remote + lakehouse data
136
+
137
+ Read from S3/GCS/HTTP without downloading first: load `httpfs` and store credentials in a secret.
138
+
139
+ ```sql
140
+ INSTALL httpfs; LOAD httpfs;
141
+ CREATE SECRET s3 (TYPE s3, PROVIDER credential_chain); -- picks up env/role creds
142
+ SELECT region, sum(amount) FROM read_parquet('s3://bkt/sales/*.parquet') GROUP BY ALL;
143
+ ```
144
+
145
+ Iceberg, Delta, and DuckLake (DuckDB's own SQL-catalog lakehouse format) are read via extensions. Secret
146
+ config, hive-partition globs, and the lakehouse one-liners live in
147
+ [references/remote-and-lakehouse.md](references/remote-and-lakehouse.md).
148
+
149
+ ## Export & handoff
150
+
151
+ ```sql
152
+ COPY (SELECT region, sum(amount) AS rev FROM 'sales/*.parquet' GROUP BY ALL)
153
+ TO 'summary.parquet' (FORMAT parquet);
154
+
155
+ COPY sales TO 'out/' (FORMAT parquet, PARTITION_BY (year, month)); -- hive-partitioned dataset
156
+ ```
157
+
158
+ Parquet is the default handoff: it keeps types and reads straight back into DuckDB, Spark, pandas, or
159
+ ClickHouse. Use `PARTITION_BY` so downstream readers can prune partitions.
160
+
161
+ ## Outgrowing DuckDB
162
+
163
+ DuckDB scales **up** (more RAM/threads, out-of-core spill), not **out**. Tune within one box:
164
+
165
+ ```sql
166
+ PRAGMA threads = 8; -- match cores
167
+ PRAGMA memory_limit = '12GB'; -- cap RAM; the rest spills to the temp dir / database file
168
+ ```
169
+
170
+ Hand off when you hit the single-process wall: concurrent **writers** or a multi-user query API or an
171
+ always-on service → [`clickhouse-analytics`](../clickhouse-analytics/SKILL.md). Want managed/shared/hybrid
172
+ DuckDB without running infra → MotherDuck (managed DuckDB-as-a-service; `ATTACH 'md:'`) — the scale-out
173
+ escape hatch, not the default.
174
+
175
+ ## Anti-patterns
176
+
177
+ | Anti-pattern | Do instead |
178
+ | --- | --- |
179
+ | Loading a file into pandas, then querying the frame | Pages the whole file through RAM. `FROM 'file.parquet' SELECT ...` scans only needed columns. |
180
+ | Making DuckDB the app's database | One writer, single process — concurrent CRUD writers corrupt the workflow. App OLTP is `postgresdb`. |
181
+ | Serving a dashboard API for 200 users from DuckDB | It's embedded, not a server; concurrent users serialize on the writer. That's `clickhouse-analytics`. |
182
+ | Running the latest version in prod | Pin the **LTS** (1.4.x; v1.4.4 shipped 2026-01-26) so a future upgrade doesn't break the on-disk format / extension ABI. |
183
+ | Downloading the S3 files, then reading them | `INSTALL httpfs` + `CREATE SECRET` reads `s3://...` in place with row-group pushdown. No download. |
184
+ | `SELECT *` over a 200-column Parquet | Columnar engine — list the columns you need so it skips the rest. `SELECT *` reads everything. |
185
+ | `GROUP BY a, b, c` — restating every column | Drift bait. `GROUP BY ALL` tracks the SELECT automatically. |
186
+ | Treating "embedded" as "no need to think about RAM" | Set `memory_limit` / `threads`; without a cap a runaway aggregate can thrash before it spills. |
187
+ | Using DuckDB as the embeddings/vector store | VSS exists but vector search is `vector-db`'s workflow, not DuckDB's home turf. |
188
+
189
+ ## Verify
190
+
191
+ Run `scripts/verify.sh` from anywhere. It runs a tiny self-contained smoke test — prefers the `duckdb`
192
+ CLI, falls back to `python3 -c "import duckdb"` — that runs an aggregate and a `read_csv_auto` over a
193
+ generated file and asserts a known scalar, proving the documented commands execute on your installed
194
+ version. If neither the CLI nor the Python module is present it prints `SKIP` and exits 0. No network.
195
+
196
+ ## Project grounding (02-DOCS + CLAUDE.md)
197
+
198
+ In a project with a `02-DOCS/` layer (the [`harness`](../harness/SKILL.md) wiki), record this project's
199
+ DuckDB decisions — version pin, file layout, persistent vs in-memory, remote/secret setup — in
200
+ `02-DOCS/wiki/stack/duckdb.md` and index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md`
201
+ keeps only a short pointer to it). Read it first on
202
+ every use and keep choices consistent. No `02-DOCS/`? Skip silently. Conventions are recorded, never gated.
@@ -0,0 +1,31 @@
1
+ # Eval harness — `duckdb`
2
+
3
+ This checks two things: **triggering** (does the skill fire on real DuckDB situations and stay quiet on
4
+ near-misses that belong to a sibling?) and **capability** (does loading the skill measurably improve the
5
+ answer?). Cases live in `cases.yaml`. These are graded by a human or a driver agent feeding prompts to a
6
+ fresh session — not an automated runner. The executable check is `scripts/verify.sh`, which smoke-tests
7
+ that the documented DuckDB commands actually run; the eval cases here grade judgment, not code.
8
+
9
+ ## Triggering
10
+
11
+ For each prompt: start a fresh agent with only the `duckdb` skill discoverable, paste the prompt verbatim,
12
+ and observe whether the agent reaches for DuckDB. Run 3–5 trials (the decision is stochastic).
13
+ `should_trigger` passes if DuckDB fires in the majority of trials. `should_not_trigger` passes if it does
14
+ **not** fire; each such case names a `route_to` sibling (`clickhouse-analytics`, `postgresdb`, `sql`,
15
+ `sqlite-turso`, `vector-db`) — sanity-check the agent would plausibly route there, but any not-duckdb route
16
+ still passes this skill's gate. Some routed siblings may not be built in this collection yet; the routing
17
+ intent is what's graded. Pass bar: ≥ 90% trigger accuracy across all cases.
18
+
19
+ ## Capability
20
+
21
+ Run the scenario twice — WITHOUT the skill (clean agent) and WITH it — and grade each transcript against
22
+ the `must_include` checklist, one point per bullet that is specifically and correctly covered (not just
23
+ name-dropped). WITH the skill should cover ≥ 80% of bullets and clearly beat WITHOUT (target ≥ +30 points
24
+ or crossing fail→pass). If a baseline agent already nails it, tighten the rubric.
25
+
26
+ ## Notes
27
+
28
+ Prompts are deliberately varied: some never say "DuckDB" (slow pandas groupby, out-of-core join,
29
+ analyze-a-CSV-without-a-server), and one is in Spanish — these test intent recognition, not keyword
30
+ matching. Record trial counts and per-bullet verdicts so a reviewer can audit; don't report a bare
31
+ pass/fail.
@@ -0,0 +1,41 @@
1
+ skill: duckdb
2
+
3
+ should_trigger:
4
+ - prompt: "I have a directory full of monthly parquet files and I want to sum revenue by region across all of them. What's the fastest way without setting up infrastructure?"
5
+ why: "Core case: analytical aggregate over a folder of Parquet files in place, explicitly 'without infrastructure' — DuckDB's killer read_parquet-glob feature."
6
+ - prompt: "My pandas groupby on a 5GB dataframe takes forever and sometimes runs out of memory. Is there a faster way to do this aggregation?"
7
+ why: "Replacing a slow/OOM pandas groupby/merge with a vectorized out-of-core engine is a named when-to-use; the user never says DuckDB."
8
+ - prompt: "Necesito analizar un CSV gigante de varios GB en mi portátil sin levantar un servidor de base de datos. ¿Qué uso?"
9
+ why: "Spanish phrasing for ad-hoc analytics on a large CSV on a single machine with no server — exactly DuckDB's niche."
10
+ - prompt: "I want to run SQL directly over a dataframe inside my Jupyter notebook without exporting it first. Possible?"
11
+ why: "Embedded analytics in a notebook via replacement scan over an in-scope frame — a core embedded-OLAP use case."
12
+ - prompt: "Can I query these parquet files straight from our S3 bucket and aggregate them, without downloading them to disk first?"
13
+ why: "Non-obvious: most people download first; DuckDB reads s3:// in place via httpfs with row-group pushdown. Tests intent over keywords."
14
+ - prompt: "I need an out-of-core aggregate that spills to disk because the join result won't fit in RAM, but I don't want to stand up Spark or a cluster."
15
+ why: "Non-obvious single-node out-of-core spilling workload that explicitly rejects distributed infra — DuckDB scales up, not out."
16
+
17
+ should_not_trigger:
18
+ - prompt: "Build a production analytics API that serves dashboards to hundreds of concurrent users with sub-second queries all day."
19
+ route_to: "clickhouse-analytics"
20
+ why: "Many concurrent users + always-on production serving is the single-writer/single-process boundary DuckDB explicitly cedes to ClickHouse."
21
+ - prompt: "Set up the database for my web app to store users, orders, and handle lots of small writes with foreign keys and a connection pool."
22
+ route_to: "postgresdb"
23
+ why: "Transactional OLTP app database with many small writes and FKs — row-store territory, not columnar OLAP."
24
+ - prompt: "What's the correct syntax for a SQL window function using ROW_NUMBER with PARTITION BY and ORDER BY?"
25
+ route_to: "sql"
26
+ why: "Engine-agnostic SQL language question, not an engine choice; belongs to the generic sql skill."
27
+ - prompt: "I need to embed a small transactional database inside my mobile/edge app for local reads and writes that syncs later."
28
+ route_to: "sqlite-turso"
29
+ why: "Embedded single-file TRANSACTIONAL store at the edge — same niche as DuckDB but opposite (OLTP) workload."
30
+ - prompt: "Build a similarity search over our document embeddings to find the nearest vectors for a query."
31
+ route_to: "vector-db"
32
+ why: "Vector/embedding search as the core workflow is vector-db's job even though DuckDB ships a VSS extension."
33
+
34
+ capability:
35
+ - scenario: "User has a folder of monthly Parquet files at `sales/2025-*.parquet`, each with columns region, amount, ts. They want to aggregate total revenue by region across ALL files and write the result to `summary.parquet`, with no infrastructure."
36
+ must_include:
37
+ - "Reads the files with a glob in place — read_parquet('sales/2025-*.parquet') or FROM 'sales/2025-*.parquet' — no intermediate pandas/Polars load step"
38
+ - "Aggregates with GROUP BY (ideally GROUP BY ALL) and an aggregate function like sum(amount) AS revenue"
39
+ - "Exports with COPY (query) TO 'summary.parquet' (FORMAT parquet) rather than writing a CSV or pickling a dataframe"
40
+ - "Uses DuckDB (pip install duckdb / duckdb.sql or the CLI) and does not stand up a server or a cluster"
41
+ - "Optionally notes only the needed columns are scanned (columnar pushdown) and/or pins the version, without over-engineering"
@@ -0,0 +1,105 @@
1
+ # DuckDB — Python client & dataframe interop
2
+
3
+ Full surface offloaded from the SKILL body. DuckDB v1.5.2 / LTS 1.4.x.
4
+
5
+ ## Connect, cursor, scope
6
+
7
+ ```python
8
+ import duckdb
9
+
10
+ # Module-level default connection (in-memory). Convenient for scripts/notebooks.
11
+ duckdb.sql("SELECT 42").fetchone() # (42,)
12
+
13
+ # Explicit connection — required for a persistent file or per-thread isolation.
14
+ con = duckdb.connect("analytics.duckdb") # created if absent
15
+ cur = con.cursor() # independent cursor; safe to hand to one thread
16
+ con.close() # or: with duckdb.connect(...) as con: ...
17
+ ```
18
+
19
+ A replacement scan resolves a bare identifier in the SQL against Python variables in scope, so a local
20
+ `orders` frame is queryable as `FROM orders` with no registration. This only works on the default
21
+ connection / the connection that ran `.sql()` from that scope.
22
+
23
+ ## Parameterized queries — never f-string user input
24
+
25
+ ```python
26
+ con.execute("SELECT * FROM t WHERE region = ? AND amount > ?", ["EU", 100]).fetchall()
27
+
28
+ con.execute(
29
+ "SELECT * FROM t WHERE region = $region AND amount > $min",
30
+ {"region": "EU", "min": 100},
31
+ ).fetchall()
32
+ ```
33
+
34
+ Positional `?` and named `$name` both work. Parameterizing is correctness (typing) and safety, not just
35
+ style — string-building SQL invites injection and quoting bugs.
36
+
37
+ ## Relational API — lazy, chainable
38
+
39
+ `duckdb.sql(...)` and the relational operators return a lazy relation. Nothing executes until you
40
+ materialize. Chain operators or drop into SQL, whichever is clearer.
41
+
42
+ ```python
43
+ rel = con.sql("FROM 'sales/*.parquet'") # a relation, not yet executed
44
+ (rel.filter("amount > 0")
45
+ .aggregate("region, sum(amount) AS rev") # GROUP BY inferred from non-aggregates
46
+ .order("rev DESC")
47
+ .limit(10)
48
+ .df()) # materialize here
49
+
50
+ rel.project("region, amount") # SELECT
51
+ rel.join(other, "region") # join on a condition / column
52
+ ```
53
+
54
+ ## Materializers
55
+
56
+ | Call | Returns | Use when |
57
+ | --- | --- | --- |
58
+ | `.df()` | pandas DataFrame | downstream pandas / plotting |
59
+ | `.pl()` | Polars DataFrame | Polars pipeline |
60
+ | `.arrow()` | pyarrow.Table | zero-copy handoff, Arrow Flight, Parquet |
61
+ | `.fetchall()` | list[tuple] | small results, plain Python |
62
+ | `.fetchone()` | tuple / None | single scalar/row |
63
+ | `.fetchnumpy()` | dict[str, np.ndarray] | numeric columns into NumPy |
64
+ | `.torch()` | dict of tensors | feeding a model (when torch installed) |
65
+
66
+ ## Registering and unregistering frames
67
+
68
+ Replacement scan covers most cases, but register explicitly when the frame isn't in the calling scope
69
+ (e.g. built inside a function) or you want a stable name across queries.
70
+
71
+ ```python
72
+ con.register("v", some_dataframe) # now queryable as FROM v
73
+ con.sql("FROM v SELECT count(*)")
74
+ con.unregister("v") # release the reference
75
+ ```
76
+
77
+ `pyarrow.dataset` objects register the same way and get predicate/projection pushdown into the dataset.
78
+
79
+ ## Round-trips
80
+
81
+ ```python
82
+ # pandas / Polars / Arrow all go in and come out without an explicit conversion step:
83
+ con.sql("FROM my_pandas_df SELECT *").pl() # pandas in, Polars out
84
+ con.sql("FROM my_polars_df SELECT *").arrow() # Polars in, Arrow out
85
+ con.from_arrow(arrow_table).aggregate("k, count(*)").df()
86
+ ```
87
+
88
+ ## Transactions
89
+
90
+ ```python
91
+ con.execute("BEGIN")
92
+ con.execute("INSERT INTO t VALUES (1)")
93
+ con.execute("COMMIT") # or ROLLBACK
94
+ ```
95
+
96
+ ACID within the single process. Remember the model: one writer. Don't open two writing connections to the
97
+ same file from different processes expecting concurrent writes — the second blocks or errors.
98
+
99
+ ## Threading caveat
100
+
101
+ - One connection (or one `.cursor()`) **per thread**. Never share a cursor across threads.
102
+ - The module-level default connection is convenient but not for concurrent threads — give each thread its
103
+ own `duckdb.connect(...)` (or `con.cursor()`).
104
+ - Reads parallelize internally across `PRAGMA threads`; you do not need threads to parallelize a single
105
+ query — DuckDB already vectorizes and multi-threads execution.