Evaluate a PR the harness produced — walk the change, run the system together, and build a firm understanding before you merge it. Use after the harness hands a converged PR to you for review (the "Ready for your review" comment), or any time you want to deeply review an agent-authored PR. The human-attentive skill at the back of the chain; the mirror of /intent. Outcomes — merge, close, or fix-it-yourself-and-push - no handing work back to the loop.
61
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./skills/human-loop/evaluate-pr/SKILL.mdThe canonical home for this skill is evaluate-pr in tdg-ninja/context-specs-factory-ai
Run a conversation that turns an agent-authored PR into two outcomes:
This is the Evaluate phase of the Human Loop (Understanding → Intent → Evaluate),
the back-of-machine mirror of /intent. Like /intent, a human is present and it
runs in the human's own checkout — not the harness worktree. Every other skill in the
chain runs headless; this one and /intent are the two human-attentive bookends.
You are a teacher and a taste partner, not a linter. The bot reviewer already caught the mechanical defects. Your job is the part a bot can't do: transfer real understanding into the human's head, and surface judgment-level feedback (could this be simpler? is this abstraction sound? does the UX feel right?).
main with the merge, where
/learn (its P7) treats human-authored memory edits in the merged diff as ground
truth to extend, not a proposal to second-guess — the same path a human's STUCK
correction takes. So insights still reach memory via /learn post-merge; the difference
is the human may now seed them directly here instead of only leaving them in the code
or in their head. (The PRD stays off-limits — fix code and seed memory, never rewrite the
spec of record.)git reset --hard'd every tick — never evaluate there. Check out the PR head
detached to dodge the same-branch-in-two-worktrees conflict (the harness worktree
still holds feature/<f>). You can still update the PR from a detached HEAD — commit,
then git push origin HEAD:feature/<f>. Return to main when done.CHANGES_REQUESTED, no reviewer ping). Keep fixes scoped to what the human
asked; don't touch prds/<f>/prd.md — just update the code.You are a guide, not a checklist. Read the two seam references first so your discipline is grounded:
references/walkthrough.md — how to transfer understanding: the four lenses
(scenarios, edge cases, design decisions, core abstractions), what to surface vs.
skip, and the Socratic alternative prompts. (Hackable seam: depth of the walk-through.)references/verdict.md — the mechanics: detached checkout, running the system,
posting an approval+merge or a CHANGES_REQUESTED review, and how each re-enters the
harness. (Hackable seam: how soft the gate is; merge policy.)Confirm the working tree is clean; if there's WIP, ask the user to stash or commit first
(a "clean your tree" issue, not something to abstract over). Identify the feature/PR:
from the <feature> arg if given, else find the open PR carrying the harness's
"Ready for your review" handoff comment. Note the PR number and feature/<f> branch.
Read, in this order:
prds/<f>/prd.md — why this exists and what "done" means. This is the authoritative
scope. Hold it in mind as the yardstick.prds/<f>/run-prd-test.sh — the runnable definition of done; its checks are the
scenarios you'll walk in Step 4.specs/<f>/mainspec.md (+ slices/) — the plan, for the design rationale.gh pr diff <pr>).
Load the Expert (.claude/skills/expert/references/*.md) for the project's patterns and
conventions, so "is this abstraction sound?" is judged against how this codebase works.Read the existing PR review findings (gh pr view <pr> --json reviews,comments). Tell the
user in ~2 lines what the bot already caught and what's been addressed, then set it
aside (E3). From here, you spend attention on judgment, not mechanics.
git fetch origin
git checkout --detach origin/feature/<f>Detached HEAD avoids the conflict with the harness's per-feature worktree, which still
holds feature/<f>. Bootstrap so the app runs (e.g. ./scripts/bootstrap-worktree.sh .
if present, else the project's install). See references/verdict.md.
This is the heart. Using references/walkthrough.md, transfer understanding through the
four lenses — scenarios, edge cases, design decisions, core abstractions — always
the why, never the syntax (E2). Offer to run the system and walk each
definition-of-done scenario live, then push into edge cases (E4). Narrate and probe
(E5). Confirm understanding as you go, not just at the end.
Before the verdict, deliberately ask the could-it-be-better questions: simpler? a
different approach? are the abstractions the right ones? does the UX feel dull? This both
sharpens the human's taste and surfaces things worth changing. If something should
change, you fix it here and push (Step 7) — you don't file a request back to the
loop. Worth naming as you go: an implementation gap (code doesn't match the PRD) vs.
a PRD defect (the intent itself missed something obvious-in-hindsight). Either way
the fix is a code change on this branch; don't rewrite prd.md.
Ask plainly: "Do you feel you understand this change?" If yes, proceed to the verdict. If the user wants to merge a small change without the full walk-through, that's allowed — but it must be an explicit opt-out, not a default skip (E6).
Per references/verdict.md, exactly one of:
/learn pass and the dispatcher's cleanup.git push origin HEAD:feature/<f>).
The reviewer re-runs on the push; once it's clean again you merge. Keep edits scoped;
don't touch prds/<f>/prd.md.In all three, the loop does not re-engage — there is no "request changes back to the harness." You are the last mile.
git checkout main so the user ends where they started (E8).
/evaluate-pr <feature>), typically after the HUMAN_REVIEW
handoff comment. Not the dispatcher — this is a human-in-the-loop skill, like
/intent.feature/<f>
(optionally then merged). Those commits may include human-authored memory edits
(Expert / AGENTS.md) that reach memory through the merge + /learn (E7). No sentinels,
no .harness access; never write memory autonomously or push to main directly.human-review-<f> sentinels
(merge also triggers the post-merge /learn pass). A push while in HUMAN_REVIEW just updates the
PR and re-triggers the reviewer; the loop stays halted — you remain in control until
you merge or close.Re-running /evaluate-pr for the same feature is always safe — it's a fresh evaluation
that persists nothing. If you requested changes earlier and the harness has since
re-converged (a new "Ready for your review" comment), just evaluate the new state.
feature/<f>; it reaches memory as ground truth via the merge + /learn
P7 (E7).CHANGES_REQUESTED, no reviewer ping — if a
change is needed, make it here and push (E9).prds/<f>/prd.md — fix the code, not the spec of record..harness — sentinel lifecycle is the dispatcher's.main at the end.3a7a725
Canonical home
since Aug 20, 2026
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.