with one click
review-rounds
// Automatically iterate parallel review, respond, and resolve across multiple rounds until no actionable findings remain
// Automatically iterate parallel review, respond, and resolve across multiple rounds until no actionable findings remain
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | review-rounds |
| description | Automatically iterate parallel review, respond, and resolve across multiple rounds until no actionable findings remain |
| allowed-tools | Agent, Read, Write, Edit, Glob, Grep, Bash(grep:*), Bash(ls:*), Bash(find:*), Bash(git log:*), Bash(git diff:*), Bash(git show:*), Bash(git status:*), Bash(git branch:*), Bash(mkdir:*), Bash(cmake:*), Bash(make:*), Bash(clang-format:*), Bash(cmake-format:*), Bash(.claude/scripts/rm-tmp.sh:*) |
You act as the review round orchestrator, automatically iterating a flow equivalent to parallel-review / review-respond / review-resolve across multiple rounds to comprehensively discover and fix significant issues. You do not take on the role of a reviewer or fix author yourself; everything is delegated to sub-agents. See "Sub-agent usage rules" for detailed responsibility allocation.
The user may optionally specify an output base path. When the argument is $ARGUMENTS, interpret it as the output base path (and options). When no output base path is specified, use the project root's .claude/tmp/ as the default.
--confirm (default OFF) โ Wait for user confirmation immediately after estimate results are gathered (before proceeding to fix). This flag also applies to the review-respond leader role taken on by review-rounds and overrides review-respond's standalone default (confirm-on).--confirm-round (default OFF) โ After review-resolve, if unresolved findings remain, wait for user confirmation before proceeding to the next round.--commit (default OFF) โ Perform a git commit after each finding is fixed (the orchestrator performs an aggregated commit).--max-rounds N (default 5, range 1โ10) โ Change the maximum number of rounds for the outer loop.--base {branch} (default main or master) โ Specify the base branch (passed to parallel-review).{base-path}/{branch-dir}/review-round{N}.mdgit branch --show-current./) becomes the directory hierarchy.{branch-name}_1, {branch-name}_2, ... to the suffix (smallest non-existing number).
feat/add-replay, first run โ {base-path}/feat/add-replay/review-round1.md, re-run โ {base-path}/feat/add-replay_1/review-round1.md.claude/tmp/. Create the directory as needed.Write the review document in the user's chat language.
.claude/rules/sub-agent.md.templates/*.md, with template_id in the frontmatter). When launching a sub-agent via the Agent tool, the orchestrator passes a launch prompt that says "Read the template and follow its instructions," with variable values and round-specific overrides filled in. The sub-agent includes template_id in its return value. The orchestrator verifies that the returned template_id matches the UUID specified in each Step (described below, hard-coded per Step), and relaunches the sub-agent if it does not match. The UUIDs of the sub-agents launched in Steps 2.1 / 2.2 / 2.3 are documented in the parallel-review / review-respond / review-resolve SKILLs.subagent_type="review-helper" (model: sonnet is already specified in review-helper's agent definition). Targets: parallel-review ยง Step 3 aggregator Sub / review-respond ยง Step 2 estimate aggregator Sub / review-respond ยง Step 4 format & build verification Sub / review-respond ยง Step 5 aggregator Sub / review-resolve ยง Step 1 analysis Sub / review-resolve ยง Step 3 aggregator Sub / review-rounds ยง Step 3 final report aggregator Sub. For all other sub-agents, specify a specialist (e.g., cpp-sensei) via subagent_type, or use subagent_type="general-purpose" as for triage. Do not specify model="..." from the SKILL (the model follows each agent definition's frontmatter).For the launch prompt completeness convention, see .claude/rules/sub-agent.md ยง Launch prompt completeness.
Round 1 start
โโ 2.1 parallel-review (orchestrator)
โ [specialist reviewers] launched in parallel โ each Writes to reviews/{name}.md
โ [aggregator Sub] Reads each reviews/{name}.md โ generates round1.md (no triage yet)
โโ 2.2 review-respond (orchestrator)
โ [triage Sub] Reads round1.md โ generates triage.json (includes by_assignee)
โ โณ if Will Fix is 0, end the round
โ [estimate Subs (per-assignee, parallel)] batch-estimate assigned ids โ estimates/{id}.json
โ [estimate aggregator Sub] estimates/*.json โ estimate-summary.md
โ โณ if both Maintain and Alternative are 0, skip fix and build verification
โ [fix Subs (per-assignee, parallel)] fix Maintain, attach FIXME for Alternative โ statuses/{id}.json
โ [format & build verification Sub] โ [build-fix specialist Sub] loop (max 5, leader-controlled)
โ [aggregator Sub] triage.json + estimates/*.json + statuses/*.json โ events.jsonl โ render-review.py
โโ 2.3 review-resolve
โ [analysis Sub] Reads round1.md โ by_assignee return value (no file output)
โ [verification Subs] per-specialist parallel, batch-verifies assigned findings โ verifications/{id}.json
โ [aggregator Sub] verifications/*.json โ events.jsonl โ render-review.py
โโ 2.4 feedback re-fix loop (max 3)
โ [triage Sub] โ [estimate Subs (per-assignee)] โ [fix Subs (per-assignee)]
โ โ [format & build verification Sub] โ [build-fix specialist Sub] loop
โ โ [aggregator Sub] โ [verification Subs] โ [aggregator Sub]
โโ 2.5 round end โ judge condition for proceeding to the next round
Round 2 start (do not pass the previous round's review document)
โโ ...
Final step
โโ [final report aggregator Sub] all round{N}.md + template โ final-report.md
While the round counter is at most --max-rounds, repeat the following.
The orchestrator (you) directly takes on the "review leader" role of parallel-review. Follow the procedure, templates, and format in .claude/skills/parallel-review/SKILL.md.
Procedure:
## Round {N} โ Step 1: Parallel Reviewline_count / recommended_reviewers) in context.name in recommended_reviewers in parallel via Agent(subagent_type=name, prompt=...) (the agent definition's persona and viewpoint are auto-loaded). Each reviewer Writes findings to {tmp_dir}/reviews/{name}.md; return value is {path, severity counts} only.{doc_path, findings_total, severity_counts}) in context.{tmp_dir}.Round-specific overrides (apply after following the template's instructions):
C-1, M-1, etc.).The orchestrator (you) directly takes on the "review respond leader" role of review-respond. Follow the procedure and templates in .claude/skills/review-respond/SKILL.md.
Input document: {this round's file path}
summary_line received from the aggregator sub-agent to the user. Read the markdown already generated by the aggregator sub-agent for the detail table as needed.Round-specific overrides (apply after following the template's instructions):
## Round {N} โ Step 2: Triage## Round {N} โ Step 2.5: Estimate## Round {N} โ Step 3: Review Respond (Fix & Verify)previous_round_doc_paths variable ((none) in Round 1, the doc_paths of Round 1..N-1 in Round N). For decision behavior, see the Won't Fix guideline in .claude/skills/review-respond/templates/triage.md.FIXME: / TODO: in the review body or target file.--confirm is enabled, Read the aggregator sub-agent's summary_path, present it to the user, and wait for confirmation.The orchestrator (you) directly takes on the "review verification leader" role of review-resolve. Follow the procedure and templates in .claude/skills/review-resolve/SKILL.md.
Input document: {this round's file path}
summary_line received from the aggregator sub-agent to the user.Procedure:
## Round {N} โ Step 4: Review Resolve{events_path, summary_path, summary_line, resolved_count, feedback_count, unresolved_count}) in context. Do not read the verification body.From the Step 2.3 return value (feedback_count received from the aggregator sub-agent), determine whether there are findings that "require feedback." There is no need to Read the review document body directly.
feedback_count == 0: end the round (proceed to 2.5).feedback_count > 0: enter the re-fix loop (max 3).Re-fix loop (max 3):
Each attempt runs the review-respond triage-through-aggregator flow once, then re-runs the review-resolve verification-through-aggregator at the end. In each sub-agent's launch prompt, add an "Feedback finding priority" additional constraint to the "Round-specific overrides" section.
Display ## Round {N} โ Step 4.1: Feedback Triage (attempt {M}/3). Re-run review-respond ยง Step 1. Add to "Round-specific overrides" of the triage launch prompt: Triage findings whose stage is "feedback" with priority (current_meta.verification has Feedback details).
Display ## Round {N} โ Step 4.2: Feedback Estimate (attempt {M}/3). Re-run review-respond ยง Step 2. Add to "Round-specific overrides" of the estimate launch prompt: Estimate based on the Feedback content in current_meta.verification. Consider Downgrade if cost grows. If all are Downgrade, skip step 3 and proceed to step 4.
Display ## Round {N} โ Step 4.3: Feedback Fix (attempt {M}/3). Re-run review-respond ยง Steps 3โ5. Add to "Round-specific overrides" of the fix launch prompt: Re-fix based on the Feedback content in current_meta.verification.
Display ## Round {N} โ Step 4.4: Feedback Verify (attempt {M}/3). Re-run review-resolve in the same manner as Step 2.3.
If feedback remains, return to 1. If not resolved within 3 attempts, end the round (remaining ๐ฌ Feedback are counted as "unresolved" in 2.5).
When --confirm-round is enabled and unresolved findings remain, wait for user confirmation before proceeding to the next round.
Record the round's results. Each counter is obtained from sub-agent return values (do not Read the review document body to count):
will_fix_countmaintain_count / alternative_count / downgrade_countfixed_count (sum of Maintain normal fixes + Alternative FIXME attachments)feedback_count after the final attempt of Step 2.4 (Will Fix but not resolved in this round)resolved_countCondition for proceeding to the next round: only when all of the following are met, increment the round counter and return to Step 2.1:
--max-rounds.If not met, proceed to final report generation.
Final report path: {base-path}/{branch-dir}/final-report.md
Launch procedure:
Agent(subagent_type="review-helper", prompt=...). The task-specific instructions are stored in the external template templates/final-report-compile.md. Example launch prompt:As your first action, you MUST Read `.claude/skills/review-rounds/templates/final-report-compile.md`. Do not perform any other judgment, action, or tool call before the Read completes. After reading, follow its instructions.
Variables (substitute into the template's {{...}} placeholders):
- round_doc_paths: Round 1 โ {round1_doc_path}, Round 2 โ {round2_doc_path}, ...
- round_stats: Round 1: findings=N, will_fix=N, maintain=N, alternative=N, downgrade=N, fixed=N, wontfix=N, feedback_attempts=N, unresolved=N, code_changed=<bool>, ...
- template_path: {template_path}
- report_path: {report_path}
- language: user's chat language
Round-specific overrides (apply after following the template's instructions):
- (none)
Include `template_id` (Read from the template's frontmatter) in the return value.
{report_path, template_id}). Verify that template_id matches 4f8a2d1c-9b35-4e67-a2c1-8b5d3f9e7a16. If it does not match, relaunch the sub-agent. Hold only report_path in context.Template: .claude/skills/review-rounds/templates/final-report.md (the final report aggregator Sub Reads it to grasp the skeleton. The leader fills this path into the Sub prompt's {template_path}).
Report the final report path to the user, and concisely convey key statistics (total findings, resolved count, unresolved count).