review-guide
Computes a PR's Tier floor and unplanned-changes list with a bundled read-only script, then writes the PR's Tier line and Review guide (decisions not in the plan, files to read closely vs skim, what t
SKILL.mdplugins/ai-workflow/skills/review-guide/SKILL.md
GitHub/review-guide
Gives a reviewer a short guide to where to look in a PR, split by trust: a
script computes the parts that must be trustworthy, and you write the parts
that need judgment. /feature step 9 calls this skill; it can also be run on
its own. It returns text for the caller to place. It never opens, edits or
comments on a PR.
Input
- The default branch (
AGENTS.md→ Commands) - The plan source, one of: the plan file's absolute path (the one
/featurestep 1d wrote, or--from-planread);--plan-reapproved(a--from-planrun re-approved at step 2, so its saved plan is stale); or nothing (no plan file was saved). Run standalone with none given → ask for the path or "none" - The approved plan text's Tier line and the session's context (deviations, decisions made while implementing)
Steps
1. Run the script
sh ${CLAUDE_SKILL_DIR}/review-guide.sh <default-branch> [<plan-file> | --plan-reapproved]
- Any non-zero exit, any stderr, empty stdout, an unexpanded
${CLAUDE_SKILL_DIR}or a missing script → STOP perAGENTS.mdRule 2; never guess a path or work around it - A
not computedreason other thanno plan fileor the re-approved one → tell the user before going on - Syntax, exit codes and limits are in the script's header comment
2. Tier line
**Tier:** <n> — <reason>
- n = the higher of the plan's tier and the script's floor (2 when it lists
sensitive paths). A user-set tier shows both values (
1 (set by user; derived 2) → 2) - A judged prose area (step 3, not
unsure) also raises n to 2, named in the reason as<area> (judged, not computed); it never lowers n - The plan's tier is the approved plan text's
**Tier:**line (inside/feature, the one in context). Standalone, read it from the given plan file; with no plan, n is the floor, marked "no plan tier" - The reason names each sensitive area touched, as a fact
- Floor or a judged area above the plan's tier → tell the user before the PR opens:
/featurestep 4'sopusoverride may not have been applied, and step 9's second look applies
3. Review guide
For the reviewer; commit SHAs are allowed here.
- The script's stdout, verbatim, first
- Prose Sensitive Areas (judged, not computed) under it, when the script
prints
Not path-checked: <k>or the branch'sAGENTS.mddiff removes a prose-only bullet (no leading backticked path, not a[TODOplaceholder; readgit show HEAD:AGENTS.mdplus the removed ones, marked(removed on this branch)). One line per area, named by its text before—: each changed file whose diff changes behaviour it describes,`<path>` — <reason>(not mere nearness; if unsure, reasonunsure), elsenone judged. Your count differs from<k>→ say so - Decisions not in the plan: one line each; every unplanned path accounted for, or "None"
- Read closely / Skim: paths, one line why each
- Check by hand: what to try in the running app, or "nothing: no UI or API surface"
Output
The Tier line and the Review guide. The caller puts the Tier line in the PR description and the guide at the top of the first comment. Run again, and replace both, after any commit made once the PR is open.
Rules
- Never alter, trim or contradict the script's output; an omission in your own
parts must stay visible next to it. Its
→ nonecovers computed paths only, so a judged raise beside it is not a contradiction - Never put the plan file's absolute path in the output: the script prints the basename only