[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-prisma-prisma-next":3,"mdc--sd7ot7-key":35,"related-repo-prisma-prisma-next":707,"related-org-prisma-prisma-next":795},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":31,"sourceUrl":33,"mdContent":34},"prisma-next","guide Prisma Next project setup and usage","Route a vague Prisma Next prompt to the right specific skill. Use for \"help me with Prisma Next\", \"what is Prisma Next\", \"explain Prisma Next\", \"I'm new to PN\", \"where do I start\", \"what can I do with Prisma Next\", \"what can I do next with Prisma\", \"just ran createprisma\", \"tour of Prisma Next\", \"Prisma Next overview\", and comparison questions like \"Prisma Next vs Prisma 7\", \"PN vs Drizzle\", \"PN vs Kysely\", \"PN vs TypeORM\". Do NOT use when the prompt clearly matches a workflow skill — adoption \u002F quickstart \u002F first-touch orientation \u002F brownfield introspection, schema \u002F contract editing, migration authoring (db update \u002F migration plan \u002F migrate), migration review on deploy \u002F concurrent migrations, queries \u002F db.orm \u002F db.sql \u002F TypedSQL, Supabase \u002F RLS \u002F role binding, runtime \u002F db.ts \u002F middleware wiring, build \u002F Vite plugin \u002F Next.js plugin, debug \u002F structured error envelopes \u002F PN-* error codes, or feedback \u002F bug report \u002F feature request — load that sibling skill directly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"prisma","Prisma","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fprisma.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Next.js","next-js","tag",{"name":17,"slug":18,"type":15},"TypeScript","typescript",{"name":20,"slug":21,"type":15},"Database","database",{"name":9,"slug":8,"type":15},415,"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next","2026-07-17T05:32:04.322957",null,15,[29,30],"loggy-core","loggy-terminal",{"repoUrl":24,"stars":23,"forks":27,"topics":32,"description":26},[29,30],"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Ftree\u002FHEAD\u002Fskills\u002Fprisma-next","---\nname: prisma-next\ndescription: Route a vague Prisma Next prompt to the right specific skill. Use for \"help me with Prisma Next\", \"what is Prisma Next\", \"explain Prisma Next\", \"I'm new to PN\", \"where do I start\", \"what can I do with Prisma Next\", \"what can I do next with Prisma\", \"just ran createprisma\", \"tour of Prisma Next\", \"Prisma Next overview\", and comparison questions like \"Prisma Next vs Prisma 7\", \"PN vs Drizzle\", \"PN vs Kysely\", \"PN vs TypeORM\". Do NOT use when the prompt clearly matches a workflow skill — adoption \u002F quickstart \u002F first-touch orientation \u002F brownfield introspection, schema \u002F contract editing, migration authoring (db update \u002F migration plan \u002F migrate), migration review on deploy \u002F concurrent migrations, queries \u002F db.orm \u002F db.sql \u002F TypedSQL, Supabase \u002F RLS \u002F role binding, runtime \u002F db.ts \u002F middleware wiring, build \u002F Vite plugin \u002F Next.js plugin, debug \u002F structured error envelopes \u002F PN-* error codes, or feedback \u002F bug report \u002F feature request — load that sibling skill directly.\n---\n\n# Prisma Next — Router\n\n> **Edit your data contract. Prisma handles the rest.**\n\nThis skill exists to disambiguate vague Prisma Next prompts. When the user hasn't yet committed to a specific workflow (e.g. *\"help me with Prisma Next\"*, *\"explain how Prisma Next works\"*, *\"I'm new to PN, where do I start?\"*), this skill fires and routes them to the right specific skill.\n\n## When to Use\n\n- The user has not yet stated a concrete task.\n- The user types a meta-question about Prisma Next (*\"what is Prisma Next?\"*, *\"how does PN compare to Drizzle\u002FPrisma 7?\"*).\n- The user asks for a tour, an overview, or a starting point.\n\n## When Not to Use\n\n- The user named a workflow — use the matching skill directly:\n  - Setting up a new project or adopting an existing DB → `prisma-next-quickstart`.\n  - Editing the schema, adding a model, changing a field → `prisma-next-contract`.\n  - Authoring a migration, fixing a planner error → `prisma-next-migrations`.\n  - Reviewing what's about to run on merge, handling concurrent migrations → `prisma-next-migration-review`.\n  - Writing a query → `prisma-next-queries`.\n  - Supabase — RLS policies, role binding (`asUser` \u002F `asAnon` \u002F `asServiceRole`), `auth.users` FKs, `@prisma-next\u002Fextension-supabase` → `prisma-next-supabase`.\n  - Wiring `db.ts`, middleware, environment config → `prisma-next-runtime`.\n  - Build-system \u002F dev-server plugin (Vite, Next.js, …) → `prisma-next-build`.\n  - A specific error code or symptom → `prisma-next-debug`.\n  - Reporting a bug or filing a feature request against Prisma Next → `prisma-next-feedback`.\n\n## Routing rules\n\nIf the user's prompt clearly matches one of the workflow skills, route there directly without asking.\n\nOtherwise, ask **one** disambiguating question. Pick from:\n\n- *\"Are you new to Prisma Next and asking what you can do with it, or where to start?\"* (and any *\"what can I do with Prisma Next?\"* \u002F *\"I just ran createprisma\"* variant) → `prisma-next-quickstart` (first-touch orientation path).\n- *\"Do you want to set up a new Prisma Next project, or wire it into an existing database?\"* → `prisma-next-quickstart`.\n- *\"Do you want to edit your data contract (add a model \u002F field \u002F relation), or work with the database (migrations, queries)?\"* → `prisma-next-contract` vs the others.\n- *\"Is this about authoring a migration, or about reviewing what's going to run on deploy?\"* → `prisma-next-migrations` vs `prisma-next-migration-review`.\n- *\"Is this about wiring Prisma Next into your build tool (Vite \u002F Next.js \u002F …), or about wiring `db.ts` and middleware at runtime?\"* → `prisma-next-build` vs `prisma-next-runtime`.\n- *\"What error or symptom are you seeing?\"* → `prisma-next-debug`.\n- *\"Do you want to report this as a bug to the Prisma Next team, or is this a feature request?\"* → `prisma-next-feedback`.\n\nIf you still can't tell which skill applies, ask the user what they want to do. Do not guess.\n\n## The canonical model (one paragraph)\n\nPrisma Next is a contract-first data layer. You author a **data contract** (a `contract.prisma` file, or a TypeScript builder). The framework emits machine-readable artifacts (`contract.json`, `contract.d.ts`) and gives you three runtime surfaces on SQL targets: a typed SQL query builder (`db.sql.from(...)`), a typed ORM client (`db.orm.User.select(...)`), and a raw SQL escape hatch (`db.sql.raw(...)`). On MongoDB targets only the ORM lane exists, and its keys are collection storage names (`db.orm.users`) rather than PSL model names — `prisma-next-queries` § *MongoDB ORM addressing* covers the rule. Migrations are planned from the contract diff; you review them, optionally edit the `migration.ts` for data transforms, and apply.\n\nThree steps the user does:\n\n1. **Edit your data contract.** (`prisma-next-contract`)\n2. **The system plans the migrations for you.** (`prisma-next-migrations`)\n3. **If you need data migrations, you edit `migration.ts` and execute it.** (`prisma-next-migrations`)\n\nEverything else — queries, runtime wiring, build integration, debugging, feedback — sits on top of those three.\n\n## Checklist\n\n- [ ] If the prompt matches a specific workflow skill, route there without asking.\n- [ ] If the prompt is vague, ask one disambiguating question.\n- [ ] Do not attempt to answer the user's question from this skill — load the right specific skill first.\n- [ ] If the user describes a missing feature or a misbehaviour they want fixed, route to `prisma-next-feedback`.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,49,63,89,96,129,135,315,321,326,338,482,487,493,582,587,645,650,656],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"prisma-next-router",[46],{"type":47,"value":48},"text","Prisma Next — Router",{"type":41,"tag":50,"props":51,"children":52},"blockquote",{},[53],{"type":41,"tag":54,"props":55,"children":56},"p",{},[57],{"type":41,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":47,"value":62},"Edit your data contract. Prisma handles the rest.",{"type":41,"tag":54,"props":64,"children":65},{},[66,68,74,76,81,82,87],{"type":47,"value":67},"This skill exists to disambiguate vague Prisma Next prompts. When the user hasn't yet committed to a specific workflow (e.g. ",{"type":41,"tag":69,"props":70,"children":71},"em",{},[72],{"type":47,"value":73},"\"help me with Prisma Next\"",{"type":47,"value":75},", ",{"type":41,"tag":69,"props":77,"children":78},{},[79],{"type":47,"value":80},"\"explain how Prisma Next works\"",{"type":47,"value":75},{"type":41,"tag":69,"props":83,"children":84},{},[85],{"type":47,"value":86},"\"I'm new to PN, where do I start?\"",{"type":47,"value":88},"), this skill fires and routes them to the right specific skill.",{"type":41,"tag":90,"props":91,"children":93},"h2",{"id":92},"when-to-use",[94],{"type":47,"value":95},"When to Use",{"type":41,"tag":97,"props":98,"children":99},"ul",{},[100,106,124],{"type":41,"tag":101,"props":102,"children":103},"li",{},[104],{"type":47,"value":105},"The user has not yet stated a concrete task.",{"type":41,"tag":101,"props":107,"children":108},{},[109,111,116,117,122],{"type":47,"value":110},"The user types a meta-question about Prisma Next (",{"type":41,"tag":69,"props":112,"children":113},{},[114],{"type":47,"value":115},"\"what is Prisma Next?\"",{"type":47,"value":75},{"type":41,"tag":69,"props":118,"children":119},{},[120],{"type":47,"value":121},"\"how does PN compare to Drizzle\u002FPrisma 7?\"",{"type":47,"value":123},").",{"type":41,"tag":101,"props":125,"children":126},{},[127],{"type":47,"value":128},"The user asks for a tour, an overview, or a starting point.",{"type":41,"tag":90,"props":130,"children":132},{"id":131},"when-not-to-use",[133],{"type":47,"value":134},"When Not to Use",{"type":41,"tag":97,"props":136,"children":137},{},[138],{"type":41,"tag":101,"props":139,"children":140},{},[141,143],{"type":47,"value":142},"The user named a workflow — use the matching skill directly:\n",{"type":41,"tag":97,"props":144,"children":145},{},[146,160,172,184,196,208,259,279,291,303],{"type":41,"tag":101,"props":147,"children":148},{},[149,151,158],{"type":47,"value":150},"Setting up a new project or adopting an existing DB → ",{"type":41,"tag":152,"props":153,"children":155},"code",{"className":154},[],[156],{"type":47,"value":157},"prisma-next-quickstart",{"type":47,"value":159},".",{"type":41,"tag":101,"props":161,"children":162},{},[163,165,171],{"type":47,"value":164},"Editing the schema, adding a model, changing a field → ",{"type":41,"tag":152,"props":166,"children":168},{"className":167},[],[169],{"type":47,"value":170},"prisma-next-contract",{"type":47,"value":159},{"type":41,"tag":101,"props":173,"children":174},{},[175,177,183],{"type":47,"value":176},"Authoring a migration, fixing a planner error → ",{"type":41,"tag":152,"props":178,"children":180},{"className":179},[],[181],{"type":47,"value":182},"prisma-next-migrations",{"type":47,"value":159},{"type":41,"tag":101,"props":185,"children":186},{},[187,189,195],{"type":47,"value":188},"Reviewing what's about to run on merge, handling concurrent migrations → ",{"type":41,"tag":152,"props":190,"children":192},{"className":191},[],[193],{"type":47,"value":194},"prisma-next-migration-review",{"type":47,"value":159},{"type":41,"tag":101,"props":197,"children":198},{},[199,201,207],{"type":47,"value":200},"Writing a query → ",{"type":41,"tag":152,"props":202,"children":204},{"className":203},[],[205],{"type":47,"value":206},"prisma-next-queries",{"type":47,"value":159},{"type":41,"tag":101,"props":209,"children":210},{},[211,213,219,221,227,228,234,236,242,244,250,252,258],{"type":47,"value":212},"Supabase — RLS policies, role binding (",{"type":41,"tag":152,"props":214,"children":216},{"className":215},[],[217],{"type":47,"value":218},"asUser",{"type":47,"value":220}," \u002F ",{"type":41,"tag":152,"props":222,"children":224},{"className":223},[],[225],{"type":47,"value":226},"asAnon",{"type":47,"value":220},{"type":41,"tag":152,"props":229,"children":231},{"className":230},[],[232],{"type":47,"value":233},"asServiceRole",{"type":47,"value":235},"), ",{"type":41,"tag":152,"props":237,"children":239},{"className":238},[],[240],{"type":47,"value":241},"auth.users",{"type":47,"value":243}," FKs, ",{"type":41,"tag":152,"props":245,"children":247},{"className":246},[],[248],{"type":47,"value":249},"@prisma-next\u002Fextension-supabase",{"type":47,"value":251}," → ",{"type":41,"tag":152,"props":253,"children":255},{"className":254},[],[256],{"type":47,"value":257},"prisma-next-supabase",{"type":47,"value":159},{"type":41,"tag":101,"props":260,"children":261},{},[262,264,270,272,278],{"type":47,"value":263},"Wiring ",{"type":41,"tag":152,"props":265,"children":267},{"className":266},[],[268],{"type":47,"value":269},"db.ts",{"type":47,"value":271},", middleware, environment config → ",{"type":41,"tag":152,"props":273,"children":275},{"className":274},[],[276],{"type":47,"value":277},"prisma-next-runtime",{"type":47,"value":159},{"type":41,"tag":101,"props":280,"children":281},{},[282,284,290],{"type":47,"value":283},"Build-system \u002F dev-server plugin (Vite, Next.js, …) → ",{"type":41,"tag":152,"props":285,"children":287},{"className":286},[],[288],{"type":47,"value":289},"prisma-next-build",{"type":47,"value":159},{"type":41,"tag":101,"props":292,"children":293},{},[294,296,302],{"type":47,"value":295},"A specific error code or symptom → ",{"type":41,"tag":152,"props":297,"children":299},{"className":298},[],[300],{"type":47,"value":301},"prisma-next-debug",{"type":47,"value":159},{"type":41,"tag":101,"props":304,"children":305},{},[306,308,314],{"type":47,"value":307},"Reporting a bug or filing a feature request against Prisma Next → ",{"type":41,"tag":152,"props":309,"children":311},{"className":310},[],[312],{"type":47,"value":313},"prisma-next-feedback",{"type":47,"value":159},{"type":41,"tag":90,"props":316,"children":318},{"id":317},"routing-rules",[319],{"type":47,"value":320},"Routing rules",{"type":41,"tag":54,"props":322,"children":323},{},[324],{"type":47,"value":325},"If the user's prompt clearly matches one of the workflow skills, route there directly without asking.",{"type":41,"tag":54,"props":327,"children":328},{},[329,331,336],{"type":47,"value":330},"Otherwise, ask ",{"type":41,"tag":58,"props":332,"children":333},{},[334],{"type":47,"value":335},"one",{"type":47,"value":337}," disambiguating question. Pick from:",{"type":41,"tag":97,"props":339,"children":340},{},[341,371,386,402,424,452,467],{"type":41,"tag":101,"props":342,"children":343},{},[344,349,351,356,357,362,364,369],{"type":41,"tag":69,"props":345,"children":346},{},[347],{"type":47,"value":348},"\"Are you new to Prisma Next and asking what you can do with it, or where to start?\"",{"type":47,"value":350}," (and any ",{"type":41,"tag":69,"props":352,"children":353},{},[354],{"type":47,"value":355},"\"what can I do with Prisma Next?\"",{"type":47,"value":220},{"type":41,"tag":69,"props":358,"children":359},{},[360],{"type":47,"value":361},"\"I just ran createprisma\"",{"type":47,"value":363}," variant) → ",{"type":41,"tag":152,"props":365,"children":367},{"className":366},[],[368],{"type":47,"value":157},{"type":47,"value":370}," (first-touch orientation path).",{"type":41,"tag":101,"props":372,"children":373},{},[374,379,380,385],{"type":41,"tag":69,"props":375,"children":376},{},[377],{"type":47,"value":378},"\"Do you want to set up a new Prisma Next project, or wire it into an existing database?\"",{"type":47,"value":251},{"type":41,"tag":152,"props":381,"children":383},{"className":382},[],[384],{"type":47,"value":157},{"type":47,"value":159},{"type":41,"tag":101,"props":387,"children":388},{},[389,394,395,400],{"type":41,"tag":69,"props":390,"children":391},{},[392],{"type":47,"value":393},"\"Do you want to edit your data contract (add a model \u002F field \u002F relation), or work with the database (migrations, queries)?\"",{"type":47,"value":251},{"type":41,"tag":152,"props":396,"children":398},{"className":397},[],[399],{"type":47,"value":170},{"type":47,"value":401}," vs the others.",{"type":41,"tag":101,"props":403,"children":404},{},[405,410,411,416,418,423],{"type":41,"tag":69,"props":406,"children":407},{},[408],{"type":47,"value":409},"\"Is this about authoring a migration, or about reviewing what's going to run on deploy?\"",{"type":47,"value":251},{"type":41,"tag":152,"props":412,"children":414},{"className":413},[],[415],{"type":47,"value":182},{"type":47,"value":417}," vs ",{"type":41,"tag":152,"props":419,"children":421},{"className":420},[],[422],{"type":47,"value":194},{"type":47,"value":159},{"type":41,"tag":101,"props":425,"children":426},{},[427,439,440,445,446,451],{"type":41,"tag":69,"props":428,"children":429},{},[430,432,437],{"type":47,"value":431},"\"Is this about wiring Prisma Next into your build tool (Vite \u002F Next.js \u002F …), or about wiring ",{"type":41,"tag":152,"props":433,"children":435},{"className":434},[],[436],{"type":47,"value":269},{"type":47,"value":438}," and middleware at runtime?\"",{"type":47,"value":251},{"type":41,"tag":152,"props":441,"children":443},{"className":442},[],[444],{"type":47,"value":289},{"type":47,"value":417},{"type":41,"tag":152,"props":447,"children":449},{"className":448},[],[450],{"type":47,"value":277},{"type":47,"value":159},{"type":41,"tag":101,"props":453,"children":454},{},[455,460,461,466],{"type":41,"tag":69,"props":456,"children":457},{},[458],{"type":47,"value":459},"\"What error or symptom are you seeing?\"",{"type":47,"value":251},{"type":41,"tag":152,"props":462,"children":464},{"className":463},[],[465],{"type":47,"value":301},{"type":47,"value":159},{"type":41,"tag":101,"props":468,"children":469},{},[470,475,476,481],{"type":41,"tag":69,"props":471,"children":472},{},[473],{"type":47,"value":474},"\"Do you want to report this as a bug to the Prisma Next team, or is this a feature request?\"",{"type":47,"value":251},{"type":41,"tag":152,"props":477,"children":479},{"className":478},[],[480],{"type":47,"value":313},{"type":47,"value":159},{"type":41,"tag":54,"props":483,"children":484},{},[485],{"type":47,"value":486},"If you still can't tell which skill applies, ask the user what they want to do. Do not guess.",{"type":41,"tag":90,"props":488,"children":490},{"id":489},"the-canonical-model-one-paragraph",[491],{"type":47,"value":492},"The canonical model (one paragraph)",{"type":41,"tag":54,"props":494,"children":495},{},[496,498,503,505,511,513,519,520,526,528,534,536,542,544,550,552,558,560,565,567,572,574,580],{"type":47,"value":497},"Prisma Next is a contract-first data layer. You author a ",{"type":41,"tag":58,"props":499,"children":500},{},[501],{"type":47,"value":502},"data contract",{"type":47,"value":504}," (a ",{"type":41,"tag":152,"props":506,"children":508},{"className":507},[],[509],{"type":47,"value":510},"contract.prisma",{"type":47,"value":512}," file, or a TypeScript builder). The framework emits machine-readable artifacts (",{"type":41,"tag":152,"props":514,"children":516},{"className":515},[],[517],{"type":47,"value":518},"contract.json",{"type":47,"value":75},{"type":41,"tag":152,"props":521,"children":523},{"className":522},[],[524],{"type":47,"value":525},"contract.d.ts",{"type":47,"value":527},") and gives you three runtime surfaces on SQL targets: a typed SQL query builder (",{"type":41,"tag":152,"props":529,"children":531},{"className":530},[],[532],{"type":47,"value":533},"db.sql.from(...)",{"type":47,"value":535},"), a typed ORM client (",{"type":41,"tag":152,"props":537,"children":539},{"className":538},[],[540],{"type":47,"value":541},"db.orm.User.select(...)",{"type":47,"value":543},"), and a raw SQL escape hatch (",{"type":41,"tag":152,"props":545,"children":547},{"className":546},[],[548],{"type":47,"value":549},"db.sql.raw(...)",{"type":47,"value":551},"). On MongoDB targets only the ORM lane exists, and its keys are collection storage names (",{"type":41,"tag":152,"props":553,"children":555},{"className":554},[],[556],{"type":47,"value":557},"db.orm.users",{"type":47,"value":559},") rather than PSL model names — ",{"type":41,"tag":152,"props":561,"children":563},{"className":562},[],[564],{"type":47,"value":206},{"type":47,"value":566}," § ",{"type":41,"tag":69,"props":568,"children":569},{},[570],{"type":47,"value":571},"MongoDB ORM addressing",{"type":47,"value":573}," covers the rule. Migrations are planned from the contract diff; you review them, optionally edit the ",{"type":41,"tag":152,"props":575,"children":577},{"className":576},[],[578],{"type":47,"value":579},"migration.ts",{"type":47,"value":581}," for data transforms, and apply.",{"type":41,"tag":54,"props":583,"children":584},{},[585],{"type":47,"value":586},"Three steps the user does:",{"type":41,"tag":588,"props":589,"children":590},"ol",{},[591,608,623],{"type":41,"tag":101,"props":592,"children":593},{},[594,599,601,606],{"type":41,"tag":58,"props":595,"children":596},{},[597],{"type":47,"value":598},"Edit your data contract.",{"type":47,"value":600}," (",{"type":41,"tag":152,"props":602,"children":604},{"className":603},[],[605],{"type":47,"value":170},{"type":47,"value":607},")",{"type":41,"tag":101,"props":609,"children":610},{},[611,616,617,622],{"type":41,"tag":58,"props":612,"children":613},{},[614],{"type":47,"value":615},"The system plans the migrations for you.",{"type":47,"value":600},{"type":41,"tag":152,"props":618,"children":620},{"className":619},[],[621],{"type":47,"value":182},{"type":47,"value":607},{"type":41,"tag":101,"props":624,"children":625},{},[626,638,639,644],{"type":41,"tag":58,"props":627,"children":628},{},[629,631,636],{"type":47,"value":630},"If you need data migrations, you edit ",{"type":41,"tag":152,"props":632,"children":634},{"className":633},[],[635],{"type":47,"value":579},{"type":47,"value":637}," and execute it.",{"type":47,"value":600},{"type":41,"tag":152,"props":640,"children":642},{"className":641},[],[643],{"type":47,"value":182},{"type":47,"value":607},{"type":41,"tag":54,"props":646,"children":647},{},[648],{"type":47,"value":649},"Everything else — queries, runtime wiring, build integration, debugging, feedback — sits on top of those three.",{"type":41,"tag":90,"props":651,"children":653},{"id":652},"checklist",[654],{"type":47,"value":655},"Checklist",{"type":41,"tag":97,"props":657,"children":660},{"className":658},[659],"contains-task-list",[661,674,683,692],{"type":41,"tag":101,"props":662,"children":665},{"className":663},[664],"task-list-item",[666,672],{"type":41,"tag":667,"props":668,"children":671},"input",{"disabled":669,"type":670},true,"checkbox",[],{"type":47,"value":673}," If the prompt matches a specific workflow skill, route there without asking.",{"type":41,"tag":101,"props":675,"children":677},{"className":676},[664],[678,681],{"type":41,"tag":667,"props":679,"children":680},{"disabled":669,"type":670},[],{"type":47,"value":682}," If the prompt is vague, ask one disambiguating question.",{"type":41,"tag":101,"props":684,"children":686},{"className":685},[664],[687,690],{"type":41,"tag":667,"props":688,"children":689},{"disabled":669,"type":670},[],{"type":47,"value":691}," Do not attempt to answer the user's question from this skill — load the right specific skill first.",{"type":41,"tag":101,"props":693,"children":695},{"className":694},[664],[696,699,701,706],{"type":41,"tag":667,"props":697,"children":698},{"disabled":669,"type":670},[],{"type":47,"value":700}," If the user describes a missing feature or a misbehaviour they want fixed, route to ",{"type":41,"tag":152,"props":702,"children":704},{"className":703},[],[705],{"type":47,"value":313},{"type":47,"value":159},{"items":708,"total":794},[709,716,730,742,754,767,784],{"slug":4,"name":4,"fn":5,"description":6,"org":710,"tags":711,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[712,713,714,715],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"slug":289,"name":289,"fn":717,"description":718,"org":719,"tags":720,"stars":23,"repoUrl":24,"updatedAt":729},"integrate Prisma Next into build systems","Wire Prisma Next into the project's build system with the right build-tool plugin — Vite today via @prisma-next\u002Fvite-plugin-contract-emit (Vite 7 \u002F 8); Next.js \u002F Webpack \u002F esbuild \u002F Rollup \u002F Turbopack are named as gaps rather than fabricated. Always offers the Vite plugin proactively when the project is using Vite. Use for vite plugin, vite-plugin, vite.config.ts, prismaVitePlugin, contract emit on save, HMR, hot reload contract, dev server, Next.js plugin, next plugin, withPrismaNext, webpack plugin, esbuild plugin, rollup plugin, build integration, dev server plugin, vite 7, vite 8.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[721,724,725,726],{"name":722,"slug":723,"type":15},"Deployment","deployment",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":727,"slug":728,"type":15},"Vite","vite","2026-07-02T07:31:36.108254",{"slug":170,"name":170,"fn":731,"description":732,"org":733,"tags":734,"stars":23,"repoUrl":24,"updatedAt":741},"edit Prisma Next data contracts and models","Edit the Prisma Next data contract — add models, fields, relations, indexes, enums, value objects (composite types), type aliases, namespaces (Postgres schemas), cross-contract foreign keys (cross-space FK), polymorphic types (`@@discriminator` \u002F `@@base`), use extension namespaces (`pgvector.Vector(...)`, `cipherstash.EncryptedString(...)`), wire `prisma-next.config.ts` with `defineConfig` from the `@prisma-next\u002F\u003Ctarget>\u002Fconfig` façade, and run `prisma-next contract emit`. Use for schema, models, fields, attributes, soft delete, paranoid, scopes, validations, callbacks, prisma schema, PSL, contract.prisma, contract.ts, contract.json, contract.d.ts, `@prisma-next\u002Fpostgres\u002Fconfig`, `@prisma-next\u002Fpostgres\u002Fcontract-builder`, `@prisma-next\u002Fpostgres\u002Fcontrol`, `@prisma-next\u002Fmongo\u002Fconfig`, `@prisma-next\u002Fmongo\u002Fcontract-builder`, `extensions:`, pgvector, cipherstash, postgis, paradedb, supabase, `@prisma-next\u002Fextension-supabase`, `@@control`, control policy, managed, tolerated, external, observed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[735,738,739,740],{"name":736,"slug":737,"type":15},"Data Modeling","data-modeling",{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-07-30T05:30:10.426962",{"slug":301,"name":301,"fn":743,"description":744,"org":745,"tags":746,"stars":23,"repoUrl":24,"updatedAt":753},"debug and recover from Prisma Next errors","Read a Prisma Next structured error envelope and route to the right recovery — code, domain, severity, why, fix, meta. Use for error, exception, my emit failed, my query won't typecheck, my query crashed, my migration won't apply, MIGRATION.HASH_MISMATCH, BUDGET.ROWS_EXCEEDED, BUDGET.TIME_EXCEEDED, RUNTIME.ABORTED, PLAN.HASH_MISMATCH, CONTRACT.MARKER_MISSING, PN-RUN-3001, PN-RUN-3002, PN-RUN-3030, PN-MIG-2001, PN-CLI-4011, PN-SCHEMA-0001, drift, capability missing, planner conflict, prisma studio, EXPLAIN, query log, db.end, db.close, script won't exit, hangs, close connection, pool.end, client is closed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[747,748,751,752],{"name":20,"slug":21,"type":15},{"name":749,"slug":750,"type":15},"Debugging","debugging",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-24T05:37:10.436314",{"slug":313,"name":313,"fn":755,"description":756,"org":757,"tags":758,"stars":23,"repoUrl":24,"updatedAt":766},"report Prisma Next issues and feedback","Hand a Prisma Next question or report off to the team — file a GitHub issue (bug or feature request), or route Q&A \u002F design discussion \u002F direct-team-contact to the Prisma Discord at pris.ly\u002Fdiscord. Use for bug, bug report, file an issue, report a bug, feature request, missing feature, this should be a feature, file this, this is a bug, this is broken, surprising behaviour, this doesn't work, file feedback, send feedback, capability gap, file via prisma-next-feedback, ask the team, talk to the team, talk to the Prisma team, talk to Prisma, Discord, Prisma Discord, Q&A, design feedback, is this the intended way, how should I do X, extension author question, extension author needs help.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[759,762,765],{"name":760,"slug":761,"type":15},"Documentation","documentation",{"name":763,"slug":764,"type":15},"GitHub","github",{"name":9,"slug":8,"type":15},"2026-07-02T07:31:34.870809",{"slug":194,"name":194,"fn":768,"description":769,"org":770,"tags":771,"stars":23,"repoUrl":24,"updatedAt":783},"review and resolve Prisma Next migrations","Review what Prisma Next migrations will run on merge or deploy, render the migration graph, resolve concurrent \u002F diamond-convergence conflicts, and configure environment refs for CI. Use for \"what migrations are going to run\", \"what runs on deploy\", merge conflict, diamond convergence, concurrent migrations, migration status, ref management, staging, production, MIGRATION.DIVERGED, MIGRATION.NO_MARKER, MIGRATION.MARKER_NOT_IN_HISTORY, prisma migrate status, prisma migrate diff, prisma migrate resolve.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[772,775,778,779,782],{"name":773,"slug":774,"type":15},"CI\u002FCD","ci-cd",{"name":776,"slug":777,"type":15},"Code Review","code-review",{"name":20,"slug":21,"type":15},{"name":780,"slug":781,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-24T05:37:11.422323",{"slug":182,"name":182,"fn":785,"description":786,"org":787,"tags":788,"stars":23,"repoUrl":24,"updatedAt":793},"author and manage Prisma Next migrations","Author Prisma Next migrations — choose db update vs migration plan, edit the framework-rendered migration.ts (replace placeholder sentinels with dataTransform closures), recover from MIGRATION.HASH_MISMATCH or PN-MIG-2001 unfilled placeholder. Use for prisma migrate dev, prisma migrate deploy, prisma db push, db update, db update --dry-run, migration plan, migrate, migration new, migration show, db verify, db sign, data migration, this.dataTransform, dataTransform, placeholder, generated migration.ts, edit migration.ts, MIGRATION.HASH_MISMATCH, schema drift.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[789,790,791,792],{"name":20,"slug":21,"type":15},{"name":780,"slug":781,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-07-24T05:37:13.469138",11,{"items":796,"total":914},[797,804,811,818,825,831,839,846,861,873,883,898],{"slug":4,"name":4,"fn":5,"description":6,"org":798,"tags":799,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[800,801,802,803],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"slug":289,"name":289,"fn":717,"description":718,"org":805,"tags":806,"stars":23,"repoUrl":24,"updatedAt":729},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[807,808,809,810],{"name":722,"slug":723,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":727,"slug":728,"type":15},{"slug":170,"name":170,"fn":731,"description":732,"org":812,"tags":813,"stars":23,"repoUrl":24,"updatedAt":741},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[814,815,816,817],{"name":736,"slug":737,"type":15},{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"slug":301,"name":301,"fn":743,"description":744,"org":819,"tags":820,"stars":23,"repoUrl":24,"updatedAt":753},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[821,822,823,824],{"name":20,"slug":21,"type":15},{"name":749,"slug":750,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":313,"name":313,"fn":755,"description":756,"org":826,"tags":827,"stars":23,"repoUrl":24,"updatedAt":766},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[828,829,830],{"name":760,"slug":761,"type":15},{"name":763,"slug":764,"type":15},{"name":9,"slug":8,"type":15},{"slug":194,"name":194,"fn":768,"description":769,"org":832,"tags":833,"stars":23,"repoUrl":24,"updatedAt":783},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[834,835,836,837,838],{"name":773,"slug":774,"type":15},{"name":776,"slug":777,"type":15},{"name":20,"slug":21,"type":15},{"name":780,"slug":781,"type":15},{"name":9,"slug":8,"type":15},{"slug":182,"name":182,"fn":785,"description":786,"org":840,"tags":841,"stars":23,"repoUrl":24,"updatedAt":793},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[842,843,844,845],{"name":20,"slug":21,"type":15},{"name":780,"slug":781,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"slug":206,"name":206,"fn":847,"description":848,"org":849,"tags":850,"stars":23,"repoUrl":24,"updatedAt":860},"write Prisma Next queries for database operations","Write Prisma Next queries for Postgres, SQLite, or Mongo — pick a lane (Postgres\u002FSQLite `db.orm.\u003CModel>` + `db.sql.\u003Ctable>`; Mongo `db.orm.\u003Croot>` + `db.query.from(...)` pipeline builder), filter \u002F project \u002F sort \u002F paginate, eager-load with `.include(...)`, Postgres\u002FSQLite `db.transaction(...)`, Postgres\u002FSQLite ORM `.aggregate(...)`, Mongo aggregations via query builder, namespace-aware accessors (`db.orm.\u003Cns>.\u003CModel>`, `db.sql.\u003Cns>.\u003Ctable>`). Triggers: query, where, match, select, project, orderBy, take, skip, include, lookup, first, all, count, aggregate, group, create, update, delete, upsert, returning, transaction, db.close, script teardown, variant, polymorphism, drizzle-style, kysely-style. Notes: `.all()` is a Thenable (just `await` it), iterators are single-use (`RUNTIME.ITERATOR_CONSUMED`), Postgres `count` is `number` while sum\u002Favg\u002Fmin\u002Fmax are `number | null`, ranges use chained `.where()` or `and(...)` (no `.between(...)`).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[851,852,853,856,857],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":854,"slug":855,"type":15},"PostgreSQL","postgresql",{"name":9,"slug":8,"type":15},{"name":858,"slug":859,"type":15},"SQL","sql","2026-07-17T05:32:03.35373",{"slug":157,"name":157,"fn":862,"description":863,"org":864,"tags":865,"stars":23,"repoUrl":24,"updatedAt":872},"adopt Prisma Next in projects","Adopt Prisma Next into a new project, onto an existing database, or as the first move after a bootstrap tool dropped you into a scaffold. Use for \"what can I do with Prisma Next\", \"what can I do next with Prisma\", \"where do I start\", \"what should I do first\", \"just ran createprisma\", \"createprisma\", \"npx createprisma\", \"npx create-prisma\", \"first steps\", \"first query\", \"I have a scaffolded Prisma Next project what now\"; for `pnpm dlx prisma-next init` greenfield setup; and for `prisma-next contract infer` + `db sign` against an existing database. Also covers the connect-write-read first-arc orientation, the day-to-day commands (`contract emit`, `db init`, `db update`, `migration plan`, `migrate`, `db schema`, `db verify`), and routing to `prisma-next-contract` \u002F `prisma-next-queries` \u002F `prisma-next-runtime` for the next move. Flags: --target, --authoring, --schema-path, --probe-db, --output.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[866,867,870,871],{"name":20,"slug":21,"type":15},{"name":868,"slug":869,"type":15},"ORM","orm",{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-07-24T05:37:12.462072",{"slug":277,"name":277,"fn":874,"description":875,"org":876,"tags":877,"stars":23,"repoUrl":24,"updatedAt":882},"configure Prisma Next runtime and database connections","Wire the Prisma Next runtime — `db.ts` setup using `postgres\u003CContract>(...)` from `@prisma-next\u002Fpostgres\u002Fruntime`, `sqlite\u003CContract>(...)` from `@prisma-next\u002Fsqlite\u002Fruntime`, or `mongo\u003CContract>(...)` from `@prisma-next\u002Fmongo\u002Fruntime`; middleware composition (telemetry from `@prisma-next\u002Fmiddleware-telemetry`; lints and budgets), `DATABASE_URL` config, per-environment branching, switching between Postgres, SQLite, and Mongo façades. Use for db.ts, postgres(), sqlite(), mongo(), middleware, telemetry, lints, budgets, DATABASE_URL, .env, connection pool, poolOptions, dev vs prod config, transactions, db.transaction, read replicas, multi-database, script won't exit, hangs, close connection, db.end, db.close, pool.end, [Symbol.asyncDispose], await using.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[878,879,880,881],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":854,"slug":855,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:32:05.347316",{"slug":257,"name":257,"fn":884,"description":885,"org":886,"tags":887,"stars":23,"repoUrl":24,"updatedAt":897},"integrate Prisma with Supabase","Use Prisma Next with a Supabase project via `@prisma-next\u002Fextension-supabase` — wire `extensions: [supabasePack]`, declare cross-space FKs to `supabase:auth.AuthUser`, author RLS policies (`policy_select` \u002F `policy_update` \u002F `@@rls`, `auth.uid()` predicates), build `db.ts` with the `supabase()` factory, bind roles per request (`asUser(jwt)` \u002F `asAnon()` \u002F `asServiceRole()`), query `auth.*` \u002F `storage.*` via the `db.asServiceRole().supabase` admin root, and validate JWTs (`jwksUrl` for current projects \u002F `jwtSecret` for legacy HS256). Use for supabase, RLS, row level security, policy, role binding, anon, authenticated, service_role, auth.users, auth.uid(), JWT, JWKS, SUPABASE_JWKS_URL, SUPABASE_JWT_SECRET, SUPABASE.JWT_INVALID, SUPABASE.CONFIG_INVALID, RoleBoundDb, session pooler, supabase:auth.AuthUser, @prisma-next\u002Fextension-supabase.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[888,891,892,893,894],{"name":889,"slug":890,"type":15},"Auth","auth",{"name":868,"slug":869,"type":15},{"name":854,"slug":855,"type":15},{"name":9,"slug":8,"type":15},{"name":895,"slug":896,"type":15},"Supabase","supabase","2026-07-30T05:30:11.065251",{"slug":899,"name":899,"fn":900,"description":901,"org":902,"tags":903,"stars":911,"repoUrl":912,"updatedAt":913},"prisma-cli","run Prisma CLI commands","Prisma ORM CLI commands reference covering init, generate, migrate, db, dev, studio, validate, format, debug, and mcp. Use for ORM\u002Fdatabase CLI workflows, not Prisma Compute app deployment. For Prisma Compute, `@prisma\u002Fcli 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\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[904,907,908,909,910],{"name":905,"slug":906,"type":15},"CLI","cli",{"name":20,"slug":21,"type":15},{"name":780,"slug":781,"type":15},{"name":868,"slug":869,"type":15},{"name":9,"slug":8,"type":15},44,"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fskills","2026-04-06T18:48:29.140467",21]