CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

pr-review-lite

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.

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

/pr-review-lite — shadow reviewer built for cost

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.

Steps

  1. 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 runsTransportNeeds
    OPENCODE_CONFIG_CONTENT is set (an opencode sandbox such as Agent0)opencodenothing; the sandbox's ANTHROPIC_API_KEY is a placeholder only opencode can use
    a local shell with ANTHROPIC_API_KEYapithe key
    a local shell with a Claude Code loginclaude-clithe claude binary
    a local shell with opencode configuredopencodethe 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.

  2. Read <dir>/skipped.json. Every file lite did not review is listed with its reason; report that list, never "reviewed everything".

  3. 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.

  4. 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

Hard rules

  • Shadow only. Never post, resolve, or edit anything on GitHub; --post does not exist.
  • Never hard-code a price. USD appears only when --prices or LITE_PRICES supplies a price, or when the claude-cli transport reports the cost itself.
  • Never present lite's output as a verdict. Its recall is unmeasured; it is compared, not trusted.
  • Do not edit agents/pr-reviewer/**, finders.md, or finding-verifier.md from this skill. Lite reads them and nothing more.
Repository

mthines/agent-skills

Path

skills/quality/pr-review-lite/SKILL.md

Last updated
First committed

Is this your skill?

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.