Reviews a PR in shadow at low cost: a script makes direct, cached model calls over the pr-reviewer's review packet (no harness session, no tools) and compares its findings with the full reviewer's. Writes artifacts only, never to GitHub. Invoke with /pr-review-lite.
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Run scripts/lite-review.mjs on a PR, then compare it with the full pr-reviewer using scripts/lite-compare.mjs.
It never posts: it writes findings.json, report.md, skipped.json, and usage.json to --out.
Why it is shaped this way, and what it gives up: references/design-rationale.md.
Run it; it picks the model transport itself, and --transport overrides that (it makes real model calls, so run it only on a PR the user named). --with a,b loads named lenses as /pr-review does:
| Where it runs | Transport | Needs |
|---|---|---|
OPENCODE_CONFIG_CONTENT is set (an opencode sandbox such as Agent0) | opencode | nothing; the sandbox's ANTHROPIC_API_KEY is a placeholder only opencode can use |
a local shell with ANTHROPIC_API_KEY | api | the key |
| a local shell with a Claude Code login | claude-cli | the claude binary |
a local shell with opencode configured | opencode | the opencode binary |
With opencode, each call also pays opencode's own fixed context (about 194k tokens, reported in usage.json), so its cost is higher than api for the same PR.
node ${CLAUDE_SKILL_DIR}/scripts/lite-review.mjs --pr <url|#n> --out <dir> --repo-dir <checkout>It runs prepare-review.mjs from the agent's support tree, so the packet is the one the full reviewer reads (rules/dispatch.md).
Exit code 3 means the first model call got a 401 or 403: the run stopped after one call and every file is in skipped.json. Report "the review did not run", name the rejected key, and skip step 3.
Read <dir>/skipped.json. Every file lite did not review is listed with its reason; report that list, never "reviewed everything".
Compare after the full reviewer has posted on the same head:
node ${CLAUDE_SKILL_DIR}/scripts/lite-compare.mjs --lite <dir>/findings.json --pr <owner/repo#n|url> --full-author <login the full reviewer posts as>Thread replies and outdated comments are excluded; without --full-author, a human's inline comment counts as a full-only finding.
Report the lenses report.md names as loaded (or "none loaded"), then the overlap, lite-only, and full-only counts and the usage line exactly as printed.
✗ Wrong — "lite found 2 issues, so the PR is clean"
✓ Right — "lite found 2 findings in 9 of 11 files; 2 files not reviewed (see skipped.json); full-only: 3"rules/dispatch.md — what is reviewed, grouped, and skipped, and what lite reuses read-only.rules/output-contract.md — what each stage returns and which filters apply.rules/lenses.md — how team lenses in .agents/review/lenses/ reach lite.--post does not exist.--prices or LITE_PRICES supplies a price, or when the claude-cli transport reports the cost itself.agents/pr-reviewer/**, finders.md, or finding-verifier.md from this skill. Lite reads them and nothing more.mthines/agent-skills
8f81cde
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.