pr-review
Skill4 starsChanged 19 days agoMITView on GitHub
Review a PR, branch, commit, or uncommitted changes for correctness bugs, structural regressions, security and performance problems. Reports findings grouped by severity with file:line and a concrete fix. Use when asked to review a PR / branch / diff / "my changes" before merge.
195 other projects use a version of this.
Adopted by
Most recently taken up by
- static-web-server/static-web-servertheir own version, first seen Nov 9, 2026
- zerx-lab/FluxDowntheir own version, first seen Nov 9, 2026
- civitai/civitaitheir own version, first seen Nov 9, 2026
- harshitsinghbhandari/domain-expansiontheir own version, first seen Nov 8, 2026
- Azure/azure-sdk-toolstheir own version, first seen Nov 8, 2026
- databricks/clitheir own version, first seen Nov 8, 2026
Used with
Projects with it also use oss-pr, pr-automation and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
CES-LtdSkilloss-pr
Use when creating a pull request, after committing changes, or when user invokes /oss-pr. Covers branch management, quality checks, commit, push, and PR creation.
Also in 3 projects that use this
CES-LtdSkillpr-automation
PR Automation Orchestrator: poll open PRs, check CI, run review, fix, and merge eligible PRs. Use when: (1) Invoked by daemon via scripts/pr-automation.sh, (2) User says "/pr-automation".
Also in 3 projects that use this
jtenniswoodSkillexpert-reset
Reimagine this repository from first principles using the current product and user experience as the target. Use when the user says "/expert-reset", asks how the project should be rebuilt if starting again, wants bold architecture or component-structure recommendations, or wants a research-only reset plan unconstrained by current implementation details.
Also in 3 projects that use this
jtenniswoodSkillupdates
Summarize user-facing project updates from the last 7 days, ordered by importance and written as one-sentence "Feature: description" entries. Use when the user says "/updates", asks what changed recently, or wants a concise list of recent features, device support, fixes that users will notice, or other product value.
Also in 3 projects that use this
openchamberSkillclack-cli-patterns
Use when creating or modifying OpenChamber CLI commands, prompts, terminal output, non-TTY behavior, `--quiet`, or `--json` behavior.
Also in 3 projects that use this
openchamberSkilldrag-to-reorder
Use when implementing or modifying OpenChamber sortable or drag-to-reorder behavior, especially `@dnd-kit`, touch/mobile interactions, variable-width items, or wrapping layouts.
Also in 3 projects that use this
- +6 more from openchamber
Other versions195 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 195
- Significant-Gravitas/AutoGPT★ 188ksame name
- pytorch/pytorch★ 105ksame name
- rtk-ai/rtk★ 86ksame name
- saadeghi/daisyui★ 43ksame name
- rustfs/rustfs★ 36ksame name
- dotnet/maui★ 23ksame name
- NVIDIA/Megatron-LM★ 18ksame name
- MiniMax-AI/skills★ 14ksame name
- btriapitsyn/openchamber★ 13ksame name
- openchamber/openchamber★ 13ksame name
185 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ask-firstSkill
- claude-project-rulesSkill
- compact-markdownSkill
- humanizeSkill
- empty-commitSkill
- github-issue-creatorSkill
- git-mergeSkill
- git-worktreeSkill
- handoff-sessionSkill
- html-landing-pageSkill
- offload-taskSkill
- readme-craftSkill
- skill-auditSkill
- study-notesSkill
- visualize-itSkill
- zoom-outSkill
The file
Files
PR Review
Review a change for defects. Bugs first, structure second, style last.
1. Resolve the target
| Input | Commands |
| Nothing | git diff + git diff --cached (uncommitted) |
| PR number / URL | gh pr view <n> then gh pr diff <n> |
| Base branch named, you are on the branch under review | git diff <base>...HEAD |
| Branch to review named, you are elsewhere | git diff HEAD...<branch> |
| Commit SHA | git show <sha> |
since X / tag / HEAD~5 | git diff X...HEAD + git log X..HEAD --oneline |
| File path | review that file's current state |
Three-dot is merge-base: A...B shows B's side. Point it the wrong way and you silently review the opposite branch. Run git branch --show-current before choosing the row.
Validate before reviewing:
- Ref (branch, commit, tag, range) →
git rev-parse <ref>. - PR →
gh pr view <n>; a fork PR may have no local ref. - File path → exists and readable; review it whether or not it changed.
Bad target or empty diff → stop and say so. Ambiguous input → ask; never review a guessed target.
Counts for the §7 header: git diff --shortstat <range>, or gh pr view <n> --json title,body,additions,deletions,changedFiles — also returns the PR intent.
2. Gather context
A diff alone misleads — code wrong in isolation is often right in context, and vice versa.
- Full file for up to ~5 key changed files (entry points, trust boundaries, shared modules); hunk plus enclosing function for the rest. Over ~15 files → state which you read in full.
- Repo standards if present:
CLAUDE.md,.claude/rules/*.md,CONTRIBUTING.md,CODING_STANDARDS.md,AGENTS.md,CONVENTIONS.md. A documented standard overrides every default here and inreferences/. - Spec: issue ref in commits (
gh issue view <n>), ticket key in branch name, or a doc underdocs//specs/. None → skip the spec axis, say so in the report. Never invent requirements. - Input, auth, storage, network, rendering, or secrets touched → trace the trust boundary, not just the changed lines.
3. Review axes
Ordered by leverage; spend effort top-down.
Correctness
- Logic errors, off-by-one, inverted or missing conditionals, unreachable branches.
- Edge cases: null/empty, boundaries, overflow, concurrent access.
- Error paths: swallowed failures, wrong error type, silent fallback hiding an unclear invariant.
- Tests: exist, test behavior not implementation, would catch this regression.
Spec — only if found.
- Requirements missing, partial, or implemented wrong — quote the spec line.
- Behavior nobody asked for (scope creep).
Structure
- Near-duplicate bolted on instead of the existing pattern or canonical helper.
- New conditional grafted onto an unrelated flow → missing abstraction, not a nit.
- Feature-specific logic leaking into a shared module.
- Refactor that relocates complexity instead of removing it — same number of concepts to hold means not cleaner.
- Gratuitous
anyor cast over a type boundary.unknownplus narrowing is the fix, not the smell.
Security
- Changed code is reachable by hostile input unless verifiably not.
- Validation and authorization at the real boundary, not the UI or the caller.
Performance — only when obvious: N+1, unbounded loops or fetches, O(n²) on growing data, blocking I/O on a hot path, missing pagination. Quantify ("~50ms per item") or state the growth ("one query per line item; an order carries up to 50") — never "this could be slow".
4. References
One file per concern the diff warrants; a second only when a finding spans areas. Never read all.
| Diff touches | Read |
| Auth, user input, SQL, file paths, secrets, external data, serialization, rendering | references/security.md |
| Refactor-heavy PR, duplication, or a structural concern you are about to flag | references/smells.md |
| Components, templates, state, styling, client routing (React/Angular) | references/frontend.md |
| Services, handlers, jobs, CLIs, Node/server-side modules, outbound HTTP clients, loops over remote calls | references/backend.md |
| ORM calls, raw SQL, queries in loops, migrations, schema, transactions | references/database.md |
| HTTP handlers, routes, request/response shapes, API clients | references/api.md |
| Test files, or a change shipping without tests | references/testing.md |
package.json, lockfiles, Renovate/Dependabot bumps | references/deps.md |
| CI workflows, Dockerfiles, infra config | references/security.md (Secrets, Trust boundaries) |
5. Before flagging anything
- Be certain. Unsure → investigate. Still unsure → "I'm not sure about X", not a finding.
- Only what changed. Pre-existing code is out of scope unless the change makes it newly wrong. A user-named file is wholly in scope.
- No hypotheticals. Name the concrete input/state that triggers the failure, or drop it.
- Security needs an exploit path — attacker-controlled input, missing control, impact. Never "potential security concern".
- Skip what tooling enforces — formatting, lint, compiler errors.
- Style only against a documented convention. A
letis fine when the alternative is convoluted.
6. Severity
| Level | Meaning |
| Blocker | Correctness bug, security hole, data loss, or a violation of a documented non-negotiable. Must fix before merge. |
| Should fix | Real defect or structural regression that isn't fatal. Fix or justify. |
| Nit | Naming, minor duplication, style. Author may ignore. |
Order by leverage, not file order. One structural problem plus ten nits → the structural problem is the review.
Verdict: Approve when the change improves code health, even if imperfect. Request changes on any Blocker, or Should-fixes that materially degrade the codebase. Never block over "I'd have written it differently".
7. Output format
Exactly this shape. Skip any severity section with no findings.
## Review — <target> (<N> files, +<add>/−<del>)
**Verdict:** <Approve | Request changes> — <n> blocker, <n> should-fix, <n> nits
### Blockers
**1. <one-line claim>** · `path/file.ts:LINE`
<Why it breaks — the concrete input or state, and the consequence. 1-3 lines.>
→ <Concrete fix.>
### Should fix
**2. <one-line claim>** · `path/file.ts:LINE`
<Why. 1-2 lines.>
→ <Fix.>
### Nits
**3.** <claim> · `path/file.ts:LINE`- Number findings continuously across sections so they're citable.
- Blocker / Should fix: location + why + fix. Nit: one line, location + claim only.
- Closing lines, each only if applicable:
**Not flagged:** <thing> — <reason>.— considered and deliberately skipped.**Needs a second look:** <thing> — <why>.— non-defect needing human sign-off. No severity. Covers:- Schema change.
- API contract change of unclear blast radius. A confirmed breaking change is a defect — give it a severity.
- New dependency or framework.
- Change to a performance- or security-sensitive path.
- Dead code left by the change — name each symbol and why it's dead, e.g.
formatLegacyDate() in src/utils/date.ts (replaced by formatDate()) — safe to remove?. Never delete silently.
- No spec found.
- Nothing found →
**Verdict:** Approve — no findings.plus one line on what you checked.
Tone: matter-of-fact. No praise, no thanks, no summary restating findings.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

