Orchestrates a GitHub PR review loop by delegating triage and implementation to dedicated sub-agents, then repeating until actionable review items are cleared. Use when the user says “address PR review”, “triage review comments”, or “iterate until review is clean”.
Orchestrates a GitHub PR review loop by delegating triage and implementation to dedicated sub-agents, then repeating until actionable review items are cleared. Use when the user says “address PR review”, “triage review comments”, or “iterate until review is clean”.
argument-hint
[triage|implement|iterate] [pr-url] [output-dir]
GitHub Review Iteration
Run an iterative PR review loop: fetch state → render/summarize → triage actions → implement (code + Done + resolve) → re-fetch until the PR has no remaining actionable items.
This skill is an orchestrator. It delegates:
triage to ../review-triage-phase/agents/review-triager.md
implementation to ../review-implement-phase/agents/review-implementer.md
The orchestrator owns sequencing, handoff, and loop control. It does not perform triage or implementation directly when delegation is available.
Locating sibling skills and scripts
This skill depends on three sibling skills that live in the same parent directory:
../review-fetch-phase/ — fetches and renders PR review state
../review-triage-phase/ — triages review threads into an action plan
../review-implement-phase/ — implements triaged actions and resolves threads
All script paths in this document are relative to this skill's directory. Use ../ to reach sibling skills. Do not search the workspace/repo for these files — they are part of the skills installation, not the project being reviewed.
Usage
This skill supports subcommands:
triage: fetch + triage into structured actions
implement: execute the triaged actions and update status
iterate: loop triage → implement until clear (default)
review-actions.json is the contract between the triager and implementer.
Minimum v2 shape:
{"version":2,"pr":{"url":"https://github.com/OWNER/REPO/pull/123","nodeId":"PR_kw..."},"reviewState":{"path":"review-state.json","fetchedAt":"...","version":2},"actions":[{"actionId":"A-001","target":{"kind":"review_thread","nodeId":"PRRT_xxx","url":"..."},"decision":"will_address","summary":"One-line description of what will be done","rationale":null,"targetFiles":["path/to/file.ts"],"acceptance":"How to tell it's done","status":"pending","done":null}]}
Rules:
Use node ids only for targets (target.nodeId).
Preserve actions[] order intentionally (do not reorder).
Implementer updates status (pending|in_progress|done) and done records in place.
Compound targets: A single pull_request_review body may contain multiple findings (especially from automated reviewers like CodeRabbit which bundle "outside diff range" comments into the review body). The triager must decompose these into sub-actions (e.g., A02a, A02b). Never blanket-dismiss review bodies without reading their content.
Procedure
triage
Delegate to triage sub-agent
Invoke the review triager agent at ../review-triage-phase/agents/review-triager.md and pass:
PR URL
output paths:
<output-dir>/review-state.md
<output-dir>/review-state.json
<output-dir>/review-actions.md
<output-dir>/review-actions.json
optional scope constraints
Require triage outputs
The triager must:
fetch review state (via ../review-fetch-phase/scripts/fetch-review-state.mjs)
triage review threads into review-actions.json decisions/status
write/update review-actions.md and review-actions.json
Validate handoff contract
Before returning from triage, verify that <output-dir>/review-actions.json exists and is valid for implementer consumption (version, PR metadata, and actions[] with target.kind + target.nodeId).
implement
Delegate to implementation sub-agent
Invoke the review implementer agent at ../review-implement-phase/agents/review-implementer.md and pass:
PR URL
<output-dir>/review-actions.md
<output-dir>/review-actions.json
optional scope constraints
Require implementation outputs
The implementer must:
work through pending will_address actions
make focused, explicit-staging commits
run smallest relevant checks per action
reply "On it" when starting, then "Done" and resolve the thread when complete