besimple-oss/broccoli/code-review-loop
- community
Checking that the SKILL.md file is still in the repository.
Iterative review+fix loop for BASE_SHA..HEAD: generate findings, apply accepted fixes, run checks, commit, and re-review up to 3 iterations or until clean.
Install
npx vskill@latest install besimple-oss/broccoli/code-review-loopSKILL.md
Code Review Loop (up to 3 iterations)
Input: a git base SHA (or other explicit range) to review against (for example: <sha> or HEAD~1).
Preconditions
- Confirm you are in the intended repo:
git rev-parse --show-toplevel - Ensure you have a base commit SHA (prefer the commit from before the change set).
- If none was provided and you cannot choose confidently, ask the user for the correct base SHA.
- Start from a clean working tree (recommended):
git status --porcelainshould be empty.- If it’s not empty, either commit/stash first or ask the user what to do (don’t mix unrelated changes into review fixes).
- Ensure both CLIs are available (
codexandclaude) because reviewer/responder must be different vendors.
Expected runtime
Typically runs 15–45 minutes, but allow at least 120 minutes.
Do not interrupt/restart the subagent if it looks stuck. The loop script owns stuck/timeout handling and will exit on its own when it completes or when --timeout is reached. Prefer watching the periodic heartbeat output (--heartbeat-seconds) instead of tailing logs.
Why Claude sometimes looked “stuck”
Claude Code print mode can be silent in --output-format text until it finishes (including during tool work). This repo defaults Claude subprocesses to --output-format stream-json --include-partial-messages so the wrapper sees measurable progress and inactivity timeouts mainly trigger on true hangs.
Loop
Run the review loop script:
Options:
--max-iterations N(default: 3)--cli codex|claude(pin responder provider; reviewer is selected from provider pool and always differs from responder)--provider-pool codex,claude(provider pool for both subprocesses; reviewer/responder vendors are always distinct)--codex-model-pool ...and--claude-model-pool ...(random model selection; supportsmodel@effort)--progress-log <path>and--heartbeat-seconds N--artifacts-dir <path>(optional; stores reviewer outputs for responders to read)--timeout N(per-subprocess timeout in seconds; default: 7200)--review-only(responder does not apply fixes/commit)
Claude automation knobs (env vars; defaults shown):
PROMPT_TEMPLATES_CLAUDE_OUTPUT_FORMAT=stream-json(text|json|stream-json)PROMPT_TEMPLATES_CLAUDE_MIN_VERSION=2.1.33(fail fast if installed Claude Code is older)PROMPT_TEMPLATES_CLAUDE_STREAM_LOG_MAX_BYTES=10485760(per invocation; set0for unlimited)PROMPT_TEMPLATES_CLAUDE_INACTIVITY_TIMEOUT_SECONDS=180(set0to disable; intext/jsonmode it is disabled unless explicitly set)PROMPT_TEMPLATES_CLAUDE_INACTIVITY_MIN_RUNTIME_SECONDS=30PROMPT_TEMPLATES_CLAUDE_PROMPT_BUDGET_BYTES=0(disabled by default; set >0 to enforce)
Behavior:
- Each iteration runs in two fresh subprocesses:
- Reviewer subprocess: selected from the provider pool and generates review findings from
BASE_SHA..HEAD(it fetches the diff locally viagit diff). - Responder subprocess: agrees/rejects findings and applies only agreed fixes (it fetches the diff locally via
git diffand reads reviewer output from the artifacts dir). - The script enforces that reviewer and responder always run on different vendors (codex vs claude).
- Claude subprocesses run in a native PTY (when available) to avoid non-termination/hang modes that require a TTY.
- Claude subprocesses have an inactivity timeout; on classifiable Claude automation failures the script retries once.
- If
reviewer=claudefails after retry and responder is not pinned tocodex, the script performs a role-swap fallback and re-runs the iteration withreviewer=codex,responder=claude(it prints aCLAUDE_FALLBACK: ...line when this happens). - Reviewer subprocesses stop early once a valid reviewer JSON object has been emitted (Codex) or once Claude emits a terminal
type=resultevent (stream-json). - When the responder subprocess runs on Codex, it is invoked with
--sandbox danger-full-accessand-a neverso it can run git commands (including committing fixes) without getting stuck on approvals or.gitlock writes. - In non-
--review-onlymode, the script enforces commit hygiene per iteration: if responder leaves working-tree fix changes, it auto-commits them before the next iteration; if responder accepts findings but produces no committed changes, the loop stops. - The script stops early when reviewer reports no findings, or when the responder agrees with none of the feedback.
- After completion, it emits a required
REVIEW_PROGRESSlog summary including: - total iterations completed;
- which iteration (if any) terminated early due to no feedback or no agreement.
- Default model pools:
- Codex:
gpt-5.2@high - Claude:
claude-opus-4-6[1m]@high
Troubleshooting:
- Look for
CLAUDE_RETRY:/CLAUDE_FALLBACK:lines on stderr to confirm retry/fallback behavior. - Heartbeats include
idle_seconds=...and byte counters; PTY mode usespty_bytes=.... --progress-logmay include full tool outputs (diffs, file contents). Treat it as sensitive; stream-json logs are truncated by default viaPROMPT_TEMPLATES_CLAUDE_STREAM_LOG_MAX_BYTES.- If you see
CLAUDE_FALLBACK_UNAVAILABLE: ... responder is pinned to codex, rerun with--cli claudeto allow the role-swap fallback.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingprompt-templates/skills/code-review-loop/SKILL.md
Popularity
- Repository stars
- 285
- Repository forks
- 11
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/besimple-oss/broccoli/code-review-loop)