Files
dotfiles/agents/.agents/skills/claude-subagent-playbook/SKILL.md
T
Dmitry DementievandClaude Fable 5 15d5515925 docs(skill): экономия контекста оркестратора по ретро прогона 2026-07-10
- Зачем:
  - ретро трёх циклов конвейера показало: находки ревью проходили через
    контекст оркестратора до шести раз, review-промпт дублировался, ~7
    пустых ходов на idle-пингах teammate-ревьюера.
- Что:
  - SKILL.md: механика «индекс у оркестратора, нагрузка файлами» — вердикты
    в файлы обменного temp-каталога, fix-промпт конкатенацией, один
    канонический review-промпт на обоих ревьюеров, idle-пинги как шум;
  - новый references/prompt-templates.md — скелеты четырёх промптов;
  - codex-exec.md: сборка промптов cat'ом, боевая модель gpt-5.5 явно
    (фронтир из конфига не наследовать);
  - codex-sandbox-fix-handover: рабочий AppArmor-фикс (ловушка memfd,
    профиль на бинарь codex), проверен на обоих режимах;
  - lessons.md: датированные записи ретро, казуса Sol и memfd.
- Проверка:
  - чтение SKILL.md и references/, следующий прогон конвейера.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 16:55:16 +03:00

187 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: claude-subagent-playbook
disable-model-invocation: true
description: >-
Конвейер одной задачи со стороны Claude Code: постановка → свежий взгляд →
реализация Кодексом → слепое двойное ревью → синтез. Знания, не каркас.
---
# Плейбук: одна задача через Кодекса и слепое двойное ревью
Ты — **оркестратор** в сессии Claude Code: планируешь, ставишь задачу,
раздаёшь работу, синтезируешь. Реализацию не пишешь. Это плейбук — знания и
приёмы; порядок этапов разумен, но подстраивай под задачу, а не наоборот.
## Когда применять — и когда нет
Одна нетривиальная задача: спека/issue + реализация + проверка. Признаки
«за»: правки в нескольких файлах с тестами, цена ошибки заметна, пользователь
хочет след (задача-файл, ревью).
**Не разворачивай конвейер на мелочь.** Косметика, пара часов работы, один
файл — сделай сам: накладные расходы процесса многократно превысят цену
работы (эмпирика: на полировку ноутбука чуть не завели несколько issue —
пользователь остановил). Очередь зависимых issue с автономным прогоном —
это `/coordinator-loop`, не этот плейбук.
## Роли
- **Оркестратор (ты)** — план, постановка, синтез, коммит. Работай по
**индексу** (правило `/coordinator-loop`): в твой контекст входят вердикты
и находки `файл:строка`, а не diff, не полные логи и не нарратив. Шумные
команды — через файл-лог, в контекст только сводку. **Индекс — у тебя,
полезная нагрузка — файлами между агентами**: вердикты, отчёты и промпты
живут в `$SCRATCH` (обменный temp-каталог прогона с полуслучайным
префиксом — скретчпад сессии или `mktemp -d`; детали — в
[references/prompt-templates.md](references/prompt-templates.md)), ты
читаешь их один раз и дальше передаёшь путями и конкатенацией (`cat`), а
не переписываешь Write'ом — каждое переписывание дублирует контент в
твоём контексте (ретро 2026-07-10: находки ревью проходили через
оркестратора до шести раз). SendMessage возвращает эхом
весь текст сообщения — teammate'у шли короткое (вердикт, путь, вопрос),
длинное — файлом, который он прочтёт сам.
- **Codex** — реализация кода. У пользователя лимиты Codex больше, код он
пишет в целом лучше, но верхнеуровнево планирует хуже — поэтому
декомпозиция и постановка остаются у тебя. Механика вызова —
[references/codex-exec.md](references/codex-exec.md).
- **Ревьюеры** — два, **разных родословных**, слепые друг к другу:
Claude-субагент (`adversarial-reviewer`; нет в среде — скептический
`general-purpose`) и Codex **свежим тредом**, не тем, что писал код.
Разные родословные ловят непересекающиеся классы находок (пересечение в
прогонах — стабильно ~ноль). Обоим — руки: тесты, гипотезы, поиск,
документация, первоисточники; запрет менять исходники и окружение —
**мандатом в промпте, не урезанием песочницы** (рецепт и подстраховка —
[references/codex-exec.md](references/codex-exec.md)).
- **Свежесть**: ревьюеров запускай свежими сессиями, без форка своей истории
(форк тратит токены и убивает независимость). Повторную проверку точечных
правок — **тем же** ревьюером узким вопросом «закрывают ли правки твои
находки», не полным обходом.
- **Вспомогательные Claude-субагенты** для попутного делегирования: глубокое
рассуждение — `deep-reasoner`, механика с шумным выводом — `fast-worker`.
Они репо-локальные; нет в репозитории — определения для создания в
[references/claude-agents.md](references/claude-agents.md).
- **Модель Claude-субагентов задавай явно**: Опус — рассуждения и ревью,
Sonnet — механика. Без явной модели субагент наследует Fable, чьи лимиты
самые дорогие — держи их для оркестрации (у `deep-reasoner`/`fast-worker`
модели пришиты в определениях).
## Конвейер
1. **Постановка — самодостаточный файл-задача.** У исполнителя нет твоего
контекста; всё нужное — в файле: цель, критерии приёмки чекбоксами,
границы («что трогать нельзя»), «сначала прочитать» (спека, ADR, README с
командами), команды проверки. Формат и место — по конвенции репозитория
(например, `.scratch/<feature>/issues/`; репозиторий настроен под скиллы
Мэтта Покока — постановка через `/to-tickets` в сконфигурированный трекер:
тикеты-срезы с рёбрами блокировок вместо ad-hoc файла, конвенции — в
`docs/agents/`, настройка — `/setup-matt-pocock-skills`). Не хватает
фактуры по внешним библиотекам/API — сначала `/research` и Context7 MCP,
выжимку — в
«сначала прочитать». Задача просится под test-first — сошлись в ней на
`/tdd` (скиллы у Codex те же — общий каталог), ключевые требования
продублируй текстом. Готово, когда исполнитель может сделать задачу,
не задав тебе ни одного вопроса.
2. **Свежий взгляд на постановку — до реализации.** Адверсарный ревьюер без
твоего контекста проверяет задачу против кода: фактические ошибки, скрытые
решения-«однострочники», недостающие критерии. Окупается: ловит блокеры,
которые исполнитель молча реализовал бы (эмпирика: «русские названия из
`name_ru`» — а в данных `name_ru` английский). Постановка крупная или
цена ошибки высока — сделай ревью двойным и слепым, как для кода: вторая
линия — Codex свежим тредом с явной рамкой «ревьюируй постановку, не
реализацию; детали реализации — только если постановка молча предрешает
решение» (без рамки зарывается в детали). Родословные и тут ловят разное:
Codex — уровень требований (недостающие критерии, наблюдаемость,
«формально отчитаться можно»), Клод — механику кода (нереализуемые
формулировки, мёртвые стабы; эмпирика 2026-07-10: пересечение — 2 темы
из ~15). Этап закрыт, когда каждая
находка внесена в задачу **решением** или письменно отклонена — «пусть
решит исполнитель» решением не считается.
3. **Реализация Кодексом.** Промпт: «задача самодостаточна, следуй буквально,
коммит не делай». Запуск — прямым `codex exec` **фоновым Bash
оркестратора**: шум — редиректами в файлы, в контекст читается только
файл отчёта, харнесс будит по завершении; рецепты, ветки и ловушки —
[references/codex-exec.md](references/codex-exec.md).
Один писатель в дереве: пока Codex пишет — никто больше (казус с
форвардером — в [references/lessons.md](references/lessons.md)). Готово,
когда Codex вернул отчёт, а в дереве нет правок, которых он не называл.
4. **Два слепых ревью параллельно.** Промпт — **один канонический файл в
`$SCRATCH` на оба ревью** (скелет и обёртки вызова —
[references/prompt-templates.md](references/prompt-templates.md)): Codex
получает его через stdin, Клод-субагенту в prompt — короткая обёртка
«прочитай файл X и выполни; индекс — в файл Y» (не дублируй текст
промпта в параметре — это второй полный экземпляр в твоём контексте).
Содержание: путь к задаче-файлу + фокус (математика/краевые случаи,
соответствие критериям, честность тестов, артефакты). Друг про друга не
знают, твои выводы им не пересказывай. Обоим поощряй безопасные
эмпирические проверки (воспроизвести краевой случай вне репо, сходить в
документацию) — вердикт заметно твёрже; менять исходники и окружение
нельзя. Вердикты — файлами с **разными путями**: у Codex это его
`-o`-отчёт, Клод-ревьюеру обёртка разрешает запись файла вердикта в
`$SCRATCH` (вне репо — мандату не противоречит), финальным актом —
SendMessage только со строкой VERDICT, счётчиками и путём: его
idle-уведомления не содержат результата, не жди из них ничего. После
ревью сверь дерево (`git status`). Клод-ревьюеру можно поручить смотреть
артефакты (картинки из ноутбука). Этап закрыт, когда оба вердикта у тебя
индексами и дерево нетронуто; вердикт без единой находки засчитывай
только после проверки его лога — работа, не отписка
(приём — в [references/codex-exec.md](references/codex-exec.md)).
5. **Синтез и триаж.** Сведи вердикты по индексам: пересечения, противоречия.
Пофиндинговый триаж — у **исполнителя**, не у тебя (правило
`/claude-team-review` и `/coordinator-loop`: судит тот, у кого контекст
кода): перешли Codex индекс находок **дословно**, он чинит или
**аргументированно отклоняет** — через контракт и тест, не голословно;
промпт починки — «закрой перечисленное, больше ничего не меняй».
«Дословно» — это конкатенация: `cat шапка.md вердикт-A.md вердикт-B.md >
fix-prompt.md` Bash'ем; Write'ом ты бы переписал те же находки в контекст
ещё раз. Свои замечания к триажу — только шапкой. Ты судишь уровнем
задачи: принять риск / вне скоупа. Повторная проверка — узкая (см.
«Свежесть»); её промпт не пересказывает резолюции — ссылается на файл
отчёта исполнителя. Этап закрыт, когда по каждой находке обоих ревью есть
решение: починено и перепроверено — или отклонено с доводом.
6. **Финал.** Артефакты проверь **своими глазами** (счётчик тестов, картинки,
прогон CLI) — ревью не заменяет твою приёмку. Обнови чекбоксы и статус
задачи-файла, коммит — по `/conventional-commits`, пользователю — выжимку:
вердикты, что принято/отклонено, что осталось. Готово, когда чекбоксы
проставлены, дерево чистое после коммита и пользователь получил отчёт.
## Пользователь в петле
В отличие от `/coordinator-loop`, здесь пользователь рядом: докладывай в чат
короткие статусы на границах этапов (постановка готова, ревью пришло,
вердикты сведены), решения по скоупу оставляй ему. Фоновые этапы будят тебя
сами — не поллинг вручную, а отслеживаемые фоновые процессы + уведомления
(механика — [references/codex-exec.md](references/codex-exec.md)).
Подстраховка от молчаливой смерти агента — ScheduleWakeup сроком дольше
ожидаемой длительности: по пробуждению смотри логи сам, по приходу
результата таймер снимай. Idle-уведомления teammate-субагентов — шум, а не
событие: не докладывай о них пользователю и не действуй по ним, если
результат уже получен (ретро 2026-07-10: ~7 пустых ходов на idle-пингах).
## Соседние скиллы
- `/coordinator-loop` — автономный цикл очереди issue на стороне Codex
(координатор в Codex, worker'ы — его субагенты). Выстрадан и отлажен;
словарь (индекс, свежие сессии, две ручки стоимости) — общий.
- `/claude-team-review` — ревью-петля, где лид сам чинит код (живёт
отдельным репозиторием, в среде может быть не подключён).
- `/adversarial-review` — разовое адверсарное ревью Кодексом.
- `/tdd` — дисциплина test-first: для задач-мелочей, которые делаешь сам,
и как словарь для test-first-постановки (этап 1).
- `/research` — фоновое исследование первоисточников с выжимкой-файлом;
кормит «сначала прочитать» постановки (этап 1).
- `/conventional-commits` — формат коммита на финале.
## Подробнее
- [references/codex-exec.md](references/codex-exec.md) — прямой `codex exec`:
сквозные правила (шум в файлы, thread_id, resume по id, проверка отписки),
ветки исполнитель/ревьюер/триаж, раннер для переваривания шума.
- [references/prompt-templates.md](references/prompt-templates.md) — скелеты
четырёх промптов конвейера (задача/ревью/триаж/перепроверка): пиши только
параметрический блок на задачу, boilerplate не переписывай.
- [references/lessons.md](references/lessons.md) — датированная эмпирика
прогонов: что поймал каждый этап, казусы, цифры.
- [references/claude-agents.md](references/claude-agents.md) — определения
репо-локальных субагентов `deep-reasoner`/`fast-worker` и конструкция
оркестрации из CLAUDE.md — воссоздать в новом репозитории.