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.
- package/.agents/skills/agent-browser/SKILL.md +55 -0
- package/.agents/skills/agentmail/SKILL.md +282 -0
- package/.agents/skills/agentmail/references/webhooks.md +220 -0
- package/.agents/skills/agentmail/references/websockets.md +263 -0
- package/.agents/skills/ai-elements/SKILL.md +160 -0
- package/.agents/skills/ai-elements/references/agent.md +134 -0
- package/.agents/skills/ai-elements/references/artifact.md +84 -0
- package/.agents/skills/ai-elements/references/attachments.md +190 -0
- package/.agents/skills/ai-elements/references/audio-player.md +134 -0
- package/.agents/skills/ai-elements/references/canvas.md +34 -0
- package/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
- package/.agents/skills/ai-elements/references/checkpoint.md +183 -0
- package/.agents/skills/ai-elements/references/code-block.md +170 -0
- package/.agents/skills/ai-elements/references/commit.md +177 -0
- package/.agents/skills/ai-elements/references/confirmation.md +262 -0
- package/.agents/skills/ai-elements/references/connection.md +34 -0
- package/.agents/skills/ai-elements/references/context.md +126 -0
- package/.agents/skills/ai-elements/references/controls.md +32 -0
- package/.agents/skills/ai-elements/references/conversation.md +224 -0
- package/.agents/skills/ai-elements/references/edge.md +52 -0
- package/.agents/skills/ai-elements/references/environment-variables.md +102 -0
- package/.agents/skills/ai-elements/references/file-tree.md +72 -0
- package/.agents/skills/ai-elements/references/image.md +146 -0
- package/.agents/skills/ai-elements/references/inline-citation.md +299 -0
- package/.agents/skills/ai-elements/references/jsx-preview.md +104 -0
- package/.agents/skills/ai-elements/references/message.md +237 -0
- package/.agents/skills/ai-elements/references/mic-selector.md +189 -0
- package/.agents/skills/ai-elements/references/model-selector.md +112 -0
- package/.agents/skills/ai-elements/references/node.md +73 -0
- package/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
- package/.agents/skills/ai-elements/references/package-info.md +95 -0
- package/.agents/skills/ai-elements/references/panel.md +33 -0
- package/.agents/skills/ai-elements/references/persona.md +166 -0
- package/.agents/skills/ai-elements/references/plan.md +79 -0
- package/.agents/skills/ai-elements/references/prompt-input.md +579 -0
- package/.agents/skills/ai-elements/references/queue.md +172 -0
- package/.agents/skills/ai-elements/references/reasoning.md +238 -0
- package/.agents/skills/ai-elements/references/sandbox.md +129 -0
- package/.agents/skills/ai-elements/references/schema-display.md +102 -0
- package/.agents/skills/ai-elements/references/shimmer.md +48 -0
- package/.agents/skills/ai-elements/references/snippet.md +64 -0
- package/.agents/skills/ai-elements/references/sources.md +209 -0
- package/.agents/skills/ai-elements/references/speech-input.md +163 -0
- package/.agents/skills/ai-elements/references/stack-trace.md +224 -0
- package/.agents/skills/ai-elements/references/suggestion.md +124 -0
- package/.agents/skills/ai-elements/references/task.md +222 -0
- package/.agents/skills/ai-elements/references/terminal.md +103 -0
- package/.agents/skills/ai-elements/references/test-results.md +157 -0
- package/.agents/skills/ai-elements/references/tool.md +285 -0
- package/.agents/skills/ai-elements/references/toolbar.md +32 -0
- package/.agents/skills/ai-elements/references/transcription.md +120 -0
- package/.agents/skills/ai-elements/references/voice-selector.md +241 -0
- package/.agents/skills/ai-elements/references/web-preview.md +200 -0
- package/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
- package/.agents/skills/ai-elements/scripts/artifact.tsx +127 -0
- package/.agents/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
- package/.agents/skills/ai-elements/scripts/attachments-list.tsx +95 -0
- package/.agents/skills/ai-elements/scripts/attachments.tsx +85 -0
- package/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/.agents/skills/ai-elements/scripts/audio-player.tsx +68 -0
- package/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/checkpoint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/.agents/skills/ai-elements/scripts/code-block.tsx +120 -0
- package/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
- package/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/.agents/skills/ai-elements/scripts/confirmation.tsx +55 -0
- package/.agents/skills/ai-elements/scripts/context.tsx +45 -0
- package/.agents/skills/ai-elements/scripts/conversation.tsx +177 -0
- package/.agents/skills/ai-elements/scripts/environment-variables.tsx +62 -0
- package/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
- package/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
- package/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
- package/.agents/skills/ai-elements/scripts/file-tree.tsx +42 -0
- package/.agents/skills/ai-elements/scripts/image.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/inline-citation.tsx +97 -0
- package/.agents/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
- package/.agents/skills/ai-elements/scripts/message.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/mic-selector.tsx +49 -0
- package/.agents/skills/ai-elements/scripts/model-selector.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/.agents/skills/ai-elements/scripts/package-info.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/persona-command.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-glint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-halo.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-mana.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-opal.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/plan.tsx +65 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/prompt-input.tsx +267 -0
- package/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
- package/.agents/skills/ai-elements/scripts/queue.tsx +295 -0
- package/.agents/skills/ai-elements/scripts/reasoning.tsx +71 -0
- package/.agents/skills/ai-elements/scripts/sandbox.tsx +178 -0
- package/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
- package/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
- package/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
- package/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
- package/.agents/skills/ai-elements/scripts/sources-custom.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/sources.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/speech-input.tsx +84 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/.agents/skills/ai-elements/scripts/stack-trace.tsx +58 -0
- package/.agents/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
- package/.agents/skills/ai-elements/scripts/suggestion.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/task.tsx +59 -0
- package/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/.agents/skills/ai-elements/scripts/terminal.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/test-results.tsx +102 -0
- package/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/.agents/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
- package/.agents/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/tool.tsx +222 -0
- package/.agents/skills/ai-elements/scripts/transcription.tsx +290 -0
- package/.agents/skills/ai-elements/scripts/voice-selector.tsx +245 -0
- package/.agents/skills/ai-elements/scripts/web-preview.tsx +115 -0
- package/.agents/skills/ai-sdk/SKILL.md +78 -0
- package/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/.agents/skills/ai-sdk/references/common-errors.md +443 -0
- package/.agents/skills/ai-sdk/references/devtools.md +52 -0
- package/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/.agents/skills/chat-sdk/SKILL.md +240 -0
- package/.agents/skills/composio/AGENTS.md +404 -0
- package/.agents/skills/composio/SKILL.md +55 -0
- package/.agents/skills/composio/rules/_template.md +38 -0
- package/.agents/skills/composio/rules/app-auth-configs.md +224 -0
- package/.agents/skills/composio/rules/app-auth-popup-ui.md +143 -0
- package/.agents/skills/composio/rules/app-connected-accounts.md +240 -0
- package/.agents/skills/composio/rules/app-custom-tools.md +220 -0
- package/.agents/skills/composio/rules/app-execute-tools.md +202 -0
- package/.agents/skills/composio/rules/app-fetch-tools.md +292 -0
- package/.agents/skills/composio/rules/app-modifiers.md +148 -0
- package/.agents/skills/composio/rules/app-tool-versions.md +343 -0
- package/.agents/skills/composio/rules/app-toolkits.md +184 -0
- package/.agents/skills/composio/rules/app-user-context.md +222 -0
- package/.agents/skills/composio/rules/building-with-composio.md +134 -0
- package/.agents/skills/composio/rules/composio-cli.md +223 -0
- package/.agents/skills/composio/rules/setup-api-keys.md +230 -0
- package/.agents/skills/composio/rules/tr-auth-auto.md +110 -0
- package/.agents/skills/composio/rules/tr-auth-connections.md +167 -0
- package/.agents/skills/composio/rules/tr-auth-manual.md +161 -0
- package/.agents/skills/composio/rules/tr-building-chat-ui.md +348 -0
- package/.agents/skills/composio/rules/tr-framework-ai-sdk.md +240 -0
- package/.agents/skills/composio/rules/tr-framework-integration.md +818 -0
- package/.agents/skills/composio/rules/tr-framework-mastra.md +185 -0
- package/.agents/skills/composio/rules/tr-mcp-vs-native.md +248 -0
- package/.agents/skills/composio/rules/tr-session-basic.md +82 -0
- package/.agents/skills/composio/rules/tr-session-config.md +172 -0
- package/.agents/skills/composio/rules/tr-session-lifecycle.md +385 -0
- package/.agents/skills/composio/rules/tr-toolkit-query.md +135 -0
- package/.agents/skills/composio/rules/tr-userid-best-practices.md +476 -0
- package/.agents/skills/composio/rules/triggers-create.md +246 -0
- package/.agents/skills/composio/rules/triggers-manage.md +275 -0
- package/.agents/skills/composio/rules/triggers-subscribe.md +173 -0
- package/.agents/skills/composio/rules/triggers-webhook.md +227 -0
- package/.agents/skills/create-auth-skill/SKILL.md +321 -0
- package/.agents/skills/design-md/README.md +34 -0
- package/.agents/skills/design-md/SKILL.md +172 -0
- package/.agents/skills/design-md/examples/DESIGN.md +154 -0
- package/.agents/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/.agents/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/.agents/skills/find-skills/SKILL.md +142 -0
- package/.agents/skills/firecrawl/SKILL.md +321 -0
- package/.agents/skills/firecrawl/rules/install.md +85 -0
- package/.agents/skills/firecrawl/rules/security.md +26 -0
- package/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/.agents/skills/frontend-design/SKILL.md +55 -0
- package/.agents/skills/linkup-search/SKILL.md +298 -0
- package/.agents/skills/mcp-builder/LICENSE.txt +202 -0
- package/.agents/skills/mcp-builder/SKILL.md +236 -0
- package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.agents/skills/mobile-android-design/SKILL.md +101 -0
- package/.agents/skills/mobile-android-design/references/android-navigation.md +698 -0
- package/.agents/skills/mobile-android-design/references/compose-components.md +796 -0
- package/.agents/skills/mobile-android-design/references/details.md +337 -0
- package/.agents/skills/mobile-android-design/references/material3-theming.md +604 -0
- package/.agents/skills/mobile-ios-design/SKILL.md +259 -0
- package/.agents/skills/mobile-ios-design/references/hig-patterns.md +529 -0
- package/.agents/skills/mobile-ios-design/references/ios-navigation.md +556 -0
- package/.agents/skills/mobile-ios-design/references/swiftui-components.md +575 -0
- package/.agents/skills/neon-drizzle/SKILL.md +81 -0
- package/.agents/skills/neon-drizzle/guides/existing-project.md +398 -0
- package/.agents/skills/neon-drizzle/guides/new-project.md +312 -0
- package/.agents/skills/neon-drizzle/guides/schema-only.md +415 -0
- package/.agents/skills/neon-drizzle/guides/troubleshooting.md +539 -0
- package/.agents/skills/neon-drizzle/references/adapters.md +478 -0
- package/.agents/skills/neon-drizzle/references/migrations.md +652 -0
- package/.agents/skills/neon-drizzle/references/query-patterns.md +761 -0
- package/.agents/skills/neon-drizzle/scripts/generate-schema.ts +77 -0
- package/.agents/skills/neon-drizzle/scripts/run-migration.ts +133 -0
- package/.agents/skills/neon-drizzle/templates/db-http.ts +6 -0
- package/.agents/skills/neon-drizzle/templates/db-websocket.ts +24 -0
- package/.agents/skills/neon-drizzle/templates/drizzle-config.ts +96 -0
- package/.agents/skills/neon-drizzle/templates/schema-example.ts +231 -0
- package/.agents/skills/neon-postgres/SKILL.md +376 -0
- package/.agents/skills/next-best-practices/SKILL.md +152 -0
- package/.agents/skills/next-best-practices/async-patterns.md +87 -0
- package/.agents/skills/next-best-practices/bundling.md +180 -0
- package/.agents/skills/next-best-practices/data-patterns.md +297 -0
- package/.agents/skills/next-best-practices/debug-tricks.md +105 -0
- package/.agents/skills/next-best-practices/directives.md +73 -0
- package/.agents/skills/next-best-practices/error-handling.md +227 -0
- package/.agents/skills/next-best-practices/file-conventions.md +140 -0
- package/.agents/skills/next-best-practices/font.md +245 -0
- package/.agents/skills/next-best-practices/functions.md +108 -0
- package/.agents/skills/next-best-practices/hydration-error.md +91 -0
- package/.agents/skills/next-best-practices/image.md +173 -0
- package/.agents/skills/next-best-practices/metadata.md +301 -0
- package/.agents/skills/next-best-practices/parallel-routes.md +287 -0
- package/.agents/skills/next-best-practices/route-handlers.md +146 -0
- package/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/.agents/skills/next-best-practices/runtime-selection.md +39 -0
- package/.agents/skills/next-best-practices/scripts.md +141 -0
- package/.agents/skills/next-best-practices/self-hosting.md +371 -0
- package/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
- package/.agents/skills/playwright-cli/SKILL.md +404 -0
- package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
- package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
- package/.agents/skills/playwright-cli/references/running-code.md +241 -0
- package/.agents/skills/playwright-cli/references/session-management.md +225 -0
- package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
- package/.agents/skills/playwright-cli/references/test-generation.md +134 -0
- package/.agents/skills/playwright-cli/references/tracing.md +139 -0
- package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
- package/.agents/skills/prisma-client-api/SKILL.md +216 -0
- package/.agents/skills/prisma-client-api/references/client-methods.md +223 -0
- package/.agents/skills/prisma-client-api/references/constructor.md +208 -0
- package/.agents/skills/prisma-client-api/references/filters.md +256 -0
- package/.agents/skills/prisma-client-api/references/model-queries.md +281 -0
- package/.agents/skills/prisma-client-api/references/query-options.md +276 -0
- package/.agents/skills/prisma-client-api/references/raw-queries.md +194 -0
- package/.agents/skills/prisma-client-api/references/relations.md +308 -0
- package/.agents/skills/prisma-client-api/references/transactions.md +184 -0
- package/.agents/skills/prisma-database-setup/SKILL.md +192 -0
- package/.agents/skills/prisma-database-setup/references/cockroachdb.md +89 -0
- package/.agents/skills/prisma-database-setup/references/mongodb.md +90 -0
- package/.agents/skills/prisma-database-setup/references/mysql.md +126 -0
- package/.agents/skills/prisma-database-setup/references/postgresql.md +92 -0
- package/.agents/skills/prisma-database-setup/references/prisma-client-setup.md +47 -0
- package/.agents/skills/prisma-database-setup/references/prisma-postgres.md +130 -0
- package/.agents/skills/prisma-database-setup/references/sqlite.md +106 -0
- package/.agents/skills/prisma-database-setup/references/sqlserver.md +94 -0
- package/.agents/skills/prisma-postgres/SKILL.md +127 -0
- package/.agents/skills/prisma-postgres/references/console-and-connections.md +67 -0
- package/.agents/skills/prisma-postgres/references/create-db-cli.md +136 -0
- package/.agents/skills/prisma-postgres/references/management-api-sdk.md +56 -0
- package/.agents/skills/prisma-postgres/references/management-api.md +61 -0
- package/.agents/skills/remotion-best-practices/SKILL.md +340 -0
- package/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
- package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
- package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/.agents/skills/remotion-best-practices/rules/compositions.md +133 -0
- package/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/.agents/skills/remotion-best-practices/rules/google-fonts.md +72 -0
- package/.agents/skills/remotion-best-practices/rules/html-in-canvas.md +122 -0
- package/.agents/skills/remotion-best-practices/rules/images.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/.agents/skills/remotion-best-practices/rules/local-fonts.md +65 -0
- package/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/maplibre.md +458 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
- package/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
- package/.agents/skills/remotion-best-practices/rules/sequencing.md +144 -0
- package/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
- package/.agents/skills/remotion-best-practices/rules/silence-detection.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/.agents/skills/remotion-best-practices/rules/timing.md +136 -0
- package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
- package/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
- package/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
- package/.agents/skills/remotion-render/SKILL.md +212 -0
- package/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/.agents/skills/skill-creator/SKILL.md +485 -0
- package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/.agents/skills/stripe-best-practices/SKILL.md +54 -0
- package/.agents/skills/stripe-best-practices/references/billing.md +58 -0
- package/.agents/skills/stripe-best-practices/references/connect.md +173 -0
- package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
- package/.agents/skills/stripe-best-practices/references/security.md +109 -0
- package/.agents/skills/stripe-best-practices/references/tax.md +37 -0
- package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.agents/skills/stripe-projects/SKILL.md +132 -0
- package/.agents/skills/supabase/CHANGELOG.md +35 -0
- package/.agents/skills/supabase/SKILL.md +135 -0
- package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/.agents/skills/supermemory/LICENSE +201 -0
- package/.agents/skills/supermemory/README.md +221 -0
- package/.agents/skills/supermemory/SKILL.md +172 -0
- package/.agents/skills/supermemory/references/api-reference.md +591 -0
- package/.agents/skills/supermemory/references/architecture.md +557 -0
- package/.agents/skills/supermemory/references/quickstart.md +293 -0
- package/.agents/skills/supermemory/references/sdk-guide.md +655 -0
- package/.agents/skills/supermemory/references/use-cases.md +1033 -0
- package/.agents/skills/supermemory-cli/SKILL.md +490 -0
- package/.agents/skills/tdd/SKILL.md +108 -0
- package/.agents/skills/tdd/mocking.md +59 -0
- package/.agents/skills/tdd/refactoring.md +10 -0
- package/.agents/skills/tdd/tests.md +61 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +661 -0
- package/.agents/skills/ui-ux-pro-max/data +1 -0
- package/.agents/skills/ui-ux-pro-max/scripts +1 -0
- package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
- package/.agents/skills/vercel-react-native-skills/README.md +165 -0
- package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
- package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
- package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
- package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +19 -4
- package/dist/cli/update.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/daytona-browser.tool.js +1 -1
- package/dist/tools/daytona-browser.tool.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
# Existing Project Integration
|
|
2
|
+
|
|
3
|
+
> **Complete Walkthrough**: This is a self-contained, step-by-step guide with its own numbered phases (Phase 1-8).
|
|
4
|
+
> Follow each phase in order to safely add Drizzle to your existing application.
|
|
5
|
+
|
|
6
|
+
Guide for adding Drizzle ORM to an existing application with Neon.
|
|
7
|
+
|
|
8
|
+
### Important:
|
|
9
|
+
- Remember to run the neon-plugin:add-neon-docs skill with the parameter SKILL_NAME="neon-drizzle" after completing the guide.
|
|
10
|
+
|
|
11
|
+
## Table of Contents
|
|
12
|
+
|
|
13
|
+
- [Workflow Checklist](#workflow-checklist)
|
|
14
|
+
- [Phase 1: Pre-Integration Check](#phase-1-pre-integration-check)
|
|
15
|
+
- [Phase 2: Incremental Installation](#phase-2-incremental-installation)
|
|
16
|
+
- [Phase 3: Configuration](#phase-3-configuration)
|
|
17
|
+
- [Phase 4: Schema Strategy](#phase-4-schema-strategy)
|
|
18
|
+
- [Phase 5: Migration Handling](#phase-5-migration-handling)
|
|
19
|
+
- [Phase 6: Coexistence Patterns](#phase-6-coexistence-patterns)
|
|
20
|
+
- [Phase 7: Verification](#phase-7-verification)
|
|
21
|
+
- [Phase 8: Add Best Practices References](#phase-8-add-best-practices-references)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Workflow Checklist
|
|
26
|
+
|
|
27
|
+
When following this guide, I will track these high-level tasks:
|
|
28
|
+
|
|
29
|
+
- [ ] Pre-integration check (detect existing ORMs, database schema, environment)
|
|
30
|
+
- [ ] Install Drizzle dependencies without disrupting existing setup
|
|
31
|
+
- [ ] Create isolated Drizzle configuration (separate from existing code)
|
|
32
|
+
- [ ] Choose and implement schema strategy (new tables vs mirroring existing)
|
|
33
|
+
- [ ] Handle migrations safely based on schema strategy
|
|
34
|
+
- [ ] Set up coexistence patterns and gradual migration approach
|
|
35
|
+
- [ ] Verify Drizzle integration without breaking existing functionality
|
|
36
|
+
- [ ] Add Neon Drizzle best practices to project docs
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Phase 1: Pre-Integration Check
|
|
41
|
+
|
|
42
|
+
Before adding Drizzle, check for conflicts:
|
|
43
|
+
|
|
44
|
+
### 1.1. Check for Other ORMs
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
grep -E '"(prisma|typeorm|sequelize|mongoose)"' package.json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**If found:**
|
|
51
|
+
- Consider migration strategy (coexistence vs replacement)
|
|
52
|
+
- Document which tables use which ORM
|
|
53
|
+
- Plan gradual migration if needed
|
|
54
|
+
|
|
55
|
+
### 1.2. Check Database Schema
|
|
56
|
+
|
|
57
|
+
Connect to your database and verify existing tables:
|
|
58
|
+
```bash
|
|
59
|
+
psql $DATABASE_URL -c "\dt"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Important:** Note existing tables - Drizzle should not conflict with them.
|
|
63
|
+
|
|
64
|
+
### 1.3. Check Environment Setup
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ls .env .env.local .env.production
|
|
68
|
+
grep DATABASE_URL .env*
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**If DATABASE_URL exists:**
|
|
72
|
+
- Verify connection string format is compatible with Neon (`postgresql://...`)
|
|
73
|
+
- If it's a different database provider, you'll need to migrate or provision a Neon database
|
|
74
|
+
|
|
75
|
+
**If DATABASE_URL does NOT exist:**
|
|
76
|
+
Follow the database provisioning steps from `guides/new-project.md` Phase 3.1:
|
|
77
|
+
1. List the projects using the neon MCP Server to check existing projects
|
|
78
|
+
2. Create a new project using the neon MCP Server if needed
|
|
79
|
+
3. Get the connection string using the neon MCP Server
|
|
80
|
+
4. Write to appropriate environment file (.env.local for Next.js, .env for others)
|
|
81
|
+
5. Add environment file to .gitignore
|
|
82
|
+
|
|
83
|
+
## Phase 2: Incremental Installation
|
|
84
|
+
|
|
85
|
+
Add Drizzle without disrupting existing setup:
|
|
86
|
+
|
|
87
|
+
### 2.1. Install Dependencies
|
|
88
|
+
|
|
89
|
+
**For Vercel/Edge:**
|
|
90
|
+
```bash
|
|
91
|
+
[package-manager] add drizzle-orm @neondatabase/serverless
|
|
92
|
+
[package-manager] add -D drizzle-kit dotenv
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**For Node.js:**
|
|
96
|
+
```bash
|
|
97
|
+
[package-manager] add drizzle-orm @neondatabase/serverless ws
|
|
98
|
+
[package-manager] add -D drizzle-kit dotenv @types/ws
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 2.2. Create Isolated Drizzle Directory
|
|
102
|
+
|
|
103
|
+
Keep Drizzle separate from existing code:
|
|
104
|
+
```bash
|
|
105
|
+
mkdir -p src/drizzle
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Structure:
|
|
109
|
+
```
|
|
110
|
+
src/drizzle/
|
|
111
|
+
├── index.ts # Connection
|
|
112
|
+
├── schema.ts # New schemas only
|
|
113
|
+
└── migrations/ # Drizzle migrations
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Phase 3: Configuration
|
|
117
|
+
|
|
118
|
+
### 3.1. Create Drizzle Config
|
|
119
|
+
|
|
120
|
+
Create `drizzle.config.ts` with explicit environment loading:
|
|
121
|
+
|
|
122
|
+
**CRITICAL:** The `config({ path: '...' })` must match your environment file name.
|
|
123
|
+
|
|
124
|
+
**For Next.js (using .env.local):**
|
|
125
|
+
```typescript
|
|
126
|
+
import { defineConfig } from 'drizzle-kit';
|
|
127
|
+
import { config } from 'dotenv';
|
|
128
|
+
|
|
129
|
+
// Load .env.local explicitly
|
|
130
|
+
config({ path: '.env.local' });
|
|
131
|
+
|
|
132
|
+
export default defineConfig({
|
|
133
|
+
schema: './src/drizzle/schema.ts',
|
|
134
|
+
out: './src/drizzle/migrations',
|
|
135
|
+
dialect: 'postgresql',
|
|
136
|
+
dbCredentials: {
|
|
137
|
+
url: process.env.DATABASE_URL!,
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**For other projects (using .env):**
|
|
143
|
+
```typescript
|
|
144
|
+
import { defineConfig } from 'drizzle-kit';
|
|
145
|
+
import { config } from 'dotenv';
|
|
146
|
+
|
|
147
|
+
// Load .env explicitly
|
|
148
|
+
config({ path: '.env' });
|
|
149
|
+
|
|
150
|
+
export default defineConfig({
|
|
151
|
+
schema: './src/drizzle/schema.ts',
|
|
152
|
+
out: './src/drizzle/migrations',
|
|
153
|
+
dialect: 'postgresql',
|
|
154
|
+
dbCredentials: {
|
|
155
|
+
url: process.env.DATABASE_URL!,
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Notes:**
|
|
161
|
+
- Point schema and migrations to `src/drizzle/` to avoid conflicts with existing code
|
|
162
|
+
- Explicit dotenv path prevents "url: undefined" errors during migrations
|
|
163
|
+
|
|
164
|
+
### 3.2. Create Connection
|
|
165
|
+
|
|
166
|
+
`src/drizzle/index.ts` - Choose adapter based on environment (see `references/adapters.md`):
|
|
167
|
+
|
|
168
|
+
**HTTP (Vercel/Edge):**
|
|
169
|
+
```typescript
|
|
170
|
+
import { drizzle } from 'drizzle-orm/neon-http';
|
|
171
|
+
import { neon } from '@neondatabase/serverless';
|
|
172
|
+
|
|
173
|
+
const sql = neon(process.env.DATABASE_URL!);
|
|
174
|
+
export const drizzleDb = drizzle(sql);
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**WebSocket (Node.js):**
|
|
178
|
+
```typescript
|
|
179
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
180
|
+
import { Pool, neonConfig } from '@neondatabase/serverless';
|
|
181
|
+
import ws from 'ws';
|
|
182
|
+
|
|
183
|
+
neonConfig.webSocketConstructor = ws;
|
|
184
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL! });
|
|
185
|
+
export const drizzleDb = drizzle(pool);
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Important:** Name export as `drizzleDb` to avoid conflicts with existing `db` exports.
|
|
189
|
+
|
|
190
|
+
## Phase 4: Schema Strategy
|
|
191
|
+
|
|
192
|
+
Choose integration approach:
|
|
193
|
+
|
|
194
|
+
### 4.1. Option A: New Tables Only
|
|
195
|
+
|
|
196
|
+
Create schemas for new features only, leave existing tables alone:
|
|
197
|
+
|
|
198
|
+
`src/drizzle/schema.ts`:
|
|
199
|
+
```typescript
|
|
200
|
+
import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';
|
|
201
|
+
|
|
202
|
+
export const newFeatureTable = pgTable('new_feature', {
|
|
203
|
+
id: serial('id').primaryKey(),
|
|
204
|
+
data: text('data').notNull(),
|
|
205
|
+
createdAt: timestamp('created_at').defaultNow(),
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Pros:**
|
|
210
|
+
- No migration of existing data
|
|
211
|
+
- Zero risk to current functionality
|
|
212
|
+
- Gradual adoption
|
|
213
|
+
|
|
214
|
+
**Cons:**
|
|
215
|
+
- Mixed query patterns (Drizzle + existing ORM)
|
|
216
|
+
- Two connection patterns in codebase
|
|
217
|
+
|
|
218
|
+
### 4.2. Option B: Mirror Existing Tables
|
|
219
|
+
|
|
220
|
+
Define schemas for existing tables to gradually migrate queries:
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
import { pgTable, serial, varchar, timestamp } from 'drizzle-orm/pg-core';
|
|
224
|
+
|
|
225
|
+
export const existingUsers = pgTable('users', {
|
|
226
|
+
id: serial('id').primaryKey(),
|
|
227
|
+
email: varchar('email', { length: 255 }).notNull(),
|
|
228
|
+
name: varchar('name', { length: 255 }),
|
|
229
|
+
createdAt: timestamp('created_at'),
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Pros:**
|
|
234
|
+
- Can query existing data with Drizzle
|
|
235
|
+
- Gradually replace old ORM queries
|
|
236
|
+
- Type-safe access to existing tables
|
|
237
|
+
|
|
238
|
+
**Cons:**
|
|
239
|
+
- Must match existing schema exactly
|
|
240
|
+
- Requires careful migration strategy
|
|
241
|
+
|
|
242
|
+
### 4.3. Recommended: Hybrid Approach
|
|
243
|
+
|
|
244
|
+
1. Start with Option A (new tables only)
|
|
245
|
+
2. Once comfortable, add schemas for frequently-queried existing tables (Option B)
|
|
246
|
+
3. Gradually migrate queries from old ORM to Drizzle
|
|
247
|
+
4. Eventually remove old ORM
|
|
248
|
+
|
|
249
|
+
## Phase 5: Migration Handling
|
|
250
|
+
|
|
251
|
+
### 5.1. For New Tables
|
|
252
|
+
|
|
253
|
+
Generate and run migrations normally:
|
|
254
|
+
```bash
|
|
255
|
+
[package-manager] drizzle-kit generate
|
|
256
|
+
export DATABASE_URL="$(grep DATABASE_URL .env.local | cut -d '=' -f2)" && \
|
|
257
|
+
[package-manager] drizzle-kit migrate
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### 5.2. For Existing Tables
|
|
261
|
+
|
|
262
|
+
**Do NOT run migrations** - tables already exist!
|
|
263
|
+
|
|
264
|
+
Instead, use Drizzle schemas for querying only:
|
|
265
|
+
```typescript
|
|
266
|
+
import { drizzleDb } from './drizzle';
|
|
267
|
+
import { existingUsers } from './drizzle/schema';
|
|
268
|
+
|
|
269
|
+
const users = await drizzleDb.select().from(existingUsers);
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### 5.3. Mixed Scenario
|
|
273
|
+
|
|
274
|
+
If you have both new and existing tables:
|
|
275
|
+
1. Define all schemas in `schema.ts`
|
|
276
|
+
2. Run `drizzle-kit generate`
|
|
277
|
+
3. **Manually edit** generated migration to remove SQL for existing tables
|
|
278
|
+
4. Apply migration
|
|
279
|
+
|
|
280
|
+
See `references/migrations.md` for advanced patterns.
|
|
281
|
+
|
|
282
|
+
### 5.4. Add Migration Scripts
|
|
283
|
+
|
|
284
|
+
Add these convenience scripts to your `package.json`:
|
|
285
|
+
|
|
286
|
+
```json
|
|
287
|
+
{
|
|
288
|
+
"scripts": {
|
|
289
|
+
"db:generate": "drizzle-kit generate",
|
|
290
|
+
"db:migrate": "drizzle-kit migrate",
|
|
291
|
+
"db:push": "drizzle-kit push",
|
|
292
|
+
"db:studio": "drizzle-kit studio"
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**Usage:**
|
|
298
|
+
```bash
|
|
299
|
+
npm run db:generate # Generate migrations from schema changes
|
|
300
|
+
npm run db:migrate # Apply pending migrations
|
|
301
|
+
npm run db:push # Push schema directly (dev only)
|
|
302
|
+
npm run db:studio # Open Drizzle Studio
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Note:** Replace `npm run` with your package manager's equivalent (`pnpm`, `yarn`, `bun`).
|
|
306
|
+
|
|
307
|
+
## Phase 6: Coexistence Patterns
|
|
308
|
+
|
|
309
|
+
### 6.1. Naming Conventions
|
|
310
|
+
|
|
311
|
+
Keep clear separation:
|
|
312
|
+
```typescript
|
|
313
|
+
import { db as prismaDb } from './lib/prisma';
|
|
314
|
+
import { drizzleDb } from './drizzle';
|
|
315
|
+
|
|
316
|
+
const prismaUsers = await prismaDb.user.findMany();
|
|
317
|
+
const drizzleFeatures = await drizzleDb.select().from(newFeatureTable);
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 6.2. Gradual Migration
|
|
321
|
+
|
|
322
|
+
**Step 1:** New features use Drizzle
|
|
323
|
+
```typescript
|
|
324
|
+
async function createFeature(data: NewFeatureInput) {
|
|
325
|
+
return drizzleDb.insert(newFeatureTable).values(data).returning();
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Step 2:** Migrate read queries (safe, no data changes)
|
|
330
|
+
```typescript
|
|
331
|
+
async function getUsers() {
|
|
332
|
+
return drizzleDb.select().from(existingUsers);
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Step 3:** Migrate write queries (after thorough testing)
|
|
337
|
+
```typescript
|
|
338
|
+
async function updateUser(id: number, data: UserUpdate) {
|
|
339
|
+
return drizzleDb.update(existingUsers)
|
|
340
|
+
.set(data)
|
|
341
|
+
.where(eq(existingUsers.id, id));
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Step 4:** Remove old ORM once all queries migrated
|
|
346
|
+
|
|
347
|
+
## Phase 7: Verification
|
|
348
|
+
|
|
349
|
+
Test integration without breaking existing functionality:
|
|
350
|
+
|
|
351
|
+
### 7.1. Test New Tables
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
import { drizzleDb } from './drizzle';
|
|
355
|
+
import { newFeatureTable } from './drizzle/schema';
|
|
356
|
+
|
|
357
|
+
const result = await drizzleDb.insert(newFeatureTable)
|
|
358
|
+
.values({ data: 'test' })
|
|
359
|
+
.returning();
|
|
360
|
+
|
|
361
|
+
console.log('New table works:', result);
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### 7.2. Test Existing Tables (if mirrored)
|
|
365
|
+
|
|
366
|
+
```typescript
|
|
367
|
+
import { drizzleDb } from './drizzle';
|
|
368
|
+
import { existingUsers } from './drizzle/schema';
|
|
369
|
+
|
|
370
|
+
const users = await drizzleDb.select().from(existingUsers);
|
|
371
|
+
console.log('Existing table accessible:', users);
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 7.3. Verify Old ORM Still Works
|
|
375
|
+
|
|
376
|
+
```typescript
|
|
377
|
+
import { db as oldDb } from './lib/your-orm';
|
|
378
|
+
|
|
379
|
+
const oldQuery = await oldDb.users.findMany();
|
|
380
|
+
console.log('Old ORM still works:', oldQuery);
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## Phase 8: Add Best Practices References
|
|
384
|
+
|
|
385
|
+
Before executing the add-neon-docs skill, provide a summary of everything that has been done:
|
|
386
|
+
|
|
387
|
+
"✅ ... Drizzle integration is complete! Now adding documentation references..."
|
|
388
|
+
|
|
389
|
+
Then execute the neon-plugin:add-neon-docs skill with the parameter SKILL_NAME="neon-drizzle"
|
|
390
|
+
|
|
391
|
+
This will add reference links to Neon + Drizzle best practices documentation in your project's AI documentation file, helping AI assistants provide better guidance in future conversations.
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## ✅ Integration Complete!
|
|
396
|
+
|
|
397
|
+
Your Drizzle integration with the existing project is ready to use.
|
|
398
|
+
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
# New Project Setup
|
|
2
|
+
|
|
3
|
+
> **Complete Walkthrough**: This is a self-contained, step-by-step guide with its own numbered phases (Phase 1-6).
|
|
4
|
+
> Follow each phase in order for a full Drizzle + Neon setup from scratch.
|
|
5
|
+
|
|
6
|
+
Complete guide for setting up Drizzle ORM with Neon from scratch.
|
|
7
|
+
|
|
8
|
+
### Important:
|
|
9
|
+
- Remember to run the neon-plugin:add-neon-docs skill with the parameter SKILL_NAME="neon-drizzle" after completing the guide.
|
|
10
|
+
|
|
11
|
+
## Table of Contents
|
|
12
|
+
|
|
13
|
+
- [New Project Setup](#new-project-setup)
|
|
14
|
+
- [Important:](#important)
|
|
15
|
+
- [Table of Contents](#table-of-contents)
|
|
16
|
+
- [Workflow Checklist](#workflow-checklist)
|
|
17
|
+
- [Phase 1: Context Detection](#phase-1-context-detection)
|
|
18
|
+
- [Phase 2: Installation](#phase-2-installation)
|
|
19
|
+
- [Phase 3: Configuration](#phase-3-configuration)
|
|
20
|
+
- [3.1. Neon Database Provisioning \& Environment File](#31-neon-database-provisioning--environment-file)
|
|
21
|
+
- [3.2. Drizzle Config](#32-drizzle-config)
|
|
22
|
+
- [3.3. Database Connection](#33-database-connection)
|
|
23
|
+
- [Phase 4: Schema Generation](#phase-4-schema-generation)
|
|
24
|
+
- [4.1. Common Patterns](#41-common-patterns)
|
|
25
|
+
- [Phase 5: Migrations](#phase-5-migrations)
|
|
26
|
+
- [5.1. Generate Migration](#51-generate-migration)
|
|
27
|
+
- [5.2. Apply Migration](#52-apply-migration)
|
|
28
|
+
- [5.3. Add Migration Scripts](#53-add-migration-scripts)
|
|
29
|
+
- [5.4. If Migration Fails](#54-if-migration-fails)
|
|
30
|
+
- [Phase 6: Add Best Practices References](#phase-6-add-best-practices-references)
|
|
31
|
+
- [✅ Setup Complete!](#-setup-complete)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Workflow Checklist
|
|
36
|
+
|
|
37
|
+
When following this guide, I will track these high-level tasks:
|
|
38
|
+
|
|
39
|
+
- [ ] Detect project context (package manager, framework, existing setup)
|
|
40
|
+
- [ ] Install Drizzle dependencies based on deployment target
|
|
41
|
+
- [ ] Provision Neon database (list projects, create if needed, get connection string)
|
|
42
|
+
- [ ] Write connection string to environment file and verify
|
|
43
|
+
- [ ] Create Drizzle configuration files (drizzle.config.ts, db connection)
|
|
44
|
+
- [ ] Generate schema based on app type
|
|
45
|
+
- [ ] Run and verify migrations
|
|
46
|
+
- [ ] Add Neon Drizzle best practices to project docs
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Phase 1: Context Detection
|
|
51
|
+
|
|
52
|
+
Auto-detect project context:
|
|
53
|
+
|
|
54
|
+
**Check Package Manager:**
|
|
55
|
+
```bash
|
|
56
|
+
ls package-lock.json # → npm
|
|
57
|
+
ls bun.lockb # → bun
|
|
58
|
+
ls pnpm-lock.yaml # → pnpm
|
|
59
|
+
ls yarn.lock # → yarn
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Check Framework:**
|
|
63
|
+
```bash
|
|
64
|
+
grep '"next"' package.json # → Next.js
|
|
65
|
+
grep '"express"' package.json # → Express
|
|
66
|
+
grep '"vite"' package.json # → Vite
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Check Existing Setup:**
|
|
70
|
+
```bash
|
|
71
|
+
ls drizzle.config.ts # Already configured?
|
|
72
|
+
ls src/db/schema.ts # Schema exists?
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Check Environment Files:**
|
|
76
|
+
```bash
|
|
77
|
+
ls .env .env.local .env.production
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Phase 2: Installation
|
|
81
|
+
|
|
82
|
+
Based on detection, install dependencies:
|
|
83
|
+
|
|
84
|
+
**For Vercel/Edge Environments (Next.js, Vite on Vercel):**
|
|
85
|
+
```bash
|
|
86
|
+
[package-manager] add drizzle-orm @neondatabase/serverless
|
|
87
|
+
[package-manager] add -D drizzle-kit dotenv @vercel/node
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**For Node.js Servers (Express, Fastify, standard Node):**
|
|
91
|
+
```bash
|
|
92
|
+
[package-manager] add drizzle-orm @neondatabase/serverless ws
|
|
93
|
+
[package-manager] add -D drizzle-kit dotenv @types/ws
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Phase 3: Configuration
|
|
97
|
+
|
|
98
|
+
Create configuration files in dependency order:
|
|
99
|
+
|
|
100
|
+
### 3.1. Neon Database Provisioning & Environment File
|
|
101
|
+
|
|
102
|
+
**Outcome**: A working `.env` or `.env.local` file with a real Neon connection string that the application can use immediately.
|
|
103
|
+
|
|
104
|
+
Use MCP tools to list or create a Neon project and get its connection string. Write the actual credentials to the environment file (`.env.local` for Next.js, `.env` for other projects). Add the file to `.gitignore`.
|
|
105
|
+
|
|
106
|
+
**Environment file format:**
|
|
107
|
+
```bash
|
|
108
|
+
DATABASE_URL=postgresql://user:password@host/database?sslmode=require
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 3.2. Drizzle Config
|
|
112
|
+
|
|
113
|
+
Create `drizzle.config.ts` with explicit environment loading:
|
|
114
|
+
|
|
115
|
+
**CRITICAL:** The `config({ path: '...' })` line must match the environment file from Step 3.1.
|
|
116
|
+
|
|
117
|
+
**For Next.js (using .env.local):**
|
|
118
|
+
```typescript
|
|
119
|
+
import { defineConfig } from 'drizzle-kit';
|
|
120
|
+
import { config } from 'dotenv';
|
|
121
|
+
|
|
122
|
+
// Load .env.local explicitly
|
|
123
|
+
config({ path: '.env.local' });
|
|
124
|
+
|
|
125
|
+
export default defineConfig({
|
|
126
|
+
schema: './src/db/schema.ts',
|
|
127
|
+
out: './src/db/migrations',
|
|
128
|
+
dialect: 'postgresql',
|
|
129
|
+
dbCredentials: {
|
|
130
|
+
url: process.env.DATABASE_URL!,
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**For other projects (using .env):**
|
|
136
|
+
```typescript
|
|
137
|
+
import { defineConfig } from 'drizzle-kit';
|
|
138
|
+
import { config } from 'dotenv';
|
|
139
|
+
|
|
140
|
+
// Load .env explicitly
|
|
141
|
+
config({ path: '.env' });
|
|
142
|
+
|
|
143
|
+
export default defineConfig({
|
|
144
|
+
schema: './src/db/schema.ts',
|
|
145
|
+
out: './src/db/migrations',
|
|
146
|
+
dialect: 'postgresql',
|
|
147
|
+
dbCredentials: {
|
|
148
|
+
url: process.env.DATABASE_URL!,
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Why this matters:**
|
|
154
|
+
- Without explicit `config({ path: '...' })`, drizzle-kit may not load environment variables
|
|
155
|
+
- This prevents "url: undefined" errors during migrations
|
|
156
|
+
- The path must match your environment file name from Phase 3.1
|
|
157
|
+
|
|
158
|
+
### 3.3. Database Connection
|
|
159
|
+
|
|
160
|
+
Create `src/db/index.ts` with appropriate adapter (see `references/adapters.md` for decision guide):
|
|
161
|
+
|
|
162
|
+
**For Vercel/Edge:**
|
|
163
|
+
```typescript
|
|
164
|
+
import { drizzle } from 'drizzle-orm/neon-http';
|
|
165
|
+
import { neon } from '@neondatabase/serverless';
|
|
166
|
+
|
|
167
|
+
const sql = neon(process.env.DATABASE_URL!);
|
|
168
|
+
export const db = drizzle(sql);
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**For Node.js:**
|
|
172
|
+
```typescript
|
|
173
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
174
|
+
import { Pool, neonConfig } from '@neondatabase/serverless';
|
|
175
|
+
import ws from 'ws';
|
|
176
|
+
|
|
177
|
+
neonConfig.webSocketConstructor = ws;
|
|
178
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL! });
|
|
179
|
+
export const db = drizzle(pool);
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
See `templates/db-http.ts` and `templates/db-websocket.ts` for complete examples.
|
|
183
|
+
|
|
184
|
+
## Phase 4: Schema Generation
|
|
185
|
+
|
|
186
|
+
Based on app type, create appropriate schema:
|
|
187
|
+
|
|
188
|
+
### 4.1. Common Patterns
|
|
189
|
+
|
|
190
|
+
**Todo App:**
|
|
191
|
+
```typescript
|
|
192
|
+
import { pgTable, serial, text, boolean, timestamp, varchar } from 'drizzle-orm/pg-core';
|
|
193
|
+
|
|
194
|
+
export const users = pgTable('users', {
|
|
195
|
+
id: serial('id').primaryKey(),
|
|
196
|
+
email: varchar('email', { length: 255 }).notNull().unique(),
|
|
197
|
+
name: varchar('name', { length: 255 }).notNull(),
|
|
198
|
+
createdAt: timestamp('created_at').defaultNow(),
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
export const todos = pgTable('todos', {
|
|
202
|
+
id: serial('id').primaryKey(),
|
|
203
|
+
userId: serial('user_id').notNull().references(() => users.id),
|
|
204
|
+
title: text('title').notNull(),
|
|
205
|
+
completed: boolean('completed').default(false),
|
|
206
|
+
createdAt: timestamp('created_at').defaultNow(),
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Blog App:**
|
|
211
|
+
```typescript
|
|
212
|
+
import { pgTable, serial, text, timestamp, varchar, index } from 'drizzle-orm/pg-core';
|
|
213
|
+
import { relations } from 'drizzle-orm';
|
|
214
|
+
|
|
215
|
+
export const users = pgTable('users', {
|
|
216
|
+
id: serial('id').primaryKey(),
|
|
217
|
+
email: varchar('email', { length: 255 }).notNull().unique(),
|
|
218
|
+
name: varchar('name', { length: 255 }).notNull(),
|
|
219
|
+
createdAt: timestamp('created_at').defaultNow(),
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
export const posts = pgTable('posts', {
|
|
223
|
+
id: serial('id').primaryKey(),
|
|
224
|
+
userId: serial('user_id').notNull().references(() => users.id),
|
|
225
|
+
title: text('title').notNull(),
|
|
226
|
+
content: text('content').notNull(),
|
|
227
|
+
createdAt: timestamp('created_at').defaultNow(),
|
|
228
|
+
}, (table) => ({
|
|
229
|
+
userIdIdx: index('posts_user_id_idx').on(table.userId),
|
|
230
|
+
}));
|
|
231
|
+
|
|
232
|
+
export const usersRelations = relations(users, ({ many }) => ({
|
|
233
|
+
posts: many(posts),
|
|
234
|
+
}));
|
|
235
|
+
|
|
236
|
+
export const postsRelations = relations(posts, ({ one }) => ({
|
|
237
|
+
author: one(users, {
|
|
238
|
+
fields: [posts.userId],
|
|
239
|
+
references: [users.id],
|
|
240
|
+
}),
|
|
241
|
+
}));
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
See `templates/schema-example.ts` for more complex examples.
|
|
245
|
+
|
|
246
|
+
## Phase 5: Migrations
|
|
247
|
+
|
|
248
|
+
Run migrations with proper error handling:
|
|
249
|
+
|
|
250
|
+
### 5.1. Generate Migration
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
[package-manager] drizzle-kit generate
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
This creates SQL files in `src/db/migrations/`.
|
|
257
|
+
|
|
258
|
+
### 5.2. Apply Migration
|
|
259
|
+
|
|
260
|
+
**Recommended approach (explicit env loading):**
|
|
261
|
+
```bash
|
|
262
|
+
export DATABASE_URL="$(grep DATABASE_URL .env.local | cut -d '=' -f2)" && \
|
|
263
|
+
[package-manager] drizzle-kit migrate
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Why this works:** Ensures `DATABASE_URL` is available, preventing "url: undefined" errors.
|
|
267
|
+
|
|
268
|
+
### 5.3. Add Migration Scripts
|
|
269
|
+
|
|
270
|
+
Add these convenience scripts to your `package.json`:
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"scripts": {
|
|
275
|
+
"db:generate": "drizzle-kit generate",
|
|
276
|
+
"db:migrate": "drizzle-kit migrate",
|
|
277
|
+
"db:push": "drizzle-kit push",
|
|
278
|
+
"db:studio": "drizzle-kit studio"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Usage:**
|
|
284
|
+
```bash
|
|
285
|
+
npm run db:generate # Generate migrations from schema changes
|
|
286
|
+
npm run db:migrate # Apply pending migrations
|
|
287
|
+
npm run db:push # Push schema directly (dev only)
|
|
288
|
+
npm run db:studio # Open Drizzle Studio
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Note:** Replace `npm run` with your package manager's equivalent (`pnpm`, `yarn`, `bun`).
|
|
292
|
+
|
|
293
|
+
### 5.4. If Migration Fails
|
|
294
|
+
|
|
295
|
+
See `guides/troubleshooting.md` for common issues and fixes.
|
|
296
|
+
|
|
297
|
+
Also reference `references/migrations.md` for deep dive on migration patterns.
|
|
298
|
+
|
|
299
|
+
## Phase 6: Add Best Practices References
|
|
300
|
+
|
|
301
|
+
Before executing the add-neon-docs skill, provide a summary of everything that has been done:
|
|
302
|
+
|
|
303
|
+
"✅ ... Drizzle integration is complete! Now adding documentation references..."
|
|
304
|
+
|
|
305
|
+
Then execute the neon-plugin:add-neon-docs skill with the parameter SKILL_NAME="neon-drizzle"
|
|
306
|
+
|
|
307
|
+
This will add reference links to Neon + Drizzle best practices documentation in your project's AI documentation file, helping AI assistants provide better guidance in future conversations.
|
|
308
|
+
|
|
309
|
+
## ✅ Setup Complete!
|
|
310
|
+
|
|
311
|
+
Your Drizzle + Neon integration is ready to use.
|
|
312
|
+
|