Better Drizzle
almeidazs/better-drizzle
Write, review, and debug code that uses better-drizzle, the typed repository layer over Drizzle ORM 1.x (better(db), client.users.findMany, paginate, cursor, upsertMany, relation include/connect…
Captures friction a consumer of Prisma 8, Prisma Compute or Prisma Postgres would hit, logging it and filing a ticket instead of letting the lesson evaporate.
$ npx skills add prisma/orm --skill record-gotchas -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install prisma/orm record-gotchas --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/prisma/orm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills-contrib/record-gotcha .claude/skills/record-gotchas && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "record-gotchas" agent skill from https://github.com/prisma/orm/tree/main/skills-contrib/record-gotcha into .claude/skills/record-gotchas/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-gotchas", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/prisma/orm/tree/main/skills-contrib/record-gotchaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add prisma/orm --skill record-gotchas -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install prisma/orm record-gotchas --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prisma/orm.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills-contrib/record-gotcha .agents/skills/record-gotchas && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "record-gotchas" agent skill from https://github.com/prisma/orm/tree/main/skills-contrib/record-gotcha into .agents/skills/record-gotchas/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-gotchas", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add prisma/orm --skill record-gotchas -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install prisma/orm record-gotchas --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prisma/orm.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills-contrib/record-gotcha .cursor/skills/record-gotchas && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "record-gotchas" agent skill from https://github.com/prisma/orm/tree/main/skills-contrib/record-gotcha into .cursor/skills/record-gotchas/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-gotchas", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/prisma/orm.git --path skills-contrib/record-gotcha--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add prisma/orm --skill record-gotchas -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install prisma/orm record-gotchas --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prisma/orm.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills-contrib/record-gotcha .gemini/skills/record-gotchas && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "record-gotchas" agent skill from https://github.com/prisma/orm/tree/main/skills-contrib/record-gotcha into .gemini/skills/record-gotchas/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-gotchas", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install prisma/orm record-gotchasInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add prisma/orm --skill record-gotchas -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/prisma/orm.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills-contrib/record-gotcha .github/skills/record-gotchas && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "record-gotchas" agent skill from https://github.com/prisma/orm/tree/main/skills-contrib/record-gotcha into .github/skills/record-gotchas/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-gotchas", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add prisma/orm --skill record-gotchas -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install prisma/orm record-gotchas --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prisma/orm.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills-contrib/record-gotcha .opencode/skills/record-gotchas && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "record-gotchas" agent skill from https://github.com/prisma/orm/tree/main/skills-contrib/record-gotcha into .opencode/skills/record-gotchas/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-gotchas", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
record-gotchasCaptures friction a consumer of Prisma 8, Prisma Compute or Prisma Postgres would hit, logging it and filing a ticket instead of letting the lesson evaporate.
A gotcha is defined narrowly: a surprising failure mode, undocumented behavior, workaround or mental-model mismatch that an outside user of these three products would feel, whether while authoring an extension, running an example app, reproducing a customer report, or exercising the public CLI or runtime in an integration test. A bug in code your own team maintains and can fix is explicitly excluded; that belongs in the normal product backlog instead.
When the trigger fires, a short entry goes into the matching gotchas log and a Triage-state ticket gets filed in the matching gotchas Linear project, with the two cross-linked. The escalation mode depends on the repository: inside a product-team repo it surfaces the gotcha and offers three paths, capture it, file a normal bug, or note it and move on, while outside product-team repos it captures and files the ticket silently with no back-and-forth. Running this workflow is treated as not optional once a qualifying gotcha is hit.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 095af7a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
linear.appAlso links to:
cursor.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Record a Product Gotcha loads about 5.7k tokens when it runs. Until then it costs about 255 tokens; SKILL.md has 2,800 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from prisma/orm at commit 095af7a, republished under its Apache-2.0 licence (© prisma). 2,800 words, ~5,705 tokens.
.claude/skills/record-gotchas/SKILL.md (or your agent's skills folder).A gotcha is friction that a consumer of Prisma 8, Prisma Compute, or Prisma Postgres would feel — something an external user of those products would also experience: a surprising failure mode, an undocumented behaviour, a workaround you wrote, a mental model mismatch with the CLI / runtime / docs. The signal is the consumer's perspective, not the project context — you can hit a gotcha while writing an extension, working in an example app, reproducing a customer report, running an integration test against the public surface, or building anything that consumes the product from the outside.
A gotcha is not a bug in code your team maintains. If you own the surface and you can fix it, that's a normal product bug, filed in the regular product backlog — not a gotcha.
This skill is the canonical workflow for capturing gotchas. When the trigger fires:
gotchas.md or a per-product file).*-gotchas Linear project.When in doubt about whether something is gotcha-worthy, capture it. The cost of a near-duplicate entry is trivial; the cost of losing the learning is permanent.
This skill is not optional for qualifying gotchas. If you wrote a workaround, consulted source code, or hit a behaviour that didn't match the docs while consuming the product, run this skill before the conversation ends.
The trigger depends on the role the operator is wearing in the moment, not on the repo they're sitting in.
| You're doing… | Role | Trigger fires? |
|---|---|---|
| Writing a new extension that uses PN's authoring API | Consuming | Yes |
Working in an example app under examples/ and hitting a CLI / runtime rough edge | Consuming | Yes |
| Reproducing a customer's bug report against the public surface | Consuming | Yes |
| Running an integration test that exercises the public CLI / runtime | Consuming | Yes |
| Building an internal demo with PN / Compute / PPg | Consuming | Yes |
| Fixing a bug in PN core | Maintaining | No — file a normal bug |
| Adding a feature to PN's runtime | Maintaining | No |
| Refactoring an internal package | Maintaining | No |
Worked example. You change schema.prisma, run prisma migration plan, and the CLI reports "No changes detected" — because the contract was stale and you hadn't run contract emit. The CLI's mental model didn't match yours; a real user would hit this. That's a gotcha, even though you're sitting in prisma-8-ws and could fix it: you were consuming the migration workflow, not maintaining it.
Ambiguous cases default to capture. If you can't tell which role you were in, capture the gotcha. The team filters at triage.
This skill requires the Linear MCP plugin to be installed and authenticated. Without it, ticket filing is impossible and the workflow is incomplete.
If the Linear MCP plugin is not available or not authenticated, halt and tell the operator something like:
I just hit a gotcha I'd like to record, but the Linear MCP plugin isn't available. Please install and authenticate the Linear MCP plugin (
plugin:linear:linearin Claude Code; the Linear plugin for Cursor), then re-run the request. The skill needs to file a Triage-state ticket in the matching Prisma gotchas project.
Do not proceed. Do not write the file entry without the ticket. The two halves are intentionally coupled — the file is the local record; the ticket is the team's signal. Both must exist for the pipeline to work.
Each product has a single Linear project for all tickets — both gotchas and normal bugs. Gotchas and normal bugs are distinguished by status / labels, not by which project they're filed in.
| Product | Linear project |
|---|---|
Prisma 8 ORM (@internal/*, schema, generated client, migration tooling) | pn-gotchas |
Prisma Compute (@prisma/compute-cli, deploy, runtime, env management) | compute-gotchas |
Prisma Postgres (PPg, @prisma/dev, dialect behaviour) | ppg-gotchas |
Filing convention.
Triage, no priority, no labels — the project itself is the dogfood filter.The project names retain the -gotchas suffix for historical reasons; treat them as the canonical Linear project for each product regardless.
If a gotcha straddles two products, pick the surface where you were when it bit, file there once, and mention the second product in the body.
If you find yourself wanting to file a gotcha for a fourth product (Eclipse, Slack, Bun, Next.js, etc.), stop. This skill is scoped to the three Prisma products. Other tools' bugs go in those tools' own issue trackers. Exception: if a third-party bug only surfaces because of how a Prisma product is structured, record it on the Prisma side and link the third-party tracker.
Where to record locally, in priority order:
docs/prisma-8-gotchas.md, docs/compute-gotchas.md, or docs/ppg-gotchas.md exist — append to the matching one.gotchas.md at the repo root. Create it (using the bootstrap template below) if missing.How the agent behaves when the trigger fires depends on which repo it's in:
prisma-8-ws, the Compute workspace, the PPg workspace) → surface the gotcha and offer three paths. The operator is likely on the affected product's team and is in a position to decide whether this is gotcha-worthy, a regular bug, or already known. Don't capture silently — ask.If you can't tell which kind of repo you're in, treat it as "other" — silent capture is the safer default for a dogfood pipeline.
Surface the gotcha to the operator in one short message — symptom, hypothesis on cause, the workaround you used or are about to use — then offer:
Triage status, no priority, no labels). The default when the operator wants the team to see this through a dogfood lens.The operator picks. Default to capture-as-gotcha if the operator doesn't choose.
Skip this skill for:
--service instead of positional"). File feature requests in Linear directly, not as gotchas.pg, Slack, etc.) — those go in the relevant tool's tracker. Exception: if the third-party bug only surfaces because of how a Prisma product is structured, record it on the Prisma side and link the third-party tracker.Numbered, in order. Don't skip steps; the value comes from doing all of them.
If the Linear MCP plugin isn't installed or isn't authenticated, halt per § Hard prerequisite.
Use the table in § The three products. If the gotcha straddles two, pick the surface you were on when it bit and mention the second in the body.
Determine whether you're in a product-team repo (see § Escalation mode). If yes, surface the gotcha to the operator and offer the three paths; resume the workflow only if they pick "capture as gotcha." If they pick "file a normal bug," skip to § Filing a normal bug below; if they pick "note-and-move-on," exit the skill.
If you're not in a product-team repo, proceed with silent capture.
Before filing, search the matching *-gotchas project for an open ticket with similar symptoms. Use the symptom keyword(s) — error message text, API name, CLI flag, package version, etc.
Per § The three products. Use the existing per-product file if present; otherwise create gotchas.md at repo root with the bootstrap template below.
Use the file-entry template below verbatim. Keep entries 10–25 lines. If you need more, you're either explaining a generic concept (write a runbook instead) or describing two gotchas (split them).
In the matching *-gotchas project:
Triage. Do not set priority — let the team triage.Capture the Linear ticket id (e.g. TML-1234) and URL — you'll need both for the file entry's **Filed upstream:** line.
## Contents list at the top, with a working anchor link.**Filed upstream:** line with the real Linear ticket id and URL from step 7.One commit per gotcha (or per closely-related group). Conventional shape:
docs(gotcha): record <one-line title>
<2–4 line summary: what was surprising, workaround in one sentence,
ticket id.>
Filed as <TML-XXXX> in <gotchas project name>.The commit lands alongside the workaround in the same PR. Don't gate the operator's primary work on this — record inline as you finish the workaround.
If you cited a working tree path in the Linear ticket because you hadn't committed yet, update the ticket description after the commit lands (replace with a permalink to the committed line range).
When the operator picks "file a normal bug" instead of capturing as a gotcha:
Source: line (there's no local gotcha file).Triage / no-labels gotcha convention. Ask the operator if you don't know the team's defaults.If the operator wants to file the ticket themselves rather than have the agent do it, draft the body and hand off — they paste.
Used in gotchas.md (or the matching per-product file).
## <One-line title — start with the symptom or the constraint, not the solution>
**Filed upstream:** [TML-XXXX](https://linear.app/prisma-company/issue/TML-XXXX) — *"<ticket title>"*
**Product:** Prisma 8 | Prisma Compute | Prisma Postgres
**Version:** <package version, CLI version, or commit SHA>
**First hit:** <one-line context, e.g. "authoring a new extension pack", or "examples/prisma-8-demo migration plan">
**Cost:** <only if material — "20 minutes of brownout", "3 hours debugging", etc. Skip if <30 min.>
**Symptom.** <quoted error / log line / observed behaviour, verbatim where possible>
**Cause.** <what's actually happening underneath; cite source files, package versions, CLI versions where you have them>
**Workaround.** <concrete commands, code snippets, config changes; if the workaround has a revert criterion (e.g. "remove when TML-XXXX ships in vX.Y"), name it>
**Reproduction.**
1. <minimal steps>
2. ...
**References.**
- Upstream: [TML-XXXX](https://linear.app/prisma-company/issue/TML-XXXX)
- Workaround source: [`path/to/file.ts`](path/to/file.ts) (link to where the fix actually lives)
- Related: <ADR / commit / docs link if any>Naming the heading. Lead with the symptom (OG image URLs fall back to localhost:8080) or the constraint (pg/timestamptz codec types output as string | Date), not the solution (Set metadataBase). Future-you searches by what they saw, not what they did about it.
Triage. No priority, no labels — the project itself is the dogfood filter.**Source:** <link to the gotchas.md commit (or working-tree path if uncommitted), including file path and line range>
**Product:** Prisma 8 | Prisma Compute | Prisma Postgres
**Version:** <as in the file entry>
## Symptom
<as in the file entry>
## Cause
<as in the file entry>
## Workaround
<as in the file entry>
## Reproduction
1. <minimal steps>
2. ...
## Notes
<anything that didn't fit the file entry — environment specifics, near-misses, workarounds you tried that failed, etc.>After the gotcha-recording commit lands, update the ticket's **Source:** line to point at the permalink for the committed line range (Linear MCP supports issue editing).
gotchas.md (bootstrap, for fresh repos)Use this when creating gotchas.md for the first time in a repo that has no per-product files:
# Gotchas
A running log of surprises, workarounds, and undocumented behaviour hit while *consuming* **Prisma 8**, **Prisma Compute**, or **Prisma Postgres** in this project. Each entry captures friction a real user of these products would also experience.
Each entry is also filed as a Triage-state Linear ticket in the matching gotchas project so the team can pick them up:
- Prisma 8 → [`pn-gotchas`](https://linear.app/prisma-company/project/pn-gotchas-a6f6f5157a5c/overview)
- Prisma Compute → [`compute-gotchas`](https://linear.app/prisma-company/project/compute-gotchas-dd3ac34b5ad4/overview)
- Prisma Postgres → [`ppg-gotchas`](https://linear.app/prisma-company/project/ppg-gotchas-afe77336f696/overview)
The capture workflow is documented in [`.agents/skills/record-gotchas/SKILL.md`](.agents/skills/record-gotchas/SKILL.md).
---
## Contents
<!-- entries get appended below; add a link here in the same commit -->
---
<!-- new entries appended below this line -->
migration planreports "No changes detected" when contract is staleFiled upstream: TML-XXXX Product: Prisma 8 Version:
@internal/cli@<version>First hit:examples/prisma-8-demo, changing the schema while iterating on a demo Cost: ~15 minutesSymptom. Edited
schema.prisma, ranpnpm prisma migration plan, got✔ No changes detectedwithfromandtohashes equal. No warning, no indication that the contract was out of date.Cause.
migration plancompares the emitted contract hash (src/prisma/contract.json) against the last applied migration's hash. Editingschema.prismadoesn't update the contract —contract emitdoes. The CLI doesn't detect the staleness or warn about it.Workaround. Run
pnpm prisma contract emitbeforemigration planwhenever the schema has changed. Or wireemitinto your dev script.Reproduction. Edit
schema.prismainexamples/prisma-8-demo, runpnpm prisma migration planwithout re-emitting. Observe the spurious "No changes detected".
Why it's good: symptom-led title, version captured, cost surfaced, cause cites the underlying mechanism, workaround is concrete, repro steps are minimal.
Migrations don't work
Symptom. I ran a migration and it failed.
Workaround. I figured it out after a while.
Why it's bad: title doesn't tell future-you what to search for; no version, no cause, no concrete workaround, no upstream link. The team can't act on this and the next operator won't recognise it as relevant when they hit the same issue.
When a Prisma release fixes a gotcha, do not delete the entry. Append a **Resolved** line at the bottom of the entry, citing the release that closed it. The history of what we knew when matters; deleting it loses signal about how long the issue lived.
**Resolved in `@internal/orm@0.5.1`** — see [release notes](...). Workaround removed in [commit abc123](...).If the entry was wrong (rather than fixed), mark it **Superseded — see <new-entry-link>** and add a corrected entry below. Don't edit the original body.
Triage / no-labels). The gotcha filing convention exists to surface the consumer perspective; tagging maintenance-side bugs as gotchas dilutes the signal.prisma-8-ws (and the Compute / PPg equivalents), surface the gotcha and let the operator pick the path. They may be about to file it as a normal bug or fix it directly.**Superseded** and add a new entry; don't rewrite the original.Version to know which release to test against when triaging. Without it, the ticket sits.If your repo has operational skills that prescribe how to use one of the three products (e.g. compute-deploy-nextjs, prisma-8-nextjs-app, or anything similar), and your gotcha changes how someone should do the underlying task, also fold the prescriptive lesson into the matching skill — the gotcha is the forensic record (what bit us); the skill is the prescriptive record (how to avoid it).
In product-team repos like prisma-8-ws, prescriptive skills for the team's own product often live elsewhere (developer docs, contributing guides, IDE rules). The principle is the same: where there's a durable prescriptive home for the lesson, cross-link from it back to the gotcha entry.
© prisma, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills-contrib/record-gotcha of prisma/orm.
Open the folder on GitHubat commit 095af7a
Record a Product Gotcha next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Record a Product Gotcha this skillprisma/orm | 48k | — | ~5.7k | Automated safety check: Pass | Apache-2.0 | |
| Better Drizzlealmeidazs/better-drizzle | 347 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Prisma Database Setupcurvenote/curvenote | 169 | 3 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Add Backendahpxex/open-dashboard | 146 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Database FundamentalsDanielPodolsky/ownyourcode | 290 | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Database Expertcin12211/orca-q | 223 | — | ~2.8k | Automated safety check: Pass | MIT |
almeidazs/better-drizzle
Write, review, and debug code that uses better-drizzle, the typed repository layer over Drizzle ORM 1.x (better(db), client.users.findMany, paginate, cursor, upsertMany, relation include/connect…
curvenote/curvenote
Guides for configuring Prisma with different database providers (PostgreSQL, MySQL, SQLite, MongoDB, etc.).
ahpxex/open-dashboard
Everything about the data layer — pick one of six ready-to-run backend templates (TanStack Start + Drizzle + better-auth, Hono + Drizzle + better-auth, Hono + Prisma + better-auth, Hono + Drizzle +…
DanielPodolsky/ownyourcode
Reviews schema design, SQL queries, ORM patterns. An agent skill from DanielPodolsky/ownyourcode.
cin12211/orca-q
Database performance optimization, schema design, query analysis, and connection management across PostgreSQL, MySQL, MongoDB, and SQLite with ORM integration.
curvenote/curvenote
Prisma Postgres setup and operations guidance across Console, create-db CLI, Management API, and Management API SDK.
prisma/orm
Runs a loop on a GitHub pull request: fetch review state, triage comments into actions, implement them and resolve threads, repeating until nothing actionable is left.
prisma/orm
Fetches a pull request's canonical review state as JSON, validates it, and renders markdown, a text summary and triage target files from it using bundled scripts.
prisma/orm
Implements triaged pull request review actions, commits focused fixes, posts status replies on GitHub and resolves the threads.
prisma/orm
Runs the triage step of the review-framework loop: reads fetched PR review state, builds `review-actions.json`, validates it and renders `review-actions.md`.
prisma/orm
Replaces a plain TypeScript union plus switch statements with frozen subclasses and a visitor interface when several places dispatch on the same variants.
prisma/orm
Guides an outside contributor through opening a prisma/orm pull request from a fork that follows CONTRIBUTING.md and passes review on the first round.
Works with
Categories
Captures friction a consumer of Prisma 8, Prisma Compute or Prisma Postgres would hit, logging it and filing a ticket instead of letting the lesson evaporate. A gotcha is defined narrowly: a surprising failure mode, undocumented behavior, workaround or mental-model mismatch that an outside user of these three products would feel, whether while authoring an extension, running an example app, reproducing a customer report, or exercising the public CLI or runtime in an integration test. A bug in code your own team maintains and can fix is explicitly excluded; that belongs in the normal product backlog instead.
Record a Product Gotcha fits situations like: hitting a workaround while building an extension against Prisma 8's public API; finding undocumented behavior while reproducing a customer bug report; noticing a surprising failure mode in an example app using Prisma Postgres.
Run `npx skills add prisma/orm --skill record-gotchas -a claude-code`. Or copy the skill folder (skills-contrib/record-gotcha in prisma/orm) into .claude/skills/record-gotchas in your project. Claude Code loads it when a task matches its description.
Run `npx skills add prisma/orm --skill record-gotchas -a codex`. Or copy the skill folder (skills-contrib/record-gotcha in prisma/orm) into .agents/skills/record-gotchas in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add prisma/orm --skill record-gotchas -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/record-gotchas, .gemini/skills/record-gotchas, .github/skills/record-gotchas and .opencode/skills/record-gotchas in your project.
Going by SKILL.md and its folder, Record a Product Gotcha needs the command-line tools its instructions call (pnpm). Our summary lists: A Linear project matching the product's gotchas log.
SKILL.md names 2 domains. In commands or code: linear.app; the agent is likely to contact it when it follows the instructions. As links in the text: cursor.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Record a Product Gotcha is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Record a Product Gotcha: Better Drizzle (almeidazs/better-drizzle, 347 stars), Prisma Database Setup (curvenote/curvenote, 169 stars), Add Backend (ahpxex/open-dashboard, 146 stars) and Database Fundamentals (DanielPodolsky/ownyourcode, 290 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
prisma (a GitHub organization, an official publisher) maintains it in prisma/orm, which has 47,701 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 6, 2026.
Source: prisma/orm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.