Prisma ORM is a Node.js and TypeScript database toolkit that lets applications work with databases through a programming interface instead of writing every query directly in SQL. Developers use it with databases including PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB, and CockroachDB. The catalogue add-ons provide agent rules, skills, hooks, agents, and other workflows for using Prisma.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/prisma/orm/review-implement-phasenpx skills add prisma/orm --skill review-implement-phasegit clone --depth 1 https://github.com/prisma/ormWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/prisma/orm/review-implement-phase)<a href="https://agentmods.dev/skills/prisma/orm/review-implement-phase"><img src="https://agentmods.dev/badge/skills/prisma/orm/review-implement-phase.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00038 | $0.01644 |
| Opus 5 | $0.00019 | $0.00822 |
| Sonnet 5 | $0.00008 | $0.00329 |
| Haiku 4.5 | $0.00004 | $0.00164 |
Grade A, and why
review-implement-phase scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Review Implement Phase
Run only the implementation phase of the review-framework loop:
take triaged will_address actions, make code changes, commit in logical steps, post GitHub status updates, and update action status.
Run commands from this skill directory. All script paths below are relative to it.
Inputs
- Required:
- PR URL
- existing
review-actions.jsonin output dir
- Optional:
- output directory
- scope constraints (specific action IDs or files)
If output directory is omitted, derive:
wip/reviews/<owner>_<repo>_pr-<number>/
Preconditions
<output-dir>/review-actions.json must exist and be valid v2.
System dependencies required on PATH:
node(Node.js)gh(GitHub CLI)
If either is missing, halt immediately and ask the user to install it. The implement-phase scripts require only node and gh.
GitHub admin capability must be available before starting implementation:
node ./scripts/check-github-admin-ready.mjs --pr <PR_URL>
If missing, instruct user to run:
/review-fetch-phase <PR_URL> [output-dir]/review-triage-phase <PR_URL> [output-dir]
Behavior
- Read actions JSON and select actionable rows:
decision: will_addressstatus: pending | in_progress
- Preflight GitHub admin capability:
- run
check-github-admin-ready.mjsand fail fast if unavailable
- run
- Always post standalone comments (never pending PR reviews):
- When posting progress updates, do not create a PR review (draft/pending or otherwise).
- Forbidden flows:
gh pr review --comment ...- GraphQL
addPullRequestReview,addPullRequestReviewComment,addPullRequestReviewThread(this workflow never uses pending reviews)
- Allowed flows:
- thread replies via
addPullRequestReviewThreadReply(or wrapper script) - issue comments via
addComment(or wrapper script)
- thread replies via
- Before starting implementation:
- Detect pending reviews authored by the acting user on this PR:
gh api graphql -f query='query($owner:String!,$repo:String!,$pr:Int!,$before:String){viewer{login} repository(owner:$owner,name:$repo){pullRequest(number:$pr){reviews(last:100,states:PENDING,before:$before){pageInfo{hasPreviousPage startCursor} nodes{id author{login}}}}}}' -F owner=<owner> -F repo=<repo> -F pr=<number> --jq '.data as $d | $d.repository.pullRequest.reviews | {mine: [.nodes[] | select(.author.login == $d.viewer.login)], pageInfo}' - The
author.loginfilter matters: another user's pending review is not yours to submit or dismiss, and must not block this workflow.--jqisgh's built-in filter and needs nojqbinary. - The filter keeps
pageInfobeside the matches, because an emptyminealone cannot tell "no pending review" from "the match is on an earlier page". Read both: whilemineis empty andpageInfo.hasPreviousPageis true, re-run the query with-f before=<pageInfo.startCursor>. Conclude there is no pending review only whenmineis empty andhasPreviousPageis false. - GitHub allows one pending review per user per PR, so
mineholds at most one node across all pages. - If one exists, halt and clean it up (submit or dismiss) before continuing.
- Detect pending reviews authored by the acting user on this PR:
- After posting any "On it" / "Done" comment:
- Re-check for a pending review authored by the acting user, with the same filtered query and the same paging rule: keep reading
pageInfountilmineis non-empty orhasPreviousPageis false. - If one exists, the workflow is blocked until it is cleaned up.
- Re-check for a pending review authored by the acting user, with the same filtered query and the same paging rule: keep reading
- Implementation requirement:
- For
review_threadtargets, always reply using thread replies (never inline PR review comments).- If you only have the thread node id, first fetch the thread’s primary comment node id, then call
addPullRequestReviewThreadReply.
- If you only have the thread node id, first fetch the thread’s primary comment node id, then call
- For
pull_request_reviewtargets (review-body findings,PRR_…node ids), inline replies are not possible.post-review-thread-reply.mjsauto-detects this and posts a top-level PR issue comment instead (responsekind: "issue_comment"); there is no thread to resolve, so the implementer skipsresolve-review-thread.mjsfor these and records the issue-comment id in the action'sdonerecord.
- For
- Delegate implementation to:
./agents/review-implementer.md
- Require implementer responsibilities:
- make code changes
- run relevant checks
- create focused commits
- post "On it" when starting each action
- post "Done" when finished (universal); resolve the thread only when
target.kind === "review_thread"and athreadNodeIdis available.pull_request_reviewtargets have no inline thread, so the implementer skips the resolve step for them and records the issue-comment id in the action'sdonerecord (per behavior step 3). - use encoded helper scripts for thread admin operations:
node ./scripts/post-review-thread-reply.mjs --repo <owner>/<repo> --pr <number> --comment-node-id <primaryCommentNodeId> --body "<text>"(works for bothreview_threadandpull_request_review— auto-detects node kind)node ./scripts/resolve-review-thread.mjs --thread-node-id <threadNodeId>(only forreview_threadtargets)
- comments must be posted as individual standalone comments/replies, never as part of a pending review
- after each action completion (Done + resolve when applicable), verify no new pending review was created by the acting user
- never use inline parser snippets (for example:
python -c,node -e,ruby -e, ad-hoc awk/sed JSON parsing) - only set
status: doneafter Done (and, forreview_threadtargets, resolve) succeeds - update
review-actions.json(status,done.doneAt,done.summary,done.commits) in the same completion step
- Render latest action markdown:
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 119 lines · 38 tokens per session scan A 15de7b0878f7
review-implement-phase is a skill published in the GitHub repository prisma/orm (47,601 stars, last pushed 2d ago), licensed Apache-2.0. It adds 38 tokens to every session and 1,644 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
review-implement-phase
Implements triaged review actions, commits focused fixes, and posts Done plus resolves threads. Use when the user wants only the implementation phase of the review-framework workflow.
multiline-commit-messages
Use single-quoted strings for multiline git commit messages in the Shell tool. Prevents heredoc escaping failures that produce garbled commit messages.
commit
Commit message formatting and guidelines.
commit
Create a git commit with optional automatic Linear issue linking. Use when the user asks to commit.
stacking-prs
Create and manage GitHub native Stacked PRs in this repo with the gh stack CLI. Use when asked to stack PRs, split a large change into a stack, add a layer to a stack, restack or rebase a stack, adopt existing branches or PRs into a stack, check out someone else's stack, or land a stack. Covers creating and submitting…
session-wrapup
End-of-session checkpoint — append diary, update active sprint doc with interim results/retro, write tech-lead handoff, commit and push. Use before /compact or at end-of-day. Distinct from sprint-wrap-up which closes a sprint.