review
Skill2 starsChanged 7 days agoMITView on GitHub
Review code from one or more angles — local code (/review [path | --since <ref>]) or a GitHub PR (/review --pr N, alias /pr-review). Defaults: rule drift locally, correctness/design/hygiene/security on a PR; --angles adds performance, extensibility and more. Ends with your pick, a one-by-one walk, a review page (--artifact) or an Obsidian note (--vault). User-invoked only; never posts to GitHub.
192 other projects use a version of this.
Adopted by
Most recently taken up by
- microsoft/veronatheir own version, first seen Nov 8, 2026
- microsoft/FluidFrameworktheir own version, first seen Nov 8, 2026
- charliee1w/consolidation-memorytheir own version, first seen Nov 8, 2026
- jisuzzzz/haechitheir own version, first seen Nov 8, 2026
- apokamo/kajitheir own version, first seen Nov 8, 2026
- dirien/yet-another-agent-harnesstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use close-spec, design-with-images 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.
dzhngSkillclose-spec
When a spec under specs/<feature>/ is done shipping (a write-spec build, or any planned task that produced a spec), archive it to specs/done/ and rewrite it from a build-plan into a durable rationale — the why, the principles, the invariants — pointing back to the real code for the how. Use when implementation has landed and the plan no longer matches what shipped, or the user says a feature/spec is finished. Pairs with [write-spec](../write-spec/SKILL.md) (the plan this closes) and [review](../review/SKILL.md) (run before closing).
Also in 5 projects that use this
dzhngSkilldesign-with-images
Explore UI and visual design with image generation, then iterate the real implementation against the user-selected concept. Use when brainstorming visual directions, offering mockup variants, or implementing an approved generated design; do not stop at the mockups or the first code approximation.
Also in 5 projects that use this
LambenthanSkilldaily-arxiv
每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新
Also in 5 projects that use this
LambenthanSkillexp-eval
实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges
Also in 5 projects that use this
- +3 more from dzhng
- +5 more from Lambenthan
Other versions192 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 192
- garrytan/gstack★ 141ksame name
- ansible/ansible★ 71ksame name
- docling-project/docling★ 70ksame name
- traefik/traefik★ 65ksame name
- ClickHouse/ClickHouse★ 51ksame name
- temporalio/temporal★ 24ksame name
- tisfeng/Easydict★ 15ksame name
- juicedata/juicefs★ 15ksame name
- elie222/inbox-zero★ 13ksame name
- gitkraken/vscode-gitlens★ 10ksame name
182 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 repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- autonomizeSkill
- blueprintSkill
- brainstormSkill
- captureSkill
- checkpointSkill
- close-outSkill
- coordinateSkill
- cycleSkill
- deliverSkill
- design-proposalSkill
- discoverSkill
- dispatchSkill
- draft-planSkill
- envisionSkill
- executeSkill
- extract-conventionsSkill
- glossarySkill
- humanizeSkill
- human-viewSkill
- improve-promptSkill
- memory-auditSkill
- new-agentSkill
- new-agents-mdSkill
- new-hookSkill
- new-mcpSkill
- orchestrateSkill
- pr-authorSkill
- prepSkill
- pre-pushSkill
- pr-triageSkill
- recapSkill
- retrospect-coreSkill
- rulesSkill
- shortcutsSkill
- specSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- update-changelogSkill
- update-codemapSkill
- using-git-worktreesSkill
- visualise-codemapSkill
- visualSkill
- work-stateSkill
- wrapSkill
- write-testsSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 2 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 157 edited versions we read keep these.
2
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 18
Never auto-fires: No hook, session-end or task-end trigger.
- Distinctive: line 97
Before writing the report, read report.md: the header, the Metrics line (from sources, never estimated) and the section order.
- Very specific: line 101
When --pack is set, show the pack first.
- Very specific: line 108
Not kept → dropped, still recorded so the next run knows it was seen.
- Very specific: line 137
Every run writes findings.json — the terminal report, page and vault note all render from it, and walks resume from it.
- Very specific: line 142
How to write: Never Write or Edit under .claude/ directly: headless runs block it.
“Common” is measured: kept by at least 6 in 10 of the 157 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
review
One review skill. What changes between a local review and a PR review is the target and the default angles; everything else (verify, rank, metrics, pick, walk, page, vault note, pack) is shared.
Who does what. The model does the mechanical work: reads the raw code, follows every call to its callers and callees, checks guards and types, confirms lines, verifies. The human decides: they see metrics, where the change sits, a one-line impact per finding, and the trade-offs. Code stays folded until asked for. Never ask the human to trace a call or confirm a line.
Consumes discover, deliver, the architectural-rules tree; routes corrections through capture. Output shape: review output contract.
When to run
/review …or/pr-review …(alias for/review --pr …).- Natural language: "review this", "check for drift", "review PR 123".
- Never auto-fires. No hook, session-end or task-end trigger.
1. Resolve target
| Form | Target |
/review | Whole project, respecting .gitignore |
/review <path> | Directory (recursive) or file |
/review --since <ref> | git diff <ref>..HEAD --name-only. Not a git repo → refuse and suggest /review <path> |
/review --pr [N] [path…] | GitHub PR N (or the current branch's PR), optionally filtered to paths |
Flags combine with any target:
| Flag | Effect |
--angles [list|auto|all] | Angles to run (§3). Without it, the target's default angles run as before |
--pack | Build a review pack (pack.md) shown before the pick |
--artifact | Render the review page (§6) |
--vault | Obsidian note: vault-output.md for local targets, §10 for PRs |
--expand | Local vault output: force the subfolder layout |
--full | Repeat run: re-read every file, ignoring the receipt (§4b) |
Natural language: infer the target and flags ("save to Obsidian" → --vault).
Local guard. Over 50 files → "N files in scope. Narrow with /review <subdir> or --since <ref>? (y to proceed)".
PR target. Needs gh installed and authenticated, else bail with how to fix it. Read pr-target.md for the fetch, the diff parse and the size guard. Work only from gh output and git show <ref>:<path>; never check out the PR branch, never run its tests.
2. Load context
2a. Rules and guidelines
- Local target: load rules automatically via discover —
{task_keywords: <from scope>, scopes: [<language>, <domain>, "global", "project-<name>"], kind: "architectural-rule", relevance_phases: ["always", "during-review"], top_n: 20, render_bodies: true, include_recaps: false}. Read.claude/architecture.mdif present. Zero rules → say so, run only the rule-free checks (dead code, comment drift) of thearchitectureangle, and ask whether to continue. - PR target: ask, in order: "Load architectural rules for this review? 1. Yes 2. No" (yes → the same discover call with
top_n: 15, keywords from the PR title and paths), then "Any guidelines, checklists or context to apply? Paste text, a path or a URL, or Enter to skip."
2b. Out-of-scope index
Local targets: read .claude/review-out-of-scope/ if present, indexed by scope + finding-category (OUT-OF-SCOPE.md). Matching findings are dropped and counted as suppressed.
2c. Orientation
Only for /review and /review <dir>. Read manifests, README + docs//adr/ (≈10 files / 3000 lines cap), map top-level structure, take churn (git log --oneline -200, last-6-months --stat; one plain git log per call, run from the project root, no git -C or ; chains, so headless allow rules match), and intersect the top-20 largest with the top-20 most-changed files (the hot list, scanned first). Write a 1–2 paragraph mental model; a contradiction with the README is itself a comment-drift finding citing the README line. Rendered as the report's ## Orientation block.
3. Run the angles
Angle briefs live in angles.md; projects can add their own or set defaults in .claude/review-angles.md (format in angles.md).
First, on a checked-out target: the repo's own linters and type checks (checks.md). Then on a diff (--pr, --since): the gate scan (gates.md). Drop GENERATED files; read each TAG hunk with its one question; gate findings go to the user.
| Input | Angles | How they run |
no --angles | Local: architecture. PR: correctness, design, hygiene, security | Inline in this session, as one pass (no extra agents) |
--angles a,b,c | Exactly those | One fresh agent per angle |
--angles auto / bare | Project default if set, else the target defaults + up to 3 picked by the signals in angles.md | One fresh agent per angle |
--angles all | Every built-in + project angle | One fresh agent per angle |
auto runs at most 5 agents and doesn't ask: past 5, drop the latest picks. all → ask once with the count. A typed list runs as typed. State the resolved list; for auto, one line per angle picked or skipped and why.
Fan-out. All agents in one message. Each gets only: the target and how to read it, its brief verbatim, the loaded rules and guidelines, the findings schema finding shape, and the grounding gate (contract §1a). Plus: "Follow each call you depend on to its callers and callees and record the path in chain. Write impact as one plain line on what it costs, with no code. Keep what, impact and fix plain text: no mermaid or code fences. Return findings only for your angle, or none." Never pass one angle's output to another. A reply that doesn't parse is re-run once, then recorded as failed in coverage.
Every finding cites file:line (new-file lines on a PR), quotes the real code there, and was checked against its callers (contract §1a). No line, no finding. A non-architecture finding needs no rule citation; an architecture finding does, except dead code and comment drift (drift-checks.md). Fixes that are ≤10 lines, one contiguous range, and mechanically actionable become ```suggestion blocks (contract §3).
4. Merge, verify, rank
- Merge. Same file + overlapping lines + same root cause → one finding with
angles: [a, b], highest severity, clearest fix, longest chain. Move any fenced block an agent left in a text field into the pack or drop it. - Tensions. Two findings on the same code whose fixes pull opposite ways → a tension: the code, side A, side B, what would settle it. No severity, no winner.
- Verify. Each Critical and High finding goes to a fresh agent that tries to refute it — security findings to
security-reviewerin Verify mode. It gets only: the target,file:line, the one-line claim, the expected failure, and the refs. "Try to refute this from the source. Look for a guard, a caller or a type that makes it impossible. Returnverdict: confirmed | plausible | rejected, thefile:lineevidence, one sentence of reason."confirmedkeeps it (lower severity if the impact is smaller, never higher);plausiblemoves it to Needs validation without severity;rejectedmoves it to "looks bad but actually fine". An unparseable reply is re-run once, thenplausible. Verifier unavailable → markunverifiedand say so in the header. - Severity / effort. Critical = clear breach or bug with high blast radius (security, data integrity, public contract). High = clear, localised; or probable on a load-bearing module. Medium = probable, moderate. Low = possible, weak confidence, nits. Effort S < 1h single file; M ≈ half-day, 2–5 files; L multi-day.
- Rank for the decide view: severity, then angle count, then verified, then effort. Ids stay the stable
F<NNN>; ranking is order only. - Caps. Top 5 per file in per-file sections (surplus as a count), 50 per run (header says so when hit).
4b. Repeat-run reconciliation
Local targets with a prior .claude/reviews/<scope-slug>/latest.md: run mode = repeat; tag each finding NEW / CARRIED (keeps its id) / WONT_FIX / RESOLVED; resolved ones get their own section. Malformed baseline → warn, treat as fresh. Mechanics: reconciliation.md. PR re-reviews use §10's iteration rules.
Receipts. On a repeat run, check the receipt first and re-read only CHANGED and NEW files (unless --full, a stamped rule changed, or the angles differ). Command and rules: reconciliation.md, Receipts.
5. Report
Before writing the report, read report.md: the header, the Metrics line (from sources, never estimated) and the section order. The review output contract wins on divergence. A PR report ends with Verdict: APPROVE | REQUEST_CHANGES | COMMENT; only confirmed Critical/High drive REQUEST_CHANGES.
6. Decide
When --pack is set, show the pack first. Then the decide view, no code in it: metrics, needs your call (Critical/High as id · impact, and the tensions), the ranked list as id · severity · impact · angles, Needs validation. Ask once:
Pick:
keep 1,3·drop 2·wontfix 4 "<reason>"·tension T1 a|b|skip·all·none·show <id>·walk·page·apply vault picks
- Clauses combine on one line — the same line the page's Copy pick and
render-note.mjs --read-picksproduce. show <id>opens code, call path, fix and verifier note, then asks again.wontfixneeds a durable reason ("not now" isdrop); it carries forward per §4b / §10. A reason durable for every future run can go to.claude/review-out-of-scope/(§9 option 5).- Not kept →
dropped, still recorded so the next run knows it was seen.
Walk (walk, walk high+, walk src/api/, walk extensibility, walk from F004) — one finding per step, in ranked order:
F002 · 2/7 · medium · extensibility · unverified
Limits are a hardcoded table.
Impact: adding a limit for a new route means editing this file; plugins can't register their own.
Fix: accept limits through createLimiter(options). (effort M)
keep · drop · wontfix "<reason>" · edit · ask <question> · code · back · stopcode shows code, chain and verifier note; ask answers from the code (following calls as needed) and adds a note; edit changes severity, fix or wording; back goes back; stop leaves the rest open. Tensions follow the findings with a · b · skip. The cursor and answers are saved to findings.json after each step, so a later walk resumes.
Page (page, --artifact) and Apply vault picks: commands in outputs.md.
Pushing back on a finding (in a walk, a wontfix reason, or a cold read): contest only with evidence the reviewer could read, never change severity to win. The full rules: pushback.md.
After the pick:
- Local target — iterate the kept findings:
1. Apply 2. Skip 3. Edit 4. View detail 5. Won't fix (reason). Apply edits via Edit/Write with a one-line confirmation; checkgit statusfirst and pause if the file is dirty. Naming findings: local renames and comment rewords may apply; public renames and over-delivery deletions are suggest-only (drift-checks.md). No batch auto-apply, no silent fixes. - PR target — kept findings become the review checklist. Then: "1. Drill into a finding 2. Re-review with other scope, rules or angles 3. Walk 4. Open as page 5. Build a pack 6. Done — take the checklist to GitHub". Never post to GitHub.
7. Summary and persistence
Report counts: applied, skipped, edited, won't-fix, suppressed (local); kept, dropped, won't-fix (PR).
7b. Persist
Every run writes findings.json — the terminal report, page and vault note all render from it, and walks resume from it.
- Local:
.claude/reviews/<scope-slug>/getsv<N>.md+v<N>.json,latest.md+latest.json, written atomically (reconciliation.md).--sinceruns write onlylatest.jsonunder.claude/reviews/since-<ref-slug>/as working state, never a baseline. - PR:
.claude/reviews/pr-<NNN>/v<N>.json+latest.json, even when the vault is unset.
How to write. Never Write or Edit under .claude/ directly: headless runs block it. Read persist.md and use save-run.mjs (json first, then md), then stamp the receipt. Always save both.
A write failure is reported, never blocks the next step.
7c. Vault (local, opt-in)
On --vault, read vault-output.md and follow it. Vault root is vaultRoot in ~/.claude/hook-config.json, never hardcoded; unset → skip and say how to set it.
8. Feedback prompt
Local targets, every run: "Did this catch what you wanted? (y / n)". n or a correction → §9.
9. Feedback loop
- Sharpen an existing rule · 2. Add a rule · 3. Retag a rule · 4. Adjust a threshold · 5. Record as out-of-scope. Procedures: feedback-loop.md. Never change silently; rule writes go through capture.
10. PR vault note
PR reviews are always written to the vault (skip with a note when vaultRoot is unset). File name, the render-note.mjs call and the frontmatter keys: outputs.md, PR vault note. Re-reviews: pr-vault-iterations.md. Never commit or push the vault file.
Failure modes, what review does not do, and related organs: reference.md.
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.

