One-shot review and verification of a single GitHub PR in an isolated worktree — tests, lint, acting on the changed behaviour, PASS/REJECT with evidence. Never merges, never approves.
Install
npx skillscat add luxtelos/loopkit/pr-review Install via the SkillsCat registry.
SKILL.md
Skill: PR Review
Job
One-shot review + verify of a single GitHub PR. Input: a PR number.
Output: PASS/REJECT verdict with evidence, findings filed per FILES.md.
Stance
Assume the code is BROKEN until proven otherwise. "Reads fine" is not
evidence; only execution is. Never merge, never approve — a human does both,
and the plugin's block_dangerous.py refuses gh pr merge andgh pr review --approve in any case.
Algorithm
gh pr view <n> --json number,headRefName,filesandgh pr diff <n>— the
diff and the linked spec inspecs/first. Form your provisional verdict
per criterion BEFORE reading the PR body or any summary the author wrote;
then read them. The spec is the acceptance contract; the description is a
claim. Flag only gaps that affect correctness.- Check out into an isolated worktree, never the main tree:
git worktree add .worktrees/pr-<n> && cd .worktrees/pr-<n> && gh pr checkout <n> - Run tests AND lint. Record actual output, not a summary of it. Prefer the
regression diff so a known-bad baseline cannot mask a new failure:bash "${CLAUDE_PLUGIN_ROOT}/scripts/test-regressions.sh". - If the diff touches UI or user flows, drive the running app and observe the
changed behavior directly. - Review the diff with the reviewer agent's instructions: correctness,
idempotency of every transition, authorisation checked in BOTH middleware
and handler when auth-adjacent, pagination and tenant-scoping invariants,
data-retention rules the project states. - File what does not belong to this PR: out-of-scope defects →
state/<date>-pr<n>-findings.md; anything needing a human decision →inbox/needs-human.md(this pings the configured webhook). - Verdict in the final message: PASS (every criterion held, with evidence)
or REJECT (reasons, file:line). If asked to comment, usegh pr comment— never approve or merge. - Clean up:
git worktree remove .worktrees/pr-<n>unless the human wants
the checkout kept.
Environment
ghauthenticated.
Do NOT
- Merge, approve, or push to the PR branch uninvited.
- Review in the main working tree.
- Claim PASS without running tests + lint in the PR's worktree.
Gotchas
gh pr mergeandgh pr review --approveare refused by the plugin'sblock_dangerous.pyfor every agent; do not look for another spelling.- A green CI rollup means nothing REPORTED failure. Steps inside a job fail
fast, so later steps may never have run. Read the job. - Reading the PR body first anchors you on the author's framing. Diff and
criteria first, body second — the order is the review. - The worktree resolves
node_modulesfrom the parent checkout; a dependency
added on the PR branch is missing until you install inside the worktree.