fix(skills): улучшена надёжность и UX скилла codex-review

- Зачем:
  - скилл генерировал множество промежуточных bash-команд, каждая из которых
    требовала ручного подтверждения пользователя.
  - poll-loop (while/sleep) мог зависнуть навсегда при сбое Codex.
- Что:
  - добавлены permissions для типовых команд скилла (timeout, rm/Write для /tmp).
  - uuidgen заменён на date +%s (меньше промптов).
  - codex exec обёрнут в timeout 600 (10 мин) вместо poll-loop.
  - resume оставлен как primary, свежий exec — fallback.
  - добавлен захват session ID в Шаг 4.
- Проверка:
  - /codex-review при следующем использовании.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
ddadminandClaude Opus 4.6 committed 2026-03-31 10:38:07 +03:00
1 parent 9341853479
commit 6190fbaf08
2 files changed
+24 -24

No files matched your search

+18 -23
View File
@@ -42,7 +42,7 @@ user_invocable: true
### Шаг 2: Сгенерировать Session ID
```bash
REVIEW_ID=$(uuidgen | tr '[:upper:]' '[:lower:]' | head -c 8)
REVIEW_ID=$(date +%s | tail -c 9)
```
### Шаг 3: Подготовить материал для ревью
@@ -129,7 +129,7 @@ If changes are needed, end with exactly: VERDICT: REVISE
- `-o /tmp/codex-review-${REVIEW_ID}.md` — файл для записи ответа
```bash
codex exec \
timeout 600 codex exec \
-m gpt-5.4 \
-c model_reasoning_effort=high \
-s read-only \
@@ -137,24 +137,16 @@ codex exec \
"ПРОМПТ"
```
**Пример для режима plan** (план в файле `project/TODO.md`):
```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 project/TODO.md. Focus on:
1. Correctness — will this plan achieve the stated goals?
...
If changes are needed, end with exactly: VERDICT: REVISE"
```
**Важно:**
- Всегда оборачивай `codex exec` в `timeout 600` (10 минут). Если Codex зависнет — команда завершится с кодом 124.
- Используй параметр `timeout: 620000` в Bash tool для запаса.
- Команда **синхронная**: когда она вернулась, файл `-o` уже готов. **НЕ** используй poll-loop (`while/sleep`).
- Если exit code = 124 (таймаут) — сообщи пользователю и предложи повторить.
**Пример для режима code** (diff в temp-файле):
```bash
codex exec \
timeout 600 codex exec \
-m gpt-5.4 \
-c model_reasoning_effort=high \
-s read-only \
@@ -165,12 +157,12 @@ codex exec \
If changes are needed, end with exactly: VERDICT: REVISE"
```
**После запуска:** сохрани Codex session ID из строки вывода `session id: <uuid>` → переменная `CODEX_SESSION_ID`.
**После запуска:** найди в выводе строку `session id: <uuid>` и сохрани значение как `CODEX_SESSION_ID` — оно нужно для `resume` в последующих раундах.
**Примечания:**
- Модель по умолчанию: `gpt-5.4` с `model_reasoning_effort=high`. Пользователь может переопределить через аргументы.
- Всегда `-s read-only` — Codex не должен писать файлы.
- `-o` для захвата вывода в файл.
- `-o` для захвата вывода в файл. **НЕ** запускай в background — команда сама вернёт управление.
### Шаг 5: Прочитать ревью и проверить вердикт
@@ -211,21 +203,24 @@ If changes are needed, end with exactly: VERDICT: REVISE"
### Шаг 7: Переотправить в Codex (Раунды 2-5)
Продолжить существующую сессию Codex:
**Предпочтительно: `resume`** — экономит токены, сохраняет контекст сессии:
```bash
codex exec resume ${CODEX_SESSION_ID} \
timeout 600 codex exec resume ${CODEX_SESSION_ID} \
"I've revised based on your feedback.
Here's what I changed:
[List the specific changes]
[Список правок]
Please re-review. End with VERDICT: APPROVED or VERDICT: REVISE" 2>&1 | tail -200
```
**Примечание:** `codex exec resume` НЕ поддерживает `-o`. Вывод читается из stdout. `tail -200` отсекает служебные строки запуска, но сохраняет длинные ответы.
**Примечание:** `resume` не поддерживает `-o`. Вывод читается из stdout через `tail -200`.
Если resume не сработал (сессия истекла) — сделать свежий `codex exec` с контекстом предыдущих раундов в промпте.
**Fallback** — если `resume` не сработал (сессия истекла, session ID не захвачен):
1. Пересобрать diff (аналогично Шагу 3).
2. Запустить свежий `codex exec -o` с описанием предыдущих раундов в промпте.
Вернуться к **Шагу 5**.
+6 -1
View File
@@ -104,9 +104,14 @@
"Bash(gh issue:*)",
"Bash(gh repo:*)",
"Bash(codex *)",
"Bash(timeout *)",
"Bash(rm -f /tmp/claude-*)",
"Bash(rm -f /tmp/codex-*)",
"WebSearch",
"mcp__claude_ai_Context7__resolve-library-id",
"Write(/tmp/claude-plan-*)"
"Write(/tmp/claude-plan-*)",
"Write(/tmp/claude-diff-*)",
"Write(/tmp/codex-review-*)"
]
},
"statusLine": {