artwist-polyakov/polyakov-claude-skills/codex-review
Claude Code and agent skill by artwist-polyakov/polyakov-claude-skills
- community
Checking that the SKILL.md file is still in the repository.
Workflow кросс-агентного ревью с Codex. Triggers (RU): "кодекс ревью". Triggers (EN): "with codex review", "codex review workflow", "start codex review". ВАЖНО: при срабатывании триггера прочитай SKILL.md до любых других шагов.
Install
npx vskill@latest install artwist-polyakov/polyakov-claude-skills/codex-reviewSKILL.md
Codex Review Workflow
Кросс-агентное ревью: Claude реализует, Codex (GPT) ревьюит. Codex работает в той же директории и может самостоятельно смотреть код.
Расположение скриптов
Скрипты лежат в scripts/ рядом с этим SKILL.md. Определи полный путь:
- Этот файл: путь из которого ты прочитал SKILL.md
- Скрипты: замени
SKILL.mdнаscripts/codex-review.sh(иscripts/codex-state.sh)
Все команды ниже используют относительный scripts/ — подставь полный путь при вызове.
CRITICAL: Sandbox
Codex CLI использует macOS system API (SCDynamicStore), которые блокируются sandbox Claude Code. Все вызовы codex-review.sh и codex-state.sh ОБЯЗАНЫ выполняться с `dangerouslyDisableSandbox: true` в Bash tool. Без этого codex крашится с паникой Rust.
Workflow
1. Инициализация сессии
Создай сессию Codex с описанием задачи.
Сессия может быть также задана вручную в .codex-review/config.env: CODEX_SESSION_ID=sess_...
Если сессии нет (exit 3 — NO_SESSION), спроси пользователя:
- Есть ли уже живая сессия с Codex? → пусть впишет id в config.env
- Или создать новую через
init?
2. Ревью плана
Передай путь к файлу плана через --plan-file. НЕ вставляй содержимое плана в аргумент командной строки — скрипт сам читает файл и отдаёт содержимое Codex на stdin, поэтому размер плана ничем не ограничен.
С plan mode
Если используешь plan mode — отправь план на ревью перед ExitPlanMode:
- Написал план → CC сохраняет его в
~/.claude/plans/<slug>.md(автоматически) - Передай этот путь в
--plan-file:
``bash bash scripts/codex-review.sh plan --plan-file ~/.claude/plans/<slug>.md ``
CHANGES_REQUESTED→ скорректируй план в файле, отправь снова (см. «Accept or Argue»)APPROVED→ обработай## Non-blockingи## Pre-existing(см. «Разделы ответа ревьюера»), затем вызовиExitPlanModeдля одобрения пользователем
Таким образом план проходит два ревью: техническое (Codex) и бизнес-приоритетное (пользователь).
Без plan mode
Если план написан в отдельный файл внутри проекта:
Шаблон плана (рекомендуемая структура файла)
3. Реализация
Перед началом реализации обнови фазу:
Имплементируй по утвержденному плану.
4. Ревью кода
Опиши ЧТО сделал, КАКИЕ решения принимал. НЕ передавай git diff — Codex сам посмотрит.
Шаблон описания кода
Описание из файла
Если в описании есть обратные кавычки (обычное дело — так пишут имена функций и полей), $ или $(...) — передавай текст файлом, а не аргументом: шелл выполняет такие фрагменты внутри двойных кавычек, и до Codex доходит искажённый текст либо вызов падает с command not found.
Опция работает для init, plan и code; на plan она называет файл плана — то же, что --plan-file. Одновременно с --plan-file или с описанием в аргументе — ошибка. Файл читается до последнего байта: пустые строки в конце и отсутствие перевода строки в конце сохраняются.
Отправленный текст сохраняется рядом с логом попытки байт в байт: codex-<phase>-<N>.request.md для ревью, codex-init.request.md для сессии.
Название задачи для init
state.json хранит одну строку — название задачи, которое видно в STATUS.md и в сводке архива. Название даёшь ты сам:
Правила: одна строка, без двойных кавычек, обратных слешей и управляющих символов, без пробелов в начале и в конце, до 200 символов. Название сохраняется ровно таким, каким передано: скрипт ничего не переписывает и не подчищает, а отклоняет с объяснением. Пустое значение в --task-label — ошибка. Если описание задачи занимает больше одной строки, а --task-label не передан — запуск завершается ошибкой, ничего не создаётся: назови задачу сам, а не рассчитывай, что скрипт угадает. При однострочном описании название берётся из него.
Полный текст задачи в state.json не попадает — он целиком уходит в Codex и лежит в codex-init.request.md.
5. Управление состоянием
get возвращает значение поля как оно записано: пустое строковое поле — пустой строкой, счётчик — числом. Незнакомое имя поля — ошибка с кодом возврата 1. Особые имена: session_id (приоритет у config.env) и verdict (из verdict.txt).
set принимает поля session_id, phase, iteration, max_iterations, reviews_completed, last_review_status, last_review_timestamp, task_description. Неизвестное имя поля, нецелое значение счётчика и значение с кавычкой, обратным слэшем, переводом строки или табуляцией — ошибка с кодом возврата 1, состояние не меняется.
Для чтения файлов ревью (notes, STATUS.md и пр.) используй codex-state.sh dir — он вернёт абсолютный путь к каталогу текущей ветки.
Обработка exit-кодов
| Exit | Status | Действие | |
|---|---|---|---|
| 0 | APPROVED | Обработай ## Non-blocking и ## Pre-existing (см. «Разделы ответа ревьюера»), затем продолжай работу | |
| 0 | CHANGES_REQUESTED | Скорректируй и отправь снова (см. «Accept or Argue») | |
| 1 | ERROR | Сообщи об ошибке, предложи проверить session_id | |
| 2 | ESCALATE | Оповести пользователя, выведи краткое резюме, предложи варианты (см. «Обработка ESCALATE») | |
| 3 | NO_SESSION | Спроси: создать сессию через init? |
При ERROR круг не состоялся: итерация не израсходована, тот же запрос можно отправить повторно. Итерацию расходует прогон, который вернул вердикт, — даже если сам запуск завершился ошибкой после этого.
Обработка ESCALATE (exit 2)
Когда лимит итераций исчерпан:
- Получи путь:
STATE_DIR=$(bash scripts/codex-state.sh dir). Прочитай заметки ревью из$STATE_DIR/notes/(файлы{phase}-review-{N}.md) - Выведи пользователю краткое резюме:
- Какой этап (plan/code), сколько итераций прошло
- Ключевые замечания и статусы по каждой итерации (1-2 строки на итерацию)
- Используй
AskUserQuestionс тремя вариантами:
- Ещё одна итерация — разово расширить лимит на 1
- Снять лимит — убрать ограничение для этой сессии
- Прекратить ревью — вывести финальное резюме и остановиться
(Вариант «Свой вариант» добавляется автоматически)
Обработка ответа:
- «Ещё одна итерация» → повтори вызов
codex-review.sh {phase} "..." --max-iter $((текущий_лимит + 1)) - «Снять лимит» → повтори вызов
codex-review.sh {phase} "..." --max-iter 999 - «Прекратить ревью» → выведи финальное резюме и заверши процесс ревью
- Свой вариант → следуй инструкции пользователя
STATUS.md
Файл STATUS.md в state-каталоге ветки (путь: codex-state.sh dir) создаётся и обновляется автоматически скриптами. Не редактируй его вручную.
- Файл появляется при
initи обновляется при каждомplan/codeиcodex-state.sh set - Файл удаляется при финальном APPROVED на этапе
codeи приreset --full - Наличие файла = активное ревью, отсутствие = ревью не идёт
Verdict
Codex пишет свой вердикт в verdict.txt внутри state-каталога ветки (одно слово: APPROVED или CHANGES_REQUESTED). Для чтения вердикта используй `bash scripts/codex-state.sh get verdict` — helper возвращает APPROVED, CHANGES_REQUESTED или пустую строку (нет/невалидно). Файл очищается перед каждым запросом ревью, поэтому слово в нём написано текущим кругом. Вердикт берётся только отсюда: текст ответа на решение не влияет. Если после прогона в файле нет APPROVED или CHANGES_REQUESTED — круг не состоялся: скрипт возвращает ERROR (exit 1), итерация не расходуется, ответ ревьюера сохраняется рядом с логом попытки как codex-<фаза>-<N>.reply.md. Рядом с вердиктом лежит verdict.phase — одно слово, plan или code: фаза, которая его получила. Оба файла удаляются вместе.
Плагинный хук ExitPlanMode связывает вердикт с текущей Claude-сессией через current_session.txt в том же каталоге — verdict, пришедший из другой сессии, удаляется. Хук пропускает ExitPlanMode только при APPROVED с пометкой plan. Вердикт с пометкой code или без пометки хук удаляет и отвечает отказом с указанием запустить ревью плана.
Завершённый цикл
APPROVED на фазе code закрывает цикл: STATUS.md удаляется, а следующий plan или code завершается с exit 1 и ничего не меняет. Дальше — один из двух путей:
- Новая задача —
codex-review.sh init "<задача>": прежний цикл уходит в
архив, открывается новая сессия Codex.
- Доработки той же задачи —
codex-state.sh reset, затем обычный круг:
счёт кругов с первого, название задачи и session_id сохраняются.
Каждый круг печатает в stderr, к какой задаче он относится: Task: <название> в первом круге и Continuing task: <название> (previous round <время>), если по этой ветке уже были круги. Если название не совпадает с текущей задачей — цикл принадлежит другой работе: выбери один из двух путей выше до отправки круга.
Разделы ответа ревьюера
Ответ ревьюера разложен на три раздела. Что делать с каждым:
| Раздел | Действие | |
|---|---|---|
## Blocking | исправь или оспорь каждый пункт — см. «Accept or Argue» | |
## Non-blocking | не исправляй по своей инициативе; вынеси список пользователю через AskUserQuestion (взять в работу / отдельной задачей / не делать) | |
## Pre-existing | вынеси каждый пункт уровня critical пользователю через AskUserQuestion (чинить сейчас / отдельной задачей / не чинить) до того, как объявишь ревью законченным; остальные пункты — вместе с ## Non-blocking |
При APPROVED с непустым ## Non-blocking работа считается принятой: отправлять новый круг ревью из-за этих пунктов не нужно.
Правила
- НИКОГДА не вызывай
codex execнапрямую — только через скриптыcodex-review.shиcodex-state.sh. Скрипты сами знают модель, конфиг и session_id - Описывай ЧТО ты сделал и ПОЧЕМУ, какие решения принимал — используй шаблоны описания
- НЕ передавай git diff — Codex сам посмотрит, он в той же директории
- APPROVED → обработай
## Non-blockingи## Pre-existing, затем продолжай работу - Перед реализацией вызови
codex-state.sh set phase implementing - Есть заказчик (пользователь) — уточняй у него неоднозначные вопросы
- Опция
--max-iter Nпозволяет изменить лимит итераций
Worktree & Branch Isolation
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/codex-review/skills/codex-review/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 19 Mar 2026, 7 months ago.
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/artwist-polyakov/polyakov-claude-skills/codex-review)