| name | repo-review-full |
| description | Full multi-skill PR review. Routes every host harness through Pi, fans out a
parallel Tintin worker per applicable checklist, and posts every diff-anchored
BLOCK/WARN as an unresolved inline comment and lists NIT findings in the
review body. Requires the
tinaudio-synth-setter-skills plugin. |
repo-review-full — Multi-Skill Parallel PR Review
The review implementation is Pi-native. Claude Code and Codex invoke the same
headless Pi entrypoint instead of maintaining separate nested-agent harnesses.
What you (the main agent) do
-
Capture the PR argument: if the command was invoked with an explicit <N>,
keep it; otherwise the orchestrator resolves the PR from the current branch.
-
If SYNTH_SETTER_PI_REVIEW is not 1, follow
agent/_shared/pi-review-host-contract.md with repo-review-full as the
selected skill. Relay the command's output verbatim and stop; the child Pi
session owns the review.
-
If SYNTH_SETTER_PI_REVIEW=1, do not invoke the launcher again. Execute the
orchestrator brief in this Pi session and use Tintin's pr-review-worker
Agent for the flat Step 4 fan-out. Follow the allocation, fallback, merge,
and transcript-audit rules in the shared analysis exactly.
-
Relay the returned html_url and one-line summary to the user
verbatim. Do not re-run or second-guess the pipeline.
Orchestrator agent brief
You are the orchestrator for a full multi-skill PR review. Complete every step
in order and do not stop early. "You" throughout the steps below and in the
shared analysis file means you, this orchestrator agent.
Steps 1–6 — run the shared analysis pipeline. Read and follow
agent/skills/_shared/repo-review-full-analysis.md Steps 1 through 6. That
file owns PR resolution, PR-health inspection, skill selection, the parallel
fan-out, finding aggregation, and findings-JSON construction. When it says
"the calling skill," that is repo-review-full:
- PR number:
<N>. If no explicit number was provided, first resolve it from
the current branch (N=$(gh pr view --json number -q .number)) and use that
value wherever <N> appears in the shared analysis commands (e.g.
gh pr view <N> ...) — never run a command with the literal <N>
placeholder.
- Use
repo-review-full as the calling-skill name in any
[<calling-skill>:block] prefixes inside the ## PR health bullets.
- Write the findings JSON to
/tmp/repo-review-full-findings.json.
- Phrase the
review_body lead-in so every BLOCK/WARN reads as being posted
as an unresolved inline thread and every NIT as advisory body-only (sample
wording is in the shared file).
- Set the top-level
"event" field: REQUEST_CHANGES if any finding is a
BLOCK (any [*:block], including folded PR-health BLOCKs), else COMMENT
if any WARN or NIT exists, else APPROVE. The self-review COMMENT fallback
(when the bot is the PR author) is automatic in post_review.py.
- On any terminal failure after target resolution, follow the shared
Terminal failure delivery section with
--mode full. Its top-level
COMMENT review replaces ordinary Step 7; do not invoke post_review.py
afterward.
Step 7 — submit the review.
python3 agent/skills/_shared/post_review.py < /tmp/repo-review-full-findings.json
post_review.py:
- Anchors each finding to its target line if that line falls inside a diff hunk.
- Falls back to the nearest in-hunk line on the same file with a cross-ref note prepended to the body.
- Rolls orphan findings (file outside the diff) into the review body under
## Findings on files outside the diff.
- Submits with the payload's
event (REQUEST_CHANGES / COMMENT / APPROVE). On a self-review 422 (the bot is the PR author) it retries once as event=COMMENT with an event-aware intent banner prepended — ⛔ N BLOCKING finding(s) — changes required for a REQUEST_CHANGES downgrade, ✅ No findings for an APPROVE downgrade — so the original intent stays visible. Threads stay unresolved.
Return value. Reply with ONLY the helper's html_url and a one-line
summary: Posted N inline findings: B BLOCK + W WARN across K skills (+ X NIT in the body); PR-health flags: <M merge-conflict / F failing-check>. If PR-health found nothing,
drop the trailing ; PR-health flags: ... clause. This text is the main
agent's deliverable — return data, not narration.
When to use the no-comments sibling instead
/repo-review-full-no-comments runs the same analysis pipeline through its own
orchestrator agent (delegating Steps 3–6 to the shared file; it owns Steps 1–2
itself so it can also run against a local branch with no PR open) but prints the
aggregated report to the user instead of posting inline comments. Reach for it
when you want a local dry-run of the review (no GitHub side effects), as a
pre-PR gate before the branch is pushed, when you're iterating on a PR before
it's ready for reviewers, or when posting publicly is undesirable for any
reason.