review-pr
Skill0 starsChanged 6 months agoMITView on GitHub
Reviews a GitHub pull request for correctness, security, design, and maintainability — posts inline comments or displays locally
185 other projects use a version of this.
Adopted by
Most recently taken up by
- data-privacy-stack/presidiotheir own version, first seen Nov 9, 2026
- pgmpy/pgmpytheir own version, first seen Nov 9, 2026
- enes-alatas/spooltheir own version, first seen Nov 8, 2026
- microsoft/presidiotheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use diagnose-ci-failures, docs-loop 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.
zerx-labSkilldiagnose-ci-failures
Diagnose CI failures for a PR using the GitHub CLI, extract error logs, and generate a plan to fix them. Use when the user asks to check CI status, pull CI issues, triage test failures, or investigate PR build failures.
Also in 3 projects that use this
GeiserXSkilldocs-loop
Use when the user asks to audit docs, check documentation for stale claims, or verify docs against the code.
Also in 3 projects that use this
GeiserXSkillfull-loop
Drive a repository to done with sergio-loop, then keep improving it with refine-loop at a descending theta. Use only when the user explicitly invokes full-loop.
Also in 3 projects that use this
n24q02mSkillreview-delta
Review only changes since last commit using impact analysis. Token-efficient delta review with automatic blast-radius detection.
Also in 3 projects that use this
n24q02mSkillbuild-graph
Build or update the code review knowledge graph. Run this first to initialize, or let hooks keep it updated automatically.
Also in 3 projects that use this
- +7 more from GeiserX
Other versions185 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 185
- denoland/deno★ 109ksame name
- ToolJet/ToolJet★ 41ksame name
- remix-run/remix★ 33ksame name
- tirth8205/code-review-graph★ 33ksame name
- alpinejs/alpine★ 32ksame name
- nrwl/nx★ 29ksame name
- PrefectHQ/fastmcp★ 28ksame name
- jlowin/fastmcp★ 28ksame name
- livewire/livewire★ 24ksame name
- microsoft/fluentui★ 20ksame name
175 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 repository13 other files it gives its agents.
- AGENTS.mdAGENTS.md
- build-loop-initSkill
- build-loop-iterateSkill
- build-loopSkill
- frontend-designSkill
- handle-pr-reviewSkill
- orchestrateSkill
- phase-goal-reviewSkill
- phase-retroSkill
- regression-detectSkill
- spec-authorSkill
- test-gateSkill
- verify-gateSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. 0 are common, 17 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 178 edited versions we read keep these.
17
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 78
If the PR touches more than ~30 files, prioritise:
- Very specific: line 86
Use the file list from gh pr view NUMBER --json files to sort by additions + deletions.
- Distinctive: line 88
If the PR is too large to review meaningfully (100+ files with substantive logic changes), say so.
- Distinctive: line 92
Before looking for problems:
- Distinctive: line 94
Read the PR title, description, and commit messages to understand intent.
- Distinctive: line 96
Read surrounding source code for files with non-trivial changes.
- Distinctive: line 99
Do not start flagging issues until you understand what the author was trying to achieve and why.
- Distinctive: line 101
If the PR description is empty or uninformative:
- Distinctive: line 105
If intent remains unclear after reading the code, ask the user before proceeding.
- Distinctive: line 120
If it works, is readable, and follows project conventions — don't comment.
- Distinctive: line 124
Never auto-approve and never block for style alone.
- Distinctive: line 128
Before posting anything (remote mode) or finalising (local mode), present findings:
- Very specific: line 150
If
auto=false(default): Wait for user confirmation before proceeding. - Distinctive: line 159
After confirmation, resolve OWNER, REPO, and the latest commit SHA:
- Very specific: line 174
Default to COMMENT when unsure.
- Very specific: line 176
If
auto=true: Always use COMMENT regardless of findings. - Distinctive: line 210
After posting, confirm to the user what was posted and provide the PR URL.
- Distinctive: line 220
If the user says "post it":
- Distinctive: line 224
Do not re-analyse the diff.
- Distinctive: line 229
Don't duplicate existing feedback: Check existing review threads before posting.
- Distinctive: line 230
Check CI before reviewing: If CI is red, note it but don't spend time reviewing code that may change.
“Common” is measured: kept by at least 6 in 10 of the 178 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- version: 3 -->Review a GitHub pull request for correctness, security, design, and maintainability. Default mode is remote (posts comments to GitHub). Pass mode=local to display findings without posting.
Parameters
pr— PR number or URL (optional; auto-detected from current branch if omitted)mode—remote(default) orlocalauto—trueorfalse(defaultfalse). Whentrue, skip the operator confirmation gate (Step 4) and proceed directly to posting/displaying. UseCOMMENTas the review event (neverREQUEST_CHANGESorAPPROVEwithout a human). Intended for build-loop autonomous invocation.
| Mode | Behaviour |
| remote (default) | Full review -> post comments and submit review on GitHub |
| local | Same analysis -> display findings in chat only, nothing posted |
0. Identify the PR
Detect from context (current branch, parameter, or URL). Prefer:
gh pr view --json number,url,baseRefName,headRefNameFall back to asking the user.
1. Fetch the diff and PR metadata
gh pr diff NUMBER
gh pr view NUMBER --json title,body,files,additions,deletions,commits,isDraft,headRefOidFetch existing review comments to avoid duplicating feedback:
gh api graphql -f query='
query($owner:String!,$repo:String!,$pr:Int!) {
repository(owner:$owner,name:$repo) {
pullRequest(number:$pr) {
reviewThreads(first:100) {
pageInfo { hasNextPage endCursor }
nodes {
id
isResolved
isOutdated
path
line
viewerCanResolve
comments(first:30) {
nodes {
id
databaseId
body
author { login }
path
line
originalLine
createdAt
}
}
}
}
}
}
}' -f owner=OWNER -f repo=REPO -F pr=NUMBER1.5. Scope the review (large PRs)
If the PR touches more than ~30 files, prioritise:
| Priority | File type | Action |
| Deep | Core logic, security-sensitive, public API surfaces, files with complex diffs | Read surrounding context, review line-by-line |
| Scan | Tests (verify they test the right thing), internal utilities, straightforward refactors | Quick read for obvious issues |
| Skim | Generated files, lockfiles, config/CI, docs, renames/moves | Spot-check only; skip if mechanical |
Use the file list from gh pr view NUMBER --json files to sort by additions + deletions. Start with the highest-churn non-generated files.
If the PR is too large to review meaningfully (100+ files with substantive logic changes), say so. Recommend the author split it, and offer to review a subset they nominate.
2. Understand the change
Before looking for problems:
- Read the PR title, description, and commit messages to understand intent.
- Scan the full diff to grasp the shape of the change.
- Read surrounding source code for files with non-trivial changes.
- Identify the type of change: feature, bugfix, refactor, config, docs, etc.
Do not start flagging issues until you understand what the author was trying to achieve and why.
If the PR description is empty or uninformative:
- Infer intent from commit messages and the diff itself.
- Note the gap in triage output: "PR has no description — review is based on code and commit messages only. Risk of misunderstanding intent."
- If intent remains unclear after reading the code, ask the user before proceeding.
3. Triage — pragmatic, not pedantic
Review changed files (using the priority order from step 1.5 for large PRs). For each potential finding, classify it:
| Category | When to flag | Example |
| Critical | Bugs, security holes, data loss, broken logic, missing error handling that will bite in production | Race condition, SQL injection, unchecked null on a critical path |
| Concern | Design issues, maintainability risks, unclear intent, missing tests for important behaviour | Tight coupling, duplicated logic across files, ambiguous naming on a public API |
| Nit | Style preference, minor naming, formatting — only flag if pervasive pattern | Single inconsistent variable name (skip), systematic naming convention violation across the PR (flag) |
| Skip | Acceptable as-is. Readable, works, follows project conventions — or too subjective to be worth raising | Preferring forEach over for...of, minor comment wording |
Ground rules:
- If it works, is readable, and follows project conventions — don't comment.
- Challenge your own findings: "Would I mass-reject a PR over this?" If no, consider skipping.
- Group related issues. Don't leave 5 comments about the same pattern — leave one with context.
- Acknowledge what's done well when something is genuinely good.
- Never auto-approve and never block for style alone.
4. Present triage for confirmation
Before posting anything (remote mode) or finalising (local mode), present findings:
## PR Review Triage — PR #123: <title>
**Critical (must fix):**
- `src/auth.ts:42` — JWT secret read from env without fallback; server crashes on missing var
- `src/db.ts:88-91` — Raw SQL interpolation -> SQL injection risk
**Concern (worth discussing):**
- `src/api/handler.ts:15-30` — New retry logic has no backoff; could hammer downstream service
**Nit (minor, pattern-level):**
- Inconsistent error message format across 4 new handlers (some use template literals, some concatenation)
**Positive:**
- Clean separation of validation logic into its own module
- Good test coverage on the happy path
**Skipped:** 3 minor style items — not worth comment noise.If auto=false (default): Wait for user confirmation before proceeding.
The user may reclassify findings, drop items, or add context.
If auto=true: Log the triage for auditability (include it in the PR
summary comment later), then proceed immediately — do not wait for
confirmation.
5a. Remote mode — post the review
After confirmation, resolve OWNER, REPO, and the latest commit SHA:
gh repo view --json owner,name --jq '"\(.owner.login) \(.name)"'
COMMIT_SHA=$(gh pr view NUMBER --json headRefOid --jq '.headRefOid')Choose the review event based on confirmed findings:
| Findings | Event |
| Any Critical items | REQUEST_CHANGES — only if user confirms |
| Only Concern / Nit | COMMENT |
| Nothing to flag | APPROVE — only if user confirms |
Default to COMMENT when unsure. Never auto-approve or auto-request-changes without user confirmation. For draft PRs, always use COMMENT regardless of findings.
If auto=true: Always use COMMENT regardless of findings. The operator
reviews the PR after the autonomous cycle completes — they decide whether to
request changes or approve.
Submit a single review with inline comments using --input -:
jq -n \
--arg event "COMMENT" \
--arg body "$(cat <<'BODY'
## Review summary
**Critical:** 2 items flagged (see inline)
**Concerns:** 1 item flagged (see inline)
**Overall:** Good direction, a few items to address before merge.
BODY
)" \
--arg sha "$COMMIT_SHA" \
'{
event: $event,
body: $body,
commit_id: $sha,
comments: [
{path: "src/auth.ts", line: 42, side: "RIGHT",
body: "**Critical:** JWT secret has no fallback — server will crash on missing env var. Consider a startup check or default."},
{path: "src/db.ts", line: 91, side: "RIGHT", start_line: 88, start_side: "RIGHT",
body: "**Critical:** Raw SQL interpolation -> SQL injection risk."}
]
}' \
| gh api repos/OWNER/REPO/pulls/NUMBER/reviews --method POST --input -For multi-line comments, include both start_line/start_side and line/side. Use the category prefix (Critical, Concern, Nit) in each comment body.
After posting, confirm to the user what was posted and provide the PR URL.
5b. Local mode — display only
Present the full review in chat using the same format as the triage in step 4, but with full comment bodies for each finding. Nothing is posted to GitHub.
End with:
Local review complete. Say "post it" to submit this review to GitHub (I'll confirm the event type first), or adjust findings.
If the user says "post it":
- Confirm the review event type (see event table in step 5a).
- Execute the remote posting flow from step 5a using the already-triaged findings.
- Do not re-analyse the diff.
Notes
- Respect the author's context. They may know things you don't. Frame concerns as questions when uncertain: "Is there a reason this doesn't use...?"
- Don't duplicate existing feedback. Check existing review threads before posting. If someone already raised it, skip or +1 briefly.
- Check CI before reviewing. If CI is red, note it but don't spend time reviewing code that may change. Tell the user: "CI is failing — worth fixing that before a deep review."
- Forks.
gh pr diffandgh pr viewwork across forks transparently. TheheadRefOidfromgh pr viewis the correct commit for inline comments regardless of fork origin.
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.

