skill-packs/codex-review/skills/codex-plan-review/SKILL.md
Review/debate plans before implementation between Claude Code and Codex CLI. Can run in plan mode — debates the plan and edits the plan file to fix accepted issues.
npx skillsauth add lploc94/codex_skill codex-plan-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Adversarially review a plan before implementation starts.
After creating a plan, before implementing code.
plan.md) with headings.RUNNER="{{RUNNER_PATH}}" SKILLS_DIR="{{SKILLS_DIR}}" json_esc() { printf '%s' "$1" | node -e 'let d="";process.stdin.on("data",c=>d+=c);process.stdin.on("end",()=>process.stdout.write(JSON.stringify(d)))'; }
printf '%s' "$PROMPT" | node "$RUNNER" ... -- NEVER echo. JSON via heredoc.init output must start with CODEX_SESSION:. start/resume must return valid JSON. CODEX_NOT_FOUND->tell user install codex.status === "completed" means Codex's turn is done -- NOT that the debate is over. MUST check Loop Decision table.failed->retry once (re-poll 15s). timeout->report partial, suggest lower effort. stalled+recoverable->stop->recovery resume->poll; not recoverable->report partial. Cleanup sequencing: finalize+stop ONLY after recovery resolves.finalize + stop, even on failure/timeout.Read references/protocol.mdPlan-path detection: ls plan.md PLAN.md, find ./docs -maxdepth 3 -name "*plan*.md".
Auto-pick if 1; ask if multiple/none. Announce defaults, block only if plan not found.
Inputs: plan path (abs .md), user request, session context, acceptance criteria, effort (default high).
Read plan -> verify .md + has headings. Derive acceptance criteria from "Goals"/"Outcomes" if not provided.
INIT_OUTPUT=$(node "$RUNNER" init --skill-name codex-plan-review --working-dir "$PWD")
SESSION_DIR=${INIT_OUTPUT#CODEX_SESSION:}
Render template=round1, placeholders: PLAN_PATH, USER_REQUEST, SESSION_CONTEXT, ACCEPTANCE_CRITERIA.
Start: printf '%s' "$PROMPT" | node "$RUNNER" start "$SESSION_DIR" --effort "$EFFORT"
Poll: node "$RUNNER" poll "$SESSION_DIR". Report specific activities.
Parse review.blocks[] (id, title, severity, category, problem, suggested_fix). Verdict in review.verdict.status.
Check stalemate FIRST, then verdict (-> references/protocol.md § Debate Loop Protocol):
| # | Condition | Action | |---|-----------|--------| | 1 | convergence.stalemate === true | EXIT -> step 5 (stalemate). Do NOT render rebuttal. | | 2 | verdict === "APPROVE" | EXIT -> step 5 | | 3 | verdict === "REVISE" or open issues | CONTINUE -> sub-steps below |
If CONTINUE — all 4 sub-steps are MANDATORY, even if you fix every issue:
review.blocks[] issue: ACCEPT (valid) or DISPUTE (invalid with reasoning).rebuttal. Placeholders: PLAN_PATH, SESSION_CONTEXT, FIXED_ITEMS, DISPUTED_ITEMS. If all issues fixed, DISPUTED_ITEMS = "None — all issues addressed". Rebuttal is NEVER skipped.printf '%s' "$PROMPT" | node "$RUNNER" resume "$SESSION_DIR" --effort "$EFFORT". Back to Poll. Codex MUST re-verify fixes and may find new issues.APPROVE -> done. Stalemate -> present deadlocked issues, ask user. Report: Rounds, Verdict, Issues Found/Fixed/Disputed, edits made, risks, next steps.
finalize + stop. Always run. (-> references/protocol.md for error handling)
SKILL_START, POLL_WAITING, CODEX_RETURNED, APPLY_FIX, SEND_REBUTTAL, LATE_ROUND, APPROVE_VICTORY, STALEMATE_DRAW, FINAL_SUMMARY
development
Peer debate between Claude Code and Codex on any technical question. Both think independently, challenge each other, converge to consensus or explicit disagreement.
development
Security-focused code review using OWASP Top 10 and CWE patterns. Detects vulnerabilities through adversarial debate.
development
Peer debate between Claude Code and Codex on PR quality and merge readiness. No code modifications.
development
Parallel independent review by 4 Claude agents + Codex, followed by merge, debate, and consensus report.