Codex Code Review
Iterative code review via Codex CLI on uncommitted changes. Codex reads the plan and runs git status -s / git diff HEAD to inspect the change set.
Review output stays in state/<key>.review.txt — not docs/3-code-review/. Promotion to docs/3-code-review/CR_wa_vx.y.z.md happens after convergence, not per-turn.
State persisted under .claude/skills/codex-code-review/state/<sanitized-target>.{thread,review.txt,events.ndjson}. Invoke this skill's own wrapper scripts under .claude/skills/codex-code-review/scripts/ — they pin the correct STATE_DIR and delegate to the shared codex-plan-review implementation, so there is no export to remember (a forgotten export would silently operate on the plan-review thread for the same target).
Arguments
<target>— auto: start if no thread, resume if exists. Usually a plan path (docs/1-plans/F_*.plan.md) or a free-form label for unplanned work.reset <target>— drop state, next call starts fresh.show <target>— display latest review without calling Codex.
Execution
Parse
$ARGUMENTS: extract action (reset/show/auto) and target.Auto — try
start.shfirst (exit code 2 = thread exists -> useresume.sh):- Start:
bash .claude/skills/codex-code-review/scripts/start.sh --prompt-file .claude/skills/codex-code-review/prompts/start.tpl <target> [extra] - Resume:
bash .claude/skills/codex-code-review/scripts/resume.sh --prompt-file .claude/skills/codex-code-review/prompts/resume.tpl <target> [extra]
- Start:
Reset:
bash .claude/skills/codex-code-review/scripts/reset.sh <target>Show:
bash .claude/skills/codex-code-review/scripts/show.sh <target>Parse trailing tag:
APPROVED— propose post-convergence steps.REQUEST_CHANGES— surface review verbatim, engage critically (read actual code atfile:line, fix legitimate ones, push back on incorrect ones), then resume.NEEDS_REWORK— surface to user before mass-editing.
Resume after addressing findings for incremental re-review.
Diff Visibility
Codex uses git status -s / git diff HEAD in read-only sandbox. If those fail, pass diff inline: DIFF="$(git diff --stat HEAD; echo '---'; git diff HEAD)" as extra context.
After Convergence
- Promote
state/<key>.review.txttodocs/3-code-review/CR_wa_vx.y.z.mdusing.claude/skills/TRIP-review/cr-template.md. - Continue with
TRIP-3-release.
Notes
- Run Codex calls in a background shell. Invoke
start.sh/resume.shvia the Bash tool withrun_in_background: true— never as a foreground/inline command. Codex runs at xhigh effort routinely outlast the foreground command timeout; the background task notifies on completion, then read its output.reset.sh/show.share instant and fine in the foreground. - Set
CODEX_TIMEOUT=1800(30 min) when invokingstart.sh/resume.sh— a generous circuit breaker against hung runs, not a performance target; bump higher for unusually large diffs rather than risk killing a legitimate run. Script default is0= no timeout. On expiry the script fails through the normal error path with a "timed out" message in the stderr tail. Requires GNUtimeout/gtimeout(macOS:brew install coreutils); warns and runs unbounded if neither is present. - Model/effort/tier defaults live in
codex-plan-review/scripts/_common.sh(implementation → gpt-5.6-luna at high effort on the fast service tier, plan/code review → gpt-5.6-sol at xhigh on standard routing; derived fromSTATE_DIR). Adjust that one file to your preferred models, or override per run viaCODEX_MODEL/CODEX_EFFORT/CODEX_TIERenv vars; the scripts echo the effective values. --sandbox read-only. Safe to invoke autonomously.- Thread IDs persisted per-target (no
--last). Concurrent reviews don't collide. - Separate
STATE_DIRfromcodex-plan-review— same key is fine. - Extra context ->
{{EXTRA_PROMPT}}. Keep short.
Loop Shape
turn 1: start.sh -> REQUEST_CHANGES (Critical: A, Major: B C)
address A B C
turn 2: resume.sh -> REQUEST_CHANGES (A B addressed, Minor: C partial, Suggestion: D)
address C, optionally D
turn 3: resume.sh -> APPROVED -> promote, continue with TRIP-3-release