From 9b05b4ab82923ef0efb2e5e150c374d1b679a823 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Mon, 30 Mar 2026 23:42:22 +0300 Subject: [PATCH] =?UTF-8?q?chore(skills):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=81=D0=BA=D0=B8=D0=BB=D0=BB=20codex-rev?= =?UTF-8?q?iew?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - нужен инструмент для итеративного ревью планов реализации через OpenAI Codex CLI. - Что: - добавлен SKILL.md для скилла codex-review: цикл до 5 раундов, Claude отправляет план → Codex рецензирует → Claude правит → повторяет до VERDICT: APPROVED. - Проверка: - вызвать `/codex-review` во время или после plan mode. --- agents/.agents/skills/codex-review/SKILL.md | 174 ++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 agents/.agents/skills/codex-review/SKILL.md diff --git a/agents/.agents/skills/codex-review/SKILL.md b/agents/.agents/skills/codex-review/SKILL.md new file mode 100644 index 0000000..907670f --- /dev/null +++ b/agents/.agents/skills/codex-review/SKILL.md @@ -0,0 +1,174 @@ +--- +name: codex-review +description: Send the current plan to OpenAI Codex CLI for iterative review. Claude and Codex go back-and-forth until Codex approves the plan. +user_invocable: true +--- + +# Codex Plan Review (Iterative) + +Send the current implementation plan to OpenAI Codex for review. Claude revises the plan based on Codex's feedback and re-submits until Codex approves. Max 5 rounds. + +--- + +## When to Invoke + +- When the user runs `/codex-review` during or after plan mode +- When the user wants a second opinion on a plan from a different model + +## Agent Instructions + +When invoked, perform the following iterative review loop: + +### Step 1: Generate Session ID + +Generate a unique ID to avoid conflicts with other concurrent Claude Code sessions: + +```bash +REVIEW_ID=$(uuidgen | tr '[:upper:]' '[:lower:]' | head -c 8) +``` + +Use this for all temp file paths: `/tmp/claude-plan-${REVIEW_ID}.md` and `/tmp/codex-review-${REVIEW_ID}.md`. + +### Step 2: Capture the Plan + +Write the current plan to the session-scoped temporary file. The plan is whatever implementation plan exists in the current conversation context (from plan mode, or a plan discussed in chat). + +1. Write the full plan content to `/tmp/claude-plan-${REVIEW_ID}.md` +2. If there is no plan in the current context, ask the user what they want reviewed + +### Step 3: Initial Review (Round 1) + +Run Codex CLI in non-interactive mode to review the plan: + +```bash +codex exec \ + -m gpt-5.4 \ + -c model_reasoning_effort=high \ + -s read-only \ + -o /tmp/codex-review-${REVIEW_ID}.md \ + "Review the implementation plan in /tmp/claude-plan-${REVIEW_ID}.md. Focus on: +1. Correctness - Will this plan achieve the stated goals? +2. Risks - What could go wrong? Edge cases? Data loss? +3. Missing steps - Is anything forgotten? +4. Alternatives - Is there a simpler or better approach? +5. Security - Any security concerns? + +Be specific and actionable. If the plan is solid and ready to implement, end your review with exactly: VERDICT: APPROVED + +If changes are needed, end with exactly: VERDICT: REVISE" +``` + +**Capture the Codex session ID** from the output line that says `session id: `. Store this as `CODEX_SESSION_ID`. You MUST use this exact ID to resume in subsequent rounds (do NOT use `--last`, which would grab the wrong session if multiple reviews are running concurrently). + +**Notes:** +- Use `-m gpt-5.4` with `-c model_reasoning_effort=high` as defaults. If the user specifies a different model or reasoning level (e.g., `/codex-review gpt-5.4` or `/codex-review xhigh`), override accordingly. +- Use `-s read-only` so Codex can read the codebase for context but cannot modify anything. +- Use `-o` to capture the output to a file for reliable reading. + +### Step 4: Read Review & Check Verdict + +1. Read `/tmp/codex-review-${REVIEW_ID}.md` +2. Present Codex's review to the user: + +``` +## Codex Review — Round N (model: gpt-5.4) + +[Codex's feedback here] +``` + +3. Check the verdict: + - If **VERDICT: APPROVED** → go to Step 7 (Done) + - If **VERDICT: REVISE** → go to Step 5 (Revise & Re-submit) + - If no clear verdict but feedback is all positive / no actionable items → treat as approved + - If max rounds (5) reached → go to Step 7 with a note that max rounds hit + +### Step 5: Revise the Plan + +Based on Codex's feedback: + +1. **Revise the plan** — address each issue Codex raised. Update the plan content in the conversation context and rewrite `/tmp/claude-plan-${REVIEW_ID}.md` with the revised version. +2. **Briefly summarize** what you changed for the user: + +``` +### Revisions (Round N) +- [What was changed and why, one bullet per Codex issue addressed] +``` + +3. Inform the user what's happening: "Sending revised plan back to Codex for re-review..." + +### Step 6: Re-submit to Codex (Rounds 2-5) + +Resume the existing Codex session so it has full context of the prior review: + +```bash +codex exec resume ${CODEX_SESSION_ID} \ + "I've revised the plan based on your feedback. The updated plan is in /tmp/claude-plan-${REVIEW_ID}.md. + +Here's what I changed: +[List the specific changes made] + +Please re-review. If the plan is now solid and ready to implement, end with: VERDICT: APPROVED +If more changes are needed, end with: VERDICT: REVISE" 2>&1 | tail -80 +``` + +**Note:** `codex exec resume` does NOT support `-o` flag. Capture output from stdout instead (pipe through `tail` to skip startup lines). Read the Codex response directly from the command output. + +Then go back to **Step 4** (Read Review & Check Verdict). + +**Important:** If `resume ${CODEX_SESSION_ID}` fails (e.g., session expired), fall back to a fresh `codex exec` call with context about the prior rounds included in the prompt. + +### Step 7: Present Final Result + +Once approved (or max rounds reached): + +``` +## Codex Review — Final (model: gpt-5.4) + +**Status:** ✅ Approved after N round(s) + +[Final Codex feedback / approval message] + +--- +**The plan has been reviewed and approved by Codex. Ready for your approval to implement.** +``` + +If max rounds were reached without approval: + +``` +## Codex Review — Final (model: gpt-5.4) + +**Status:** ⚠️ Max rounds (5) reached — not fully approved + +**Remaining concerns:** +[List unresolved issues from last review] + +--- +**Codex still has concerns. Review the remaining items and decide whether to proceed or continue refining.** +``` + +### Step 8: Cleanup + +Remove the session-scoped temporary files: +```bash +rm -f /tmp/claude-plan-${REVIEW_ID}.md /tmp/codex-review-${REVIEW_ID}.md +``` + +## Loop Summary + +``` +Round 1: Claude sends plan → Codex reviews → REVISE? +Round 2: Claude revises → Codex re-reviews (resume session) → REVISE? +Round 3: Claude revises → Codex re-reviews (resume session) → APPROVED ✅ +``` + +Max 5 rounds. Each round preserves Codex's conversation context via session resume. + +## Rules + +- Claude **actively revises the plan** based on Codex feedback between rounds — this is NOT just passing messages, Claude should make real improvements +- Default model is `gpt-5.4`. Accept model override from the user's arguments (e.g., `/codex-review o4-mini`) +- Always use read-only sandbox mode — Codex should never write files +- Max 5 review rounds to prevent infinite loops +- Show the user each round's feedback and revisions so they can follow along +- If Codex CLI is not installed or fails, inform the user and suggest `npm install -g @openai/codex` +- If a revision contradicts the user's explicit requirements, skip that revision and note it for the user \ No newline at end of file