review-looplisted
Install: claude install-skill alexio777/review-loop
# Review Loop
Run **Codex review in a loop** — **review → fix → review** — until the reviewer
says the tree is clean, or until you hit the iteration ceiling. Not a single
review pass: the goal is a state where a fresh Codex run finds nothing.
**Requires:** [openai-codex](https://github.com/openai/codex) Claude Code plugin
(`codex-companion` review), `git`, `node`, `jq`.
## Resolve the wrapper (always)
Never call bare `codex:review` / `codex-companion … review` in this skill.
Bare review on a clean default branch compares `main...HEAD` → **empty range** →
empty output that looks like “clean”. That is a **false convergence**.
Always go through the bundled wrapper. Discover it (first hit wins):
```bash
for d in \
"${REVIEW_LOOP_ROOT:-}" \
".agents/skills/review-loop" \
".claude/skills/review-loop" \
"${HOME}/.agents/skills/review-loop" \
"${HOME}/.claude/skills/review-loop"; do
[[ -n "$d" && -x "$d/tools/codex-review.sh" ]] || continue
REVIEW="$d/tools/codex-review.sh"
break
done
[[ -n "${REVIEW:-}" ]] || { echo "review-loop: wrapper not found; reinstall skill" >&2; exit 1; }
```
Why the wrapper exists: [references/empty-target.md](references/empty-target.md).
## Arguments
First user token:
| Input | Behavior |
|-------|----------|
| *(empty)* | Cap **5** iterations, review+fix (default) |
| number `N` | Cap **N** iterations |
| `--review-only` | Re-run review without applying fixes |
`MAX_NO_PROGRESS=2` — stop after this many consecutive iterations wi