[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-prisma-prisma-next-feedback":3,"mdc-w1dane-key":32,"related-org-prisma-prisma-next-feedback":2487,"related-repo-prisma-prisma-next-feedback":2650},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":28,"sourceUrl":30,"mdContent":31},"prisma-next-feedback","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},"prisma","Prisma","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fprisma.png",[12,16,19],{"name":13,"slug":14,"type":15},"GitHub","github","tag",{"name":17,"slug":18,"type":15},"Documentation","documentation",{"name":9,"slug":8,"type":15},415,"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next","2026-07-02T07:31:34.870809",null,15,[26,27],"loggy-core","loggy-terminal",{"repoUrl":21,"stars":20,"forks":24,"topics":29,"description":23},[26,27],"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Ftree\u002FHEAD\u002Fskills\u002Fprisma-next-feedback","---\nname: prisma-next-feedback\ndescription: 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.\n---\n\n# Prisma Next — Feedback (Bug Reports, Feature Requests, Team Q&A)\n\n> **Edit your data contract. Prisma handles the rest.**\n\nThis skill is the *terminal* of the capability-gap routing pattern. Every other Prisma Next skill's *What Prisma Next doesn't do yet* entries route here when the user wants the gap closed; the skill also fires directly on prompts like *\"this is a bug\"*, *\"file an issue\"*, *\"feature request\"*, *\"can I ask the team about this?\"*, *\"how should I integrate X with Prisma Next?\"*.\n\nThe skill's job is to pick the *right channel* — GitHub issue or Discord — and then either produce a **structured, public-safe** issue body (no secrets, no proprietary schema) the framework team can act on, or hand the user a direct link to the Prisma Discord for synchronous Q&A. Submission to GitHub never happens without explicit user confirmation.\n\nCanonical channels:\n\n- **GitHub Issues** (bugs + concrete feature requests): \u003Chttps:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Fissues\u002Fnew\u002Fchoose>\n- **Prisma Discord** (Q&A, design feedback, direct team contact — including extension authors): \u003Chttps:\u002F\u002Fpris.ly\u002Fdiscord>\n\n## When to Use\n\n- A capability-gap entry from another `prisma-next-*` skill fired and the user said *\"yes, file the feature request\"*.\n- User says *\"this is a bug\"*, *\"file this\"*, *\"report this\"*, *\"file an issue against PN\"*, *\"send feedback\"*, *\"this should be a feature\"*.\n- User describes an unexpected behaviour — wrong exit code, error message that didn't match what happened, type signature that doesn't match runtime behaviour, planner refused a migration that looked safe — and wants it on the framework team's radar.\n- User asks *\"can I ask the Prisma team about this?\"*, *\"is there somewhere I can talk to the team?\"*, *\"is this the intended way to do X?\"*, *\"how should I integrate \u003Cmy extension \u002F my tool> with PN?\"*, or any other open-ended Q&A or design-feedback prompt — including extension authors asking integration questions.\n\n## When Not to Use\n\n- User wants to fix the bug themselves in the user's own code. The fix lives in another skill (debug \u002F contract \u002F migrations \u002F queries \u002F runtime \u002F build). Chain to the right skill first; only fall back to feedback if the user explicitly wants the framework to do something differently.\n- User wants to upgrade Prisma Next (the bug may already be fixed) → the `prisma-next-upgrade` skill (separately installed); this skill mentions it as a pre-flight check.\n- The user's question is already covered by a workflow skill in the cluster (*\"how do I add a column?\"* → `prisma-next-contract`; *\"what's the right query interface?\"* → `prisma-next-queries`). Route to the workflow skill, not to the team — load the skill, answer the question, and only escalate to Discord if the agent can't.\n\n## Key Concepts\n\n- **Three channels, one decision.** GitHub Issues (bugs + concrete feature requests), Prisma Discord (Q&A, design feedback, direct team contact), or another in-cluster skill (when the question turns out to be a workflow question, not a hand-off-to-team question). The skill's first move is the channel decision; everything else follows.\n- **Public artifact.** GitHub issues *and* Discord messages are world-readable and archived. The body \u002F message must not contain `DATABASE_URL` strings, internal company schema fragments, customer data in sample rows, or any other content the user wouldn't share publicly. The agent redacts before either kind of submission.\n- **Bug vs feature vs question.** A *bug* is \"documented surface behaved unexpectedly\". A *feature request* is \"I want a capability that doesn't exist\". A *question* is \"I want to discuss X with someone, or I'm not sure this is a bug at all\". Many capability-gap routes are feature requests; many extension-author prompts are questions.\n- **The framework team needs to reproduce (issues only).** A bug report without a reproduction is much harder to act on. Where possible, the agent produces a minimal repro the team can re-run locally — ideally a small change against [`examples\u002Fprisma-next-demo`](https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Ftree\u002Fmain\u002Fexamples\u002Fprisma-next-demo), which the team already has checked out. Discord Q&A doesn't require a full repro — a short code snippet plus the question is usually enough.\n\n## Workflow\n\n### 1. Pick the channel\n\nThe user wants to hand something off to the team. Which channel?\n\n**GitHub Issue** if any of:\n\n- The user describes a concrete bug (see *Classify* below for the bug-vs-feature split).\n- The user has a concrete feature request — a named capability, a specific API shape, a specific CLI flag — that they want on the backlog.\n- A capability-gap entry from another `prisma-next-*` skill routed them here for a feature request.\n\n**Prisma Discord** (\u003Chttps:\u002F\u002Fpris.ly\u002Fdiscord>) if any of:\n\n- The user is asking an open-ended question — *\"is this the intended way to do X?\"*, *\"how would you approach Y?\"*, *\"I'm seeing weird behaviour but I'm not sure if it's a bug.\"*\n- The user wants design feedback before committing to a feature request — *\"we're thinking of building a custom middleware that does X, does this fit the framework's direction?\"*\n- The user is an extension author with an integration question that needs back-and-forth with the team (peer-dependency coordination, breaking-change timing, a new extension surface).\n- The user explicitly asks for the team — *\"can I ask the team about this?\"*, *\"is there somewhere I can talk to Prisma?\"*, *\"where do extension authors discuss things with the team?\"*\n\n**Both, in sequence**, if any of:\n\n- The user has a bug *and* a related feature request — file two separate GitHub issues, do not mix them in one issue.\n- The user wants to discuss a design before filing the feature request — start in Discord, file the issue once the shape is settled.\n\n### 2. Classify (issue path only)\n\nThe user is filing a GitHub issue. Is it a bug or a feature request?\n\n**Bug** if any of:\n\n- A documented CLI command exited with the wrong code.\n- The `fix` field of an error envelope was misleading or wrong.\n- A published TypeScript signature doesn't match runtime behaviour.\n- The planner refused a migration that should have been valid (or accepted one that shouldn't have been).\n- The contract emit produced an artifact that doesn't load at runtime.\n- Any other case where the documented surface did the wrong thing.\n\n**Feature request** if any of:\n\n- The user wants a capability that doesn't exist yet (most of the *What PN doesn't do yet* entries land here).\n- The user wants a better error message, an additional CLI flag, a new middleware, an additional bundler plugin, etc.\n\nIf both — a bug *and* the user wants a related feature — file two separate issues. Mixing them makes the framework team's triage harder.\n\n### 3. Collect the minimum body (issue path only)\n\nFor **either** kind:\n\n- **Prisma Next version**: `pnpm ls @prisma-next\u002Fpostgres` (or `@prisma-next\u002Fmongo`). If the project uses a target package, that version is canonical.\n- **Node version**: `node -v`.\n- **Package manager**: `pnpm` \u002F `npm` \u002F `yarn` \u002F `bun` \u002F `deno`.\n- **OS**: `darwin` \u002F `linux` \u002F `win32` and the version string is enough.\n\nFor **bug reports**, additionally:\n\n- **The exact command** that misbehaved (e.g. `prisma-next migration plan --name add-email`).\n- **The full output**, with `-v` if a structured error envelope is involved. Redact `DATABASE_URL` and any other secrets.\n- **A minimal `src\u002Fprisma\u002Fcontract.prisma` \u002F `src\u002Fprisma\u002Fcontract.ts` excerpt** that reproduces the issue. Strip unrelated models. Keep the original model and field names from the user's contract when they don't expose anything compromising — a faithful excerpt is much easier for the framework team (and future readers of the issue) to reason about than a re-themed one. Only rename to neutral placeholders (`User`, `Post`, `Tag`) when the original names would leak confidential domain detail (product names, internal codenames, customer identifiers, regulated-data field names).\n- **Steps to reproduce**, as a numbered list.\n- **Expected behaviour** — one sentence.\n- **Actual behaviour** — one sentence plus the relevant output line.\n- **Workaround**, if any — one sentence.\n\nFor **feature requests**, additionally:\n\n- **Desired API or behaviour** — one paragraph. Concrete shape (CLI flag, config field, middleware export, plugin API) where possible.\n- **Where the gap surfaces today** — which skill's *What PN doesn't do yet* entry triggered the request, or the workflow the user was trying to complete.\n- **Current workaround**, if any — one sentence (and the skill body the user is following may already say this).\n\n### 4. Render the body\n\nThe repository ships GitHub Issue Forms (`.github\u002FISSUE_TEMPLATE\u002Fbug_report.yml` and `feature_request.yml`). When the user lands on \u003Chttps:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Fissues\u002Fnew\u002Fchoose> they pick the matching template and fill in the form fields; the skill produces the body in the same structured shape so it maps onto the form one-to-one (and so `gh issue create --body-file` produces a parseable artifact even when the form isn't in play).\n\nBug-report body shape (fields named to match `.github\u002FISSUE_TEMPLATE\u002Fbug_report.yml`):\n\n~~~markdown\n## Package and version\n\n\u003Ce.g. @prisma-next\u002Fpostgres@0.5.2>\n\n## What happened?\n\n\u003Cone-sentence summary plus the relevant output line, secrets redacted>\n\n## What did you expect to happen?\n\n\u003Cone sentence>\n\n## Minimal reproduction\n\n1. \u003Cstep one>\n2. \u003Cstep two>\n3. \u003Cstep three>\n\n```ts\n\u002F\u002F schema.psl excerpt + the query \u002F command that fails\n```\n\n## Environment\n\n- Node: \u003Cversion>\n- OS: \u003Cdarwin\u002Flinux\u002Fwin32> \u003Cversion>\n- Package manager: \u003Cpnpm\u002Fnpm\u002Fyarn\u002Fbun\u002Fdeno> \u003Cversion>\n- Database: \u003CPostgres \u002F Mongo> \u003Cversion>\n\n## Additional context\n\n\u003Coptional — link to source skill's capability-gap entry, related\nissue number, partner extension involved>\n~~~\n\nFeature-request body shape (fields named to match `.github\u002FISSUE_TEMPLATE\u002Ffeature_request.yml`):\n\n~~~markdown\n## What problem are you trying to solve?\n\n\u003Cparagraph — the use case or pain point this would address>\n\n## Proposed solution\n\n```ts\n\u002F\u002F imagined usage of the API \u002F behaviour you'd want\n```\n\n## Alternatives considered\n\n\u003Csentence or two — what you tried with the current API and why it didn't work>\n\n## Scope and impact\n\n\u003Cwhich package(s) this would touch; target-specific implications>\n~~~\n\n### 5. Title (issue path only)\n\n- **Bug**: `bug(\u003Carea>): \u003Cone-line summary>` — e.g. `bug(cli): migration plan exits 0 when there is no diff`.\n- **Feature request**: `feat(\u003Carea>): \u003Cone-line summary>` — e.g. `feat(build): first-party Next.js plugin for contract emit`.\n\nAreas mirror the cluster of skills: `cli`, `contract`, `migration`, `query`, `runtime`, `build`, `error`, `docs`.\n\n### 6. Surface for confirmation (issue path only)\n\n**Never auto-submit.** The agent shows the rendered title and body to the user and asks: *\"This looks good to file. Shall I submit it to GitHub?\"*. Submission only happens after explicit user approval.\n\n### 7. Submit (issue path only)\n\nPreferred. Two steps:\n\n1. **Write the rendered body to a temporary file.** Use your file-write tool (the same tool you'd use to create any other file on disk) to write the body to e.g. `wip\u002Fpn-issue-body.md` or `\u002Ftmp\u002Fpn-issue-body.md`. The body content is just the markdown produced in step 4 of this workflow — no surrounding shell quoting, no heredoc.\n2. **Reference that file from `gh`.** Run:\n\n   ~~~bash\n   gh issue create \\\n     --repo prisma\u002Fprisma-next \\\n     --title \"\u003Ctitle>\" \\\n     --body-file \u003Cpath-from-step-1>\n   ~~~\n\n**Anti-pattern (do not do this):** inlining the body via `--body \"$(cat \u003C\u003CEOF …)\"` or `--body-file \u003C(cat \u003C\u003CEOF …)`. Those one-liners reliably leak literal `cat \u003C\u003C'EOF'` \u002F `EOF` markers into the issue body when the agent reuses the template verbatim with the body interpolated. Always write the body to a real file first and pass the path.\n\nIf `gh` is not installed: open the prefilled new-issue URL in the browser:\n\n~~~text\nhttps:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Fissues\u002Fnew\u002Fchoose\n~~~\n\n…and instruct the user to paste the rendered body. The agent can copy the body to the clipboard via `pbcopy` (macOS), `xclip` (Linux), or by simply printing it in the chat for the user to copy.\n\n### 8. Route to Discord (Q&A \u002F design-feedback \u002F direct-team-contact path)\n\nWhen step 1 picked the Discord channel (steps 2–7 do not apply):\n\n1. **Surface the link.** Give the user the canonical invite: \u003Chttps:\u002F\u002Fpris.ly\u002Fdiscord>. Suggest the channel that fits the question:\n   - General usage \u002F Q&A → the public `#help` or `#prisma-next` channel (channel naming evolves; the invite landing page lists current channels).\n   - Extension-author \u002F partner-integration \u002F breaking-change-coordination questions → the public extension-authors channel, or the user can ping a maintainer directly once they're in the server.\n2. **Help draft the opening message.** Prisma's Discord is searchable; a well-framed opening message gets a faster, more useful answer. The agent drafts a short message with:\n   - One-sentence summary of what the user is trying to do.\n   - The Prisma Next version (`pnpm ls @prisma-next\u002Fpostgres` or equivalent).\n   - A short code snippet (PSL excerpt, query, config file) where relevant — redacted the same way as a GitHub issue body (no `DATABASE_URL`, no customer schema names).\n   - The specific question the user wants answered.\n3. **Do not auto-post.** The agent surfaces the drafted message to the user — *\"here's an opening message you can paste into Discord; want to adjust before sending?\"* — and lets the user decide whether to paste it as-is, edit it, or pick a different framing.\n4. **Set expectations honestly.** Discord is synchronous and best-effort. Bugs and concrete feature requests should land in GitHub regardless (use the issue path); Discord is for the conversation that gets you to *\"yes, this is a bug, file it\"* or *\"yes, this should be a feature, file it\"*.\n\n### 9. Follow up\n\n- **Issue path**: record the issue URL in the user's project notes (or in the project's `wip\u002F` if there is one) so a later upgrade or related work can reference it. If the bug is the symptom of an old version of Prisma Next, suggest the user run `prisma-next-upgrade` (the separately-installed upgrade skill) — many bugs are fixed in newer releases.\n- **Discord path**: once the conversation on Discord settles into a concrete bug or a concrete feature request, return to step 1 of this skill and file the issue (the Discord thread becomes the *Notes* \u002F *Where the gap surfaces* reference in the issue body).\n\n## Common Pitfalls\n\n1. **Auto-submitting without confirmation.** Always show the body first. The user owns the public-facing artifact, not the agent.\n2. **Pasting `DATABASE_URL` or other secrets into the body.** `redact` aggressively. Replace with `postgresql:\u002F\u002FUSER:PASS@HOST\u002FDB` placeholders.\n3. **Pasting a customer's confidential domain schema.** When original model and field names would leak confidential information (product codenames, customer identifiers, regulated-data fields), rename to neutral placeholders before the body goes into a public issue. Otherwise, keep the original names — a faithful excerpt is easier for the framework team to reason about than a re-themed one. Over-renaming is its own readability cost.\n4. **Filing a documentation question as a bug.** Documentation questions belong in another skill or in a GitHub Discussion (if the repo enables them). Bugs are about the surface misbehaving.\n5. **Conflating bug + feature in one issue.** File two. Mixed issues are hard to triage and hard to close.\n6. **Filing without a version.** \"I'm using Prisma Next, it's broken\" without the version makes triage hopeless. The version is the cheapest piece of context to capture; always include it.\n\n## What Prisma Next doesn't do yet\n\n- **In-product feedback channel.** No `prisma-next feedback` CLI command. The GitHub Issues page is the canonical surface. If you want a CLI-side feedback command, file a feature request via this skill.\n\n## Reference Files\n\n- \u003Chttps:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Fissues\u002Fnew\u002Fchoose> — the canonical submission surface.\n- \u003Chttps:\u002F\u002Fcli.github.com\u002Fmanual\u002Fgh_issue_create> — the `gh` command reference.\n\n## Checklist\n\n- [ ] Classified as bug or feature request (not both in one issue).\n- [ ] Environment block present: PN version, Node, package manager, OS.\n- [ ] Reproduction is minimal, public-safe, secret-free.\n- [ ] Schema fragments use original names where safe; renamed to neutral placeholders only where original names would leak confidential domain detail.\n- [ ] Title in conventional-commit form (`bug(area): …` \u002F `feat(area): …`).\n- [ ] Body shown to the user for confirmation before submission.\n- [ ] Submitted via `gh issue create` (preferred) or via the prefilled new-issue URL.\n- [ ] Issue URL captured for future reference.\n- [ ] Suggested `prisma-next-upgrade` if the bug may already be fixed in a newer release.\n",{"data":33,"body":34},{"name":4,"description":6},{"type":35,"children":36},"root",[37,46,60,112,131,136,175,182,280,286,341,347,439,445,452,457,467,498,514,574,584,603,609,614,623,664,673,693,704,710,722,843,854,987,997,1036,1042,1078,1090,1457,1469,1623,1629,1677,1738,1744,1761,1767,1772,1917,1957,1969,1979,2000,2006,2011,2145,2151,2202,2208,2294,2299,2320,2326,2357,2363,2481],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"prisma-next-feedback-bug-reports-feature-requests-team-qa",[43],{"type":44,"value":45},"text","Prisma Next — Feedback (Bug Reports, Feature Requests, Team Q&A)",{"type":38,"tag":47,"props":48,"children":49},"blockquote",{},[50],{"type":38,"tag":51,"props":52,"children":53},"p",{},[54],{"type":38,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":44,"value":59},"Edit your data contract. Prisma handles the rest.",{"type":38,"tag":51,"props":61,"children":62},{},[63,65,71,73,78,80,85,87,92,93,98,99,104,105,110],{"type":44,"value":64},"This skill is the ",{"type":38,"tag":66,"props":67,"children":68},"em",{},[69],{"type":44,"value":70},"terminal",{"type":44,"value":72}," of the capability-gap routing pattern. Every other Prisma Next skill's ",{"type":38,"tag":66,"props":74,"children":75},{},[76],{"type":44,"value":77},"What Prisma Next doesn't do yet",{"type":44,"value":79}," entries route here when the user wants the gap closed; the skill also fires directly on prompts like ",{"type":38,"tag":66,"props":81,"children":82},{},[83],{"type":44,"value":84},"\"this is a bug\"",{"type":44,"value":86},", ",{"type":38,"tag":66,"props":88,"children":89},{},[90],{"type":44,"value":91},"\"file an issue\"",{"type":44,"value":86},{"type":38,"tag":66,"props":94,"children":95},{},[96],{"type":44,"value":97},"\"feature request\"",{"type":44,"value":86},{"type":38,"tag":66,"props":100,"children":101},{},[102],{"type":44,"value":103},"\"can I ask the team about this?\"",{"type":44,"value":86},{"type":38,"tag":66,"props":106,"children":107},{},[108],{"type":44,"value":109},"\"how should I integrate X with Prisma Next?\"",{"type":44,"value":111},".",{"type":38,"tag":51,"props":113,"children":114},{},[115,117,122,124,129],{"type":44,"value":116},"The skill's job is to pick the ",{"type":38,"tag":66,"props":118,"children":119},{},[120],{"type":44,"value":121},"right channel",{"type":44,"value":123}," — GitHub issue or Discord — and then either produce a ",{"type":38,"tag":55,"props":125,"children":126},{},[127],{"type":44,"value":128},"structured, public-safe",{"type":44,"value":130}," issue body (no secrets, no proprietary schema) the framework team can act on, or hand the user a direct link to the Prisma Discord for synchronous Q&A. Submission to GitHub never happens without explicit user confirmation.",{"type":38,"tag":51,"props":132,"children":133},{},[134],{"type":44,"value":135},"Canonical channels:",{"type":38,"tag":137,"props":138,"children":139},"ul",{},[140,159],{"type":38,"tag":141,"props":142,"children":143},"li",{},[144,149,151],{"type":38,"tag":55,"props":145,"children":146},{},[147],{"type":44,"value":148},"GitHub Issues",{"type":44,"value":150}," (bugs + concrete feature requests): ",{"type":38,"tag":152,"props":153,"children":157},"a",{"href":154,"rel":155},"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Fissues\u002Fnew\u002Fchoose",[156],"nofollow",[158],{"type":44,"value":154},{"type":38,"tag":141,"props":160,"children":161},{},[162,167,169],{"type":38,"tag":55,"props":163,"children":164},{},[165],{"type":44,"value":166},"Prisma Discord",{"type":44,"value":168}," (Q&A, design feedback, direct team contact — including extension authors): ",{"type":38,"tag":152,"props":170,"children":173},{"href":171,"rel":172},"https:\u002F\u002Fpris.ly\u002Fdiscord",[156],[174],{"type":44,"value":171},{"type":38,"tag":176,"props":177,"children":179},"h2",{"id":178},"when-to-use",[180],{"type":44,"value":181},"When to Use",{"type":38,"tag":137,"props":183,"children":184},{},[185,205,245,250],{"type":38,"tag":141,"props":186,"children":187},{},[188,190,197,199,204],{"type":44,"value":189},"A capability-gap entry from another ",{"type":38,"tag":191,"props":192,"children":194},"code",{"className":193},[],[195],{"type":44,"value":196},"prisma-next-*",{"type":44,"value":198}," skill fired and the user said ",{"type":38,"tag":66,"props":200,"children":201},{},[202],{"type":44,"value":203},"\"yes, file the feature request\"",{"type":44,"value":111},{"type":38,"tag":141,"props":206,"children":207},{},[208,210,214,215,220,221,226,227,232,233,238,239,244],{"type":44,"value":209},"User says ",{"type":38,"tag":66,"props":211,"children":212},{},[213],{"type":44,"value":84},{"type":44,"value":86},{"type":38,"tag":66,"props":216,"children":217},{},[218],{"type":44,"value":219},"\"file this\"",{"type":44,"value":86},{"type":38,"tag":66,"props":222,"children":223},{},[224],{"type":44,"value":225},"\"report this\"",{"type":44,"value":86},{"type":38,"tag":66,"props":228,"children":229},{},[230],{"type":44,"value":231},"\"file an issue against PN\"",{"type":44,"value":86},{"type":38,"tag":66,"props":234,"children":235},{},[236],{"type":44,"value":237},"\"send feedback\"",{"type":44,"value":86},{"type":38,"tag":66,"props":240,"children":241},{},[242],{"type":44,"value":243},"\"this should be a feature\"",{"type":44,"value":111},{"type":38,"tag":141,"props":246,"children":247},{},[248],{"type":44,"value":249},"User describes an unexpected behaviour — wrong exit code, error message that didn't match what happened, type signature that doesn't match runtime behaviour, planner refused a migration that looked safe — and wants it on the framework team's radar.",{"type":38,"tag":141,"props":251,"children":252},{},[253,255,260,261,266,267,272,273,278],{"type":44,"value":254},"User asks ",{"type":38,"tag":66,"props":256,"children":257},{},[258],{"type":44,"value":259},"\"can I ask the Prisma team about this?\"",{"type":44,"value":86},{"type":38,"tag":66,"props":262,"children":263},{},[264],{"type":44,"value":265},"\"is there somewhere I can talk to the team?\"",{"type":44,"value":86},{"type":38,"tag":66,"props":268,"children":269},{},[270],{"type":44,"value":271},"\"is this the intended way to do X?\"",{"type":44,"value":86},{"type":38,"tag":66,"props":274,"children":275},{},[276],{"type":44,"value":277},"\"how should I integrate \u003Cmy extension \u002F my tool> with PN?\"",{"type":44,"value":279},", or any other open-ended Q&A or design-feedback prompt — including extension authors asking integration questions.",{"type":38,"tag":176,"props":281,"children":283},{"id":282},"when-not-to-use",[284],{"type":44,"value":285},"When Not to Use",{"type":38,"tag":137,"props":287,"children":288},{},[289,294,307],{"type":38,"tag":141,"props":290,"children":291},{},[292],{"type":44,"value":293},"User wants to fix the bug themselves in the user's own code. The fix lives in another skill (debug \u002F contract \u002F migrations \u002F queries \u002F runtime \u002F build). Chain to the right skill first; only fall back to feedback if the user explicitly wants the framework to do something differently.",{"type":38,"tag":141,"props":295,"children":296},{},[297,299,305],{"type":44,"value":298},"User wants to upgrade Prisma Next (the bug may already be fixed) → the ",{"type":38,"tag":191,"props":300,"children":302},{"className":301},[],[303],{"type":44,"value":304},"prisma-next-upgrade",{"type":44,"value":306}," skill (separately installed); this skill mentions it as a pre-flight check.",{"type":38,"tag":141,"props":308,"children":309},{},[310,312,317,319,325,327,332,333,339],{"type":44,"value":311},"The user's question is already covered by a workflow skill in the cluster (",{"type":38,"tag":66,"props":313,"children":314},{},[315],{"type":44,"value":316},"\"how do I add a column?\"",{"type":44,"value":318}," → ",{"type":38,"tag":191,"props":320,"children":322},{"className":321},[],[323],{"type":44,"value":324},"prisma-next-contract",{"type":44,"value":326},"; ",{"type":38,"tag":66,"props":328,"children":329},{},[330],{"type":44,"value":331},"\"what's the right query interface?\"",{"type":44,"value":318},{"type":38,"tag":191,"props":334,"children":336},{"className":335},[],[337],{"type":44,"value":338},"prisma-next-queries",{"type":44,"value":340},"). Route to the workflow skill, not to the team — load the skill, answer the question, and only escalate to Discord if the agent can't.",{"type":38,"tag":176,"props":342,"children":344},{"id":343},"key-concepts",[345],{"type":44,"value":346},"Key Concepts",{"type":38,"tag":137,"props":348,"children":349},{},[350,360,385,416],{"type":38,"tag":141,"props":351,"children":352},{},[353,358],{"type":38,"tag":55,"props":354,"children":355},{},[356],{"type":44,"value":357},"Three channels, one decision.",{"type":44,"value":359}," GitHub Issues (bugs + concrete feature requests), Prisma Discord (Q&A, design feedback, direct team contact), or another in-cluster skill (when the question turns out to be a workflow question, not a hand-off-to-team question). The skill's first move is the channel decision; everything else follows.",{"type":38,"tag":141,"props":361,"children":362},{},[363,368,370,375,377,383],{"type":38,"tag":55,"props":364,"children":365},{},[366],{"type":44,"value":367},"Public artifact.",{"type":44,"value":369}," GitHub issues ",{"type":38,"tag":66,"props":371,"children":372},{},[373],{"type":44,"value":374},"and",{"type":44,"value":376}," Discord messages are world-readable and archived. The body \u002F message must not contain ",{"type":38,"tag":191,"props":378,"children":380},{"className":379},[],[381],{"type":44,"value":382},"DATABASE_URL",{"type":44,"value":384}," strings, internal company schema fragments, customer data in sample rows, or any other content the user wouldn't share publicly. The agent redacts before either kind of submission.",{"type":38,"tag":141,"props":386,"children":387},{},[388,393,395,400,402,407,409,414],{"type":38,"tag":55,"props":389,"children":390},{},[391],{"type":44,"value":392},"Bug vs feature vs question.",{"type":44,"value":394}," A ",{"type":38,"tag":66,"props":396,"children":397},{},[398],{"type":44,"value":399},"bug",{"type":44,"value":401}," is \"documented surface behaved unexpectedly\". A ",{"type":38,"tag":66,"props":403,"children":404},{},[405],{"type":44,"value":406},"feature request",{"type":44,"value":408}," is \"I want a capability that doesn't exist\". A ",{"type":38,"tag":66,"props":410,"children":411},{},[412],{"type":44,"value":413},"question",{"type":44,"value":415}," is \"I want to discuss X with someone, or I'm not sure this is a bug at all\". Many capability-gap routes are feature requests; many extension-author prompts are questions.",{"type":38,"tag":141,"props":417,"children":418},{},[419,424,426,437],{"type":38,"tag":55,"props":420,"children":421},{},[422],{"type":44,"value":423},"The framework team needs to reproduce (issues only).",{"type":44,"value":425}," A bug report without a reproduction is much harder to act on. Where possible, the agent produces a minimal repro the team can re-run locally — ideally a small change against ",{"type":38,"tag":152,"props":427,"children":430},{"href":428,"rel":429},"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Ftree\u002Fmain\u002Fexamples\u002Fprisma-next-demo",[156],[431],{"type":38,"tag":191,"props":432,"children":434},{"className":433},[],[435],{"type":44,"value":436},"examples\u002Fprisma-next-demo",{"type":44,"value":438},", which the team already has checked out. Discord Q&A doesn't require a full repro — a short code snippet plus the question is usually enough.",{"type":38,"tag":176,"props":440,"children":442},{"id":441},"workflow",[443],{"type":44,"value":444},"Workflow",{"type":38,"tag":446,"props":447,"children":449},"h3",{"id":448},"_1-pick-the-channel",[450],{"type":44,"value":451},"1. Pick the channel",{"type":38,"tag":51,"props":453,"children":454},{},[455],{"type":44,"value":456},"The user wants to hand something off to the team. Which channel?",{"type":38,"tag":51,"props":458,"children":459},{},[460,465],{"type":38,"tag":55,"props":461,"children":462},{},[463],{"type":44,"value":464},"GitHub Issue",{"type":44,"value":466}," if any of:",{"type":38,"tag":137,"props":468,"children":469},{},[470,482,487],{"type":38,"tag":141,"props":471,"children":472},{},[473,475,480],{"type":44,"value":474},"The user describes a concrete bug (see ",{"type":38,"tag":66,"props":476,"children":477},{},[478],{"type":44,"value":479},"Classify",{"type":44,"value":481}," below for the bug-vs-feature split).",{"type":38,"tag":141,"props":483,"children":484},{},[485],{"type":44,"value":486},"The user has a concrete feature request — a named capability, a specific API shape, a specific CLI flag — that they want on the backlog.",{"type":38,"tag":141,"props":488,"children":489},{},[490,491,496],{"type":44,"value":189},{"type":38,"tag":191,"props":492,"children":494},{"className":493},[],[495],{"type":44,"value":196},{"type":44,"value":497}," skill routed them here for a feature request.",{"type":38,"tag":51,"props":499,"children":500},{},[501,505,507,512],{"type":38,"tag":55,"props":502,"children":503},{},[504],{"type":44,"value":166},{"type":44,"value":506}," (",{"type":38,"tag":152,"props":508,"children":510},{"href":171,"rel":509},[156],[511],{"type":44,"value":171},{"type":44,"value":513},") if any of:",{"type":38,"tag":137,"props":515,"children":516},{},[517,538,548,553],{"type":38,"tag":141,"props":518,"children":519},{},[520,522,526,527,532,533],{"type":44,"value":521},"The user is asking an open-ended question — ",{"type":38,"tag":66,"props":523,"children":524},{},[525],{"type":44,"value":271},{"type":44,"value":86},{"type":38,"tag":66,"props":528,"children":529},{},[530],{"type":44,"value":531},"\"how would you approach Y?\"",{"type":44,"value":86},{"type":38,"tag":66,"props":534,"children":535},{},[536],{"type":44,"value":537},"\"I'm seeing weird behaviour but I'm not sure if it's a bug.\"",{"type":38,"tag":141,"props":539,"children":540},{},[541,543],{"type":44,"value":542},"The user wants design feedback before committing to a feature request — ",{"type":38,"tag":66,"props":544,"children":545},{},[546],{"type":44,"value":547},"\"we're thinking of building a custom middleware that does X, does this fit the framework's direction?\"",{"type":38,"tag":141,"props":549,"children":550},{},[551],{"type":44,"value":552},"The user is an extension author with an integration question that needs back-and-forth with the team (peer-dependency coordination, breaking-change timing, a new extension surface).",{"type":38,"tag":141,"props":554,"children":555},{},[556,558,562,563,568,569],{"type":44,"value":557},"The user explicitly asks for the team — ",{"type":38,"tag":66,"props":559,"children":560},{},[561],{"type":44,"value":103},{"type":44,"value":86},{"type":38,"tag":66,"props":564,"children":565},{},[566],{"type":44,"value":567},"\"is there somewhere I can talk to Prisma?\"",{"type":44,"value":86},{"type":38,"tag":66,"props":570,"children":571},{},[572],{"type":44,"value":573},"\"where do extension authors discuss things with the team?\"",{"type":38,"tag":51,"props":575,"children":576},{},[577,582],{"type":38,"tag":55,"props":578,"children":579},{},[580],{"type":44,"value":581},"Both, in sequence",{"type":44,"value":583},", if any of:",{"type":38,"tag":137,"props":585,"children":586},{},[587,598],{"type":38,"tag":141,"props":588,"children":589},{},[590,592,596],{"type":44,"value":591},"The user has a bug ",{"type":38,"tag":66,"props":593,"children":594},{},[595],{"type":44,"value":374},{"type":44,"value":597}," a related feature request — file two separate GitHub issues, do not mix them in one issue.",{"type":38,"tag":141,"props":599,"children":600},{},[601],{"type":44,"value":602},"The user wants to discuss a design before filing the feature request — start in Discord, file the issue once the shape is settled.",{"type":38,"tag":446,"props":604,"children":606},{"id":605},"_2-classify-issue-path-only",[607],{"type":44,"value":608},"2. Classify (issue path only)",{"type":38,"tag":51,"props":610,"children":611},{},[612],{"type":44,"value":613},"The user is filing a GitHub issue. Is it a bug or a feature request?",{"type":38,"tag":51,"props":615,"children":616},{},[617,622],{"type":38,"tag":55,"props":618,"children":619},{},[620],{"type":44,"value":621},"Bug",{"type":44,"value":466},{"type":38,"tag":137,"props":624,"children":625},{},[626,631,644,649,654,659],{"type":38,"tag":141,"props":627,"children":628},{},[629],{"type":44,"value":630},"A documented CLI command exited with the wrong code.",{"type":38,"tag":141,"props":632,"children":633},{},[634,636,642],{"type":44,"value":635},"The ",{"type":38,"tag":191,"props":637,"children":639},{"className":638},[],[640],{"type":44,"value":641},"fix",{"type":44,"value":643}," field of an error envelope was misleading or wrong.",{"type":38,"tag":141,"props":645,"children":646},{},[647],{"type":44,"value":648},"A published TypeScript signature doesn't match runtime behaviour.",{"type":38,"tag":141,"props":650,"children":651},{},[652],{"type":44,"value":653},"The planner refused a migration that should have been valid (or accepted one that shouldn't have been).",{"type":38,"tag":141,"props":655,"children":656},{},[657],{"type":44,"value":658},"The contract emit produced an artifact that doesn't load at runtime.",{"type":38,"tag":141,"props":660,"children":661},{},[662],{"type":44,"value":663},"Any other case where the documented surface did the wrong thing.",{"type":38,"tag":51,"props":665,"children":666},{},[667,672],{"type":38,"tag":55,"props":668,"children":669},{},[670],{"type":44,"value":671},"Feature request",{"type":44,"value":466},{"type":38,"tag":137,"props":674,"children":675},{},[676,688],{"type":38,"tag":141,"props":677,"children":678},{},[679,681,686],{"type":44,"value":680},"The user wants a capability that doesn't exist yet (most of the ",{"type":38,"tag":66,"props":682,"children":683},{},[684],{"type":44,"value":685},"What PN doesn't do yet",{"type":44,"value":687}," entries land here).",{"type":38,"tag":141,"props":689,"children":690},{},[691],{"type":44,"value":692},"The user wants a better error message, an additional CLI flag, a new middleware, an additional bundler plugin, etc.",{"type":38,"tag":51,"props":694,"children":695},{},[696,698,702],{"type":44,"value":697},"If both — a bug ",{"type":38,"tag":66,"props":699,"children":700},{},[701],{"type":44,"value":374},{"type":44,"value":703}," the user wants a related feature — file two separate issues. Mixing them makes the framework team's triage harder.",{"type":38,"tag":446,"props":705,"children":707},{"id":706},"_3-collect-the-minimum-body-issue-path-only",[708],{"type":44,"value":709},"3. Collect the minimum body (issue path only)",{"type":38,"tag":51,"props":711,"children":712},{},[713,715,720],{"type":44,"value":714},"For ",{"type":38,"tag":55,"props":716,"children":717},{},[718],{"type":44,"value":719},"either",{"type":44,"value":721}," kind:",{"type":38,"tag":137,"props":723,"children":724},{},[725,751,767,812],{"type":38,"tag":141,"props":726,"children":727},{},[728,733,735,741,743,749],{"type":38,"tag":55,"props":729,"children":730},{},[731],{"type":44,"value":732},"Prisma Next version",{"type":44,"value":734},": ",{"type":38,"tag":191,"props":736,"children":738},{"className":737},[],[739],{"type":44,"value":740},"pnpm ls @prisma-next\u002Fpostgres",{"type":44,"value":742}," (or ",{"type":38,"tag":191,"props":744,"children":746},{"className":745},[],[747],{"type":44,"value":748},"@prisma-next\u002Fmongo",{"type":44,"value":750},"). If the project uses a target package, that version is canonical.",{"type":38,"tag":141,"props":752,"children":753},{},[754,759,760,766],{"type":38,"tag":55,"props":755,"children":756},{},[757],{"type":44,"value":758},"Node version",{"type":44,"value":734},{"type":38,"tag":191,"props":761,"children":763},{"className":762},[],[764],{"type":44,"value":765},"node -v",{"type":44,"value":111},{"type":38,"tag":141,"props":768,"children":769},{},[770,775,776,782,784,790,791,797,798,804,805,811],{"type":38,"tag":55,"props":771,"children":772},{},[773],{"type":44,"value":774},"Package manager",{"type":44,"value":734},{"type":38,"tag":191,"props":777,"children":779},{"className":778},[],[780],{"type":44,"value":781},"pnpm",{"type":44,"value":783}," \u002F ",{"type":38,"tag":191,"props":785,"children":787},{"className":786},[],[788],{"type":44,"value":789},"npm",{"type":44,"value":783},{"type":38,"tag":191,"props":792,"children":794},{"className":793},[],[795],{"type":44,"value":796},"yarn",{"type":44,"value":783},{"type":38,"tag":191,"props":799,"children":801},{"className":800},[],[802],{"type":44,"value":803},"bun",{"type":44,"value":783},{"type":38,"tag":191,"props":806,"children":808},{"className":807},[],[809],{"type":44,"value":810},"deno",{"type":44,"value":111},{"type":38,"tag":141,"props":813,"children":814},{},[815,820,821,827,828,834,835,841],{"type":38,"tag":55,"props":816,"children":817},{},[818],{"type":44,"value":819},"OS",{"type":44,"value":734},{"type":38,"tag":191,"props":822,"children":824},{"className":823},[],[825],{"type":44,"value":826},"darwin",{"type":44,"value":783},{"type":38,"tag":191,"props":829,"children":831},{"className":830},[],[832],{"type":44,"value":833},"linux",{"type":44,"value":783},{"type":38,"tag":191,"props":836,"children":838},{"className":837},[],[839],{"type":44,"value":840},"win32",{"type":44,"value":842}," and the version string is enough.",{"type":38,"tag":51,"props":844,"children":845},{},[846,847,852],{"type":44,"value":714},{"type":38,"tag":55,"props":848,"children":849},{},[850],{"type":44,"value":851},"bug reports",{"type":44,"value":853},", additionally:",{"type":38,"tag":137,"props":855,"children":856},{},[857,875,900,947,957,967,977],{"type":38,"tag":141,"props":858,"children":859},{},[860,865,867,873],{"type":38,"tag":55,"props":861,"children":862},{},[863],{"type":44,"value":864},"The exact command",{"type":44,"value":866}," that misbehaved (e.g. ",{"type":38,"tag":191,"props":868,"children":870},{"className":869},[],[871],{"type":44,"value":872},"prisma-next migration plan --name add-email",{"type":44,"value":874},").",{"type":38,"tag":141,"props":876,"children":877},{},[878,883,885,891,893,898],{"type":38,"tag":55,"props":879,"children":880},{},[881],{"type":44,"value":882},"The full output",{"type":44,"value":884},", with ",{"type":38,"tag":191,"props":886,"children":888},{"className":887},[],[889],{"type":44,"value":890},"-v",{"type":44,"value":892}," if a structured error envelope is involved. Redact ",{"type":38,"tag":191,"props":894,"children":896},{"className":895},[],[897],{"type":44,"value":382},{"type":44,"value":899}," and any other secrets.",{"type":38,"tag":141,"props":901,"children":902},{},[903,923,925,931,932,938,939,945],{"type":38,"tag":55,"props":904,"children":905},{},[906,908,914,915,921],{"type":44,"value":907},"A minimal ",{"type":38,"tag":191,"props":909,"children":911},{"className":910},[],[912],{"type":44,"value":913},"src\u002Fprisma\u002Fcontract.prisma",{"type":44,"value":783},{"type":38,"tag":191,"props":916,"children":918},{"className":917},[],[919],{"type":44,"value":920},"src\u002Fprisma\u002Fcontract.ts",{"type":44,"value":922}," excerpt",{"type":44,"value":924}," that reproduces the issue. Strip unrelated models. Keep the original model and field names from the user's contract when they don't expose anything compromising — a faithful excerpt is much easier for the framework team (and future readers of the issue) to reason about than a re-themed one. Only rename to neutral placeholders (",{"type":38,"tag":191,"props":926,"children":928},{"className":927},[],[929],{"type":44,"value":930},"User",{"type":44,"value":86},{"type":38,"tag":191,"props":933,"children":935},{"className":934},[],[936],{"type":44,"value":937},"Post",{"type":44,"value":86},{"type":38,"tag":191,"props":940,"children":942},{"className":941},[],[943],{"type":44,"value":944},"Tag",{"type":44,"value":946},") when the original names would leak confidential domain detail (product names, internal codenames, customer identifiers, regulated-data field names).",{"type":38,"tag":141,"props":948,"children":949},{},[950,955],{"type":38,"tag":55,"props":951,"children":952},{},[953],{"type":44,"value":954},"Steps to reproduce",{"type":44,"value":956},", as a numbered list.",{"type":38,"tag":141,"props":958,"children":959},{},[960,965],{"type":38,"tag":55,"props":961,"children":962},{},[963],{"type":44,"value":964},"Expected behaviour",{"type":44,"value":966}," — one sentence.",{"type":38,"tag":141,"props":968,"children":969},{},[970,975],{"type":38,"tag":55,"props":971,"children":972},{},[973],{"type":44,"value":974},"Actual behaviour",{"type":44,"value":976}," — one sentence plus the relevant output line.",{"type":38,"tag":141,"props":978,"children":979},{},[980,985],{"type":38,"tag":55,"props":981,"children":982},{},[983],{"type":44,"value":984},"Workaround",{"type":44,"value":986},", if any — one sentence.",{"type":38,"tag":51,"props":988,"children":989},{},[990,991,996],{"type":44,"value":714},{"type":38,"tag":55,"props":992,"children":993},{},[994],{"type":44,"value":995},"feature requests",{"type":44,"value":853},{"type":38,"tag":137,"props":998,"children":999},{},[1000,1010,1026],{"type":38,"tag":141,"props":1001,"children":1002},{},[1003,1008],{"type":38,"tag":55,"props":1004,"children":1005},{},[1006],{"type":44,"value":1007},"Desired API or behaviour",{"type":44,"value":1009}," — one paragraph. Concrete shape (CLI flag, config field, middleware export, plugin API) where possible.",{"type":38,"tag":141,"props":1011,"children":1012},{},[1013,1018,1020,1024],{"type":38,"tag":55,"props":1014,"children":1015},{},[1016],{"type":44,"value":1017},"Where the gap surfaces today",{"type":44,"value":1019}," — which skill's ",{"type":38,"tag":66,"props":1021,"children":1022},{},[1023],{"type":44,"value":685},{"type":44,"value":1025}," entry triggered the request, or the workflow the user was trying to complete.",{"type":38,"tag":141,"props":1027,"children":1028},{},[1029,1034],{"type":38,"tag":55,"props":1030,"children":1031},{},[1032],{"type":44,"value":1033},"Current workaround",{"type":44,"value":1035},", if any — one sentence (and the skill body the user is following may already say this).",{"type":38,"tag":446,"props":1037,"children":1039},{"id":1038},"_4-render-the-body",[1040],{"type":44,"value":1041},"4. Render the body",{"type":38,"tag":51,"props":1043,"children":1044},{},[1045,1047,1053,1055,1061,1063,1068,1070,1076],{"type":44,"value":1046},"The repository ships GitHub Issue Forms (",{"type":38,"tag":191,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":44,"value":1052},".github\u002FISSUE_TEMPLATE\u002Fbug_report.yml",{"type":44,"value":1054}," and ",{"type":38,"tag":191,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":44,"value":1060},"feature_request.yml",{"type":44,"value":1062},"). When the user lands on ",{"type":38,"tag":152,"props":1064,"children":1066},{"href":154,"rel":1065},[156],[1067],{"type":44,"value":154},{"type":44,"value":1069}," they pick the matching template and fill in the form fields; the skill produces the body in the same structured shape so it maps onto the form one-to-one (and so ",{"type":38,"tag":191,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":44,"value":1075},"gh issue create --body-file",{"type":44,"value":1077}," produces a parseable artifact even when the form isn't in play).",{"type":38,"tag":51,"props":1079,"children":1080},{},[1081,1083,1088],{"type":44,"value":1082},"Bug-report body shape (fields named to match ",{"type":38,"tag":191,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":44,"value":1052},{"type":44,"value":1089},"):",{"type":38,"tag":1091,"props":1092,"children":1097},"pre",{"className":1093,"code":1094,"language":1095,"meta":1096,"style":1096},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Package and version\n\n\u003Ce.g. @prisma-next\u002Fpostgres@0.5.2>\n\n## What happened?\n\n\u003Cone-sentence summary plus the relevant output line, secrets redacted>\n\n## What did you expect to happen?\n\n\u003Cone sentence>\n\n## Minimal reproduction\n\n1. \u003Cstep one>\n2. \u003Cstep two>\n3. \u003Cstep three>\n\n```ts\n\u002F\u002F schema.psl excerpt + the query \u002F command that fails\n```\n\n## Environment\n\n- Node: \u003Cversion>\n- OS: \u003Cdarwin\u002Flinux\u002Fwin32> \u003Cversion>\n- Package manager: \u003Cpnpm\u002Fnpm\u002Fyarn\u002Fbun\u002Fdeno> \u003Cversion>\n- Database: \u003CPostgres \u002F Mongo> \u003Cversion>\n\n## Additional context\n\n\u003Coptional — link to source skill's capability-gap entry, related\nissue number, partner extension involved>\n","markdown","",[1098],{"type":38,"tag":191,"props":1099,"children":1100},{"__ignoreMap":1096},[1101,1119,1129,1139,1147,1160,1168,1177,1185,1198,1206,1215,1223,1236,1244,1257,1271,1285,1293,1309,1319,1328,1336,1349,1357,1371,1384,1397,1410,1418,1431,1439,1448],{"type":38,"tag":1102,"props":1103,"children":1106},"span",{"class":1104,"line":1105},"line",1,[1107,1113],{"type":38,"tag":1102,"props":1108,"children":1110},{"style":1109},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1111],{"type":44,"value":1112},"## ",{"type":38,"tag":1102,"props":1114,"children":1116},{"style":1115},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1117],{"type":44,"value":1118},"Package and version\n",{"type":38,"tag":1102,"props":1120,"children":1122},{"class":1104,"line":1121},2,[1123],{"type":38,"tag":1102,"props":1124,"children":1126},{"emptyLinePlaceholder":1125},true,[1127],{"type":44,"value":1128},"\n",{"type":38,"tag":1102,"props":1130,"children":1132},{"class":1104,"line":1131},3,[1133],{"type":38,"tag":1102,"props":1134,"children":1136},{"style":1135},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1137],{"type":44,"value":1138},"\u003Ce.g. @prisma-next\u002Fpostgres@0.5.2>\n",{"type":38,"tag":1102,"props":1140,"children":1142},{"class":1104,"line":1141},4,[1143],{"type":38,"tag":1102,"props":1144,"children":1145},{"emptyLinePlaceholder":1125},[1146],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1148,"children":1150},{"class":1104,"line":1149},5,[1151,1155],{"type":38,"tag":1102,"props":1152,"children":1153},{"style":1109},[1154],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1156,"children":1157},{"style":1115},[1158],{"type":44,"value":1159},"What happened?\n",{"type":38,"tag":1102,"props":1161,"children":1163},{"class":1104,"line":1162},6,[1164],{"type":38,"tag":1102,"props":1165,"children":1166},{"emptyLinePlaceholder":1125},[1167],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1169,"children":1171},{"class":1104,"line":1170},7,[1172],{"type":38,"tag":1102,"props":1173,"children":1174},{"style":1135},[1175],{"type":44,"value":1176},"\u003Cone-sentence summary plus the relevant output line, secrets redacted>\n",{"type":38,"tag":1102,"props":1178,"children":1180},{"class":1104,"line":1179},8,[1181],{"type":38,"tag":1102,"props":1182,"children":1183},{"emptyLinePlaceholder":1125},[1184],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1186,"children":1188},{"class":1104,"line":1187},9,[1189,1193],{"type":38,"tag":1102,"props":1190,"children":1191},{"style":1109},[1192],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1194,"children":1195},{"style":1115},[1196],{"type":44,"value":1197},"What did you expect to happen?\n",{"type":38,"tag":1102,"props":1199,"children":1201},{"class":1104,"line":1200},10,[1202],{"type":38,"tag":1102,"props":1203,"children":1204},{"emptyLinePlaceholder":1125},[1205],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1207,"children":1209},{"class":1104,"line":1208},11,[1210],{"type":38,"tag":1102,"props":1211,"children":1212},{"style":1135},[1213],{"type":44,"value":1214},"\u003Cone sentence>\n",{"type":38,"tag":1102,"props":1216,"children":1218},{"class":1104,"line":1217},12,[1219],{"type":38,"tag":1102,"props":1220,"children":1221},{"emptyLinePlaceholder":1125},[1222],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1224,"children":1226},{"class":1104,"line":1225},13,[1227,1231],{"type":38,"tag":1102,"props":1228,"children":1229},{"style":1109},[1230],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1232,"children":1233},{"style":1115},[1234],{"type":44,"value":1235},"Minimal reproduction\n",{"type":38,"tag":1102,"props":1237,"children":1239},{"class":1104,"line":1238},14,[1240],{"type":38,"tag":1102,"props":1241,"children":1242},{"emptyLinePlaceholder":1125},[1243],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1245,"children":1246},{"class":1104,"line":24},[1247,1252],{"type":38,"tag":1102,"props":1248,"children":1249},{"style":1109},[1250],{"type":44,"value":1251},"1.",{"type":38,"tag":1102,"props":1253,"children":1254},{"style":1135},[1255],{"type":44,"value":1256}," \u003Cstep one>\n",{"type":38,"tag":1102,"props":1258,"children":1260},{"class":1104,"line":1259},16,[1261,1266],{"type":38,"tag":1102,"props":1262,"children":1263},{"style":1109},[1264],{"type":44,"value":1265},"2.",{"type":38,"tag":1102,"props":1267,"children":1268},{"style":1135},[1269],{"type":44,"value":1270}," \u003Cstep two>\n",{"type":38,"tag":1102,"props":1272,"children":1274},{"class":1104,"line":1273},17,[1275,1280],{"type":38,"tag":1102,"props":1276,"children":1277},{"style":1109},[1278],{"type":44,"value":1279},"3.",{"type":38,"tag":1102,"props":1281,"children":1282},{"style":1135},[1283],{"type":44,"value":1284}," \u003Cstep three>\n",{"type":38,"tag":1102,"props":1286,"children":1288},{"class":1104,"line":1287},18,[1289],{"type":38,"tag":1102,"props":1290,"children":1291},{"emptyLinePlaceholder":1125},[1292],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1294,"children":1296},{"class":1104,"line":1295},19,[1297,1303],{"type":38,"tag":1102,"props":1298,"children":1300},{"style":1299},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1301],{"type":44,"value":1302},"```",{"type":38,"tag":1102,"props":1304,"children":1306},{"style":1305},"--shiki-light:#90A4AE90;--shiki-default:#EEFFFF90;--shiki-dark:#BABED890",[1307],{"type":44,"value":1308},"ts\n",{"type":38,"tag":1102,"props":1310,"children":1312},{"class":1104,"line":1311},20,[1313],{"type":38,"tag":1102,"props":1314,"children":1316},{"style":1315},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1317],{"type":44,"value":1318},"\u002F\u002F schema.psl excerpt + the query \u002F command that fails\n",{"type":38,"tag":1102,"props":1320,"children":1322},{"class":1104,"line":1321},21,[1323],{"type":38,"tag":1102,"props":1324,"children":1325},{"style":1299},[1326],{"type":44,"value":1327},"```\n",{"type":38,"tag":1102,"props":1329,"children":1331},{"class":1104,"line":1330},22,[1332],{"type":38,"tag":1102,"props":1333,"children":1334},{"emptyLinePlaceholder":1125},[1335],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1337,"children":1339},{"class":1104,"line":1338},23,[1340,1344],{"type":38,"tag":1102,"props":1341,"children":1342},{"style":1109},[1343],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1345,"children":1346},{"style":1115},[1347],{"type":44,"value":1348},"Environment\n",{"type":38,"tag":1102,"props":1350,"children":1352},{"class":1104,"line":1351},24,[1353],{"type":38,"tag":1102,"props":1354,"children":1355},{"emptyLinePlaceholder":1125},[1356],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1358,"children":1360},{"class":1104,"line":1359},25,[1361,1366],{"type":38,"tag":1102,"props":1362,"children":1363},{"style":1109},[1364],{"type":44,"value":1365},"-",{"type":38,"tag":1102,"props":1367,"children":1368},{"style":1135},[1369],{"type":44,"value":1370}," Node: \u003Cversion>\n",{"type":38,"tag":1102,"props":1372,"children":1374},{"class":1104,"line":1373},26,[1375,1379],{"type":38,"tag":1102,"props":1376,"children":1377},{"style":1109},[1378],{"type":44,"value":1365},{"type":38,"tag":1102,"props":1380,"children":1381},{"style":1135},[1382],{"type":44,"value":1383}," OS: \u003Cdarwin\u002Flinux\u002Fwin32> \u003Cversion>\n",{"type":38,"tag":1102,"props":1385,"children":1387},{"class":1104,"line":1386},27,[1388,1392],{"type":38,"tag":1102,"props":1389,"children":1390},{"style":1109},[1391],{"type":44,"value":1365},{"type":38,"tag":1102,"props":1393,"children":1394},{"style":1135},[1395],{"type":44,"value":1396}," Package manager: \u003Cpnpm\u002Fnpm\u002Fyarn\u002Fbun\u002Fdeno> \u003Cversion>\n",{"type":38,"tag":1102,"props":1398,"children":1400},{"class":1104,"line":1399},28,[1401,1405],{"type":38,"tag":1102,"props":1402,"children":1403},{"style":1109},[1404],{"type":44,"value":1365},{"type":38,"tag":1102,"props":1406,"children":1407},{"style":1135},[1408],{"type":44,"value":1409}," Database: \u003CPostgres \u002F Mongo> \u003Cversion>\n",{"type":38,"tag":1102,"props":1411,"children":1413},{"class":1104,"line":1412},29,[1414],{"type":38,"tag":1102,"props":1415,"children":1416},{"emptyLinePlaceholder":1125},[1417],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1419,"children":1421},{"class":1104,"line":1420},30,[1422,1426],{"type":38,"tag":1102,"props":1423,"children":1424},{"style":1109},[1425],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1427,"children":1428},{"style":1115},[1429],{"type":44,"value":1430},"Additional context\n",{"type":38,"tag":1102,"props":1432,"children":1434},{"class":1104,"line":1433},31,[1435],{"type":38,"tag":1102,"props":1436,"children":1437},{"emptyLinePlaceholder":1125},[1438],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1440,"children":1442},{"class":1104,"line":1441},32,[1443],{"type":38,"tag":1102,"props":1444,"children":1445},{"style":1135},[1446],{"type":44,"value":1447},"\u003Coptional — link to source skill's capability-gap entry, related\n",{"type":38,"tag":1102,"props":1449,"children":1451},{"class":1104,"line":1450},33,[1452],{"type":38,"tag":1102,"props":1453,"children":1454},{"style":1135},[1455],{"type":44,"value":1456},"issue number, partner extension involved>\n",{"type":38,"tag":51,"props":1458,"children":1459},{},[1460,1462,1468],{"type":44,"value":1461},"Feature-request body shape (fields named to match ",{"type":38,"tag":191,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":44,"value":1467},".github\u002FISSUE_TEMPLATE\u002Ffeature_request.yml",{"type":44,"value":1089},{"type":38,"tag":1091,"props":1470,"children":1472},{"className":1093,"code":1471,"language":1095,"meta":1096,"style":1096},"## What problem are you trying to solve?\n\n\u003Cparagraph — the use case or pain point this would address>\n\n## Proposed solution\n\n```ts\n\u002F\u002F imagined usage of the API \u002F behaviour you'd want\n```\n\n## Alternatives considered\n\n\u003Csentence or two — what you tried with the current API and why it didn't work>\n\n## Scope and impact\n\n\u003Cwhich package(s) this would touch; target-specific implications>\n",[1473],{"type":38,"tag":191,"props":1474,"children":1475},{"__ignoreMap":1096},[1476,1488,1495,1503,1510,1522,1529,1540,1548,1555,1562,1574,1581,1589,1596,1608,1615],{"type":38,"tag":1102,"props":1477,"children":1478},{"class":1104,"line":1105},[1479,1483],{"type":38,"tag":1102,"props":1480,"children":1481},{"style":1109},[1482],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1484,"children":1485},{"style":1115},[1486],{"type":44,"value":1487},"What problem are you trying to solve?\n",{"type":38,"tag":1102,"props":1489,"children":1490},{"class":1104,"line":1121},[1491],{"type":38,"tag":1102,"props":1492,"children":1493},{"emptyLinePlaceholder":1125},[1494],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1496,"children":1497},{"class":1104,"line":1131},[1498],{"type":38,"tag":1102,"props":1499,"children":1500},{"style":1135},[1501],{"type":44,"value":1502},"\u003Cparagraph — the use case or pain point this would address>\n",{"type":38,"tag":1102,"props":1504,"children":1505},{"class":1104,"line":1141},[1506],{"type":38,"tag":1102,"props":1507,"children":1508},{"emptyLinePlaceholder":1125},[1509],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1511,"children":1512},{"class":1104,"line":1149},[1513,1517],{"type":38,"tag":1102,"props":1514,"children":1515},{"style":1109},[1516],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1518,"children":1519},{"style":1115},[1520],{"type":44,"value":1521},"Proposed solution\n",{"type":38,"tag":1102,"props":1523,"children":1524},{"class":1104,"line":1162},[1525],{"type":38,"tag":1102,"props":1526,"children":1527},{"emptyLinePlaceholder":1125},[1528],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1530,"children":1531},{"class":1104,"line":1170},[1532,1536],{"type":38,"tag":1102,"props":1533,"children":1534},{"style":1299},[1535],{"type":44,"value":1302},{"type":38,"tag":1102,"props":1537,"children":1538},{"style":1305},[1539],{"type":44,"value":1308},{"type":38,"tag":1102,"props":1541,"children":1542},{"class":1104,"line":1179},[1543],{"type":38,"tag":1102,"props":1544,"children":1545},{"style":1315},[1546],{"type":44,"value":1547},"\u002F\u002F imagined usage of the API \u002F behaviour you'd want\n",{"type":38,"tag":1102,"props":1549,"children":1550},{"class":1104,"line":1187},[1551],{"type":38,"tag":1102,"props":1552,"children":1553},{"style":1299},[1554],{"type":44,"value":1327},{"type":38,"tag":1102,"props":1556,"children":1557},{"class":1104,"line":1200},[1558],{"type":38,"tag":1102,"props":1559,"children":1560},{"emptyLinePlaceholder":1125},[1561],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1563,"children":1564},{"class":1104,"line":1208},[1565,1569],{"type":38,"tag":1102,"props":1566,"children":1567},{"style":1109},[1568],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1570,"children":1571},{"style":1115},[1572],{"type":44,"value":1573},"Alternatives considered\n",{"type":38,"tag":1102,"props":1575,"children":1576},{"class":1104,"line":1217},[1577],{"type":38,"tag":1102,"props":1578,"children":1579},{"emptyLinePlaceholder":1125},[1580],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1582,"children":1583},{"class":1104,"line":1225},[1584],{"type":38,"tag":1102,"props":1585,"children":1586},{"style":1135},[1587],{"type":44,"value":1588},"\u003Csentence or two — what you tried with the current API and why it didn't work>\n",{"type":38,"tag":1102,"props":1590,"children":1591},{"class":1104,"line":1238},[1592],{"type":38,"tag":1102,"props":1593,"children":1594},{"emptyLinePlaceholder":1125},[1595],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1597,"children":1598},{"class":1104,"line":24},[1599,1603],{"type":38,"tag":1102,"props":1600,"children":1601},{"style":1109},[1602],{"type":44,"value":1112},{"type":38,"tag":1102,"props":1604,"children":1605},{"style":1115},[1606],{"type":44,"value":1607},"Scope and impact\n",{"type":38,"tag":1102,"props":1609,"children":1610},{"class":1104,"line":1259},[1611],{"type":38,"tag":1102,"props":1612,"children":1613},{"emptyLinePlaceholder":1125},[1614],{"type":44,"value":1128},{"type":38,"tag":1102,"props":1616,"children":1617},{"class":1104,"line":1273},[1618],{"type":38,"tag":1102,"props":1619,"children":1620},{"style":1135},[1621],{"type":44,"value":1622},"\u003Cwhich package(s) this would touch; target-specific implications>\n",{"type":38,"tag":446,"props":1624,"children":1626},{"id":1625},"_5-title-issue-path-only",[1627],{"type":44,"value":1628},"5. Title (issue path only)",{"type":38,"tag":137,"props":1630,"children":1631},{},[1632,1655],{"type":38,"tag":141,"props":1633,"children":1634},{},[1635,1639,1640,1646,1648,1654],{"type":38,"tag":55,"props":1636,"children":1637},{},[1638],{"type":44,"value":621},{"type":44,"value":734},{"type":38,"tag":191,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":44,"value":1645},"bug(\u003Carea>): \u003Cone-line summary>",{"type":44,"value":1647}," — e.g. ",{"type":38,"tag":191,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":44,"value":1653},"bug(cli): migration plan exits 0 when there is no diff",{"type":44,"value":111},{"type":38,"tag":141,"props":1656,"children":1657},{},[1658,1662,1663,1669,1670,1676],{"type":38,"tag":55,"props":1659,"children":1660},{},[1661],{"type":44,"value":671},{"type":44,"value":734},{"type":38,"tag":191,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":44,"value":1668},"feat(\u003Carea>): \u003Cone-line summary>",{"type":44,"value":1647},{"type":38,"tag":191,"props":1671,"children":1673},{"className":1672},[],[1674],{"type":44,"value":1675},"feat(build): first-party Next.js plugin for contract emit",{"type":44,"value":111},{"type":38,"tag":51,"props":1678,"children":1679},{},[1680,1682,1688,1689,1695,1696,1702,1703,1709,1710,1716,1717,1723,1724,1730,1731,1737],{"type":44,"value":1681},"Areas mirror the cluster of skills: ",{"type":38,"tag":191,"props":1683,"children":1685},{"className":1684},[],[1686],{"type":44,"value":1687},"cli",{"type":44,"value":86},{"type":38,"tag":191,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":44,"value":1694},"contract",{"type":44,"value":86},{"type":38,"tag":191,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":44,"value":1701},"migration",{"type":44,"value":86},{"type":38,"tag":191,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":44,"value":1708},"query",{"type":44,"value":86},{"type":38,"tag":191,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":44,"value":1715},"runtime",{"type":44,"value":86},{"type":38,"tag":191,"props":1718,"children":1720},{"className":1719},[],[1721],{"type":44,"value":1722},"build",{"type":44,"value":86},{"type":38,"tag":191,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":44,"value":1729},"error",{"type":44,"value":86},{"type":38,"tag":191,"props":1732,"children":1734},{"className":1733},[],[1735],{"type":44,"value":1736},"docs",{"type":44,"value":111},{"type":38,"tag":446,"props":1739,"children":1741},{"id":1740},"_6-surface-for-confirmation-issue-path-only",[1742],{"type":44,"value":1743},"6. Surface for confirmation (issue path only)",{"type":38,"tag":51,"props":1745,"children":1746},{},[1747,1752,1754,1759],{"type":38,"tag":55,"props":1748,"children":1749},{},[1750],{"type":44,"value":1751},"Never auto-submit.",{"type":44,"value":1753}," The agent shows the rendered title and body to the user and asks: ",{"type":38,"tag":66,"props":1755,"children":1756},{},[1757],{"type":44,"value":1758},"\"This looks good to file. Shall I submit it to GitHub?\"",{"type":44,"value":1760},". Submission only happens after explicit user approval.",{"type":38,"tag":446,"props":1762,"children":1764},{"id":1763},"_7-submit-issue-path-only",[1765],{"type":44,"value":1766},"7. Submit (issue path only)",{"type":38,"tag":51,"props":1768,"children":1769},{},[1770],{"type":44,"value":1771},"Preferred. Two steps:",{"type":38,"tag":1773,"props":1774,"children":1775},"ol",{},[1776,1802],{"type":38,"tag":141,"props":1777,"children":1778},{},[1779,1784,1786,1792,1794,1800],{"type":38,"tag":55,"props":1780,"children":1781},{},[1782],{"type":44,"value":1783},"Write the rendered body to a temporary file.",{"type":44,"value":1785}," Use your file-write tool (the same tool you'd use to create any other file on disk) to write the body to e.g. ",{"type":38,"tag":191,"props":1787,"children":1789},{"className":1788},[],[1790],{"type":44,"value":1791},"wip\u002Fpn-issue-body.md",{"type":44,"value":1793}," or ",{"type":38,"tag":191,"props":1795,"children":1797},{"className":1796},[],[1798],{"type":44,"value":1799},"\u002Ftmp\u002Fpn-issue-body.md",{"type":44,"value":1801},". The body content is just the markdown produced in step 4 of this workflow — no surrounding shell quoting, no heredoc.",{"type":38,"tag":141,"props":1803,"children":1804},{},[1805,1817,1819],{"type":38,"tag":55,"props":1806,"children":1807},{},[1808,1810,1816],{"type":44,"value":1809},"Reference that file from ",{"type":38,"tag":191,"props":1811,"children":1813},{"className":1812},[],[1814],{"type":44,"value":1815},"gh",{"type":44,"value":111},{"type":44,"value":1818}," Run:",{"type":38,"tag":1091,"props":1820,"children":1824},{"className":1821,"code":1822,"language":1823,"meta":1096,"style":1096},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","gh issue create \\\n  --repo prisma\u002Fprisma-next \\\n  --title \"\u003Ctitle>\" \\\n  --body-file \u003Cpath-from-step-1>\n","bash",[1825],{"type":38,"tag":191,"props":1826,"children":1827},{"__ignoreMap":1096},[1828,1850,1867,1894],{"type":38,"tag":1102,"props":1829,"children":1830},{"class":1104,"line":1105},[1831,1835,1840,1845],{"type":38,"tag":1102,"props":1832,"children":1833},{"style":1115},[1834],{"type":44,"value":1815},{"type":38,"tag":1102,"props":1836,"children":1837},{"style":1299},[1838],{"type":44,"value":1839}," issue",{"type":38,"tag":1102,"props":1841,"children":1842},{"style":1299},[1843],{"type":44,"value":1844}," create",{"type":38,"tag":1102,"props":1846,"children":1847},{"style":1135},[1848],{"type":44,"value":1849}," \\\n",{"type":38,"tag":1102,"props":1851,"children":1852},{"class":1104,"line":1121},[1853,1858,1863],{"type":38,"tag":1102,"props":1854,"children":1855},{"style":1299},[1856],{"type":44,"value":1857},"  --repo",{"type":38,"tag":1102,"props":1859,"children":1860},{"style":1299},[1861],{"type":44,"value":1862}," prisma\u002Fprisma-next",{"type":38,"tag":1102,"props":1864,"children":1865},{"style":1135},[1866],{"type":44,"value":1849},{"type":38,"tag":1102,"props":1868,"children":1869},{"class":1104,"line":1131},[1870,1875,1880,1885,1890],{"type":38,"tag":1102,"props":1871,"children":1872},{"style":1299},[1873],{"type":44,"value":1874},"  --title",{"type":38,"tag":1102,"props":1876,"children":1877},{"style":1109},[1878],{"type":44,"value":1879}," \"",{"type":38,"tag":1102,"props":1881,"children":1882},{"style":1299},[1883],{"type":44,"value":1884},"\u003Ctitle>",{"type":38,"tag":1102,"props":1886,"children":1887},{"style":1109},[1888],{"type":44,"value":1889},"\"",{"type":38,"tag":1102,"props":1891,"children":1892},{"style":1135},[1893],{"type":44,"value":1849},{"type":38,"tag":1102,"props":1895,"children":1896},{"class":1104,"line":1141},[1897,1902,1907,1912],{"type":38,"tag":1102,"props":1898,"children":1899},{"style":1299},[1900],{"type":44,"value":1901},"  --body-file",{"type":38,"tag":1102,"props":1903,"children":1904},{"style":1109},[1905],{"type":44,"value":1906}," \u003C",{"type":38,"tag":1102,"props":1908,"children":1909},{"style":1299},[1910],{"type":44,"value":1911},"path-from-step-",{"type":38,"tag":1102,"props":1913,"children":1914},{"style":1109},[1915],{"type":44,"value":1916},"1>\n",{"type":38,"tag":51,"props":1918,"children":1919},{},[1920,1925,1927,1933,1934,1940,1942,1948,1949,1955],{"type":38,"tag":55,"props":1921,"children":1922},{},[1923],{"type":44,"value":1924},"Anti-pattern (do not do this):",{"type":44,"value":1926}," inlining the body via ",{"type":38,"tag":191,"props":1928,"children":1930},{"className":1929},[],[1931],{"type":44,"value":1932},"--body \"$(cat \u003C\u003CEOF …)\"",{"type":44,"value":1793},{"type":38,"tag":191,"props":1935,"children":1937},{"className":1936},[],[1938],{"type":44,"value":1939},"--body-file \u003C(cat \u003C\u003CEOF …)",{"type":44,"value":1941},". Those one-liners reliably leak literal ",{"type":38,"tag":191,"props":1943,"children":1945},{"className":1944},[],[1946],{"type":44,"value":1947},"cat \u003C\u003C'EOF'",{"type":44,"value":783},{"type":38,"tag":191,"props":1950,"children":1952},{"className":1951},[],[1953],{"type":44,"value":1954},"EOF",{"type":44,"value":1956}," markers into the issue body when the agent reuses the template verbatim with the body interpolated. Always write the body to a real file first and pass the path.",{"type":38,"tag":51,"props":1958,"children":1959},{},[1960,1962,1967],{"type":44,"value":1961},"If ",{"type":38,"tag":191,"props":1963,"children":1965},{"className":1964},[],[1966],{"type":44,"value":1815},{"type":44,"value":1968}," is not installed: open the prefilled new-issue URL in the browser:",{"type":38,"tag":1091,"props":1970,"children":1974},{"className":1971,"code":1973,"language":44,"meta":1096},[1972],"language-text","https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Fissues\u002Fnew\u002Fchoose\n",[1975],{"type":38,"tag":191,"props":1976,"children":1977},{"__ignoreMap":1096},[1978],{"type":44,"value":1973},{"type":38,"tag":51,"props":1980,"children":1981},{},[1982,1984,1990,1992,1998],{"type":44,"value":1983},"…and instruct the user to paste the rendered body. The agent can copy the body to the clipboard via ",{"type":38,"tag":191,"props":1985,"children":1987},{"className":1986},[],[1988],{"type":44,"value":1989},"pbcopy",{"type":44,"value":1991}," (macOS), ",{"type":38,"tag":191,"props":1993,"children":1995},{"className":1994},[],[1996],{"type":44,"value":1997},"xclip",{"type":44,"value":1999}," (Linux), or by simply printing it in the chat for the user to copy.",{"type":38,"tag":446,"props":2001,"children":2003},{"id":2002},"_8-route-to-discord-qa-design-feedback-direct-team-contact-path",[2004],{"type":44,"value":2005},"8. Route to Discord (Q&A \u002F design-feedback \u002F direct-team-contact path)",{"type":38,"tag":51,"props":2007,"children":2008},{},[2009],{"type":44,"value":2010},"When step 1 picked the Discord channel (steps 2–7 do not apply):",{"type":38,"tag":1773,"props":2012,"children":2013},{},[2014,2059,2106,2123],{"type":38,"tag":141,"props":2015,"children":2016},{},[2017,2022,2024,2029,2031],{"type":38,"tag":55,"props":2018,"children":2019},{},[2020],{"type":44,"value":2021},"Surface the link.",{"type":44,"value":2023}," Give the user the canonical invite: ",{"type":38,"tag":152,"props":2025,"children":2027},{"href":171,"rel":2026},[156],[2028],{"type":44,"value":171},{"type":44,"value":2030},". Suggest the channel that fits the question:\n",{"type":38,"tag":137,"props":2032,"children":2033},{},[2034,2054],{"type":38,"tag":141,"props":2035,"children":2036},{},[2037,2039,2045,2046,2052],{"type":44,"value":2038},"General usage \u002F Q&A → the public ",{"type":38,"tag":191,"props":2040,"children":2042},{"className":2041},[],[2043],{"type":44,"value":2044},"#help",{"type":44,"value":1793},{"type":38,"tag":191,"props":2047,"children":2049},{"className":2048},[],[2050],{"type":44,"value":2051},"#prisma-next",{"type":44,"value":2053}," channel (channel naming evolves; the invite landing page lists current channels).",{"type":38,"tag":141,"props":2055,"children":2056},{},[2057],{"type":44,"value":2058},"Extension-author \u002F partner-integration \u002F breaking-change-coordination questions → the public extension-authors channel, or the user can ping a maintainer directly once they're in the server.",{"type":38,"tag":141,"props":2060,"children":2061},{},[2062,2067,2069],{"type":38,"tag":55,"props":2063,"children":2064},{},[2065],{"type":44,"value":2066},"Help draft the opening message.",{"type":44,"value":2068}," Prisma's Discord is searchable; a well-framed opening message gets a faster, more useful answer. The agent drafts a short message with:\n",{"type":38,"tag":137,"props":2070,"children":2071},{},[2072,2077,2089,2101],{"type":38,"tag":141,"props":2073,"children":2074},{},[2075],{"type":44,"value":2076},"One-sentence summary of what the user is trying to do.",{"type":38,"tag":141,"props":2078,"children":2079},{},[2080,2082,2087],{"type":44,"value":2081},"The Prisma Next version (",{"type":38,"tag":191,"props":2083,"children":2085},{"className":2084},[],[2086],{"type":44,"value":740},{"type":44,"value":2088}," or equivalent).",{"type":38,"tag":141,"props":2090,"children":2091},{},[2092,2094,2099],{"type":44,"value":2093},"A short code snippet (PSL excerpt, query, config file) where relevant — redacted the same way as a GitHub issue body (no ",{"type":38,"tag":191,"props":2095,"children":2097},{"className":2096},[],[2098],{"type":44,"value":382},{"type":44,"value":2100},", no customer schema names).",{"type":38,"tag":141,"props":2102,"children":2103},{},[2104],{"type":44,"value":2105},"The specific question the user wants answered.",{"type":38,"tag":141,"props":2107,"children":2108},{},[2109,2114,2116,2121],{"type":38,"tag":55,"props":2110,"children":2111},{},[2112],{"type":44,"value":2113},"Do not auto-post.",{"type":44,"value":2115}," The agent surfaces the drafted message to the user — ",{"type":38,"tag":66,"props":2117,"children":2118},{},[2119],{"type":44,"value":2120},"\"here's an opening message you can paste into Discord; want to adjust before sending?\"",{"type":44,"value":2122}," — and lets the user decide whether to paste it as-is, edit it, or pick a different framing.",{"type":38,"tag":141,"props":2124,"children":2125},{},[2126,2131,2133,2138,2139,2144],{"type":38,"tag":55,"props":2127,"children":2128},{},[2129],{"type":44,"value":2130},"Set expectations honestly.",{"type":44,"value":2132}," Discord is synchronous and best-effort. Bugs and concrete feature requests should land in GitHub regardless (use the issue path); Discord is for the conversation that gets you to ",{"type":38,"tag":66,"props":2134,"children":2135},{},[2136],{"type":44,"value":2137},"\"yes, this is a bug, file it\"",{"type":44,"value":1793},{"type":38,"tag":66,"props":2140,"children":2141},{},[2142],{"type":44,"value":2143},"\"yes, this should be a feature, file it\"",{"type":44,"value":111},{"type":38,"tag":446,"props":2146,"children":2148},{"id":2147},"_9-follow-up",[2149],{"type":44,"value":2150},"9. Follow up",{"type":38,"tag":137,"props":2152,"children":2153},{},[2154,2179],{"type":38,"tag":141,"props":2155,"children":2156},{},[2157,2162,2164,2170,2172,2177],{"type":38,"tag":55,"props":2158,"children":2159},{},[2160],{"type":44,"value":2161},"Issue path",{"type":44,"value":2163},": record the issue URL in the user's project notes (or in the project's ",{"type":38,"tag":191,"props":2165,"children":2167},{"className":2166},[],[2168],{"type":44,"value":2169},"wip\u002F",{"type":44,"value":2171}," if there is one) so a later upgrade or related work can reference it. If the bug is the symptom of an old version of Prisma Next, suggest the user run ",{"type":38,"tag":191,"props":2173,"children":2175},{"className":2174},[],[2176],{"type":44,"value":304},{"type":44,"value":2178}," (the separately-installed upgrade skill) — many bugs are fixed in newer releases.",{"type":38,"tag":141,"props":2180,"children":2181},{},[2182,2187,2189,2194,2195,2200],{"type":38,"tag":55,"props":2183,"children":2184},{},[2185],{"type":44,"value":2186},"Discord path",{"type":44,"value":2188},": once the conversation on Discord settles into a concrete bug or a concrete feature request, return to step 1 of this skill and file the issue (the Discord thread becomes the ",{"type":38,"tag":66,"props":2190,"children":2191},{},[2192],{"type":44,"value":2193},"Notes",{"type":44,"value":783},{"type":38,"tag":66,"props":2196,"children":2197},{},[2198],{"type":44,"value":2199},"Where the gap surfaces",{"type":44,"value":2201}," reference in the issue body).",{"type":38,"tag":176,"props":2203,"children":2205},{"id":2204},"common-pitfalls",[2206],{"type":44,"value":2207},"Common Pitfalls",{"type":38,"tag":1773,"props":2209,"children":2210},{},[2211,2221,2254,2264,2274,2284],{"type":38,"tag":141,"props":2212,"children":2213},{},[2214,2219],{"type":38,"tag":55,"props":2215,"children":2216},{},[2217],{"type":44,"value":2218},"Auto-submitting without confirmation.",{"type":44,"value":2220}," Always show the body first. The user owns the public-facing artifact, not the agent.",{"type":38,"tag":141,"props":2222,"children":2223},{},[2224,2236,2238,2244,2246,2252],{"type":38,"tag":55,"props":2225,"children":2226},{},[2227,2229,2234],{"type":44,"value":2228},"Pasting ",{"type":38,"tag":191,"props":2230,"children":2232},{"className":2231},[],[2233],{"type":44,"value":382},{"type":44,"value":2235}," or other secrets into the body.",{"type":44,"value":2237}," ",{"type":38,"tag":191,"props":2239,"children":2241},{"className":2240},[],[2242],{"type":44,"value":2243},"redact",{"type":44,"value":2245}," aggressively. Replace with ",{"type":38,"tag":191,"props":2247,"children":2249},{"className":2248},[],[2250],{"type":44,"value":2251},"postgresql:\u002F\u002FUSER:PASS@HOST\u002FDB",{"type":44,"value":2253}," placeholders.",{"type":38,"tag":141,"props":2255,"children":2256},{},[2257,2262],{"type":38,"tag":55,"props":2258,"children":2259},{},[2260],{"type":44,"value":2261},"Pasting a customer's confidential domain schema.",{"type":44,"value":2263}," When original model and field names would leak confidential information (product codenames, customer identifiers, regulated-data fields), rename to neutral placeholders before the body goes into a public issue. Otherwise, keep the original names — a faithful excerpt is easier for the framework team to reason about than a re-themed one. Over-renaming is its own readability cost.",{"type":38,"tag":141,"props":2265,"children":2266},{},[2267,2272],{"type":38,"tag":55,"props":2268,"children":2269},{},[2270],{"type":44,"value":2271},"Filing a documentation question as a bug.",{"type":44,"value":2273}," Documentation questions belong in another skill or in a GitHub Discussion (if the repo enables them). Bugs are about the surface misbehaving.",{"type":38,"tag":141,"props":2275,"children":2276},{},[2277,2282],{"type":38,"tag":55,"props":2278,"children":2279},{},[2280],{"type":44,"value":2281},"Conflating bug + feature in one issue.",{"type":44,"value":2283}," File two. Mixed issues are hard to triage and hard to close.",{"type":38,"tag":141,"props":2285,"children":2286},{},[2287,2292],{"type":38,"tag":55,"props":2288,"children":2289},{},[2290],{"type":44,"value":2291},"Filing without a version.",{"type":44,"value":2293}," \"I'm using Prisma Next, it's broken\" without the version makes triage hopeless. The version is the cheapest piece of context to capture; always include it.",{"type":38,"tag":176,"props":2295,"children":2297},{"id":2296},"what-prisma-next-doesnt-do-yet",[2298],{"type":44,"value":77},{"type":38,"tag":137,"props":2300,"children":2301},{},[2302],{"type":38,"tag":141,"props":2303,"children":2304},{},[2305,2310,2312,2318],{"type":38,"tag":55,"props":2306,"children":2307},{},[2308],{"type":44,"value":2309},"In-product feedback channel.",{"type":44,"value":2311}," No ",{"type":38,"tag":191,"props":2313,"children":2315},{"className":2314},[],[2316],{"type":44,"value":2317},"prisma-next feedback",{"type":44,"value":2319}," CLI command. The GitHub Issues page is the canonical surface. If you want a CLI-side feedback command, file a feature request via this skill.",{"type":38,"tag":176,"props":2321,"children":2323},{"id":2322},"reference-files",[2324],{"type":44,"value":2325},"Reference Files",{"type":38,"tag":137,"props":2327,"children":2328},{},[2329,2339],{"type":38,"tag":141,"props":2330,"children":2331},{},[2332,2337],{"type":38,"tag":152,"props":2333,"children":2335},{"href":154,"rel":2334},[156],[2336],{"type":44,"value":154},{"type":44,"value":2338}," — the canonical submission surface.",{"type":38,"tag":141,"props":2340,"children":2341},{},[2342,2348,2350,2355],{"type":38,"tag":152,"props":2343,"children":2346},{"href":2344,"rel":2345},"https:\u002F\u002Fcli.github.com\u002Fmanual\u002Fgh_issue_create",[156],[2347],{"type":44,"value":2344},{"type":44,"value":2349}," — the ",{"type":38,"tag":191,"props":2351,"children":2353},{"className":2352},[],[2354],{"type":44,"value":1815},{"type":44,"value":2356}," command reference.",{"type":38,"tag":176,"props":2358,"children":2360},{"id":2359},"checklist",[2361],{"type":44,"value":2362},"Checklist",{"type":38,"tag":137,"props":2364,"children":2367},{"className":2365},[2366],"contains-task-list",[2368,2380,2389,2398,2407,2430,2439,2456,2465],{"type":38,"tag":141,"props":2369,"children":2372},{"className":2370},[2371],"task-list-item",[2373,2378],{"type":38,"tag":2374,"props":2375,"children":2377},"input",{"disabled":1125,"type":2376},"checkbox",[],{"type":44,"value":2379}," Classified as bug or feature request (not both in one issue).",{"type":38,"tag":141,"props":2381,"children":2383},{"className":2382},[2371],[2384,2387],{"type":38,"tag":2374,"props":2385,"children":2386},{"disabled":1125,"type":2376},[],{"type":44,"value":2388}," Environment block present: PN version, Node, package manager, OS.",{"type":38,"tag":141,"props":2390,"children":2392},{"className":2391},[2371],[2393,2396],{"type":38,"tag":2374,"props":2394,"children":2395},{"disabled":1125,"type":2376},[],{"type":44,"value":2397}," Reproduction is minimal, public-safe, secret-free.",{"type":38,"tag":141,"props":2399,"children":2401},{"className":2400},[2371],[2402,2405],{"type":38,"tag":2374,"props":2403,"children":2404},{"disabled":1125,"type":2376},[],{"type":44,"value":2406}," Schema fragments use original names where safe; renamed to neutral placeholders only where original names would leak confidential domain detail.",{"type":38,"tag":141,"props":2408,"children":2410},{"className":2409},[2371],[2411,2414,2416,2422,2423,2429],{"type":38,"tag":2374,"props":2412,"children":2413},{"disabled":1125,"type":2376},[],{"type":44,"value":2415}," Title in conventional-commit form (",{"type":38,"tag":191,"props":2417,"children":2419},{"className":2418},[],[2420],{"type":44,"value":2421},"bug(area): …",{"type":44,"value":783},{"type":38,"tag":191,"props":2424,"children":2426},{"className":2425},[],[2427],{"type":44,"value":2428},"feat(area): …",{"type":44,"value":874},{"type":38,"tag":141,"props":2431,"children":2433},{"className":2432},[2371],[2434,2437],{"type":38,"tag":2374,"props":2435,"children":2436},{"disabled":1125,"type":2376},[],{"type":44,"value":2438}," Body shown to the user for confirmation before submission.",{"type":38,"tag":141,"props":2440,"children":2442},{"className":2441},[2371],[2443,2446,2448,2454],{"type":38,"tag":2374,"props":2444,"children":2445},{"disabled":1125,"type":2376},[],{"type":44,"value":2447}," Submitted via ",{"type":38,"tag":191,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":44,"value":2453},"gh issue create",{"type":44,"value":2455}," (preferred) or via the prefilled new-issue URL.",{"type":38,"tag":141,"props":2457,"children":2459},{"className":2458},[2371],[2460,2463],{"type":38,"tag":2374,"props":2461,"children":2462},{"disabled":1125,"type":2376},[],{"type":44,"value":2464}," Issue URL captured for future reference.",{"type":38,"tag":141,"props":2466,"children":2468},{"className":2467},[2371],[2469,2472,2474,2479],{"type":38,"tag":2374,"props":2470,"children":2471},{"disabled":1125,"type":2376},[],{"type":44,"value":2473}," Suggested ",{"type":38,"tag":191,"props":2475,"children":2477},{"className":2476},[],[2478],{"type":44,"value":304},{"type":44,"value":2480}," if the bug may already be fixed in a newer release.",{"type":38,"tag":2482,"props":2483,"children":2484},"style",{},[2485],{"type":44,"value":2486},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2488,"total":1321},[2489,2506,2521,2533,2546,2552,2569,2580,2595,2608,2619,2635],{"slug":2490,"name":2490,"fn":2491,"description":2492,"org":2493,"tags":2494,"stars":20,"repoUrl":21,"updatedAt":2505},"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},[2495,2498,2501,2502],{"name":2496,"slug":2497,"type":15},"Database","database",{"name":2499,"slug":2500,"type":15},"Next.js","next-js",{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15},"TypeScript","typescript","2026-07-17T05:32:04.322957",{"slug":2507,"name":2507,"fn":2508,"description":2509,"org":2510,"tags":2511,"stars":20,"repoUrl":21,"updatedAt":2520},"prisma-next-build","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},[2512,2515,2516,2517],{"name":2513,"slug":2514,"type":15},"Deployment","deployment",{"name":2499,"slug":2500,"type":15},{"name":9,"slug":8,"type":15},{"name":2518,"slug":2519,"type":15},"Vite","vite","2026-07-02T07:31:36.108254",{"slug":324,"name":324,"fn":2522,"description":2523,"org":2524,"tags":2525,"stars":20,"repoUrl":21,"updatedAt":2532},"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},[2526,2529,2530,2531],{"name":2527,"slug":2528,"type":15},"Data Modeling","data-modeling",{"name":2496,"slug":2497,"type":15},{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15},"2026-07-30T05:30:10.426962",{"slug":2534,"name":2534,"fn":2535,"description":2536,"org":2537,"tags":2538,"stars":20,"repoUrl":21,"updatedAt":2545},"prisma-next-debug","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},[2539,2540,2543,2544],{"name":2496,"slug":2497,"type":15},{"name":2541,"slug":2542,"type":15},"Debugging","debugging",{"name":2499,"slug":2500,"type":15},{"name":9,"slug":8,"type":15},"2026-07-24T05:37:10.436314",{"slug":4,"name":4,"fn":5,"description":6,"org":2547,"tags":2548,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2549,2550,2551],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":2553,"name":2553,"fn":2554,"description":2555,"org":2556,"tags":2557,"stars":20,"repoUrl":21,"updatedAt":2568},"prisma-next-migration-review","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},[2558,2561,2564,2565,2567],{"name":2559,"slug":2560,"type":15},"CI\u002FCD","ci-cd",{"name":2562,"slug":2563,"type":15},"Code Review","code-review",{"name":2496,"slug":2497,"type":15},{"name":2566,"slug":1701,"type":15},"Migration",{"name":9,"slug":8,"type":15},"2026-07-24T05:37:11.422323",{"slug":2570,"name":2570,"fn":2571,"description":2572,"org":2573,"tags":2574,"stars":20,"repoUrl":21,"updatedAt":2579},"prisma-next-migrations","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},[2575,2576,2577,2578],{"name":2496,"slug":2497,"type":15},{"name":2566,"slug":1701,"type":15},{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15},"2026-07-24T05:37:13.469138",{"slug":338,"name":338,"fn":2581,"description":2582,"org":2583,"tags":2584,"stars":20,"repoUrl":21,"updatedAt":2594},"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},[2585,2586,2587,2590,2591],{"name":2496,"slug":2497,"type":15},{"name":2499,"slug":2500,"type":15},{"name":2588,"slug":2589,"type":15},"PostgreSQL","postgresql",{"name":9,"slug":8,"type":15},{"name":2592,"slug":2593,"type":15},"SQL","sql","2026-07-17T05:32:03.35373",{"slug":2596,"name":2596,"fn":2597,"description":2598,"org":2599,"tags":2600,"stars":20,"repoUrl":21,"updatedAt":2607},"prisma-next-quickstart","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},[2601,2602,2605,2606],{"name":2496,"slug":2497,"type":15},{"name":2603,"slug":2604,"type":15},"ORM","orm",{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15},"2026-07-24T05:37:12.462072",{"slug":2609,"name":2609,"fn":2610,"description":2611,"org":2612,"tags":2613,"stars":20,"repoUrl":21,"updatedAt":2618},"prisma-next-runtime","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},[2614,2615,2616,2617],{"name":2496,"slug":2497,"type":15},{"name":2499,"slug":2500,"type":15},{"name":2588,"slug":2589,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:32:05.347316",{"slug":2620,"name":2620,"fn":2621,"description":2622,"org":2623,"tags":2624,"stars":20,"repoUrl":21,"updatedAt":2634},"prisma-next-supabase","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},[2625,2628,2629,2630,2631],{"name":2626,"slug":2627,"type":15},"Auth","auth",{"name":2603,"slug":2604,"type":15},{"name":2588,"slug":2589,"type":15},{"name":9,"slug":8,"type":15},{"name":2632,"slug":2633,"type":15},"Supabase","supabase","2026-07-30T05:30:11.065251",{"slug":2636,"name":2636,"fn":2637,"description":2638,"org":2639,"tags":2640,"stars":2647,"repoUrl":2648,"updatedAt":2649},"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},[2641,2643,2644,2645,2646],{"name":2642,"slug":1687,"type":15},"CLI",{"name":2496,"slug":2497,"type":15},{"name":2566,"slug":1701,"type":15},{"name":2603,"slug":2604,"type":15},{"name":9,"slug":8,"type":15},44,"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fskills","2026-04-06T18:48:29.140467",{"items":2651,"total":1208},[2652,2659,2666,2673,2680,2686,2694],{"slug":2490,"name":2490,"fn":2491,"description":2492,"org":2653,"tags":2654,"stars":20,"repoUrl":21,"updatedAt":2505},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2655,2656,2657,2658],{"name":2496,"slug":2497,"type":15},{"name":2499,"slug":2500,"type":15},{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15},{"slug":2507,"name":2507,"fn":2508,"description":2509,"org":2660,"tags":2661,"stars":20,"repoUrl":21,"updatedAt":2520},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2662,2663,2664,2665],{"name":2513,"slug":2514,"type":15},{"name":2499,"slug":2500,"type":15},{"name":9,"slug":8,"type":15},{"name":2518,"slug":2519,"type":15},{"slug":324,"name":324,"fn":2522,"description":2523,"org":2667,"tags":2668,"stars":20,"repoUrl":21,"updatedAt":2532},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2669,2670,2671,2672],{"name":2527,"slug":2528,"type":15},{"name":2496,"slug":2497,"type":15},{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15},{"slug":2534,"name":2534,"fn":2535,"description":2536,"org":2674,"tags":2675,"stars":20,"repoUrl":21,"updatedAt":2545},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2676,2677,2678,2679],{"name":2496,"slug":2497,"type":15},{"name":2541,"slug":2542,"type":15},{"name":2499,"slug":2500,"type":15},{"name":9,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":2681,"tags":2682,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2683,2684,2685],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":2553,"name":2553,"fn":2554,"description":2555,"org":2687,"tags":2688,"stars":20,"repoUrl":21,"updatedAt":2568},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2689,2690,2691,2692,2693],{"name":2559,"slug":2560,"type":15},{"name":2562,"slug":2563,"type":15},{"name":2496,"slug":2497,"type":15},{"name":2566,"slug":1701,"type":15},{"name":9,"slug":8,"type":15},{"slug":2570,"name":2570,"fn":2571,"description":2572,"org":2695,"tags":2696,"stars":20,"repoUrl":21,"updatedAt":2579},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2697,2698,2699,2700],{"name":2496,"slug":2497,"type":15},{"name":2566,"slug":1701,"type":15},{"name":9,"slug":8,"type":15},{"name":2503,"slug":2504,"type":15}]