zilmate 1.7.8 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/.agents/skills/agent-browser/SKILL.md +55 -0
  2. package/.agents/skills/agentmail/SKILL.md +282 -0
  3. package/.agents/skills/agentmail/references/webhooks.md +220 -0
  4. package/.agents/skills/agentmail/references/websockets.md +263 -0
  5. package/.agents/skills/ai-elements/SKILL.md +160 -0
  6. package/.agents/skills/ai-elements/references/agent.md +134 -0
  7. package/.agents/skills/ai-elements/references/artifact.md +84 -0
  8. package/.agents/skills/ai-elements/references/attachments.md +190 -0
  9. package/.agents/skills/ai-elements/references/audio-player.md +134 -0
  10. package/.agents/skills/ai-elements/references/canvas.md +34 -0
  11. package/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
  12. package/.agents/skills/ai-elements/references/checkpoint.md +183 -0
  13. package/.agents/skills/ai-elements/references/code-block.md +170 -0
  14. package/.agents/skills/ai-elements/references/commit.md +177 -0
  15. package/.agents/skills/ai-elements/references/confirmation.md +262 -0
  16. package/.agents/skills/ai-elements/references/connection.md +34 -0
  17. package/.agents/skills/ai-elements/references/context.md +126 -0
  18. package/.agents/skills/ai-elements/references/controls.md +32 -0
  19. package/.agents/skills/ai-elements/references/conversation.md +224 -0
  20. package/.agents/skills/ai-elements/references/edge.md +52 -0
  21. package/.agents/skills/ai-elements/references/environment-variables.md +102 -0
  22. package/.agents/skills/ai-elements/references/file-tree.md +72 -0
  23. package/.agents/skills/ai-elements/references/image.md +146 -0
  24. package/.agents/skills/ai-elements/references/inline-citation.md +299 -0
  25. package/.agents/skills/ai-elements/references/jsx-preview.md +104 -0
  26. package/.agents/skills/ai-elements/references/message.md +237 -0
  27. package/.agents/skills/ai-elements/references/mic-selector.md +189 -0
  28. package/.agents/skills/ai-elements/references/model-selector.md +112 -0
  29. package/.agents/skills/ai-elements/references/node.md +73 -0
  30. package/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
  31. package/.agents/skills/ai-elements/references/package-info.md +95 -0
  32. package/.agents/skills/ai-elements/references/panel.md +33 -0
  33. package/.agents/skills/ai-elements/references/persona.md +166 -0
  34. package/.agents/skills/ai-elements/references/plan.md +79 -0
  35. package/.agents/skills/ai-elements/references/prompt-input.md +579 -0
  36. package/.agents/skills/ai-elements/references/queue.md +172 -0
  37. package/.agents/skills/ai-elements/references/reasoning.md +238 -0
  38. package/.agents/skills/ai-elements/references/sandbox.md +129 -0
  39. package/.agents/skills/ai-elements/references/schema-display.md +102 -0
  40. package/.agents/skills/ai-elements/references/shimmer.md +48 -0
  41. package/.agents/skills/ai-elements/references/snippet.md +64 -0
  42. package/.agents/skills/ai-elements/references/sources.md +209 -0
  43. package/.agents/skills/ai-elements/references/speech-input.md +163 -0
  44. package/.agents/skills/ai-elements/references/stack-trace.md +224 -0
  45. package/.agents/skills/ai-elements/references/suggestion.md +124 -0
  46. package/.agents/skills/ai-elements/references/task.md +222 -0
  47. package/.agents/skills/ai-elements/references/terminal.md +103 -0
  48. package/.agents/skills/ai-elements/references/test-results.md +157 -0
  49. package/.agents/skills/ai-elements/references/tool.md +285 -0
  50. package/.agents/skills/ai-elements/references/toolbar.md +32 -0
  51. package/.agents/skills/ai-elements/references/transcription.md +120 -0
  52. package/.agents/skills/ai-elements/references/voice-selector.md +241 -0
  53. package/.agents/skills/ai-elements/references/web-preview.md +200 -0
  54. package/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
  55. package/.agents/skills/ai-elements/scripts/artifact.tsx +127 -0
  56. package/.agents/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
  57. package/.agents/skills/ai-elements/scripts/attachments-list.tsx +95 -0
  58. package/.agents/skills/ai-elements/scripts/attachments.tsx +85 -0
  59. package/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
  60. package/.agents/skills/ai-elements/scripts/audio-player.tsx +68 -0
  61. package/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
  62. package/.agents/skills/ai-elements/scripts/checkpoint.tsx +110 -0
  63. package/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
  64. package/.agents/skills/ai-elements/scripts/code-block.tsx +120 -0
  65. package/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
  66. package/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
  67. package/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
  68. package/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
  69. package/.agents/skills/ai-elements/scripts/confirmation.tsx +55 -0
  70. package/.agents/skills/ai-elements/scripts/context.tsx +45 -0
  71. package/.agents/skills/ai-elements/scripts/conversation.tsx +177 -0
  72. package/.agents/skills/ai-elements/scripts/environment-variables.tsx +62 -0
  73. package/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
  74. package/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
  75. package/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
  76. package/.agents/skills/ai-elements/scripts/file-tree.tsx +42 -0
  77. package/.agents/skills/ai-elements/scripts/image.tsx +20 -0
  78. package/.agents/skills/ai-elements/scripts/inline-citation.tsx +97 -0
  79. package/.agents/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
  80. package/.agents/skills/ai-elements/scripts/message.tsx +365 -0
  81. package/.agents/skills/ai-elements/scripts/mic-selector.tsx +49 -0
  82. package/.agents/skills/ai-elements/scripts/model-selector.tsx +365 -0
  83. package/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
  84. package/.agents/skills/ai-elements/scripts/package-info.tsx +51 -0
  85. package/.agents/skills/ai-elements/scripts/persona-command.tsx +110 -0
  86. package/.agents/skills/ai-elements/scripts/persona-glint.tsx +110 -0
  87. package/.agents/skills/ai-elements/scripts/persona-halo.tsx +110 -0
  88. package/.agents/skills/ai-elements/scripts/persona-mana.tsx +110 -0
  89. package/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
  90. package/.agents/skills/ai-elements/scripts/persona-opal.tsx +110 -0
  91. package/.agents/skills/ai-elements/scripts/plan.tsx +65 -0
  92. package/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
  93. package/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
  94. package/.agents/skills/ai-elements/scripts/prompt-input.tsx +267 -0
  95. package/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
  96. package/.agents/skills/ai-elements/scripts/queue.tsx +295 -0
  97. package/.agents/skills/ai-elements/scripts/reasoning.tsx +71 -0
  98. package/.agents/skills/ai-elements/scripts/sandbox.tsx +178 -0
  99. package/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
  100. package/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
  101. package/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
  102. package/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
  103. package/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
  104. package/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
  105. package/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
  106. package/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
  107. package/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
  108. package/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
  109. package/.agents/skills/ai-elements/scripts/sources-custom.tsx +39 -0
  110. package/.agents/skills/ai-elements/scripts/sources.tsx +32 -0
  111. package/.agents/skills/ai-elements/scripts/speech-input.tsx +84 -0
  112. package/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
  113. package/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
  114. package/.agents/skills/ai-elements/scripts/stack-trace.tsx +58 -0
  115. package/.agents/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
  116. package/.agents/skills/ai-elements/scripts/suggestion.tsx +32 -0
  117. package/.agents/skills/ai-elements/scripts/task.tsx +59 -0
  118. package/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
  119. package/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
  120. package/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
  121. package/.agents/skills/ai-elements/scripts/terminal.tsx +82 -0
  122. package/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
  123. package/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
  124. package/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
  125. package/.agents/skills/ai-elements/scripts/test-results.tsx +102 -0
  126. package/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
  127. package/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
  128. package/.agents/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
  129. package/.agents/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
  130. package/.agents/skills/ai-elements/scripts/tool.tsx +222 -0
  131. package/.agents/skills/ai-elements/scripts/transcription.tsx +290 -0
  132. package/.agents/skills/ai-elements/scripts/voice-selector.tsx +245 -0
  133. package/.agents/skills/ai-elements/scripts/web-preview.tsx +115 -0
  134. package/.agents/skills/ai-sdk/SKILL.md +78 -0
  135. package/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
  136. package/.agents/skills/ai-sdk/references/common-errors.md +443 -0
  137. package/.agents/skills/ai-sdk/references/devtools.md +52 -0
  138. package/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
  139. package/.agents/skills/chat-sdk/SKILL.md +240 -0
  140. package/.agents/skills/composio/AGENTS.md +404 -0
  141. package/.agents/skills/composio/SKILL.md +55 -0
  142. package/.agents/skills/composio/rules/_template.md +38 -0
  143. package/.agents/skills/composio/rules/app-auth-configs.md +224 -0
  144. package/.agents/skills/composio/rules/app-auth-popup-ui.md +143 -0
  145. package/.agents/skills/composio/rules/app-connected-accounts.md +240 -0
  146. package/.agents/skills/composio/rules/app-custom-tools.md +220 -0
  147. package/.agents/skills/composio/rules/app-execute-tools.md +202 -0
  148. package/.agents/skills/composio/rules/app-fetch-tools.md +292 -0
  149. package/.agents/skills/composio/rules/app-modifiers.md +148 -0
  150. package/.agents/skills/composio/rules/app-tool-versions.md +343 -0
  151. package/.agents/skills/composio/rules/app-toolkits.md +184 -0
  152. package/.agents/skills/composio/rules/app-user-context.md +222 -0
  153. package/.agents/skills/composio/rules/building-with-composio.md +134 -0
  154. package/.agents/skills/composio/rules/composio-cli.md +223 -0
  155. package/.agents/skills/composio/rules/setup-api-keys.md +230 -0
  156. package/.agents/skills/composio/rules/tr-auth-auto.md +110 -0
  157. package/.agents/skills/composio/rules/tr-auth-connections.md +167 -0
  158. package/.agents/skills/composio/rules/tr-auth-manual.md +161 -0
  159. package/.agents/skills/composio/rules/tr-building-chat-ui.md +348 -0
  160. package/.agents/skills/composio/rules/tr-framework-ai-sdk.md +240 -0
  161. package/.agents/skills/composio/rules/tr-framework-integration.md +818 -0
  162. package/.agents/skills/composio/rules/tr-framework-mastra.md +185 -0
  163. package/.agents/skills/composio/rules/tr-mcp-vs-native.md +248 -0
  164. package/.agents/skills/composio/rules/tr-session-basic.md +82 -0
  165. package/.agents/skills/composio/rules/tr-session-config.md +172 -0
  166. package/.agents/skills/composio/rules/tr-session-lifecycle.md +385 -0
  167. package/.agents/skills/composio/rules/tr-toolkit-query.md +135 -0
  168. package/.agents/skills/composio/rules/tr-userid-best-practices.md +476 -0
  169. package/.agents/skills/composio/rules/triggers-create.md +246 -0
  170. package/.agents/skills/composio/rules/triggers-manage.md +275 -0
  171. package/.agents/skills/composio/rules/triggers-subscribe.md +173 -0
  172. package/.agents/skills/composio/rules/triggers-webhook.md +227 -0
  173. package/.agents/skills/create-auth-skill/SKILL.md +321 -0
  174. package/.agents/skills/design-md/README.md +34 -0
  175. package/.agents/skills/design-md/SKILL.md +172 -0
  176. package/.agents/skills/design-md/examples/DESIGN.md +154 -0
  177. package/.agents/skills/expo-tailwind-setup/SKILL.md +480 -0
  178. package/.agents/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
  179. package/.agents/skills/find-skills/SKILL.md +142 -0
  180. package/.agents/skills/firecrawl/SKILL.md +321 -0
  181. package/.agents/skills/firecrawl/rules/install.md +85 -0
  182. package/.agents/skills/firecrawl/rules/security.md +26 -0
  183. package/.agents/skills/frontend-design/LICENSE.txt +177 -0
  184. package/.agents/skills/frontend-design/SKILL.md +55 -0
  185. package/.agents/skills/linkup-search/SKILL.md +298 -0
  186. package/.agents/skills/mcp-builder/LICENSE.txt +202 -0
  187. package/.agents/skills/mcp-builder/SKILL.md +236 -0
  188. package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
  189. package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  190. package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  191. package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  192. package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
  193. package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
  194. package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  195. package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
  196. package/.agents/skills/mobile-android-design/SKILL.md +101 -0
  197. package/.agents/skills/mobile-android-design/references/android-navigation.md +698 -0
  198. package/.agents/skills/mobile-android-design/references/compose-components.md +796 -0
  199. package/.agents/skills/mobile-android-design/references/details.md +337 -0
  200. package/.agents/skills/mobile-android-design/references/material3-theming.md +604 -0
  201. package/.agents/skills/mobile-ios-design/SKILL.md +259 -0
  202. package/.agents/skills/mobile-ios-design/references/hig-patterns.md +529 -0
  203. package/.agents/skills/mobile-ios-design/references/ios-navigation.md +556 -0
  204. package/.agents/skills/mobile-ios-design/references/swiftui-components.md +575 -0
  205. package/.agents/skills/neon-drizzle/SKILL.md +81 -0
  206. package/.agents/skills/neon-drizzle/guides/existing-project.md +398 -0
  207. package/.agents/skills/neon-drizzle/guides/new-project.md +312 -0
  208. package/.agents/skills/neon-drizzle/guides/schema-only.md +415 -0
  209. package/.agents/skills/neon-drizzle/guides/troubleshooting.md +539 -0
  210. package/.agents/skills/neon-drizzle/references/adapters.md +478 -0
  211. package/.agents/skills/neon-drizzle/references/migrations.md +652 -0
  212. package/.agents/skills/neon-drizzle/references/query-patterns.md +761 -0
  213. package/.agents/skills/neon-drizzle/scripts/generate-schema.ts +77 -0
  214. package/.agents/skills/neon-drizzle/scripts/run-migration.ts +133 -0
  215. package/.agents/skills/neon-drizzle/templates/db-http.ts +6 -0
  216. package/.agents/skills/neon-drizzle/templates/db-websocket.ts +24 -0
  217. package/.agents/skills/neon-drizzle/templates/drizzle-config.ts +96 -0
  218. package/.agents/skills/neon-drizzle/templates/schema-example.ts +231 -0
  219. package/.agents/skills/neon-postgres/SKILL.md +376 -0
  220. package/.agents/skills/next-best-practices/SKILL.md +152 -0
  221. package/.agents/skills/next-best-practices/async-patterns.md +87 -0
  222. package/.agents/skills/next-best-practices/bundling.md +180 -0
  223. package/.agents/skills/next-best-practices/data-patterns.md +297 -0
  224. package/.agents/skills/next-best-practices/debug-tricks.md +105 -0
  225. package/.agents/skills/next-best-practices/directives.md +73 -0
  226. package/.agents/skills/next-best-practices/error-handling.md +227 -0
  227. package/.agents/skills/next-best-practices/file-conventions.md +140 -0
  228. package/.agents/skills/next-best-practices/font.md +245 -0
  229. package/.agents/skills/next-best-practices/functions.md +108 -0
  230. package/.agents/skills/next-best-practices/hydration-error.md +91 -0
  231. package/.agents/skills/next-best-practices/image.md +173 -0
  232. package/.agents/skills/next-best-practices/metadata.md +301 -0
  233. package/.agents/skills/next-best-practices/parallel-routes.md +287 -0
  234. package/.agents/skills/next-best-practices/route-handlers.md +146 -0
  235. package/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
  236. package/.agents/skills/next-best-practices/runtime-selection.md +39 -0
  237. package/.agents/skills/next-best-practices/scripts.md +141 -0
  238. package/.agents/skills/next-best-practices/self-hosting.md +371 -0
  239. package/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
  240. package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
  241. package/.agents/skills/playwright-cli/SKILL.md +404 -0
  242. package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
  243. package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
  244. package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
  245. package/.agents/skills/playwright-cli/references/running-code.md +241 -0
  246. package/.agents/skills/playwright-cli/references/session-management.md +225 -0
  247. package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
  248. package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
  249. package/.agents/skills/playwright-cli/references/test-generation.md +134 -0
  250. package/.agents/skills/playwright-cli/references/tracing.md +139 -0
  251. package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
  252. package/.agents/skills/prisma-client-api/SKILL.md +216 -0
  253. package/.agents/skills/prisma-client-api/references/client-methods.md +223 -0
  254. package/.agents/skills/prisma-client-api/references/constructor.md +208 -0
  255. package/.agents/skills/prisma-client-api/references/filters.md +256 -0
  256. package/.agents/skills/prisma-client-api/references/model-queries.md +281 -0
  257. package/.agents/skills/prisma-client-api/references/query-options.md +276 -0
  258. package/.agents/skills/prisma-client-api/references/raw-queries.md +194 -0
  259. package/.agents/skills/prisma-client-api/references/relations.md +308 -0
  260. package/.agents/skills/prisma-client-api/references/transactions.md +184 -0
  261. package/.agents/skills/prisma-database-setup/SKILL.md +192 -0
  262. package/.agents/skills/prisma-database-setup/references/cockroachdb.md +89 -0
  263. package/.agents/skills/prisma-database-setup/references/mongodb.md +90 -0
  264. package/.agents/skills/prisma-database-setup/references/mysql.md +126 -0
  265. package/.agents/skills/prisma-database-setup/references/postgresql.md +92 -0
  266. package/.agents/skills/prisma-database-setup/references/prisma-client-setup.md +47 -0
  267. package/.agents/skills/prisma-database-setup/references/prisma-postgres.md +130 -0
  268. package/.agents/skills/prisma-database-setup/references/sqlite.md +106 -0
  269. package/.agents/skills/prisma-database-setup/references/sqlserver.md +94 -0
  270. package/.agents/skills/prisma-postgres/SKILL.md +127 -0
  271. package/.agents/skills/prisma-postgres/references/console-and-connections.md +67 -0
  272. package/.agents/skills/prisma-postgres/references/create-db-cli.md +136 -0
  273. package/.agents/skills/prisma-postgres/references/management-api-sdk.md +56 -0
  274. package/.agents/skills/prisma-postgres/references/management-api.md +61 -0
  275. package/.agents/skills/remotion-best-practices/SKILL.md +340 -0
  276. package/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
  277. package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  278. package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  279. package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  280. package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  281. package/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
  282. package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
  283. package/.agents/skills/remotion-best-practices/rules/compositions.md +133 -0
  284. package/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
  285. package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +34 -0
  286. package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  287. package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  288. package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  289. package/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
  290. package/.agents/skills/remotion-best-practices/rules/google-fonts.md +72 -0
  291. package/.agents/skills/remotion-best-practices/rules/html-in-canvas.md +122 -0
  292. package/.agents/skills/remotion-best-practices/rules/images.md +71 -0
  293. package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  294. package/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  295. package/.agents/skills/remotion-best-practices/rules/local-fonts.md +65 -0
  296. package/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
  297. package/.agents/skills/remotion-best-practices/rules/maplibre.md +458 -0
  298. package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  299. package/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  300. package/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
  301. package/.agents/skills/remotion-best-practices/rules/sequencing.md +144 -0
  302. package/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
  303. package/.agents/skills/remotion-best-practices/rules/silence-detection.md +71 -0
  304. package/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
  305. package/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
  306. package/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
  307. package/.agents/skills/remotion-best-practices/rules/timing.md +136 -0
  308. package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  309. package/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
  310. package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  311. package/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
  312. package/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
  313. package/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
  314. package/.agents/skills/remotion-render/SKILL.md +212 -0
  315. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  316. package/.agents/skills/skill-creator/SKILL.md +485 -0
  317. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  318. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  319. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  320. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  321. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  322. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  323. package/.agents/skills/skill-creator/references/schemas.md +430 -0
  324. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  325. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  326. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  327. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  328. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  329. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  330. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  331. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  332. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  333. package/.agents/skills/stripe-best-practices/SKILL.md +54 -0
  334. package/.agents/skills/stripe-best-practices/references/billing.md +58 -0
  335. package/.agents/skills/stripe-best-practices/references/connect.md +173 -0
  336. package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
  337. package/.agents/skills/stripe-best-practices/references/security.md +109 -0
  338. package/.agents/skills/stripe-best-practices/references/tax.md +37 -0
  339. package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
  340. package/.agents/skills/stripe-projects/SKILL.md +132 -0
  341. package/.agents/skills/supabase/CHANGELOG.md +35 -0
  342. package/.agents/skills/supabase/SKILL.md +135 -0
  343. package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
  344. package/.agents/skills/supabase/references/skill-feedback.md +17 -0
  345. package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
  346. package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  347. package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
  348. package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
  349. package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
  350. package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  351. package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  352. package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  353. package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  354. package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  355. package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  356. package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  357. package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  358. package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  359. package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  360. package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  361. package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  362. package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  363. package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  364. package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  365. package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  366. package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  367. package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  368. package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  369. package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  370. package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  371. package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  372. package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  373. package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  374. package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  375. package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  376. package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  377. package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  378. package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  379. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  380. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
  381. package/.agents/skills/supermemory/LICENSE +201 -0
  382. package/.agents/skills/supermemory/README.md +221 -0
  383. package/.agents/skills/supermemory/SKILL.md +172 -0
  384. package/.agents/skills/supermemory/references/api-reference.md +591 -0
  385. package/.agents/skills/supermemory/references/architecture.md +557 -0
  386. package/.agents/skills/supermemory/references/quickstart.md +293 -0
  387. package/.agents/skills/supermemory/references/sdk-guide.md +655 -0
  388. package/.agents/skills/supermemory/references/use-cases.md +1033 -0
  389. package/.agents/skills/supermemory-cli/SKILL.md +490 -0
  390. package/.agents/skills/tdd/SKILL.md +108 -0
  391. package/.agents/skills/tdd/mocking.md +59 -0
  392. package/.agents/skills/tdd/refactoring.md +10 -0
  393. package/.agents/skills/tdd/tests.md +61 -0
  394. package/.agents/skills/ui-ux-pro-max/SKILL.md +661 -0
  395. package/.agents/skills/ui-ux-pro-max/data +1 -0
  396. package/.agents/skills/ui-ux-pro-max/scripts +1 -0
  397. package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
  398. package/.agents/skills/vercel-react-native-skills/README.md +165 -0
  399. package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
  400. package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
  401. package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
  402. package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
  403. package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
  404. package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  405. package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
  406. package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
  407. package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
  408. package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
  409. package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
  410. package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
  411. package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
  412. package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
  413. package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
  414. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
  415. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
  416. package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
  417. package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
  418. package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  419. package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  420. package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
  421. package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  422. package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  423. package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
  424. package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
  425. package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
  426. package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  427. package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  428. package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
  429. package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
  430. package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
  431. package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
  432. package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
  433. package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
  434. package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
  435. package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
  436. package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  437. package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  438. package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
  439. package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
  440. package/dist/cli/update.d.ts.map +1 -1
  441. package/dist/cli/update.js +19 -4
  442. package/dist/cli/update.js.map +1 -1
  443. package/dist/index.js +1 -1
  444. package/dist/tools/daytona-browser.tool.js +1 -1
  445. package/dist/tools/daytona-browser.tool.js.map +1 -1
  446. package/package.json +3 -2
@@ -0,0 +1,761 @@
1
+ # Query Patterns Reference Guide
2
+
3
+ Complete reference for querying with Drizzle ORM.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Basic CRUD Operations](#basic-crud-operations)
8
+ - [Advanced Filtering](#advanced-filtering)
9
+ - [Joins and Relations](#joins-and-relations)
10
+ - [Aggregations](#aggregations)
11
+ - [Subqueries](#subqueries)
12
+ - [Transactions](#transactions)
13
+ - [Batch Operations](#batch-operations)
14
+ - [Raw SQL](#raw-sql)
15
+ - [Performance Optimization](#performance-optimization)
16
+ - [Type Safety](#type-safety)
17
+ - [Common Patterns](#common-patterns)
18
+ - [Related Resources](#related-resources)
19
+
20
+ ---
21
+
22
+ ## Basic CRUD Operations
23
+
24
+ ### Create (Insert)
25
+
26
+ **Single record:**
27
+ ```typescript
28
+ import { db } from './db';
29
+ import { users } from './db/schema';
30
+
31
+ const newUser = await db.insert(users)
32
+ .values({
33
+ email: 'user@example.com',
34
+ name: 'John Doe',
35
+ })
36
+ .returning();
37
+
38
+ console.log(newUser[0]); // { id: 1, email: '...', name: '...' }
39
+ ```
40
+
41
+ **Multiple records:**
42
+ ```typescript
43
+ const newUsers = await db.insert(users)
44
+ .values([
45
+ { email: 'user1@example.com', name: 'User 1' },
46
+ { email: 'user2@example.com', name: 'User 2' },
47
+ { email: 'user3@example.com', name: 'User 3' },
48
+ ])
49
+ .returning();
50
+ ```
51
+
52
+ **With onConflictDoNothing:**
53
+ ```typescript
54
+ await db.insert(users)
55
+ .values({ email: 'user@example.com', name: 'John' })
56
+ .onConflictDoNothing();
57
+ ```
58
+
59
+ **With onConflictDoUpdate (upsert):**
60
+ ```typescript
61
+ await db.insert(users)
62
+ .values({ email: 'user@example.com', name: 'John' })
63
+ .onConflictDoUpdate({
64
+ target: users.email,
65
+ set: { name: 'John Updated' },
66
+ });
67
+ ```
68
+
69
+ ### Read (Select)
70
+
71
+ **All records:**
72
+ ```typescript
73
+ const allUsers = await db.select().from(users);
74
+ ```
75
+
76
+ **Specific columns:**
77
+ ```typescript
78
+ const userEmails = await db.select({
79
+ id: users.id,
80
+ email: users.email,
81
+ }).from(users);
82
+ ```
83
+
84
+ **With WHERE clause:**
85
+ ```typescript
86
+ import { eq, gt, lt, like, and, or } from 'drizzle-orm';
87
+
88
+ const user = await db.select()
89
+ .from(users)
90
+ .where(eq(users.email, 'user@example.com'));
91
+
92
+ const activeUsers = await db.select()
93
+ .from(users)
94
+ .where(eq(users.isActive, true));
95
+ ```
96
+
97
+ **Multiple conditions:**
98
+ ```typescript
99
+ const filteredUsers = await db.select()
100
+ .from(users)
101
+ .where(
102
+ and(
103
+ eq(users.isActive, true),
104
+ gt(users.createdAt, new Date('2024-01-01'))
105
+ )
106
+ );
107
+ ```
108
+
109
+ **With LIMIT and OFFSET:**
110
+ ```typescript
111
+ const paginatedUsers = await db.select()
112
+ .from(users)
113
+ .limit(10)
114
+ .offset(20); // Page 3
115
+ ```
116
+
117
+ **With ORDER BY:**
118
+ ```typescript
119
+ const sortedUsers = await db.select()
120
+ .from(users)
121
+ .orderBy(users.createdAt); // ASC by default
122
+
123
+ import { desc } from 'drizzle-orm';
124
+ const recentUsers = await db.select()
125
+ .from(users)
126
+ .orderBy(desc(users.createdAt));
127
+ ```
128
+
129
+ ### Update
130
+
131
+ **Single record:**
132
+ ```typescript
133
+ await db.update(users)
134
+ .set({ name: 'Jane Doe' })
135
+ .where(eq(users.id, 1));
136
+ ```
137
+
138
+ **Multiple records:**
139
+ ```typescript
140
+ await db.update(users)
141
+ .set({ isActive: false })
142
+ .where(eq(users.deletedAt, null));
143
+ ```
144
+
145
+ **With returning:**
146
+ ```typescript
147
+ const updated = await db.update(users)
148
+ .set({ name: 'Updated Name' })
149
+ .where(eq(users.id, 1))
150
+ .returning();
151
+ ```
152
+
153
+ **Partial updates:**
154
+ ```typescript
155
+ const updates: Partial<typeof users.$inferSelect> = {
156
+ name: 'New Name',
157
+ };
158
+
159
+ await db.update(users)
160
+ .set(updates)
161
+ .where(eq(users.id, 1));
162
+ ```
163
+
164
+ ### Delete
165
+
166
+ **Single record:**
167
+ ```typescript
168
+ await db.delete(users)
169
+ .where(eq(users.id, 1));
170
+ ```
171
+
172
+ **Multiple records:**
173
+ ```typescript
174
+ await db.delete(users)
175
+ .where(eq(users.isActive, false));
176
+ ```
177
+
178
+ **With returning:**
179
+ ```typescript
180
+ const deleted = await db.delete(users)
181
+ .where(eq(users.id, 1))
182
+ .returning();
183
+ ```
184
+
185
+ **Soft delete (recommended):**
186
+ ```typescript
187
+ await db.update(users)
188
+ .set({ deletedAt: new Date() })
189
+ .where(eq(users.id, 1));
190
+ ```
191
+
192
+ ## Advanced Filtering
193
+
194
+ ### Comparison Operators
195
+
196
+ ```typescript
197
+ import { eq, ne, gt, gte, lt, lte } from 'drizzle-orm';
198
+
199
+ const adults = await db.select()
200
+ .from(users)
201
+ .where(gte(users.age, 18));
202
+
203
+ const recentPosts = await db.select()
204
+ .from(posts)
205
+ .where(gt(posts.createdAt, new Date('2024-01-01')));
206
+
207
+ const excludeAdmin = await db.select()
208
+ .from(users)
209
+ .where(ne(users.role, 'admin'));
210
+ ```
211
+
212
+ ### Pattern Matching
213
+
214
+ ```typescript
215
+ import { like, ilike } from 'drizzle-orm';
216
+
217
+ const gmailUsers = await db.select()
218
+ .from(users)
219
+ .where(like(users.email, '%@gmail.com'));
220
+
221
+ const searchByName = await db.select()
222
+ .from(users)
223
+ .where(ilike(users.name, '%john%')); // Case-insensitive
224
+ ```
225
+
226
+ ### NULL Checks
227
+
228
+ ```typescript
229
+ import { isNull, isNotNull } from 'drizzle-orm';
230
+
231
+ const usersWithPhone = await db.select()
232
+ .from(users)
233
+ .where(isNotNull(users.phoneNumber));
234
+
235
+ const unverifiedUsers = await db.select()
236
+ .from(users)
237
+ .where(isNull(users.emailVerifiedAt));
238
+ ```
239
+
240
+ ### IN Operator
241
+
242
+ ```typescript
243
+ import { inArray } from 'drizzle-orm';
244
+
245
+ const specificUsers = await db.select()
246
+ .from(users)
247
+ .where(inArray(users.id, [1, 2, 3, 4, 5]));
248
+ ```
249
+
250
+ ### BETWEEN
251
+
252
+ ```typescript
253
+ import { between } from 'drizzle-orm';
254
+
255
+ const postsThisMonth = await db.select()
256
+ .from(posts)
257
+ .where(
258
+ between(
259
+ posts.createdAt,
260
+ new Date('2024-01-01'),
261
+ new Date('2024-01-31')
262
+ )
263
+ );
264
+ ```
265
+
266
+ ### Complex Conditions
267
+
268
+ ```typescript
269
+ import { and, or, not } from 'drizzle-orm';
270
+
271
+ const complexQuery = await db.select()
272
+ .from(users)
273
+ .where(
274
+ or(
275
+ and(
276
+ eq(users.isActive, true),
277
+ gte(users.age, 18)
278
+ ),
279
+ eq(users.role, 'admin')
280
+ )
281
+ );
282
+ ```
283
+
284
+ ## Joins and Relations
285
+
286
+ ### Manual Joins
287
+
288
+ **Inner join:**
289
+ ```typescript
290
+ const postsWithAuthors = await db.select({
291
+ postId: posts.id,
292
+ postTitle: posts.title,
293
+ authorName: users.name,
294
+ authorEmail: users.email,
295
+ })
296
+ .from(posts)
297
+ .innerJoin(users, eq(posts.authorId, users.id));
298
+ ```
299
+
300
+ **Left join:**
301
+ ```typescript
302
+ const allPostsWithOptionalAuthors = await db.select()
303
+ .from(posts)
304
+ .leftJoin(users, eq(posts.authorId, users.id));
305
+ ```
306
+
307
+ ### Relational Queries (Recommended)
308
+
309
+ **Define relations first:**
310
+ ```typescript
311
+ import { relations } from 'drizzle-orm';
312
+
313
+ export const usersRelations = relations(users, ({ many }) => ({
314
+ posts: many(posts),
315
+ }));
316
+
317
+ export const postsRelations = relations(posts, ({ one }) => ({
318
+ author: one(users, {
319
+ fields: [posts.authorId],
320
+ references: [users.id],
321
+ }),
322
+ }));
323
+ ```
324
+
325
+ **Query with relations:**
326
+ ```typescript
327
+ const usersWithPosts = await db.query.users.findMany({
328
+ with: {
329
+ posts: true,
330
+ },
331
+ });
332
+
333
+ console.log(usersWithPosts[0].posts); // Array of posts
334
+ ```
335
+
336
+ **Nested relations:**
337
+ ```typescript
338
+ const postsWithAuthorsAndComments = await db.query.posts.findMany({
339
+ with: {
340
+ author: true,
341
+ comments: {
342
+ with: {
343
+ author: true,
344
+ },
345
+ },
346
+ },
347
+ });
348
+ ```
349
+
350
+ **Filtered relations:**
351
+ ```typescript
352
+ const usersWithRecentPosts = await db.query.users.findMany({
353
+ with: {
354
+ posts: {
355
+ where: gt(posts.createdAt, new Date('2024-01-01')),
356
+ orderBy: desc(posts.createdAt),
357
+ limit: 5,
358
+ },
359
+ },
360
+ });
361
+ ```
362
+
363
+ **Partial selection:**
364
+ ```typescript
365
+ const usersWithPostTitles = await db.query.users.findMany({
366
+ columns: {
367
+ id: true,
368
+ name: true,
369
+ },
370
+ with: {
371
+ posts: {
372
+ columns: {
373
+ id: true,
374
+ title: true,
375
+ },
376
+ },
377
+ },
378
+ });
379
+ ```
380
+
381
+ ## Aggregations
382
+
383
+ ### Count
384
+
385
+ ```typescript
386
+ import { count } from 'drizzle-orm';
387
+
388
+ const userCount = await db.select({
389
+ count: count(),
390
+ }).from(users);
391
+
392
+ console.log(userCount[0].count); // Total users
393
+ ```
394
+
395
+ **Count with grouping:**
396
+ ```typescript
397
+ const postsByAuthor = await db.select({
398
+ authorId: posts.authorId,
399
+ postCount: count(),
400
+ })
401
+ .from(posts)
402
+ .groupBy(posts.authorId);
403
+ ```
404
+
405
+ ### Sum, Avg, Min, Max
406
+
407
+ ```typescript
408
+ import { sum, avg, min, max } from 'drizzle-orm';
409
+
410
+ const stats = await db.select({
411
+ totalViews: sum(posts.views),
412
+ avgViews: avg(posts.views),
413
+ minViews: min(posts.views),
414
+ maxViews: max(posts.views),
415
+ }).from(posts);
416
+ ```
417
+
418
+ ### Having
419
+
420
+ ```typescript
421
+ const activeAuthors = await db.select({
422
+ authorId: posts.authorId,
423
+ postCount: count(),
424
+ })
425
+ .from(posts)
426
+ .groupBy(posts.authorId)
427
+ .having(gt(count(), 5)); // Authors with > 5 posts
428
+ ```
429
+
430
+ ## Subqueries
431
+
432
+ ### In WHERE clause
433
+
434
+ ```typescript
435
+ const activeUserIds = db.select({ id: users.id })
436
+ .from(users)
437
+ .where(eq(users.isActive, true));
438
+
439
+ const postsFromActiveUsers = await db.select()
440
+ .from(posts)
441
+ .where(inArray(posts.authorId, activeUserIds));
442
+ ```
443
+
444
+ ### As derived table
445
+
446
+ ```typescript
447
+ const recentPosts = db.select()
448
+ .from(posts)
449
+ .where(gt(posts.createdAt, new Date('2024-01-01')))
450
+ .as('recentPosts');
451
+
452
+ const authorsOfRecentPosts = await db.select()
453
+ .from(users)
454
+ .innerJoin(recentPosts, eq(users.id, recentPosts.authorId));
455
+ ```
456
+
457
+ ## Transactions
458
+
459
+ **Only available with WebSocket adapter!**
460
+
461
+ ```typescript
462
+ await db.transaction(async (tx) => {
463
+ const user = await tx.insert(users)
464
+ .values({ email: 'user@example.com', name: 'John' })
465
+ .returning();
466
+
467
+ await tx.insert(posts)
468
+ .values({
469
+ authorId: user[0].id,
470
+ title: 'First post',
471
+ content: 'Hello world',
472
+ });
473
+ });
474
+ ```
475
+
476
+ **With error handling:**
477
+ ```typescript
478
+ try {
479
+ await db.transaction(async (tx) => {
480
+ await tx.insert(users).values({ email: 'user@example.com' });
481
+ await tx.insert(posts).values({ title: 'Post' });
482
+
483
+ throw new Error('Rollback!'); // Transaction rolls back
484
+ });
485
+ } catch (err) {
486
+ console.error('Transaction failed:', err);
487
+ }
488
+ ```
489
+
490
+ **Nested transactions:**
491
+ ```typescript
492
+ await db.transaction(async (tx) => {
493
+ await tx.insert(users).values({ email: 'user1@example.com' });
494
+
495
+ await tx.transaction(async (tx2) => {
496
+ await tx2.insert(posts).values({ title: 'Post 1' });
497
+ });
498
+ });
499
+ ```
500
+
501
+ ## Batch Operations
502
+
503
+ **HTTP adapter alternative to transactions:**
504
+ ```typescript
505
+ await db.batch([
506
+ db.insert(users).values({ email: 'user1@example.com' }),
507
+ db.insert(users).values({ email: 'user2@example.com' }),
508
+ db.insert(posts).values({ title: 'Post 1' }),
509
+ ]);
510
+ ```
511
+
512
+ **Note:** Not atomic! Use transactions if you need rollback capability.
513
+
514
+ ## Raw SQL
515
+
516
+ ### Execute raw query
517
+
518
+ ```typescript
519
+ import { sql } from 'drizzle-orm';
520
+
521
+ const result = await db.execute(sql`
522
+ SELECT * FROM users
523
+ WHERE email LIKE ${'%@gmail.com'}
524
+ `);
525
+ ```
526
+
527
+ ### SQL in WHERE clause
528
+
529
+ ```typescript
530
+ const users = await db.select()
531
+ .from(users)
532
+ .where(sql`${users.email} LIKE '%@gmail.com'`);
533
+ ```
534
+
535
+ ### SQL expressions
536
+
537
+ ```typescript
538
+ const posts = await db.select({
539
+ id: posts.id,
540
+ title: posts.title,
541
+ excerpt: sql<string>`LEFT(${posts.content}, 100)`,
542
+ }).from(posts);
543
+ ```
544
+
545
+ ### Custom functions
546
+
547
+ ```typescript
548
+ const searchResults = await db.select()
549
+ .from(posts)
550
+ .where(
551
+ sql`to_tsvector('english', ${posts.content}) @@ to_tsquery('english', ${'search query'})`
552
+ );
553
+ ```
554
+
555
+ ## Performance Optimization
556
+
557
+ ### Select only needed columns
558
+
559
+ ❌ **Bad:**
560
+ ```typescript
561
+ const users = await db.select().from(users); // All columns
562
+ ```
563
+
564
+ ✅ **Good:**
565
+ ```typescript
566
+ const users = await db.select({
567
+ id: users.id,
568
+ email: users.email,
569
+ }).from(users);
570
+ ```
571
+
572
+ ### Use indexes
573
+
574
+ **Ensure indexed columns in WHERE:**
575
+ ```typescript
576
+ // Assuming index on users.email
577
+ const user = await db.select()
578
+ .from(users)
579
+ .where(eq(users.email, 'user@example.com')); // Fast
580
+ ```
581
+
582
+ ### Avoid N+1 queries
583
+
584
+ ❌ **Bad:**
585
+ ```typescript
586
+ const posts = await db.select().from(posts);
587
+
588
+ for (const post of posts) {
589
+ const author = await db.select()
590
+ .from(users)
591
+ .where(eq(users.id, post.authorId)); // N queries!
592
+ }
593
+ ```
594
+
595
+ ✅ **Good:**
596
+ ```typescript
597
+ const posts = await db.query.posts.findMany({
598
+ with: {
599
+ author: true, // Single query with join
600
+ },
601
+ });
602
+ ```
603
+
604
+ ### Use pagination
605
+
606
+ ```typescript
607
+ async function getPaginatedUsers(page: number, pageSize: number = 10) {
608
+ return db.select()
609
+ .from(users)
610
+ .limit(pageSize)
611
+ .offset((page - 1) * pageSize);
612
+ }
613
+ ```
614
+
615
+ ### Batch inserts
616
+
617
+ ❌ **Bad:**
618
+ ```typescript
619
+ for (const user of users) {
620
+ await db.insert(users).values(user); // N queries
621
+ }
622
+ ```
623
+
624
+ ✅ **Good:**
625
+ ```typescript
626
+ await db.insert(users).values(users); // Single query
627
+ ```
628
+
629
+ ## Type Safety
630
+
631
+ ### Infer types from schema
632
+
633
+ ```typescript
634
+ type User = typeof users.$inferSelect;
635
+ type NewUser = typeof users.$inferInsert;
636
+
637
+ const user: User = {
638
+ id: 1,
639
+ email: 'user@example.com',
640
+ name: 'John',
641
+ createdAt: new Date(),
642
+ };
643
+
644
+ const newUser: NewUser = {
645
+ email: 'user@example.com',
646
+ name: 'John',
647
+ };
648
+ ```
649
+
650
+ ### Type-safe WHERE conditions
651
+
652
+ ```typescript
653
+ function getUsersByStatus(status: User['status']) {
654
+ return db.select()
655
+ .from(users)
656
+ .where(eq(users.status, status));
657
+ }
658
+ ```
659
+
660
+ ### Type-safe updates
661
+
662
+ ```typescript
663
+ function updateUser(id: number, data: Partial<NewUser>) {
664
+ return db.update(users)
665
+ .set(data)
666
+ .where(eq(users.id, id))
667
+ .returning();
668
+ }
669
+ ```
670
+
671
+ ## Common Patterns
672
+
673
+ ### Soft deletes
674
+
675
+ **Schema:**
676
+ ```typescript
677
+ export const posts = pgTable('posts', {
678
+ id: serial('id').primaryKey(),
679
+ title: text('title').notNull(),
680
+ deletedAt: timestamp('deleted_at'),
681
+ });
682
+ ```
683
+
684
+ **Queries:**
685
+ ```typescript
686
+ const activePosts = await db.select()
687
+ .from(posts)
688
+ .where(isNull(posts.deletedAt));
689
+
690
+ const deletedPosts = await db.select()
691
+ .from(posts)
692
+ .where(isNotNull(posts.deletedAt));
693
+ ```
694
+
695
+ ### Timestamps
696
+
697
+ **Auto-update:**
698
+ ```typescript
699
+ async function updatePost(id: number, data: Partial<NewPost>) {
700
+ return db.update(posts)
701
+ .set({
702
+ ...data,
703
+ updatedAt: new Date(),
704
+ })
705
+ .where(eq(posts.id, id))
706
+ .returning();
707
+ }
708
+ ```
709
+
710
+ ### Search
711
+
712
+ **Simple search:**
713
+ ```typescript
714
+ const searchUsers = await db.select()
715
+ .from(users)
716
+ .where(
717
+ or(
718
+ ilike(users.name, `%${query}%`),
719
+ ilike(users.email, `%${query}%`)
720
+ )
721
+ );
722
+ ```
723
+
724
+ **Full-text search:**
725
+ ```typescript
726
+ const searchPosts = await db.select()
727
+ .from(posts)
728
+ .where(
729
+ sql`to_tsvector('english', ${posts.title} || ' ' || ${posts.content}) @@ plainto_tsquery('english', ${query})`
730
+ );
731
+ ```
732
+
733
+ ### Unique constraints
734
+
735
+ **Handle duplicates:**
736
+ ```typescript
737
+ try {
738
+ await db.insert(users).values({ email: 'user@example.com' });
739
+ } catch (err) {
740
+ if (err.code === '23505') { // Unique violation
741
+ console.error('Email already exists');
742
+ }
743
+ }
744
+ ```
745
+
746
+ **Or use upsert:**
747
+ ```typescript
748
+ await db.insert(users)
749
+ .values({ email: 'user@example.com', name: 'John' })
750
+ .onConflictDoUpdate({
751
+ target: users.email,
752
+ set: { name: 'John Updated' },
753
+ });
754
+ ```
755
+
756
+ ## Related Resources
757
+
758
+ - `guides/schema-only.md` - Schema design patterns
759
+ - `references/adapters.md` - Transaction availability by adapter
760
+ - `guides/troubleshooting.md` - Query error solutions
761
+ - `templates/schema-example.ts` - Complete schema with relations