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:
1 parent
9341853479
commit
6190fbaf08
2 files changed
+24
-24
No files matched your search
@@ -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**.
|
||||
|
||||
|
||||
@@ -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": {
|
||||
|
||||
Reference in new issue
Block a user