quiver-cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -0
- package/bin/quiver-cli.mjs +2 -0
- package/dist/cli.js +3074 -0
- package/package.json +55 -0
- package/template/.agents/AGENTS.md +25 -0
- package/template/.agents/commands/cp.md +116 -0
- package/template/.agents/commands/next-setup.md +1064 -0
- package/template/.agents/commands/tf-readme.md +38 -0
- package/template/.agents/config.json +60 -0
- package/template/.agents/skills/agent-browser/SKILL.md +55 -0
- package/template/.agents/skills/apps/skybridge/SKILL.md +46 -0
- package/template/.agents/skills/apps/skybridge/references/architecture.md +175 -0
- package/template/.agents/skills/apps/skybridge/references/copy-template.md +24 -0
- package/template/.agents/skills/apps/skybridge/references/csp.md +33 -0
- package/template/.agents/skills/apps/skybridge/references/deploy.md +33 -0
- package/template/.agents/skills/apps/skybridge/references/discover.md +84 -0
- package/template/.agents/skills/apps/skybridge/references/download-file.md +77 -0
- package/template/.agents/skills/apps/skybridge/references/fetch-and-render-data.md +151 -0
- package/template/.agents/skills/apps/skybridge/references/oauth.md +115 -0
- package/template/.agents/skills/apps/skybridge/references/open-external-links.md +71 -0
- package/template/.agents/skills/apps/skybridge/references/prompt-llm.md +20 -0
- package/template/.agents/skills/apps/skybridge/references/publish.md +19 -0
- package/template/.agents/skills/apps/skybridge/references/run-locally.md +51 -0
- package/template/.agents/skills/apps/skybridge/references/state-and-context.md +151 -0
- package/template/.agents/skills/apps/skybridge/references/ui-guidelines.md +205 -0
- package/template/.agents/skills/code/cleanup/SKILL.md +26 -0
- package/template/.agents/skills/code/vercel-react-best-practices/AGENTS.md +3810 -0
- package/template/.agents/skills/code/vercel-react-best-practices/README.md +123 -0
- package/template/.agents/skills/code/vercel-react-best-practices/SKILL.md +149 -0
- package/template/.agents/skills/code/vercel-react-best-practices/metadata.json +15 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/_sections.md +46 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/_template.md +28 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/template/.agents/skills/code/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/template/.agents/skills/data/prisma-cli/SKILL.md +247 -0
- package/template/.agents/skills/data/prisma-cli/references/db-execute.md +78 -0
- package/template/.agents/skills/data/prisma-cli/references/db-pull.md +185 -0
- package/template/.agents/skills/data/prisma-cli/references/db-push.md +148 -0
- package/template/.agents/skills/data/prisma-cli/references/db-seed.md +188 -0
- package/template/.agents/skills/data/prisma-cli/references/debug.md +46 -0
- package/template/.agents/skills/data/prisma-cli/references/dev.md +157 -0
- package/template/.agents/skills/data/prisma-cli/references/format.md +48 -0
- package/template/.agents/skills/data/prisma-cli/references/generate.md +173 -0
- package/template/.agents/skills/data/prisma-cli/references/init.md +136 -0
- package/template/.agents/skills/data/prisma-cli/references/mcp.md +38 -0
- package/template/.agents/skills/data/prisma-cli/references/migrate-deploy.md +127 -0
- package/template/.agents/skills/data/prisma-cli/references/migrate-dev.md +145 -0
- package/template/.agents/skills/data/prisma-cli/references/migrate-diff.md +89 -0
- package/template/.agents/skills/data/prisma-cli/references/migrate-reset.md +78 -0
- package/template/.agents/skills/data/prisma-cli/references/migrate-resolve.md +57 -0
- package/template/.agents/skills/data/prisma-cli/references/migrate-status.md +65 -0
- package/template/.agents/skills/data/prisma-cli/references/studio.md +137 -0
- package/template/.agents/skills/data/prisma-cli/references/validate.md +53 -0
- package/template/.agents/skills/data/prisma-client-api/SKILL.md +216 -0
- package/template/.agents/skills/data/prisma-client-api/references/client-methods.md +223 -0
- package/template/.agents/skills/data/prisma-client-api/references/constructor.md +208 -0
- package/template/.agents/skills/data/prisma-client-api/references/filters.md +256 -0
- package/template/.agents/skills/data/prisma-client-api/references/model-queries.md +281 -0
- package/template/.agents/skills/data/prisma-client-api/references/query-options.md +276 -0
- package/template/.agents/skills/data/prisma-client-api/references/raw-queries.md +194 -0
- package/template/.agents/skills/data/prisma-client-api/references/relations.md +308 -0
- package/template/.agents/skills/data/prisma-client-api/references/transactions.md +184 -0
- package/template/.agents/skills/design/impeccable/SKILL.md +176 -0
- package/template/.agents/skills/design/impeccable/reference/adapt.md +311 -0
- package/template/.agents/skills/design/impeccable/reference/animate.md +201 -0
- package/template/.agents/skills/design/impeccable/reference/audit.md +133 -0
- package/template/.agents/skills/design/impeccable/reference/bolder.md +113 -0
- package/template/.agents/skills/design/impeccable/reference/brand.md +108 -0
- package/template/.agents/skills/design/impeccable/reference/clarify.md +288 -0
- package/template/.agents/skills/design/impeccable/reference/codex.md +105 -0
- package/template/.agents/skills/design/impeccable/reference/colorize.md +257 -0
- package/template/.agents/skills/design/impeccable/reference/craft.md +123 -0
- package/template/.agents/skills/design/impeccable/reference/critique.md +767 -0
- package/template/.agents/skills/design/impeccable/reference/delight.md +302 -0
- package/template/.agents/skills/design/impeccable/reference/distill.md +111 -0
- package/template/.agents/skills/design/impeccable/reference/document.md +429 -0
- package/template/.agents/skills/design/impeccable/reference/extract.md +69 -0
- package/template/.agents/skills/design/impeccable/reference/harden.md +347 -0
- package/template/.agents/skills/design/impeccable/reference/init.md +172 -0
- package/template/.agents/skills/design/impeccable/reference/interaction-design.md +189 -0
- package/template/.agents/skills/design/impeccable/reference/layout.md +161 -0
- package/template/.agents/skills/design/impeccable/reference/live.md +718 -0
- package/template/.agents/skills/design/impeccable/reference/onboard.md +234 -0
- package/template/.agents/skills/design/impeccable/reference/optimize.md +258 -0
- package/template/.agents/skills/design/impeccable/reference/overdrive.md +130 -0
- package/template/.agents/skills/design/impeccable/reference/polish.md +241 -0
- package/template/.agents/skills/design/impeccable/reference/product.md +60 -0
- package/template/.agents/skills/design/impeccable/reference/quieter.md +99 -0
- package/template/.agents/skills/design/impeccable/reference/shape.md +165 -0
- package/template/.agents/skills/design/impeccable/reference/typeset.md +279 -0
- package/template/.agents/skills/design/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/template/.agents/skills/design/impeccable/scripts/command-metadata.json +94 -0
- package/template/.agents/skills/design/impeccable/scripts/context-signals.mjs +225 -0
- package/template/.agents/skills/design/impeccable/scripts/context.mjs +270 -0
- package/template/.agents/skills/design/impeccable/scripts/critique-storage.mjs +242 -0
- package/template/.agents/skills/design/impeccable/scripts/design-parser.mjs +835 -0
- package/template/.agents/skills/design/impeccable/scripts/detect-csp.mjs +198 -0
- package/template/.agents/skills/design/impeccable/scripts/detect.mjs +21 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/browser/injected/index.mjs +1733 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/cli/main.mjs +244 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns-browser.js +4551 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/browser/detect-url.mjs +252 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/regex/detect-text.mjs +535 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +986 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/static-html/detect-html.mjs +208 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/findings.mjs +12 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/registry/antipatterns.mjs +419 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/rules/checks.mjs +2316 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/template/.agents/skills/design/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/template/.agents/skills/design/impeccable/scripts/impeccable-paths.mjs +126 -0
- package/template/.agents/skills/design/impeccable/scripts/is-generated.mjs +69 -0
- package/template/.agents/skills/design/impeccable/scripts/live-accept.mjs +812 -0
- package/template/.agents/skills/design/impeccable/scripts/live-browser-session.js +123 -0
- package/template/.agents/skills/design/impeccable/scripts/live-browser.js +10316 -0
- package/template/.agents/skills/design/impeccable/scripts/live-commit-manual-edits.mjs +1241 -0
- package/template/.agents/skills/design/impeccable/scripts/live-complete.mjs +75 -0
- package/template/.agents/skills/design/impeccable/scripts/live-completion.mjs +19 -0
- package/template/.agents/skills/design/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/template/.agents/skills/design/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/template/.agents/skills/design/impeccable/scripts/live-event-validation.mjs +136 -0
- package/template/.agents/skills/design/impeccable/scripts/live-inject.mjs +557 -0
- package/template/.agents/skills/design/impeccable/scripts/live-insert-ui.mjs +458 -0
- package/template/.agents/skills/design/impeccable/scripts/live-insert.mjs +272 -0
- package/template/.agents/skills/design/impeccable/scripts/live-manual-edit-evidence.mjs +363 -0
- package/template/.agents/skills/design/impeccable/scripts/live-manual-edits-buffer.mjs +152 -0
- package/template/.agents/skills/design/impeccable/scripts/live-poll.mjs +379 -0
- package/template/.agents/skills/design/impeccable/scripts/live-resume.mjs +94 -0
- package/template/.agents/skills/design/impeccable/scripts/live-server.mjs +2322 -0
- package/template/.agents/skills/design/impeccable/scripts/live-session-store.mjs +289 -0
- package/template/.agents/skills/design/impeccable/scripts/live-status.mjs +61 -0
- package/template/.agents/skills/design/impeccable/scripts/live-svelte-component.mjs +826 -0
- package/template/.agents/skills/design/impeccable/scripts/live-sveltekit-adapter.mjs +274 -0
- package/template/.agents/skills/design/impeccable/scripts/live-ui-core.mjs +179 -0
- package/template/.agents/skills/design/impeccable/scripts/live-wrap.mjs +894 -0
- package/template/.agents/skills/design/impeccable/scripts/live.mjs +246 -0
- package/template/.agents/skills/design/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/template/.agents/skills/design/impeccable/scripts/palette.mjs +633 -0
- package/template/.agents/skills/design/impeccable/scripts/pin.mjs +214 -0
- package/template/.agents/skills/design/shadcn/SKILL.md +242 -0
- package/template/.agents/skills/design/shadcn/agents/openai.yml +5 -0
- package/template/.agents/skills/design/shadcn/assets/shadcn-small.png +0 -0
- package/template/.agents/skills/design/shadcn/assets/shadcn.png +0 -0
- package/template/.agents/skills/design/shadcn/cli.md +257 -0
- package/template/.agents/skills/design/shadcn/customization.md +202 -0
- package/template/.agents/skills/design/shadcn/evals/evals.json +47 -0
- package/template/.agents/skills/design/shadcn/mcp.md +94 -0
- package/template/.agents/skills/design/shadcn/rules/base-vs-radix.md +306 -0
- package/template/.agents/skills/design/shadcn/rules/composition.md +195 -0
- package/template/.agents/skills/design/shadcn/rules/forms.md +192 -0
- package/template/.agents/skills/design/shadcn/rules/icons.md +101 -0
- package/template/.agents/skills/design/shadcn/rules/styling.md +162 -0
- package/template/.agents/skills/find-skills/SKILL.md +142 -0
- package/template/.agents/skills/integrations/langfuse/SKILL.md +142 -0
- package/template/.agents/skills/integrations/langfuse/references/cli.md +52 -0
- package/template/.agents/skills/integrations/langfuse/references/error-analysis.md +100 -0
- package/template/.agents/skills/integrations/langfuse/references/instrumentation.md +134 -0
- package/template/.agents/skills/integrations/langfuse/references/judge-calibration.md +288 -0
- package/template/.agents/skills/integrations/langfuse/references/prompt-migration.md +234 -0
- package/template/.agents/skills/integrations/langfuse/references/sdk-upgrade.md +175 -0
- package/template/.agents/skills/integrations/langfuse/references/skill-feedback.md +52 -0
- package/template/.agents/skills/integrations/langfuse/references/user-feedback.md +88 -0
- package/template/.agents/skills/integrations/posthog/SKILL.md +102 -0
- package/template/.agents/skills/integrations/posthog/references/error-tracking-alerts.md +63 -0
- package/template/.agents/skills/integrations/posthog/references/error-tracking-assigning-issues.md +77 -0
- package/template/.agents/skills/integrations/posthog/references/error-tracking-fingerprints.md +57 -0
- package/template/.agents/skills/integrations/posthog/references/error-tracking-monitoring.md +140 -0
- package/template/.agents/skills/integrations/posthog/references/error-tracking-nextjs.md +490 -0
- package/template/.agents/skills/integrations/posthog/references/error-tracking-source-maps.md +45 -0
- package/template/.agents/skills/integrations/posthog/references/feature-flags-best-practices.md +139 -0
- package/template/.agents/skills/integrations/posthog/references/feature-flags-react.md +302 -0
- package/template/.agents/skills/integrations/posthog/references/identify-users.md +202 -0
- package/template/.agents/skills/integrations/posthog/references/integration-example.md +706 -0
- package/template/.agents/skills/integrations/posthog/references/integration-nextjs.md +385 -0
- package/template/.agents/skills/integrations/posthog/references/integration-step-1-begin.md +43 -0
- package/template/.agents/skills/integrations/posthog/references/integration-step-2-edit.md +37 -0
- package/template/.agents/skills/integrations/posthog/references/integration-step-3-revise.md +22 -0
- package/template/.agents/skills/integrations/posthog/references/integration-step-4-conclude.md +38 -0
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-anthropic.md +200 -0
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-basics.md +62 -0
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-costs.md +197 -0
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-manual-capture.md +397 -0
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-traces.md +98 -0
- package/template/.agents/skills/integrations/posthog/references/llm-analytics-vercel-ai.md +120 -0
- package/template/.agents/skills/repo/repo-ci/SKILL.md +265 -0
- package/template/.agents/skills/repo/repo-init-next-js/SKILL.md +129 -0
- package/template/.agents/skills/repo/repo-init-next-js/references/file-contents.md +800 -0
- package/template/.agents/skills/repo/repo-init-next-js/scripts/setup.sh +47 -0
- package/template/.agents/skills/repo/repo-init-node/SKILL.md +196 -0
- package/template/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/template/.agents/skills/skill-creator/SKILL.md +485 -0
- package/template/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/template/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/template/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/template/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/template/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/template/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/template/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/template/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/template/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/template/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/template/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/template/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/template/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/template/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/template/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/template/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/template/.agents/upstreams.json +80 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Avoid Duplicate Serialization in RSC Props
|
|
3
|
+
impact: LOW
|
|
4
|
+
impactDescription: reduces network payload by avoiding duplicate serialization
|
|
5
|
+
tags: server, rsc, serialization, props, client-components
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Avoid Duplicate Serialization in RSC Props
|
|
9
|
+
|
|
10
|
+
**Impact: LOW (reduces network payload by avoiding duplicate serialization)**
|
|
11
|
+
|
|
12
|
+
RSC→client serialization deduplicates by object reference, not value. Same reference = serialized once; new reference = serialized again. Do transformations (`.toSorted()`, `.filter()`, `.map()`) in client, not server.
|
|
13
|
+
|
|
14
|
+
**Incorrect (duplicates array):**
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
// RSC: sends 6 strings (2 arrays × 3 items)
|
|
18
|
+
<ClientList usernames={usernames} usernamesOrdered={usernames.toSorted()} />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Correct (sends 3 strings):**
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
// RSC: send once
|
|
25
|
+
<ClientList usernames={usernames} />
|
|
26
|
+
|
|
27
|
+
// Client: transform there
|
|
28
|
+
'use client'
|
|
29
|
+
const sorted = useMemo(() => [...usernames].sort(), [usernames])
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Nested deduplication behavior:**
|
|
33
|
+
|
|
34
|
+
Deduplication works recursively. Impact varies by data type:
|
|
35
|
+
|
|
36
|
+
- `string[]`, `number[]`, `boolean[]`: **HIGH impact** - array + all primitives fully duplicated
|
|
37
|
+
- `object[]`: **LOW impact** - array duplicated, but nested objects deduplicated by reference
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
// string[] - duplicates everything
|
|
41
|
+
usernames={['a','b']} sorted={usernames.toSorted()} // sends 4 strings
|
|
42
|
+
|
|
43
|
+
// object[] - duplicates array structure only
|
|
44
|
+
users={[{id:1},{id:2}]} sorted={users.toSorted()} // sends 2 arrays + 2 unique objects (not 4)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Operations breaking deduplication (create new references):**
|
|
48
|
+
|
|
49
|
+
- Arrays: `.toSorted()`, `.filter()`, `.map()`, `.slice()`, `[...arr]`
|
|
50
|
+
- Objects: `{...obj}`, `Object.assign()`, `structuredClone()`, `JSON.parse(JSON.stringify())`
|
|
51
|
+
|
|
52
|
+
**More examples:**
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
// ❌ Bad
|
|
56
|
+
<C users={users} active={users.filter(u => u.active)} />
|
|
57
|
+
<C product={product} productName={product.name} />
|
|
58
|
+
|
|
59
|
+
// ✅ Good
|
|
60
|
+
<C users={users} />
|
|
61
|
+
<C product={product} />
|
|
62
|
+
// Do filtering/destructuring in client
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Exception:** Pass derived data when transformation is expensive or client doesn't need original.
|
package/template/.agents/skills/code/vercel-react-best-practices/rules/server-hoist-static-io.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Hoist Static I/O to Module Level
|
|
3
|
+
impact: HIGH
|
|
4
|
+
impactDescription: avoids repeated file/network I/O per request
|
|
5
|
+
tags: server, io, performance, next.js, route-handlers, og-image
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Hoist Static I/O to Module Level
|
|
9
|
+
|
|
10
|
+
**Impact: HIGH (avoids repeated file/network I/O per request)**
|
|
11
|
+
|
|
12
|
+
When loading static assets (fonts, logos, images, config files) in route handlers or server functions, hoist the I/O operation to module level. Module-level code runs once when the module is first imported, not on every request. This eliminates redundant file system reads or network fetches that would otherwise run on every invocation.
|
|
13
|
+
|
|
14
|
+
**Incorrect (reads font file on every request):**
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// app/api/og/route.tsx
|
|
18
|
+
import { ImageResponse } from 'next/og'
|
|
19
|
+
|
|
20
|
+
export async function GET(request: Request) {
|
|
21
|
+
// Runs on EVERY request - expensive!
|
|
22
|
+
const fontData = await fetch(
|
|
23
|
+
new URL('./fonts/Inter.ttf', import.meta.url)
|
|
24
|
+
).then(res => res.arrayBuffer())
|
|
25
|
+
|
|
26
|
+
const logoData = await fetch(
|
|
27
|
+
new URL('./images/logo.png', import.meta.url)
|
|
28
|
+
).then(res => res.arrayBuffer())
|
|
29
|
+
|
|
30
|
+
return new ImageResponse(
|
|
31
|
+
<div style={{ fontFamily: 'Inter' }}>
|
|
32
|
+
<img src={logoData} />
|
|
33
|
+
Hello World
|
|
34
|
+
</div>,
|
|
35
|
+
{ fonts: [{ name: 'Inter', data: fontData }] }
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Correct (loads once at module initialization):**
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// app/api/og/route.tsx
|
|
44
|
+
import { ImageResponse } from 'next/og'
|
|
45
|
+
|
|
46
|
+
// Module-level: runs ONCE when module is first imported
|
|
47
|
+
const fontData = fetch(
|
|
48
|
+
new URL('./fonts/Inter.ttf', import.meta.url)
|
|
49
|
+
).then(res => res.arrayBuffer())
|
|
50
|
+
|
|
51
|
+
const logoData = fetch(
|
|
52
|
+
new URL('./images/logo.png', import.meta.url)
|
|
53
|
+
).then(res => res.arrayBuffer())
|
|
54
|
+
|
|
55
|
+
export async function GET(request: Request) {
|
|
56
|
+
// Await the already-started promises
|
|
57
|
+
const [font, logo] = await Promise.all([fontData, logoData])
|
|
58
|
+
|
|
59
|
+
return new ImageResponse(
|
|
60
|
+
<div style={{ fontFamily: 'Inter' }}>
|
|
61
|
+
<img src={logo} />
|
|
62
|
+
Hello World
|
|
63
|
+
</div>,
|
|
64
|
+
{ fonts: [{ name: 'Inter', data: font }] }
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Correct (synchronous fs at module level):**
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// app/api/og/route.tsx
|
|
73
|
+
import { ImageResponse } from 'next/og'
|
|
74
|
+
import { readFileSync } from 'fs'
|
|
75
|
+
import { join } from 'path'
|
|
76
|
+
|
|
77
|
+
// Synchronous read at module level - blocks only during module init
|
|
78
|
+
const fontData = readFileSync(
|
|
79
|
+
join(process.cwd(), 'public/fonts/Inter.ttf')
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
const logoData = readFileSync(
|
|
83
|
+
join(process.cwd(), 'public/images/logo.png')
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
export async function GET(request: Request) {
|
|
87
|
+
return new ImageResponse(
|
|
88
|
+
<div style={{ fontFamily: 'Inter' }}>
|
|
89
|
+
<img src={logoData} />
|
|
90
|
+
Hello World
|
|
91
|
+
</div>,
|
|
92
|
+
{ fonts: [{ name: 'Inter', data: fontData }] }
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Incorrect (reads config on every call):**
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import fs from 'node:fs/promises'
|
|
101
|
+
|
|
102
|
+
export async function processRequest(data: Data) {
|
|
103
|
+
const config = JSON.parse(
|
|
104
|
+
await fs.readFile('./config.json', 'utf-8')
|
|
105
|
+
)
|
|
106
|
+
const template = await fs.readFile('./template.html', 'utf-8')
|
|
107
|
+
|
|
108
|
+
return render(template, data, config)
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Correct (hoists config and template to module level):**
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import fs from 'node:fs/promises'
|
|
116
|
+
|
|
117
|
+
const configPromise = fs
|
|
118
|
+
.readFile('./config.json', 'utf-8')
|
|
119
|
+
.then(JSON.parse)
|
|
120
|
+
const templatePromise = fs.readFile('./template.html', 'utf-8')
|
|
121
|
+
|
|
122
|
+
export async function processRequest(data: Data) {
|
|
123
|
+
const [config, template] = await Promise.all([
|
|
124
|
+
configPromise,
|
|
125
|
+
templatePromise,
|
|
126
|
+
])
|
|
127
|
+
|
|
128
|
+
return render(template, data, config)
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
When to use this pattern:
|
|
133
|
+
|
|
134
|
+
- Loading fonts for OG image generation
|
|
135
|
+
- Loading static logos, icons, or watermarks
|
|
136
|
+
- Reading configuration files that don't change at runtime
|
|
137
|
+
- Loading email templates or other static templates
|
|
138
|
+
- Any static asset that's the same across all requests
|
|
139
|
+
|
|
140
|
+
When not to use this pattern:
|
|
141
|
+
|
|
142
|
+
- Assets that vary per request or user
|
|
143
|
+
- Files that may change during runtime (use caching with TTL instead)
|
|
144
|
+
- Large files that would consume too much memory if kept loaded
|
|
145
|
+
- Sensitive data that shouldn't persist in memory
|
|
146
|
+
|
|
147
|
+
With Vercel's [Fluid Compute](https://vercel.com/docs/fluid-compute), module-level caching is especially effective because multiple concurrent requests share the same function instance. The static assets stay loaded in memory across requests without cold start penalties.
|
|
148
|
+
|
|
149
|
+
In traditional serverless, each cold start re-executes module-level code, but subsequent warm invocations reuse the loaded assets until the instance is recycled.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Avoid Shared Module State for Request Data
|
|
3
|
+
impact: HIGH
|
|
4
|
+
impactDescription: prevents concurrency bugs and request data leaks
|
|
5
|
+
tags: server, rsc, ssr, concurrency, security, state
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Avoid Shared Module State for Request Data
|
|
9
|
+
|
|
10
|
+
For React Server Components and client components rendered during SSR, avoid using mutable module-level variables to share request-scoped data. Server renders can run concurrently in the same process. If one render writes to shared module state and another render reads it, you can get race conditions, cross-request contamination, and security bugs where one user's data appears in another user's response.
|
|
11
|
+
|
|
12
|
+
Treat module scope on the server as process-wide shared memory, not request-local state.
|
|
13
|
+
|
|
14
|
+
**Incorrect (request data leaks across concurrent renders):**
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
let currentUser: User | null = null
|
|
18
|
+
|
|
19
|
+
export default async function Page() {
|
|
20
|
+
currentUser = await auth()
|
|
21
|
+
return <Dashboard />
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function Dashboard() {
|
|
25
|
+
return <div>{currentUser?.name}</div>
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If two requests overlap, request A can set `currentUser`, then request B overwrites it before request A finishes rendering `Dashboard`.
|
|
30
|
+
|
|
31
|
+
**Correct (keep request data local to the render tree):**
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
export default async function Page() {
|
|
35
|
+
const user = await auth()
|
|
36
|
+
return <Dashboard user={user} />
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function Dashboard({ user }: { user: User | null }) {
|
|
40
|
+
return <div>{user?.name}</div>
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Safe exceptions:
|
|
45
|
+
|
|
46
|
+
- Immutable static assets or config loaded once at module scope
|
|
47
|
+
- Shared caches intentionally designed for cross-request reuse and keyed correctly
|
|
48
|
+
- Process-wide singletons that do not store request- or user-specific mutable data
|
|
49
|
+
|
|
50
|
+
For static assets and config, see [Hoist Static I/O to Module Level](./server-hoist-static-io.md).
|
package/template/.agents/skills/code/vercel-react-best-practices/rules/server-parallel-fetching.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Parallel Data Fetching with Component Composition
|
|
3
|
+
impact: CRITICAL
|
|
4
|
+
impactDescription: eliminates server-side waterfalls
|
|
5
|
+
tags: server, rsc, parallel-fetching, composition
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Parallel Data Fetching with Component Composition
|
|
9
|
+
|
|
10
|
+
React Server Components execute sequentially within a tree. Restructure with composition to parallelize data fetching.
|
|
11
|
+
|
|
12
|
+
**Incorrect (Sidebar waits for Page's fetch to complete):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
export default async function Page() {
|
|
16
|
+
const header = await fetchHeader()
|
|
17
|
+
return (
|
|
18
|
+
<div>
|
|
19
|
+
<div>{header}</div>
|
|
20
|
+
<Sidebar />
|
|
21
|
+
</div>
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async function Sidebar() {
|
|
26
|
+
const items = await fetchSidebarItems()
|
|
27
|
+
return <nav>{items.map(renderItem)}</nav>
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Correct (both fetch simultaneously):**
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
async function Header() {
|
|
35
|
+
const data = await fetchHeader()
|
|
36
|
+
return <div>{data}</div>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function Sidebar() {
|
|
40
|
+
const items = await fetchSidebarItems()
|
|
41
|
+
return <nav>{items.map(renderItem)}</nav>
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default function Page() {
|
|
45
|
+
return (
|
|
46
|
+
<div>
|
|
47
|
+
<Header />
|
|
48
|
+
<Sidebar />
|
|
49
|
+
</div>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Alternative with children prop:**
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
async function Header() {
|
|
58
|
+
const data = await fetchHeader()
|
|
59
|
+
return <div>{data}</div>
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async function Sidebar() {
|
|
63
|
+
const items = await fetchSidebarItems()
|
|
64
|
+
return <nav>{items.map(renderItem)}</nav>
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function Layout({ children }: { children: ReactNode }) {
|
|
68
|
+
return (
|
|
69
|
+
<div>
|
|
70
|
+
<Header />
|
|
71
|
+
{children}
|
|
72
|
+
</div>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default function Page() {
|
|
77
|
+
return (
|
|
78
|
+
<Layout>
|
|
79
|
+
<Sidebar />
|
|
80
|
+
</Layout>
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Parallel Nested Data Fetching
|
|
3
|
+
impact: CRITICAL
|
|
4
|
+
impactDescription: eliminates server-side waterfalls
|
|
5
|
+
tags: server, rsc, parallel-fetching, promise-chaining
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Parallel Nested Data Fetching
|
|
9
|
+
|
|
10
|
+
When fetching nested data in parallel, chain dependent fetches within each item's promise so a slow item doesn't block the rest.
|
|
11
|
+
|
|
12
|
+
**Incorrect (a single slow item blocks all nested fetches):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
const chats = await Promise.all(
|
|
16
|
+
chatIds.map(id => getChat(id))
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
const chatAuthors = await Promise.all(
|
|
20
|
+
chats.map(chat => getUser(chat.author))
|
|
21
|
+
)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If one `getChat(id)` out of 100 is extremely slow, the authors of the other 99 chats can't start loading even though their data is ready.
|
|
25
|
+
|
|
26
|
+
**Correct (each item chains its own nested fetch):**
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
const chatAuthors = await Promise.all(
|
|
30
|
+
chatIds.map(id => getChat(id).then(chat => getUser(chat.author)))
|
|
31
|
+
)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Each item independently chains `getChat` → `getUser`, so a slow chat doesn't block author fetches for the others.
|
package/template/.agents/skills/code/vercel-react-best-practices/rules/server-serialization.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Minimize Serialization at RSC Boundaries
|
|
3
|
+
impact: HIGH
|
|
4
|
+
impactDescription: reduces data transfer size
|
|
5
|
+
tags: server, rsc, serialization, props
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Minimize Serialization at RSC Boundaries
|
|
9
|
+
|
|
10
|
+
The React Server/Client boundary serializes all object properties into strings and embeds them in the HTML response and subsequent RSC requests. This serialized data directly impacts page weight and load time, so **size matters a lot**. Only pass fields that the client actually uses.
|
|
11
|
+
|
|
12
|
+
**Incorrect (serializes all 50 fields):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
async function Page() {
|
|
16
|
+
const user = await fetchUser() // 50 fields
|
|
17
|
+
return <Profile user={user} />
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
'use client'
|
|
21
|
+
function Profile({ user }: { user: User }) {
|
|
22
|
+
return <div>{user.name}</div> // uses 1 field
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Correct (serializes only 1 field):**
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
async function Page() {
|
|
30
|
+
const user = await fetchUser()
|
|
31
|
+
return <Profile name={user.name} />
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
'use client'
|
|
35
|
+
function Profile({ name }: { name: string }) {
|
|
36
|
+
return <div>{name}</div>
|
|
37
|
+
}
|
|
38
|
+
```
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prisma-cli
|
|
3
|
+
description: Prisma ORM CLI commands reference covering init, generate, migrate, db, dev, studio, validate, format, debug, and mcp. Use for ORM/database CLI workflows, not Prisma Compute app deployment. For Prisma Compute, `@prisma/cli app deploy`, `compute:deploy`, `create-prisma --deploy`, apps, deployments, logs, or domains, use the `prisma-compute` skill instead. Triggers on "prisma init", "prisma generate", "prisma migrate", "prisma db", "prisma studio", "prisma mcp".
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: prisma
|
|
7
|
+
version: "7.6.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Prisma CLI Reference
|
|
11
|
+
|
|
12
|
+
Reference for Prisma ORM CLI commands. This skill provides guidance on command usage, options, and best practices for current Prisma ORM releases.
|
|
13
|
+
|
|
14
|
+
## Boundary: Compute
|
|
15
|
+
|
|
16
|
+
Do not use this skill for Prisma Compute app deployment. Use `prisma-compute` for `@prisma/cli app deploy`, `compute:deploy`, `create-prisma --deploy`, Compute apps, deployments, logs, domains, and framework deploy readiness.
|
|
17
|
+
|
|
18
|
+
## When to Apply
|
|
19
|
+
|
|
20
|
+
Reference this skill when:
|
|
21
|
+
- Setting up a new Prisma project (`prisma init`)
|
|
22
|
+
- Generating Prisma Client (`prisma generate`)
|
|
23
|
+
- Running database migrations (`prisma migrate`)
|
|
24
|
+
- Managing database state (`prisma db push/pull`)
|
|
25
|
+
- Using local development database (`prisma dev`)
|
|
26
|
+
- Debugging Prisma issues (`prisma debug`)
|
|
27
|
+
|
|
28
|
+
## Rule Categories by Priority
|
|
29
|
+
|
|
30
|
+
| Priority | Category | Impact | Prefix |
|
|
31
|
+
|----------|----------|--------|--------|
|
|
32
|
+
| 1 | Setup | HIGH | `init` |
|
|
33
|
+
| 2 | Generation | HIGH | `generate` |
|
|
34
|
+
| 3 | Development | HIGH | `dev` |
|
|
35
|
+
| 4 | Database | HIGH | `db-` |
|
|
36
|
+
| 5 | Migrations | CRITICAL | `migrate-` |
|
|
37
|
+
| 6 | Utility | MEDIUM | `studio`, `validate`, `format`, `debug`, `mcp` |
|
|
38
|
+
|
|
39
|
+
## Command Categories
|
|
40
|
+
|
|
41
|
+
| Category | Commands | Purpose |
|
|
42
|
+
|----------|----------|---------|
|
|
43
|
+
| Setup | `init` | Bootstrap new Prisma project |
|
|
44
|
+
| Generation | `generate` | Generate Prisma Client |
|
|
45
|
+
| Validation | `validate`, `format` | Schema validation and formatting |
|
|
46
|
+
| Development | `dev` | Local Prisma Postgres for development |
|
|
47
|
+
| Database | `db pull`, `db push`, `db seed`, `db execute` | Direct database operations |
|
|
48
|
+
| Migrations | `migrate dev`, `migrate deploy`, `migrate reset`, `migrate status`, `migrate diff`, `migrate resolve` | Schema migrations |
|
|
49
|
+
| Utility | `studio`, `mcp`, `version`, `debug` | Development and AI tooling |
|
|
50
|
+
|
|
51
|
+
## Quick Reference
|
|
52
|
+
|
|
53
|
+
### Project Setup
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Initialize new project (creates prisma/ folder and prisma.config.ts)
|
|
57
|
+
prisma init
|
|
58
|
+
|
|
59
|
+
# Initialize with specific database
|
|
60
|
+
prisma init --datasource-provider postgresql
|
|
61
|
+
prisma init --datasource-provider mysql
|
|
62
|
+
prisma init --datasource-provider sqlite
|
|
63
|
+
|
|
64
|
+
# Initialize with Prisma Postgres (cloud)
|
|
65
|
+
prisma init --db
|
|
66
|
+
|
|
67
|
+
# Initialize with an example model
|
|
68
|
+
prisma init --with-model
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Client Generation
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Generate Prisma Client
|
|
75
|
+
prisma generate
|
|
76
|
+
|
|
77
|
+
# Watch mode for development
|
|
78
|
+
prisma generate --watch
|
|
79
|
+
|
|
80
|
+
# Generate specific generator only
|
|
81
|
+
prisma generate --generator client
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Bun Runtime
|
|
85
|
+
|
|
86
|
+
When using Bun, always add the `--bun` flag so Prisma runs with the Bun runtime (otherwise it falls back to Node.js because of the CLI shebang):
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
bunx --bun prisma init
|
|
90
|
+
bunx --bun prisma generate
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Local Development Database
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Start local Prisma Postgres
|
|
97
|
+
prisma dev
|
|
98
|
+
|
|
99
|
+
# Start with specific name
|
|
100
|
+
prisma dev --name myproject
|
|
101
|
+
|
|
102
|
+
# Start in background (detached)
|
|
103
|
+
prisma dev --detach
|
|
104
|
+
|
|
105
|
+
# List all local instances
|
|
106
|
+
prisma dev ls
|
|
107
|
+
|
|
108
|
+
# Stop instance
|
|
109
|
+
prisma dev stop myproject
|
|
110
|
+
|
|
111
|
+
# Remove instance data
|
|
112
|
+
prisma dev rm myproject
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Database Operations
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Pull schema from existing database
|
|
119
|
+
prisma db pull
|
|
120
|
+
|
|
121
|
+
# Push schema to database (no migrations)
|
|
122
|
+
prisma db push
|
|
123
|
+
|
|
124
|
+
# Seed database
|
|
125
|
+
prisma db seed
|
|
126
|
+
|
|
127
|
+
# Execute raw SQL
|
|
128
|
+
prisma db execute --file ./script.sql
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Migrations (Development)
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Create and apply migration
|
|
135
|
+
prisma migrate dev
|
|
136
|
+
|
|
137
|
+
# Create migration with name
|
|
138
|
+
prisma migrate dev --name add_users_table
|
|
139
|
+
|
|
140
|
+
# Create migration without applying
|
|
141
|
+
prisma migrate dev --create-only
|
|
142
|
+
|
|
143
|
+
# Reset database and apply all migrations
|
|
144
|
+
prisma migrate reset
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Migrations (Production)
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Apply pending migrations (CI/CD)
|
|
151
|
+
prisma migrate deploy
|
|
152
|
+
|
|
153
|
+
# Check migration status
|
|
154
|
+
prisma migrate status
|
|
155
|
+
|
|
156
|
+
# Compare schemas and generate diff
|
|
157
|
+
prisma migrate diff --from-config-datasource --to-schema schema.prisma --script
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Utility Commands
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# Open Prisma Studio (database GUI)
|
|
164
|
+
prisma studio
|
|
165
|
+
|
|
166
|
+
# Start Prisma's MCP server for AI tools
|
|
167
|
+
prisma mcp
|
|
168
|
+
|
|
169
|
+
# Show version info
|
|
170
|
+
prisma version
|
|
171
|
+
prisma -v
|
|
172
|
+
|
|
173
|
+
# Debug information
|
|
174
|
+
prisma debug
|
|
175
|
+
|
|
176
|
+
# Validate schema
|
|
177
|
+
prisma validate
|
|
178
|
+
|
|
179
|
+
# Format schema
|
|
180
|
+
prisma format
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Current Prisma CLI Setup
|
|
184
|
+
|
|
185
|
+
### New Configuration File
|
|
186
|
+
|
|
187
|
+
Use `prisma.config.ts` for CLI configuration:
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
import 'dotenv/config'
|
|
191
|
+
import { defineConfig, env } from 'prisma/config'
|
|
192
|
+
|
|
193
|
+
export default defineConfig({
|
|
194
|
+
schema: 'prisma/schema.prisma',
|
|
195
|
+
migrations: {
|
|
196
|
+
path: 'prisma/migrations',
|
|
197
|
+
seed: 'tsx prisma/seed.ts',
|
|
198
|
+
},
|
|
199
|
+
datasource: {
|
|
200
|
+
url: env('DATABASE_URL'),
|
|
201
|
+
},
|
|
202
|
+
})
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Current Command Behavior
|
|
206
|
+
|
|
207
|
+
- Run `prisma generate` explicitly after `migrate dev`, `db push`, or other schema syncs when you need fresh client output
|
|
208
|
+
- Run `prisma db seed` explicitly after `migrate dev` or `migrate reset` when you need seed data
|
|
209
|
+
- Use `prisma db execute --file ...` for raw SQL scripts
|
|
210
|
+
|
|
211
|
+
### Environment Variables
|
|
212
|
+
|
|
213
|
+
Load environment variables explicitly in `prisma.config.ts`, commonly with `dotenv`:
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
// prisma.config.ts
|
|
217
|
+
import 'dotenv/config'
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Rule Files
|
|
221
|
+
|
|
222
|
+
See individual rule files for detailed command documentation:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
references/init.md - Project initialization
|
|
226
|
+
references/generate.md - Client generation
|
|
227
|
+
references/dev.md - Local development database
|
|
228
|
+
references/db-pull.md - Database introspection
|
|
229
|
+
references/db-push.md - Schema push
|
|
230
|
+
references/db-seed.md - Database seeding
|
|
231
|
+
references/db-execute.md - Raw SQL execution
|
|
232
|
+
references/migrate-dev.md - Development migrations
|
|
233
|
+
references/migrate-deploy.md - Production migrations
|
|
234
|
+
references/migrate-reset.md - Database reset
|
|
235
|
+
references/migrate-status.md - Migration status
|
|
236
|
+
references/migrate-resolve.md - Migration resolution
|
|
237
|
+
references/migrate-diff.md - Schema diffing
|
|
238
|
+
references/studio.md - Database GUI
|
|
239
|
+
references/mcp.md - Prisma MCP server
|
|
240
|
+
references/validate.md - Schema validation
|
|
241
|
+
references/format.md - Schema formatting
|
|
242
|
+
references/debug.md - Debug info
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## How to Use
|
|
246
|
+
|
|
247
|
+
Use the command categories above for navigation, then open the specific command reference file you need.
|