refactor(skills): обновлен плейбук координации Codex

- Зачем:
  - Обновлена координация задач с защитой замысла, контекста и бюджета работы.
- Что:
  - Ветка refactor/codex-subagent-playbook включена через merge --no-ff.
  - Добавлены актуальные роли, переиспользование агентов, осмысленный триаж и отчеты партнёру.
  - Сохранен текущий handoff, архивирована старая эмпирика и обновлены исключения скиллов.
- Проверка:
  - Основной рефакторинг прошел независимое ревью и ограниченный поведенческий прогон.
  - Финальные документы проверены на ссылки, YAML и ошибки форматирования.
  - Рабочие заметки удалены из дерева; история решений сохранена в коммитах.
This commit is contained in:
ddadmin committed 2026-09-06 11:07:20 -04:00
commit ac1269bfe8
17 files changed
+725 -941

No files matched your search

+11
View File
@@ -22,6 +22,17 @@ codebase-design/
code-review/ code-review/
ask-matt/ ask-matt/
find-skills/ find-skills/
migrate-to-shoehorn/
writing-shape/
writing-fragments/
writing-beats/
setup-ts-deep-modules/
setup-pre-commit/
scaffold-exercises/
claude-handoff/
git-guardrails-claude-code/
loop-me/
implement-spec/
to-questionnaire/ to-questionnaire/
wait-what/ wait-what/
@@ -1,207 +1,125 @@
--- ---
name: codex-subagent-playbook name: codex-subagent-playbook
disable-model-invocation: true disable-model-invocation: true
description: "Оптика тонкого мастера для координатора на стороне Codex: Codex-специфика поверх базовых механик claude-subagent-playbook, плюс запуск Claude-субагентов. Со стороны Claude Code используй claude-subagent-playbook." description: "Оптика координатора: делегирование, защита контекста и осмысленное ревью."
--- ---
# Тонкий мастер # Координатор задачи
Это оптика, а не обязательный конвейер. Координатор сохраняет внимание для Ты ведешь задачу как координатор и несешь за нее ответственность: держишь
цели, ограничений, решений, рисков и приёмки. Субагенты выясняют и выполняют; замысел, выбираешь подход и принимаешь результат. Основную реализацию обычно
координатор решает. делегируй субагентам Sol или Terra, понятную механику - Luna. Глубину
рассуждения выбирай по сложности задачи.
## Базовый плейбук Этот скилл добавляет оптику управления. Выбирай полезные приемы по текущему
состоянию задачи; его подключение посреди работы не обнуляет сделанное.
Механики конвейера живут в соседнем `claude-subagent-playbook` ## Где нужно твое суждение
(`../claude-subagent-playbook/SKILL.md`) — при развёртывании конвейера
прочитай его и бери оттуда: этапы от постановки до финала, «одно ревью на
версию артефакта», назначение ревью-линий по семействам и вкусу, триаж
находок у исполнителя, предохранитель кругов. Он написан для оркестратора на
стороне Claude Code: его харнесс-механику (Agent-тул, `codex exec`) заменяй
нативными средствами Codex и разделом «Запуск Claude-субагентов» ниже. В
общих механиках конвейера при расхождении побеждает базовый; Codex-специфика
этого файла — запуск Claude и назначение моделей линиям — действует как
записано здесь, даже где расходится с картой ролей базового.
## Основная оптика Сохраняй цель пользователя, существенные ограничения и основания выбранного
подхода. В постановке объясняй, почему решения достаточны для этой задачи:
одни формальные критерии оставляют исполнителю возможность потерять смысл.
Локальные технические решения принадлежат исполнителю. Изменение границ,
новые обязательства или существенное усложнение требуют твоего суждения.
- Перед запуском агента назови его вклад: защита контекста, свежий взгляд, При существенном сомнении в постановке подумай, поможет ли независимое
специализация, параллельность или отдельная среда. Без вклада работай сам ревью снять его до реализации. Если выбираешь такой обзор, дай ревьюеру
либо продолжай существующий тред. конкретный вопрос и ограничь проверку нужной для ответа областью.
- Сам читай верхнеуровневые документы и принимай решения. Исследование кода,
журналов, зависимостей и вариантов с неизвестным объёмом по умолчанию
отдавай субагенту. Самостоятельно проверяй одну узкую гипотезу с коротким
выводом; дальнейшее погружение делегируй.
- Держи у себя цель, ограничения, решения, риски, краткие сводки и пути к
доказательствам. Полезную нагрузку передавай между агентами файлами, не
через контекст координатора.
- Один исполнитель владеет изменениями исходников. Его же продолжай для
обычных исправлений. Если исполнитель не справляется, останови его и дай
свежему более сильному агенту постановку, текущее дерево и файловые отчёты.
- Выбирай модель и уровень рассуждения независимо. Повышай effort, когда
подходящей модели не хватило глубины; повышай модель, когда не хватает
качества суждения. Текущая привязка ролей — в
[уровнях и ролях](references/roles.md).
## Контекст и обмен Читай ключевые фрагменты, когда без них нельзя оценить устройство решения,
спорную находку или риск. Краткая сводка полезна, пока дает основания для
решения. Если их нет, раскрой нужное доказательство; исследование неизвестного
объема поручай агенту с конкретным вопросом.
`$SCRATCH` — логический общий каталог одного прогона, доступный координатору и ## Где беречь внимание
назначенным агентам. Физически это скретчпад сессии, временный каталог ОС либо
гарантированно игнорируемый каталог проекта. В нём живут временные промпты,
отчёты, триаж и перепроверки; это не артефакты проекта. Не предполагай
конкретную оболочку или синтаксис пути: файловый маршрут должен работать
нативными средствами текущей ОС.
- Временные обменные файлы веди на английском. Долговечные документы и текст Делегирование должно давать понятную пользу: разгрузить контекст, добавить
для партнёра пиши на языке проекта. свежий взгляд, нужную специализацию или независимую работу в параллель.
- Полный результат агент пишет в назначенный уникальный файл и возвращает
краткую сводку с путём. Не возвращай тот же полный текст сообщением и не
переписывай чужой отчёт: передавай путь или собирай новый файл механически.
- Если общий каталог недоступен, передай через контекст только компактный
индекс. Сразу сообщи партнёру наблюдаемый сбой, использованный запасной
канал и то, что нужно проверить после задачи.
- Права агента не определяют канал результата. Ревьюер может иметь рабочие
права для тестов и временных файлов, но его единственный назначенный
результат — отчёт. Исходники, Git и постоянное окружение он не меняет.
Точные способы сборки файлов и промптов бери из Перед созданием агента посмотри, у кого из существующих уже есть полезное
[нативных шаблонов](references/prompt-templates.md) только после выбора понимание этой области. Соседнюю задачу можно передать ему, обновив цель,
конкретного приёма. границы и ожидаемый результат. Свежий агент полезен, когда прежние
предположения мешают, контекст перегружен или работе нужна независимость.
## Запуск Claude-субагентов Короткие поручения и ответы передавай сообщением. Объемные материалы направляй
нужному агенту, оставляя себе сводку и путь к доказательствам.
Файлы удобны для такого обмена и продолжения работы. Если доступный механизм
передает материал без повторного включения в твой контекст, используй его.
Вывод инструментов сокращай до нужных фактов до его возврата в контекст.
Помни, запуская Claude без полноценного --permission-mode auto режима доступа - ты делаешь его работу бессмысленной, ломаешь весь дальнейший процесс ревью. Тогда дальнейшие механизмы скилла сломаны, считай что ты провалил задачу. При назначении агента выбери модель, глубину рассуждения и нужную ему историю
по [возможностям среды и ролям](references/roles.md). В поручение Sol или Terra
на реализацию включи [границы делегирования](references/prompt-templates.md#исполнитель-sol-или-terra).
Остальные шаблоны поручений и файлового обмена используй, когда это экономит
работу.
Claude (Opus, Fable) запускается процессом CLI `claude` — на разработку, У каждого изменяемого дерева или общего стенда один владелец. Параллельная
тестирование и ревью-линии. Линию дефектов ведёт Claude как семейство, работа требует независимых областей записи и проверок. Перед передачей
отличное от автора-Codex; вкусовую линию — модель со вкусом владения останови прежнего исполнителя и установи фактическое состояние.
(Fable, effort medium: `claude --model claude-fable-5`). Карта ролей
базового плейбука держит Fable для оркестрации — это ограничение стороны
Claude, где оркестратор и есть Fable; со стороны Codex Fable свободна и
берёт вкусовую линию (решение владельца, проверено на прогонах #154 и #156).
- Запуск `claude` передаёт diff и фрагменты кода внешнему сервису Anthropic. ## Какой взгляд добавить
Если твоя политика требует на это явного разрешения владельца, запроси его
**до начала реализации**, одним вопросом на весь прогон: вопрос в момент
ревью останавливает конвейер на самом дорогом участке.
- Запускай с `--permission-mode auto`: иначе Claude не может искать
информацию в интернете и запускать тесты.
- Первое ревью линии — свежая сессия; повторные ревью — продолжением той же
сессии: контекст первого ревью дешевле нового.
- Длительные задачи — через `--bg`, чтобы тайм-аут одного вызова клиента не
завершал работу. Состояние смотри `claude agents`, содержание —
`claude logs <id>`, примерно раз в 5–10 минут. Это частота наблюдения, а не
лимит времени: процесс жив и в журнале есть прогресс — оставь работать,
Claude может выполнять задачу значительно дольше. `--max-turns` — не ручка
ограничения времени.
- Тайм-аут отдельного запроса — не потеря сессии: продолжай через
`--resume <session-id>`, это быстрее и дешевле, чем начинать заново.
- Прямолинейные суждения бери агентом `craftsman`, сложные решения и
высокоответственные ревью — `deep-reasoner`; карта «роль → модель и
ступень» — в базовом плейбуке, `references/claude-agents.md`.
## Выбор приёма Подбирай проверку под неопределенность и цену ошибки. Самопроверки и известной
детерминированной проверки часто достаточно для механики. Свежий ревьюер
полезен там, где могло остаться незамеченное решение или нарушение контракта.
Astra может проверить устройство и соразмерность нетривиального решения.
Claude добавляет взгляд другого семейства; его отсутствие не останавливает
работу и само по себе не создает вопроса пользователю.
- **Самодостаточная постановка** нужна исполнителю без истории разговора и Свежесть контекста и различие семейств решают разные задачи. Выбрав ревью,
там, где проекту нужен долговечный след. Для ясной локальной правки хватит прочитай [договор ревью и триажа](references/review-and-triage.md): он задает
короткого мандата. независимость, работу с находками и перепроверку. Если выбран Claude, перед
- **Исследователь** собирает факты неизвестного объёма. Он возвращает записку запуском прочитай [его механику](references/claude.md). Запуск и достаточность
решений и пути к доказательствам, а не реализацию. доступа ревьюера остаются твоей ответственностью.
- **Deep-reasoner** готовит архитектурное предложение, декомпозицию или
сравнение компромиссов. Итоговое решение остаётся у координатора. Важное
решение полезно проверить двумя слепыми линиями разных семейств.
- **Исполнитель** получает одну цель, границы и критерии. Он не коммитит и не
расширяет объём без решения координатора.
- **Проверяющий** запускает известную проверку в специальной среде или с
шумным выводом. Не создавай роль, если координатор либо исполнитель может
получить тот же надёжный результат дёшево.
### Режимы ревью Ревью возвращает утверждения для проверки. Исполнитель разбирает техническую
сторону находок; ты отвечаешь за уместность изменений и сохранение замысла.
Особенно внимательно смотри на исправления, которые добавляют сложность:
предписание ревьюера само по себе ее не оправдывает. Разбор всех находок -
часть выбранного ревью, даже когда отдельного этапа в плане нет.
Для нетривиальной делегируемой постановки один узкий свежий обзор — точка ## Достаточно ли сделанного
отсчёта. Пропускай его для ясной ограниченной задачи, если можешь коротко
назвать причину. Сложную, рискованную или архитектурную постановку проверяй
двумя слепыми линиями, когда цена оправдана.
Одно ревью на версию артефакта, а не на каждую передачу из рук в руки: Сопоставь результат с исходной целью и фактическими проверками. Отчет агента
принятый и не изменившийся артефакт заново не ревьюится, после правок — о тестах или состоянии среды оценивай по доказательствам; ключевое для
узкая проверка дельты тем же ревьюером. приемки проверь доступным тебе способом. Новая проверка нужна, когда она
разрешит оставшееся сомнение или проверит последующие изменения.
Перед внешними линиями — саморевью исполнителя тем же тредом: он проходит После нескольких исправлений полезен проход на вычитание: какие добавления
свои изменения против критериев как ревьюер и сам чинит найденное; все еще оправданы задачей? Решение об удалении принимай по нужному поведению
координатору — одна строка «found N, fixed N». Доступную дешёвую сквозную и стоимости поддержки. Исполнитель вносит выбранные изменения, затронутая
проверку прогони до запуска ревьюеров, иначе ревью уйдёт на код, который часть снова получает подходящую проверку.
прогон ещё поменяет.
Реализацию проверяй по риску: Когда спор повторяется без новых фактов, исправления разрастаются или новый
обзор мало что дает, пересмотри подход. Разбор несходимости находится в
[договоре триажа](references/review-and-triage.md#когда-работа-не-сходится).
- тривиальная — саморевью исполнителя; ## Как партнер видит работу
- обычная — один независимый ревьюер по коду;
- сложная или рискованная — два адверсариальных ревьюера: соответствие задаче
и качество кода.
Разные семейства моделей предпочтительны: они дают больше разнообразия, чем В долгой работе периодически давай короткую сводку, даже если партнер отошел:
два свежих треда одной родословной. Когда внешняя линия технически недоступна, что уже выяснено, кто чем занят, чего ждешь и что проверишь дальше. Сообщай
используй доступных ревьюеров; процесс от неё не зависит. Если же линию о существенных отклонениях, смене подхода и неожиданном росте затрат по мере
держит не техника, а политика согласия — передача кода внешнему сервису их обнаружения. Если нового результата пока нет, назови состояние и основание
требует явного разрешения владельца, — сначала запроси разрешение: замена продолжать ожидание. По сводке должно быть понятно, нужно ли вмешательство;
односемейными ревьюерами теряет основание линии дефектов, а один ответ обычное обновление позволяет продолжать работу без ответа партнера.
владельца разблокирует задуманную схему.
Выбрав ревью постановки или реализации, прочитай единый Если продолжение требует изменения цели, расширения границ, принятия
[договор ревью и триажа](references/review-and-triage.md). Он определяет существенного остаточного риска или заметных дополнительных затрат за
владельца триажа, файловый канал, повторные проверки и предохранитель кругов. пределами согласованного, останови зависимую работу и вынеси партнеру
конкретный выбор. Объясни, что произошло, варианты, их последствия и свою
рекомендацию. Пока решения нет, продолжай полезную независимую работу в
прежних границах. Уже полученное разрешение сохраняет силу; технические
действия внутри него организуй самостоятельно.
## Приёмка В конце вместе с результатом и основаниями приемки кратко оцени, как прошла
работа по скиллу: кому что поручал, где переиспользовал контекст, что дали
ревью и триаж, что потребовало переделок и где подход пришлось изменить.
Назови основные источники расхода контекста и времени, отделяя затраты
координатора от работы агентов. Числа приводи по доступным измерениям с их
охватом; без них описывай наблюдаемые источники затрат и явно отмечай оценки.
Покажи, что оказалось полезным, где были лишние затраты и какие ограничения
остались. Глубину отчета выбирай по масштабу работы; для короткого прогона
достаточно нескольких предложений.
Координатор принимает результат, но углубляется в доказательства постепенно: Если прогон дал новое существенное наблюдение или ты дорабатываешь скилл
по опыту работы, обратись к [эмпирике и правилам ее хранения](references/lessons.md).
1. состав изменений и краткие сводки ревью;
2. отдельные спорные фрагменты;
3. полный diff, только когда его объём ограничен и чтение нужно для решения.
После закрытия триажа находок у заметной работы — **проход на вычитание**:
ревью умеет только прибавлять, и за круги правок набираются добавления.
Проход ведёт модель со вкусом с правом только резать и явным списком
неприкосновенного; сомнение «резать или нет» решается в пользу реза. Мелкой
правке достаточно саморевью — причину пропуска назови одной фразой.
Доступную детерминированную финальную проверку запускай сам с выводом в файл.
В контекст возьми точную команду, код возврата, итоговые счётчики, имена
упавших тестов и путь к журналу. Зелёный журнал не читай. Красный журнал
направь исполнителю или отдельному разборщику; сам открывай детали, когда они
нужны для решения о границах, риске, среде или смене исполнителя. Если
проверка доступна только проверяющему в специальной среде, явно назови
свидетельство косвенным.
Перед завершением:
- сопоставь результат с исходной целью и назови всё неподтверждённое;
- убедись, что выбранная независимая проверка завершена либо риск принят
полномочным решением;
- дай партнёру короткую саморефлексию: что больше всего потратило контекст,
оправдана ли трата, что в следующий раз направить через файл или субагента,
какие отклонения процесса произошли.
Новый урок для [эмпирики](references/lessons.md) только предложи партнёру.
Правь долговечную эмпирику после его согласия.
## Партнёр в петле
На границах этапов давай партнёру карту прогресса в 4–7 строк обычными
словами: что сделано, что идёт, что дальше. Термины плейбука — только с
расшифровкой. Карта дополняет содержательную сводку, не заменяет её.
Решения о скоупе и принятии остаточного риска остаются у партнёра.
## Сбои координации
- Нет ожидаемого файла: один раз запроси короткий итог в том же треде; после
повторной тишины продолжи свежим агентом от сохранённых артефактов.
- Длинный рассказ пришёл сообщением: попроси повторить ответ сводкой и путём,
не переноси рассказ дальше.
- Два исполнителя пересеклись в исходниках: останови их, установи одного
владельца и продолжи от проверенного состояния без отката чужих правок.
- Процесс не сходится: используй точки вмешательства из договора ревью,
объясни партнёру причину, стоимость и принятое решение.
- После завершения сохрани только предусмотренные проектом долговечные
решения и удали временные артефакты именно этого прогона.
@@ -1,6 +1,6 @@
interface: interface:
display_name: "Codex Subagent Playbook" display_name: "Codex Subagent Playbook"
short_description: "Делегирование без засорения контекста мастера" short_description: "Оптика координатора: делегирование, контекст и ревью"
default_prompt: "Используй $codex-subagent-playbook как оптику: выбери полезное делегирование и независимую проверку, сохранив контекст мастера для решений." default_prompt: "Используй $codex-subagent-playbook как оптику координатора: выбери полезное делегирование и достаточную проверку для текущей задачи."
policy: policy:
allow_implicit_invocation: false allow_implicit_invocation: false
@@ -1,110 +0,0 @@
# Handoff: первая версия Codex Subagent Playbook
Дата: 2026-07-10. Для следующей сессии, которая добавит настоящие роли
Codex и проверит полный конвейер на боевой задаче.
## Состояние
Первая версия скилла готова и формально валидна:
- процесс тонкого мастера — [`../SKILL.md`](../SKILL.md);
- выбор ролей и уровней — [`../references/roles.md`](../references/roles.md);
- перенесённые уроки и открытые проверки —
[`../references/lessons.md`](../references/lessons.md);
- точные договоры нативных агентов —
[`../references/prompt-templates.md`](../references/prompt-templates.md);
- явный вызов скилла — [`../agents/openai.yaml`](../agents/openai.yaml).
Нативные TOML-роли ещё не созданы. В интерфейсе пробной tool-backed сессии
хост скрыл поля `agent_type`, `model`, `reasoning_effort` и `service_tier`,
поэтому прогон использовал роли только как мандаты в промпте и честно
пометил стоимость как неуправляемую. Это не общее ограничение Codex:
нативная схема поддерживает все четыре поля.
## Принятые решения
- Главная цель — сохранить контекст мастер-модели для требований, решений и
синтеза. Внешняя модель остаётся необязательной дополнительной линией.
- Скилл запускается только явно. Текущий валидатор не принимает
`disable-model-invocation`; используется
`policy.allow_implicit_invocation: false` в `openai.yaml`.
- Модели закрепляются в файлах ролей, а не в `SKILL.md`, чтобы процесс не
зависел от смены модельной линейки.
- Для TOML-роли передаётся `agent_type`; для разового выбора — `model` и
`reasoning_effort` без роли с закреплённой моделью. Плейбук использует
`fork_turns="none"` ради чистого контекста; полный fork `all` наследует
модель мастера.
- Один агент владеет рабочим деревом. До записи сохраняется точка отсчёта,
включая хэши неотслеживаемых файлов.
- Полный отчёт ревьюера сохраняется файлом; сообщение содержит только
вердикт, счётчики и путь. `read-only`-ревьюер возвращает короткий индекс
один раз сообщением.
- На прогон создаётся один обменный временный каталог. Полные отчёты и
повторно используемые промпты передаются между агентами путями; мастер не
вставляет их повторно в tool-call.
- После завершения или сохранения блокирующего handoff обменный каталог
этого прогона удаляется.
- Нативный конвейер не зависит от вложенного запуска `codex exec`.
## Что проверено
- `quick_validate.py` завершился с `Skill is valid!`.
- Независимое ревью закрыло договор ревьюера, точку отсчёта, выбор стоимости
и устранение лишних повторных прогонов.
- Безопасный пробный прогон этапов 1–2 поднял исследователя и ревьюера,
сформировал самодостаточную постановку и не вынес сырые журналы в итог
мастера. Файлы проекта не менялись.
- Прогон выявил лишний полный запуск тестов исследователем; ограничение роли
уже внесено в процесс и справочник.
## Следующая сессия
1. Решить, входят ли Windows/chezmoi в первую поставку ролей. Пробная
постановка ограничила первую поставку Linux/WSL.
2. Выбрать модели для быстрого, рабочего и глубокого уровней. Локально
подтверждена только `gpt-5.6-sol`; не считать это готовой таблицей ролей.
3. Создать шесть ролей: `fast-worker`, `explorer`, `worker`,
`deep-reasoner`, `reviewer`, `verifier`.
4. Разместить Linux/WSL-источник в `codex/.codex/agents/` и узко открыть
нужные TOML в `.gitignore`. Сейчас родительское правило игнорирует весь
каталог.
5. Расширить `tests/test_install.sh`: разобрать TOML через `tomllib`,
проверить смысловые договоры ролей, повторную установку, стороннюю роль и
конфликт совпадающего имени.
6. Проверить обнаружение ролей установленным Codex CLI в отдельном
`CODEX_HOME`. Затем начать новую сессию и проверить, что её схема
`spawn_agent` открывает `agent_type`, `model`, `reasoning_effort` и
`service_tier`.
Синтаксический разбор TOML не доказывает поддержку схемы.
7. Прогнать этапы 3–7 на подходящей задаче, обновить полевые заметки только
подтверждёнными фактами и убрать поглощённый осадок.
8. Измерить, сколько длинных отчётов реально попало в контекст мастера.
Цель — каждый полный артефакт читается не более одного раза и больше не
пересказывается между агентами.
## Известные ловушки
- Простое исключение `!codex/.codex/agents/*.toml` может не сработать, пока
не раскрыты игнорируемые родительские каталоги. Нужны положительные и
отрицательные проверки `git check-ignore`.
- Текущее рабочее дерево dotfiles содержит посторонние изменения. Работать
от сохранённой точки отсчёта, не очищать и не включать их в коммиты.
- `task_name` нативного `spawn_agent` — имя треда, а не доказанный выбор
пользовательской конфигурации агента.
- Полный fork `all` несовместим с другой ролью, моделью и глубиной. Плейбук
использует `none` для свежего контекста; ограниченный fork числом
технически допускает переопределения.
- Некоторые tool-backed хосты скрывают поля управления моделью, хотя Codex
их поддерживает. Проверять фактическую схему в начале сессии.
- Права `workspace-write` не гарантируют сеть. Проверку документации и поиск
отмечать как непроверенные, если сеть недоступна.
- Длинный текст в `spawn_agent`, `send_message` или `followup_task` остаётся
в истории мастера. Передавать путь к файлу и короткий вопрос.
## Suggested skills
- `$writing-great-skills` — удерживать плотность и предсказуемость скилла.
- `$skill-creator` — валидировать структуру и проводить пробные прогоны.
- `$tdd` — сначала закрепить установку и договоры ролей тестами.
- `$claude-team-review` — независимое ревью после появления TOML и тестов.
- `$conventional-commits` — зафиксировать следующую завершённую поставку.
@@ -1,52 +0,0 @@
# Handoff: плейбук возвращён к оптике тонкого мастера
Дата: 2026-07-12. Для следующей сессии, которая проверит обновлённый скилл на
нетривиальной задаче с кодом, тестами и шумным выводом.
## Состояние
Скилл переработан после самоприменения и сравнения с
`claude-subagent-playbook`. Текущий источник поведения —
[`../SKILL.md`](../SKILL.md); это набор приёмов, а не обязательный конвейер.
Нативная механика раскрывается только по выбранной ветке через
[`../references/prompt-templates.md`](../references/prompt-templates.md) и
[`../references/roles.md`](../references/roles.md).
Факты двух прогонов и ещё непроверенные предположения дистиллированы в
[`../references/lessons.md`](../references/lessons.md). Не переносить
их обратно в основной файл без нового наблюдаемого сбоя.
Ключевая граница следующей работы: субагент запускается ради конкретной пользы
задаче или контексту мастера. Свежий тред не считается второй независимой
родословной. Права агента не определяют канал результата. Полная полезная
нагрузка не должна проходить через контекст мастера.
## Что проверено
- Один свежий обзор проверил переработку через оптику `writing-great-skills` и
исходного Claude-плейбука; все принятые находки закрыты, одно предложение
вернуть `read-only` обоснованно отклонено по принятой практике пользователя.
- `git diff --check` проходит.
- Относительные ссылки и сборка промптов проверялись в ходе итераций; найден и
исправлен пропущенный путь отчёта триажа.
- Посторонние неотслеживаемые скиллы в объём не входят.
## Следующая сессия
1. Выбрать одну подходящую задачу с кодом; не создавать искусственный полный
прогон ради проверки скилла.
2. До каждого запуска агента записывать ожидаемую отдельную пользу, после —
сверить её с фактическим вкладом.
3. Измерить только мастерский след: какие полные отчёты или diff всё ещё попали
в его контекст, сколько агентов можно было не запускать.
4. Проверить живые предположения из `references/lessons.md`: управляемость
ролей и стоимости, `workspace-write`-ревью, сеть и файловый канал.
5. Менять скилл только по фактам прогона; дистиллировать поглощённые уроки.
## Suggested skills
- `$codex-subagent-playbook` — провести выбранную задачу с новой оптикой.
- `$writing-great-skills` — проверить, что новые уроки не вернули каркас,
дублирование или осадок.
- `$handoff` — заменить эту записку после следующего содержательного прогона.
- `$conventional-commits` — зафиксировать следующую доказанную поставку.
@@ -1,55 +0,0 @@
# Handoff: оптика ревью и синхронизация
## Назначение
Продолжить полевую проверку `codex-subagent-playbook` после согласования
тонкого координатора, файлового канала и ревью высокоуровневых документов.
Действующий договор находится в [SKILL.md](../SKILL.md), механика ревью — в
[review-and-triage.md](../references/review-and-triage.md), текущая
маршрутизация — в [roles.md](../references/roles.md).
## Зафиксированное состояние
- `6cc1b26` пересобрал скилл вокруг оптики тонкого мастера.
- `70b18b9` убрал shell-зависимые и конвейерные допущения из шаблонов.
- `02a98df` закрепил ревью на уровне самого документа: открытые детали
реализации не мешают `APPROVED`, существенный отложенный риск можно вернуть
как неблокирующее соображение.
- `quick_validate.py`, `git diff --check` и локальные Markdown-ссылки
проходили после изменений.
## Оптика триажа ревью
Находки ревьюера — сигналы о возможных слабых местах, а не руководство к
действию. Перед правкой проверять, реальна ли проблема в рамках замысла и не
превращает ли предложенное решение оптику в обязательный конвейер.
Типичный уклон ревьюера: лечить неоднозначность новыми манифестами, состояниями,
фиксированными именами и преждевременными деталями. Сохранять жёсткими только
границы ответственности, независимость, файловый канал, владельца триажа и
предохранители несходимости. Выбор приёма и модели оставлять оптикой.
## Незавершённая синхронизация
Первый `git pull --no-rebase origin master` вернул `Already up to date`.
Следующий `git push origin master` был отклонён: удалённый `master` успел
перейти с `a4985b3` на `9c047f9`.
Следующему агенту:
1. Закоммитить этот handoff отдельным Conventional Commit.
2. Выполнить `git fetch origin` и изучить новые удалённые коммиты.
3. Слить `origin/master` обычным merge, сохранив локальный замысел и удалённые
изменения. Не выбирать сторону конфликта целиком без чтения.
4. Повторить проверки скилла и отправить `master` в origin.
В рабочем дереве есть посторонние неотслеживаемые каталоги скиллов и
`.skill-lock.json`. Они не относятся к этой работе; не добавлять и не удалять
их.
## Suggested skills
- `$codex-subagent-playbook` — применять и оценивать текущую оптику.
- `$writing-great-skills` — проверять ясность и отсутствие скрытого процесса.
- `$conventional-commits` — формировать сообщения следующих коммитов.
- `$code-review` — только для нового независимого обзора по явной потребности.
@@ -0,0 +1,66 @@
# Состояние после переработки плейбука
2026-09-06. Партнер завершил обсуждение и попросил сохранить эту записку,
заменить старые handoffs, включить его правку `agents/.agents/skills/.gitignore`
и влить ветку `refactor/codex-subagent-playbook` в `master` через `merge --no-ff`.
Публикацию на удаленный сервер не запрашивал.
## С чего продолжать
Дальше полезна обычная задача с новой редакцией скилла. Проверить, удерживает
ли координатор замысел, бюджет внимания и соразмерность после ревью. Партнер
хочет остановить накопление правил по предположениям; следующие изменения
должны опираться на конкретные случаи работы.
Действующий договор — [SKILL.md](../SKILL.md) и справочники по его указателям.
Роль координатора теперь отделена от модели. Конфигурация Sol-координатор →
Terra-исполнитель допустима, но полного прогона с ней в этой сессии не было.
Открытые вопросы и порядок архивации находятся в
[lessons.md](../references/lessons.md).
## Где основания решений
- `65c802f` — принятая спецификация. Доступна через
`git show 65c802f:.scratch/codex-subagent-playbook/spec.md`.
- `3a72ce9` — основной рефакторинг и отчет проверки:
`git show 3a72ce9:.scratch/codex-subagent-playbook/validation.md`.
- Последующие уточнения — коммиты от `781a2e2` до `af86322` включительно.
Актуальные формулировки уже находятся в скилле; ранняя спецификация
описывает состояние до этих уточнений.
- Июльская эмпирика дословно сохранена в
[архиве](../references/lessons-archive.md). Прежние handoffs доступны в Git
по дереву `af86322:agents/.agents/skills/codex-subagent-playbook/handoffs`.
## Что подтверждено и что осталось проверить
Основной рефакторинг прошел ревью Claude и узкие перепроверки с `APPROVED`;
ограниченный поведенческий пример прошел три теста. Подробности и ограничения
этой проверки — в отчете коммита `3a72ce9`. Последующие уточнения прошли
вычитку, проверки ссылок, YAML и `git diff --check`; нового независимого
обзора всей последней редакции не было. Это не повод автоматически запускать
ревью постановки следующей задачи: выбор обзора остается ситуативным.
Штатный `quick_validate.py` не знает сохраненное поле
`disable-model-invocation`. Совместимая копия с удалением только этого поля
проходит проверку. Поле и `allow_implicit_invocation: false` сохраняют явное
включение скилла; удалять их ради зеленого валидатора не следует.
Точные затраты токенов не измерялись. Наблюдаемые накладные расходы этой
сессии: повторные чтения документов координатором, большой вывод журнала CLI
и уточнение поведения Claude `--resume`. Проверенная механика продолжения
уже записана в [claude.md](../references/claude.md).
Временные подробные отчеты остались в `/tmp/codex-playbook-refactor.dW8ZC3`;
они могут исчезнуть. Для продолжения достаточно текущих документов и Git.
Состояние веток и завершение слияния проверяй по `git status` и `git log`.
`.scratch/` удаляется последним коммитом ветки перед слиянием; ее содержимое
сохраняется в истории.
## Рекомендуемые скиллы
- `codex-subagent-playbook` — по выбору партнера для следующей рабочей задачи.
- `writing-for-agents` — при изменении инструкций и указателей.
- `conventional-commits` — при анализе diff и фиксации изменений.
- `brainstorm-with-docs` — если новый опыт требует пересмотреть решение.
- `tdd` — когда для рабочей задачи выбран этот подход; находить по имени.
- `handoff` — при следующей передаче состояния.
@@ -0,0 +1,67 @@
# Claude как независимый ревьюер
Читай этот файл только после решения добавить взгляд другого семейства моделей.
Claude - необязательная линия; нативный процесс работает и без нее.
## Выбор и доступ
Модель и глубину выбирай по пользовательскому предпочтению и результатам
реальных прогонов. Прежние рейтинги Opus, Sonnet или других моделей не являются
постоянной гарантией. Записывай запрошенные настройки отдельно от фактически
подтвержденных метаданных запуска.
Полноценному ревью нужны доступные тесты, документация, сеть и временные файлы.
Если установленная версия поддерживает `--permission-mode auto`, запускай
с этим режимом. Внешняя песочница только для чтения обедняет проверку; исходники
и постоянное состояние защищает [мандат ревьюера](prompts/review-boilerplate.md).
Запуск `claude` передает поручение и выбранные материалы внешнему сервису
Anthropic. Сначала примени уже полученное разрешение. Если действующая политика
требует отдельного разрешения, получи его до передачи материалов и сохрани
ценность выбранной линии при ожидании решения. При реальной блокировке назови
конкретную команду или ресурс и наблюдаемую ошибку, затем выбери доступного
ревьюера с честно указанным ограничением. Не засчитывай урезанный запуск как
полноценную выбранную линию.
## Возможности установленного CLI
По выводу `claude --help` версии 2.1.263 от 2026-09-06 доступны:
- `--permission-mode auto`, `--model`, `--effort` и `--resume`;
- `--bg` для фоновой сессии;
- `claude agents --json --all`, `claude logs <id>`, `claude attach <id>` и
`claude stop <id>` для управления фоновыми сессиями.
Это подтверждение синтаксиса справкой CLI. Оно не доказывает выбранную
провайдером модель, примененную глубину или поведение конкретной фоновой
сессии. После обновления CLI сначала сверь актуальную справку.
## Запуск и продолжение
Первый обзор линии запускай свежей сессией с
[договором ревью](review-and-triage.md), отдельным фокусом и уникальным путем
отчета. Для короткого поручения подходит форма:
```text
claude --permission-mode auto --model <model> --effort <level> --bg "<mandate>"
```
Большой промпт оставь в общем временном каталоге и передай короткий мандат с
путем. Шумный поток CLI сохрани во временном журнале; координатору верни
ограниченный индекс и путь к отчету.
Перед узкой перепроверкой убедись, что исходный обзор завершен. Если после
финального результата его фоновый процесс все еще активен, останови этот
простаивающий процесс; работающий обзор с прогрессом не останавливай. Продолжи
сохраненную сессию командой
`claude --bg --resume <session-id> "<narrow re-check>"` без повторного
задания модели, `effort` и режима доступа: она использует настройки первого
запуска с `--permission-mode auto`. При сомнении сверь метаданные. Активная
сессия или переопределение ее сохраненных параметров создаст копию с новым
идентификатором.
Фоновую работу наблюдай через уведомления среды, ожидание и команды состояния;
`claude agents --json --all` включает завершенные сессии. Тайм-аут отдельного
запроса не означает гибель сессии: проверь состояние и журнал. Живую сессию с
прогрессом не останавливай из-за истечения времени ожидания.
Если CLI отсутствует или неработоспособен, выбери подходящую свежую линию
Codex и точно назови утраченное преимущество другого семейства моделей.
@@ -0,0 +1,67 @@
# Архив эмпирики: июль 2026
Перенесено 2026-09-06 после переработки скилла под Astra. Ниже дословно
сохранен прежний файл с наблюдениями 2026-07-10–2026-07-23 и тогдашними
вопросами. Его инструкции, назначения моделей и ограничения среды относятся
к прежней редакции. Текущие вопросы и порядок ведения журнала находятся в
[lessons.md](lessons.md).
---
# Эмпирика прогонов
Храни здесь только датированные факты, которые меняют выбор приёма, и живые
гипотезы. Поглощённый урок сжимай до строки с указателем на действующий
договор. Правь этот долговечный файл только после согласования с партнёром.
## Наблюдения
- 2026-07-10 — хост скрыл выбор роли и модели; стоимость осталась
незакреплённой. Исследователь нашёл блокирующий `.gitignore`, но без нужды
запустил полный набор тестов. Вывод поглощён в
[основную оптику](../SKILL.md) и [роли](roles.md).
- 2026-07-10 — главной утечкой контекста была повторная передача отчётов и
промптов через координатора. Вывод поглощён в
[правила обмена](../SKILL.md) и [сборку промптов](prompt-templates.md).
- 2026-07-12 — разные семейства ревьюеров пересеклись в двух темах примерно из
восьми и сохранили заметный независимый вклад. Вывод поглощён в
[договор ревью](review-and-triage.md).
- 2026-07-12 — самоприменение поймало сломанную сборку с необязательным
`notes.md` и показало, что язык обмена надо задавать явно. Вывод поглощён в
[сборку промптов](prompt-templates.md).
- 2026-07-12 — второй ревьюер того же семейства не дал новой родословной;
координатор вывел в свой контекст 44 хэша, полный отчёт и почти весь diff;
права ревьюера смешались с каналом результата; семь буквальных этапов
породили лишние проверки. Вывод поглощён в
[основную оптику](../SKILL.md) и [договор ревью](review-and-triage.md).
- 2026-07-23 — сверка с клодовским близнецом (claude-subagent-playbook):
перенесены проверенные его прогонами правила — одно ревью на версию
артефакта, саморевью исполнителя и сквозная проверка до внешних линий,
партнёр в петле (в [основную оптику](../SKILL.md)); цена тихой ошибки
как критерий уровня и проверка внешних фактов первоисточником
(в [роли](roles.md)).
- 2026-07-23 — по опыту партнёра хост принимает `reasoning_effort`
субагента, но фактически не применяет его; действующая ручка уровня —
модель и TOML-роль. Кавеат внесён в [роли](roles.md); снять после
починки хоста.
## Проверить боем
1. Удерживает ли Sol оптику тонкого мастера: что больше всего расходует
контекст координатора и можно ли направить это через файл или субагента.
2. Достаточна ли Luna `medium` для простой ограниченной реализации и
подтверждается ли, что `low` даёт слишком много повторной работы.
3. Окупается ли Terra `medium` на узком обзоре постановки и проверке
реализации по задаче.
4. Сходится ли обычная реализация на Sol `medium`, а сложная — на Sol
`high`, с меньшей общей стоимостью петли.
5. Оправдан ли ручной `xhigh` хоть в одном классе задач; текущая гипотеза —
штатно переходить от `high` сразу к `max` только по сильному триггеру.
6. Остаётся ли дерево неизменным после ревьюера с `workspace-write` и явным
мандатом сохранять результат только в назначенный отчёт.
7. Доступны ли ревьюеру поиск и документация при текущих сетевых разрешениях.
8. Достаточно ли файлового канала, чтобы координатор не открывал полный
отчёт, diff и сырые журналы.
9. Может ли будущая линия другого семейства читать и писать общий
`$SCRATCH`. Пока адаптер запуска не проверен, он не является действующим
договором.
@@ -1,57 +1,47 @@
# Эмпирика прогонов # Эмпирика прогонов
Храни здесь только датированные факты, которые меняют выбор приёма, и живые Здесь остаются наблюдения, влияющие на ближайшие решения, и открытые
гипотезы. Поглощённый урок сжимай до строки с указателем на действующий вопросы. Обращайся к ним при разборе похожего случая или доработке скилла.
договор. Правь этот долговечный файл только после согласования с партнёром.
## Наблюдения ## Как поддерживать журнал
- 2026-07-10 — хост скрыл выбор роли и модели; стоимость осталась При согласованном обновлении добавляй существенный новый случай: дату,
незакреплённой. Исследователь нашёл блокирующий `.gitignore`, но без нужды модель и среду, наблюдаемый результат, основание вывода и открытый вопрос,
запустил полный набор тестов. Вывод поглощён в если он остался. Отделяй наблюдение от предполагаемой причины. Повтор
[основную оптику](../SKILL.md) и [роли](roles.md). известного случая заслуживает записи, когда добавляет свидетельство или
- 2026-07-10 — главной утечкой контекста была повторная передача отчётов и меняет вывод. Подробный отчет прогона остается в материалах задачи.
промптов через координатора. Вывод поглощён в
[правила обмена](../SKILL.md) и [сборку промптов](prompt-templates.md).
- 2026-07-12 — разные семейства ревьюеров пересеклись в двух темах примерно из
восьми и сохранили заметный независимый вклад. Вывод поглощён в
[договор ревью](review-and-triage.md).
- 2026-07-12 — самоприменение поймало сломанную сборку с необязательным
`notes.md` и показало, что язык обмена надо задавать явно. Вывод поглощён в
[сборку промптов](prompt-templates.md).
- 2026-07-12 — второй ревьюер того же семейства не дал новой родословной;
координатор вывел в свой контекст 44 хэша, полный отчёт и почти весь diff;
права ревьюера смешались с каналом результата; семь буквальных этапов
породили лишние проверки. Вывод поглощён в
[основную оптику](../SKILL.md) и [договор ревью](review-and-triage.md).
- 2026-07-23 — сверка с клодовским близнецом (claude-subagent-playbook):
перенесены проверенные его прогонами правила — одно ревью на версию
артефакта, саморевью исполнителя и сквозная проверка до внешних линий,
партнёр в петле (в [основную оптику](../SKILL.md)); цена тихой ошибки
как критерий уровня и проверка внешних фактов первоисточником
(в [роли](roles.md)).
- 2026-07-23 — по опыту партнёра хост принимает `reasoning_effort`
субагента, но фактически не применяет его; действующая ручка уровня —
модель и TOML-роль. Кавеат внесён в [роли](roles.md); снять после
починки хоста.
## Проверить боем Усвоенное правило живет в основном тексте, справочнике или мандате по месту
применения. В журнале достаточно указателя на него рядом с исходным случаем.
Изменение правил и выводов согласуй с партнером; сохраняй ранее полученное
разрешение в его границах.
1. Удерживает ли Sol оптику тонкого мастера: что больше всего расходует После существенной смены скилла, моделей или среды, а также когда старые
контекст координатора и можно ли направить это через файл или субагента. записи затрудняют поиск живых вопросов, перенеси завершенный период в
2. Достаточна ли Luna `medium` для простой ограниченной реализации и [архив](lessons-archive.md). Сохрани текст случаев без пересказа и укажи
подтверждается ли, что `low` даёт слишком много повторной работы. границу переноса. Сначала оставь здесь актуальные нерешенные вопросы с
3. Окупается ли Terra `medium` на узком обзоре постановки и проверке указателями на исходные свидетельства; устаревшие предположения остаются
реализации по задаче. частью истории. Архив открывай для конкретного случая, нужного доказательства
4. Сходится ли обычная реализация на Sol `medium`, а сложная — на Sol или проверки происхождения правила.
`high`, с меньшей общей стоимостью петли.
5. Оправдан ли ручной `xhigh` хоть в одном классе задач; текущая гипотеза — ## Проверить на обычных задачах
штатно переходить от `high` сразу к `max` только по сильному триггеру.
6. Остаётся ли дерево неизменным после ревьюера с `workspace-write` и явным - Удерживает ли координатор полезный объем контекста: какие подробности нужны
мандатом сохранять результат только в назначенный отчёт. для самостоятельного решения, а какие повторно проходят через координатора
7. Доступны ли ревьюеру поиск и документация при текущих сетевых разрешениях. без пользы? Продолжение июльских вопросов об обмене из
8. Достаточно ли файлового канала, чтобы координатор не открывал полный [архива](lessons-archive.md#проверить-боем).
отчёт, diff и сырые журналы. - Когда переиспользование исполнителя и помощь Luna сокращают повторную
9. Может ли будущая линия другого семейства читать и писать общий работу, а когда прежний контекст или расходы на делегирование мешают?
`$SCRATCH`. Пока адаптер запуска не проверен, он не является действующим - Помогает ли триаж исполнителю сохранять соразмерность исправлений после
договором. нескольких кругов ревью? Нужны случаи с основаниями принятых и отклоненных
находок.
Эти вопросы уточнены 2026-09-06 для новой редакции. Наблюдай их там, где
обычная задача дает материал; отдельные сравнительные прогоны требуют
собственной цели и оправданной стоимости.
## Граница архива
2026-09-06 июльский файл целиком сохранен в [архиве](lessons-archive.md).
Его прежние ограничения ролей и глубины не задают текущий запуск: для этого
служат [возможности среды](roles.md) и [механика Claude](claude.md).
@@ -1,160 +1,142 @@
# Сборка нативных промптов # Мандаты и файловый обмен
Это механика после выбора приёма в [основной оптике](../SKILL.md). Смысл Читай этот файл, когда готовишь поручение агенту или передаешь большой материал
ревью и триажа задаёт [единый договор](review-and-triage.md); здесь только между участниками. Смысл ревью и триажа задает
параметры, файловые пути и сборка. [единый договор](review-and-triage.md); здесь находятся короткие заготовки.
Постоянный текст живёт в [prompts/](prompts/): ## Выбор канала
- [result-contract.md](prompts/result-contract.md) — обычный результат; Ясное поручение, уточнение или вердикт передавай коротким сообщением. Файл
- [review-boilerplate.md](prompts/review-boilerplate.md) — независимое ревью; нужен, когда материал велик, используется повторно или должен попасть от одного
- [triage-header.md](prompts/triage-header.md) — закрытие находок; агента к другому, не проходя целиком через контекст координатора.
- [recheck-header.md](prompts/recheck-header.md) — узкая перепроверка;
- [runtime-language.md](prompts/runtime-language.md) — язык временного обмена.
Меняй договор только в его авторитетном файле. В параметрических файлах держи Для файлового обмена выбери общий временный каталог задачи. Дай каждому
только факты конкретной задачи. результату уникальный абсолютный путь с версией артефакта и линией обзора в
имени. Получатель читает исходный файл напрямую; координатор передает путь и
короткую цель, не копирует полный материал в новый промпт.
## Каталог прогона Постоянные английские блоки находятся в [prompts/](prompts/):
`$SCRATCH` определён в основном файле как общий временный каталог. Для задачи - [result-contract.md](prompts/result-contract.md) - ограниченный результат
создай в нём уникальную подпапку, далее `D`. `P` обозначает каталог исполнителя, исследователя или проверяющего;
`references/prompts` этого скилла. Каждый агент получает отдельный `REPORT`. - [review-boilerplate.md](prompts/review-boilerplate.md) - мандат и формат
независимого обзора;
- [triage-header.md](prompts/triage-header.md) - разбор находок реализации;
- [recheck-header.md](prompts/recheck-header.md) - узкая перепроверка;
- [runtime-language.md](prompts/runtime-language.md) - язык временного обмена.
Собирай файлы механически, не читая полезную нагрузку в контекст координатора. ## Короткое поручение
В схемах ниже `A + B -> C` означает текстовое объединение файлов в заданном
порядке нативным средством текущей ОС; `[A]` означает необязательный файл.
Схема не предписывает оболочку, синтаксис пути или отдельный этап процесса.
## Исполнитель или исследователь Если задача ясна из текущего контекста, достаточно такого сообщения:
`params.md`:
```text ```text
GOAL: one verifiable goal Goal: <one verifiable outcome>.
BOUNDARIES: allowed and forbidden work Scope: <allowed files, state, or question>.
READ FIRST: paths to contracts and examples Read: <only required paths>.
CHECKS: commands this agent should run Check: <relevant command or evidence>.
REPORT: absolute unique path Return: <concise result, or unique report path when the payload is large>.
Escalate design or scope changes with options, costs, and your recommendation.
``` ```
Убирай ненужные строки. Не создавай обменный файл ради нескольких предложений.
## Большое поручение
В параметрическом файле оставь только факты конкретной задачи:
```text ```text
D/params.md GOAL: one verifiable outcome
+ P/result-contract.md WORKING DIRECTORY: absolute path
+ P/runtime-language.md BOUNDARIES: allowed work and protected state
-> D/prompt.md READ FIRST: exact paths
CHECKS: commands or hypotheses
REPORT: unique absolute path
``` ```
Самодостаточную постановку и подробное обязательное чтение добавляй только Если агенту нужен полный отчет, передай ему пути к
когда они нужны выбранной работе. [договору результата](prompts/result-contract.md) и
[правилу языка](prompts/runtime-language.md) либо механически собери эти файлы
с параметрами. Координатор не перепечатывает постоянные блоки. Передай агенту
короткое сообщение с путем к поручению. Сборка файлов служит оптимизацией для
длинного материала.
## Ревью постановки или реализации ## Исполнитель Sol или Terra
`review-common.md` одинаков для одного обзора: Ограничь поручение так, чтобы контекста исполнителя хватало на реализацию,
проверки и исправления. К короткому или большому поручению Sol или Terra
добавь блок:
```text
You may delegate bounded mechanical support to Luna, reusing a suitable
existing helper when its context is useful. You remain responsible for the
result and for preventing conflicting writes within your assigned scope.
Escalate any need for another implementer at the Sol or Terra level to the
coordinator, who decides how to split and assign the work. If the task outgrows
your available context, raise that while there is still room to explain the
remaining work.
```
Если для задачи уместен TDD, укажи в поручении скилл `/tdd` по имени,
ожидаемое поведение и уже согласованные границы проверки.
## Независимое ревью
Параметры обзора должны назвать:
```text ```text
TITLE: short review title TITLE: short review title
WORKING DIRECTORY: absolute repo path WORKING DIRECTORY: absolute path
STATEMENT: task and parent spec paths STATEMENT: task and governing contract paths
REVIEW INPUT: task sections, exact paths, a prepared diff path, or a diff command REVIEWED VERSION: commit, prepared diff, exact paths, or other stable boundary
OUT OF SCOPE: what is explicitly outside this review FOCUS: one explicit lens
CHECKS: commands and expected counters OUT OF SCOPE: unrelated work
CHECKS: useful commands and expected observations
FINDING PREFIX: unique stable prefix
REPORT: unique absolute path
``` ```
`REVIEW INPUT` должен позволять отличить проверяемую работу от посторонних Передай пути к этим параметрам, [мандату ревьюера](prompts/review-boilerplate.md)
изменений. Выбери достаточную форму для текущего дерева; диапазон коммитов не и [правилу языка](prompts/runtime-language.md) либо механически собери из них
обязателен, если точные пути, разделы или подготовленный diff уже задают границу. полное поручение.
Каждая линия получает свой фокус, префикс и путь. Отчеты параллельных линий не
передаются друг другу до завершения исходных обзоров.
`review-output.md` задаёт поля конкретной линии: Для проверки формы можно добавить такой фокус:
```text ```text
TYPE: spec | task | code Before reading the changes, sketch one plausible solution shape from the
FINDING PREFIX: SPEC-A | SPEC-B | TASK | CODE statement: responsibilities, boundaries, data movement, and necessary
REPORT: absolute unique path artifacts. This is a hypothesis, not a prescribed design. Compare the actual
shape with it, identify decisions left open by the statement, and judge each
decision against repository values, risk, and task proportion.
``` ```
`review-focus.md` задаёт один выбранный фокус. Для постановки: Если линия оценивает структуру и сопровождаемость кода, добавь этот фокус.
Названия запахов взяты из `/code-review` Мэтта Покока (Фаулер, _Refactoring_,
гл. 3):
```text ```text
Review the statement or plan at its own level of abstraction, not as an Use Fowler's code smells as prompts for judgment: Mysterious Name,
implementation. Check facts against code, hidden one-line decisions, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession,
boundaries, checkable acceptance criteria, and ways to satisfy the wording Repeated Switches, Shotgun Surgery, Divergent Change, Speculative Generality,
without the intended result. Message Chains, Middle Man, Refused Bequest.
Treat them as heuristics; documented repository conventions take precedence.
A high-level document is not incomplete merely because implementation choices For a finding, explain the maintenance consequences in this project and
remain open. Request changes only for a defect the document itself must judge the proposed remedy against those costs and the task's scope.
resolve: one that changes its goal, boundaries, architectural direction,
acceptance criteria, dependencies, or the ability to decompose work safely.
When a detail can be decided locally by a downstream owner without changing
those properties, do not make it a finding or prescribe the implementation.
If deferring it carries a relevant risk, record that risk as a non-gating
consideration.
APPROVED means that no defect at the document's own level requires revision.
It does not mean that all downstream questions have been answered.
``` ```
Для реализации выбери task lens или code lens из договора ревью: ## Разбор и перепроверка
```text Исполнитель разбирает реализацию по
TASK LENS: compare the implementation with the statement, acceptance criteria, [triage-header.md](prompts/triage-header.md). Передай ему пути к подробным
boundaries, and intended observable result. отчетам без изменений, решения координатора и уникальный путь резолюций.
Короткая сводка ревьюера не заменяет исходные доказательства.
CODE LENS: seek correctness bugs, broken invariants, regressions, security Исходному ревьюеру для узкой перепроверки передай
issues, and tests that can pass without proving the behavior. [recheck-header.md](prompts/recheck-header.md), путь к его исходному отчету,
``` путь к резолюциям, границу новой версии, нужные проверки и новый уникальный
путь отчета. Продолжи тот же тред или сессию: здесь его прежний контекст
полезен.
```text В каждом файловом варианте агент возвращает короткий индекс и путь. Полный
D/review-common.md отчет остается доступен следующему владельцу работы без пересказа координатором.
+ D/review-focus.md
+ D/review-output.md
+ P/review-boilerplate.md
+ P/runtime-language.md
-> D/review-prompt.md
```
Для двух слепых линий создай `review-focus-a.md` и `review-focus-b.md`,
`review-output-a.md` и `review-output-b.md` со своими `TYPE`, уникальными
`FINDING PREFIX` и разными путями `REPORT`. `review-common.md` используй один;
отчёты и финальные сообщения линий не объединяй до их завершения.
## Триаж постановки
Координатор читает краткие строки и нужные подробности, принимает решение по
каждому `SPEC-*` и обновляет постановку. Резолюции сохраняет в
`spec-resolutions.md`; этот файл и новая постановка идут исходному ревьюеру
на узкую перепроверку.
## Триаж реализации
Передай исполнителю актуальные подробные отчёты без пересказа: исходные обзоры
в первом круге, отчёты перепроверки для оставшихся и новых находок в следующих.
`triage-params.md` содержит путь итогового отчёта и проверки.
`coordinator-notes.md` добавляй только для совпадений, противоречий и новых
решений уровня задачи.
```text
P/triage-header.md
+ D/triage-params.md
+ <current detailed report 1>
+ [<current detailed report 2>]
+ [D/coordinator-notes.md]
+ P/runtime-language.md
-> D/fix-prompt.md
```
## Узкая перепроверка
Продолжай исходный тред ревьюера. `recheck-params.md` задаёт пути к его
исходному отчёту и файлу резолюций, нужную проверку и новый уникальный
`REPORT`.
```text
P/recheck-header.md
+ D/recheck-params.md
+ P/runtime-language.md
-> D/recheck-prompt.md
```
Перепроверка следует решению координатора по договору ревью, а не номеру этапа.
@@ -1,15 +1,24 @@
# Narrow re-check # Narrow re-check
Read your original report and the resolution report supplied by the caller. Continue from your original review. Read that report, the resolution report,
Re-check only your original findings and changes immediately adjacent to and the new reviewed version. Re-check only your original findings and changes
their resolution. Do not perform a full review. immediately adjacent to their resolution.
For every original ID report `CLOSED`, `NOT_CLOSED`, `REJECTION_VALID`, For every `FIXED` or `REJECTED` ID report `CLOSED`, `NOT_CLOSED`,
or `REJECTION_INVALID`, with concise evidence. Report a newly exposed `REJECTION_VALID`, or `REJECTION_INVALID` with concise evidence. Carry
adjacent defect with a new stable ID; the narrow scope limits exploration, not `OUT_OF_SCOPE` and `NEEDS_DECISION` into the index unchanged; do not
honest reporting. re-judge them or include them in your verdict. They remain open for their
owner. Judge a rejection by its contract and evidence. For a `FIXED`
resolution also report
`PROPORTIONATE` or `OVERREACH`; put your own earlier prescription on trial
and price added complexity against the risk it removes.
Write the detailed re-check to REPORT. Return only: Narrow scope limits exploration, not honest reporting. Give a newly exposed
adjacent defect a new stable ID and return it for triage. `OVERREACH` is an
upward signal and does not by itself reopen the original defect.
Preserve sources and persistent state. Write the detailed re-check to REPORT.
Return only:
- `VERDICT: APPROVED | CHANGES_REQUESTED`; - `VERDICT: APPROVED | CHANGES_REQUESTED`;
- status counters; - status counters;
@@ -1,14 +1,18 @@
## Result contract ## Result contract
Write the full result through the channel chosen by the caller: Use the channel selected by the caller.
For a short message, return only the evidence and decision needed next. For a
file channel, write the detailed result to REPORT and return status, counters,
and `REPORT: <absolute path>`.
When relevant, the detailed result contains:
- `STATUS: complete | questions | blocked` - `STATUS: complete | questions | blocked`
- `EVIDENCE:` changed files, executed commands, and final counters - `EVIDENCE:` changed files, checks, and observed results
- `DECISIONS:` only questions for the coordinator or partner - `DECISIONS:` design or scope questions with options, costs, and a recommendation
- `FINDINGS:` severity, location, essence, and verification method - `FINDINGS:` severity, location, claim, and verification method
- `NEXT:` one concrete action or `none` - `NEXT:` one concrete action or `none`
Omit empty sections. Do not include raw output or a reasoning narrative. For a Omit empty sections and raw tool output. Do not duplicate a file report in the
file channel, put the full result in the named file and return only status, final message.
counters, and `REPORT: <absolute path>`. For a message channel, return one
concise result without a report path.
@@ -1,40 +1,48 @@
## Mandate ## Reviewer mandate
- Review independently and test hypotheses. Do not edit source files, - Review the stated version independently. Treat prior claims and the proposed
persistent environment state, or Git. implementation as hypotheses until evidence supports them.
- Use the working permissions needed for checks, caches, temporary artifacts, - Read sources, run relevant tests, consult available documentation and
documentation, and primary-source research. primary sources, and use temporary files or caches when they strengthen the
- Write the detailed report only to REPORT. This assigned exchange file is the verdict.
sole write exception to the observer mandate. - Preserve source files, Git, services, data, and other persistent state.
- Treat another agent's claims as untrusted until evidence supports them. Write the detailed result only to REPORT.
- Judge defects at the reviewed artifact's own level and price a proposed fix
against the risk it removes. A finding is a claim, not an order.
- You may use Luna for bounded mechanical checks or noisy evidence gathering
when available. Carry over the review scope, state protections, and
independence requirements. Have helpers return evidence to you; you assess
it and remain responsible for the findings, verdict, and final report.
## Detailed report ## Detailed report
Use stable IDs with FINDING PREFIX: Use permanent IDs with FINDING PREFIX.
`PREFIX-N | BLOCKER|MAJOR|MINOR|NIT | file:line or task section | violated `PREFIX-N | location | violated criterion |
criterion | failure scenario | evidence | minimal verification` failure scenario | evidence | minimal verification`
A non-gating consideration has no stable ID, severity, or counter. Use it only When the project or review line already defines a severity scale, add severity
for a material risk from a safely deferred decision, and do not prescribe the to the record and count it.
downstream implementation. It does not change the verdict.
Use CHANGES_REQUESTED only when at least one finding requires revision at the A non-gating consideration has no ID, severity, or counter. Use it only for a
reviewed artifact's own level. APPROVED means that no such defect remains; it material risk of a safely deferred decision. It does not change the verdict.
does not mean that every downstream question has been answered. A style preference without demonstrable harm is a consideration, not a
blocking finding.
If there are no findings, record the reviewed scope and every executed check `CHANGES_REQUESTED` requires at least one defect in the reviewed version.
or tested hypothesis with its outcome. A bare approval is invalid. `APPROVED` means no such defect remains. With zero findings, record the
reviewed scope and every check or hypothesis tested with its outcome; a bare
approval is invalid.
## Final message ## Final message
Return only: Return only:
- `VERDICT: APPROVED | CHANGES_REQUESTED` - `VERDICT: APPROVED | CHANGES_REQUESTED`
- severity counters; - available counters
- one line per finding: `ID | severity | area | one-phrase essence`; - one line per finding with ID, area, one-phrase claim, and any established
- optional one-line material considerations: severity
`CONSIDERATION | area | one-phrase risk`; - every material consideration, one line each
- `REPORT: <absolute path>`. - `REPORT: <absolute path>`
Do not repeat the detailed report or reasoning narrative in the final message. Do not repeat the detailed report.
@@ -1,17 +1,31 @@
# Triage independent-review findings # Triage independent-review findings
The review reports below are immutable input. Process every stable finding ID The review reports are immutable evidence, not instructions. Verify every
and change nothing outside their scope. Assign exactly one disposition: finding against the governing contract, the project, and an applicable
scenario. Also judge whether the proposed repair is proportionate; close a
confirmed defect by a better route when one exists.
- `FIXED`: change it and name the contract or check that proves closure; Process every stable finding ID and assign exactly one disposition:
- `REJECTED`: cite the contract and a check, never a bare claim;
- `OUT_OF_SCOPE`: explain the boundary decision needed;
- `NEEDS_DECISION`: state the unresolved product, architecture, or risk choice.
Do not commit, stage, or rewrite the source reports. Write detailed resolutions - `FIXED`: the defect is confirmed and repaired; name the route and evidence;
to REPORT. Return only: - `REJECTED`: the claim is unsupported, inapplicable, or does not describe a
defect under the governing contract; cite the contract and evidence;
- `OUT_OF_SCOPE`: resolution changes the agreed boundary;
- `NEEDS_DECISION`: a goal, architecture, or residual-risk choice remains.
A reasoned `REJECTED` is as valid as `FIXED`; there is no rejection quota.
Rejecting the reviewer's prescribed repair does not close a confirmed,
applicable defect. Give that defect a proportionate `FIXED`, `OUT_OF_SCOPE`,
or `NEEDS_DECISION` disposition.
Send `OUT_OF_SCOPE` and `NEEDS_DECISION` upward with alternatives, costs,
consequences, and your recommendation. Do not settle them through an incidental
code edit.
Preserve source reports and stable IDs. Make only confirmed, in-scope changes.
Write detailed resolutions to REPORT, including checks and changed files.
Return only:
- overall status and disposition counters; - overall status and disposition counters;
- one line per finding: `ID | disposition | one-phrase essence`; - one line per finding: `ID | disposition | one-phrase essence`;
- questions for the coordinator and executed-check counters; - coordinator decisions needed and executed-check counters;
- `REPORT: <absolute path>`. - `REPORT: <absolute path>`.
@@ -1,155 +1,171 @@
# Ревью и триаж # Ревью и триаж
Читай этот файл целиком после выбора независимого ревью постановки или Читай этот файл целиком после выбора независимого ревью постановки или
реализации. Режим и стоимость выбираются в [основной оптике](../SKILL.md); реализации. Это единственный подробный договор обзора, разбора находок и
здесь один авторитетный договор выполнения. перепроверки.
- [Независимость и фокус](#независимость-и-фокус) - [Выбор обзора](#выбор-обзора)
- [Файловый маршрут](#файловый-маршрут) - [Мандат и независимость](#мандат-и-независимость)
- [Отчёт ревьюера](#отчёт-ревьюера) - [Отчет ревьюера](#отчет-ревьюера)
- [Владелец триажа](#владелец-триажа) - [Разбор находок](#разбор-находок)
- [Перепроверка и круги](#перепроверка-и-круги) - [Перепроверка](#перепроверка)
- [Что читает координатор](#что-читает-координатор) - [Когда работа не сходится](#когда-работа-не-сходится)
- [Доказательства для координатора](#доказательства-для-координатора)
## Независимость и фокус ## Выбор обзора
Запускай ревьюера свежей сессией без истории исполнителя и других ревьюеров. Подбирай ревью по неопределенности и цене ошибки. Нативный ревьюер, Claude и
Повторную проверку точечных исправлений продолжает тот же ревьюер: его контекст свежая Astra - доступные линии. Обязательного набора нет. Отдельные основания:
находок полезен и не отменяет независимость исходного обзора. свежий контекст ловит предположения автора, другое семейство моделей замечает
иные слепые зоны, Astra судит об устройстве и соразмерности. Одного обзора
достаточно, если он закрывает существенный риск. Две сфокусированные линии
оправданы, когда их независимый вклад стоит цены.
Для двойного ревью разделяй фокусы: Для ревью формы и сопровождаемости бери подходящую линзу из
[шаблонов поручений](prompt-templates.md#независимое-ревью).
- **по задаче** — соответствие постановке, критериям, границам и ожидаемому Для двух линий заранее раздели фокус, например:
результату;
- **по коду** — корректность, межмодульные инварианты, регрессии, безопасность
и честность тестов.
Давай обоим общую постановку и изменённый объём, но отдельный файл фокуса и - соответствие задаче, границам и наблюдаемому результату;
отдельный путь отчёта. Они не знают о второй линии до завершения исходных - корректность, межмодульные инварианты, регрессии и честность проверок.
обзоров. Разные семейства моделей предпочтительны; две доступные линии одного
семейства всё равно полезны на сложной задаче, если их фокусы различаются.
Ревьюер — наблюдатель с нужными инструментами. Он может читать код, запускать Перед первым обзором каждой линии зафиксируй проверяемую версию артефакта.
тесты, проверять гипотезы, создавать временные кэши и писать назначенный файл Одна линия делает один общий обзор этой версии. Не запускай новый общий обзор
отчёта. Исходники, постоянное окружение и Git он не меняет. Координатор той же линии без изменения версии или нового основания; точечные исправления
сверяет состояние дерева до и после. проверяются узко.
## Файловый маршрут ## Мандат и независимость
Назначь каждому участнику уникальные файлы в каталоге задачи внутри Исходный обзор запускается в свежем контексте без истории исполнителя и других
`$SCRATCH`. Временные промпты и отчёты веди на английском. ревьюеров. Ревьюер получает постановку, точные границы версии, свой фокус,
доступные проверки и уникальный путь отчета. Он самостоятельно сверяет факты,
а утверждения других агентов считает гипотезами до подтверждения.
Ревьюеру разрешены чтение, тесты, доступная сеть, документация и временные
файлы, нужные для проверки. Его мандат запрещает менять исходники, Git,
службы, данные и другое постоянное состояние. Результат обзора - назначенный
отчет; временные кэши и выводы инструментов допустимы.
Координатор остается владельцем общего дерева и стенда и при необходимости
сверяет их состояние до и после обзора.
Полный отчет пишет сам ревьюер в место, доступное владельцу триажа. Координатор
не пересказывает и не восстанавливает доказательства по краткой сводке. Если
общий файл недоступен, используй доступный канал и точно назови ограничение
передачи: где остался полный отчет и какие доказательства не переживут сессию.
Готовые английские блоки мандата и языка лежат в
[шаблоне ревьюера](prompts/review-boilerplate.md) и
[правиле обмена](prompts/runtime-language.md).
## Отчет ревьюера
Ревью возвращает проверяемые утверждения. Каждая находка получает
устойчивый идентификатор с уникальным префиксом линии. Сохраняй идентификатор
во всех следующих разборах и перепроверках. Полная запись содержит:
```text ```text
reviewer -> detailed report file -> triage owner PREFIX-N | location | violated criterion | failure scenario | evidence |
| minimal verification
+-> short summary -> coordinator
``` ```
Ревьюер сам пишет полный отчёт в назначенный файл. Координатор не принимает Существенный риск безопасно отложенного решения можно записать как
полный отчёт сообщением и не переписывает его перед передачей. Владелец неблокирующее соображение без идентификатора, тяжести и влияния на вердикт.
триажа читает исходные отчёты напрямую и пишет подробные резолюции в следующий Если проект или линия уже задает шкалу, добавь в запись тяжесть и считай ее.
файл. Замечание о стиле без проверяемого ущерба остается соображением и не требует
исправления.
`CHANGES_REQUESTED` означает, что версия содержит хотя бы один дефект, который
нужно исправить на ее собственном уровне. `APPROVED` означает отсутствие
такого дефекта.
Если общий каталог недоступен, верни через контекст компактный индекс без Даже при нуле находок отчет называет просмотренный объем, проверенные гипотезы,
нарратива. Координатор сразу сообщает партнёру, какой агент не получил доступ, запущенные команды и их результаты. Голый вердикт без свидетельств не
к какому пути, какой запасной канал использован и что нужно проверить после засчитывается. Сообщение координатору может содержать только вердикт, доступные
задачи. Сбой канала ухудшает экономию контекста, но не отменяет ревью. счетчики, по одной строке на идентификатор и на каждое существенное
неблокирующее соображение, а также путь к подробному отчету.
## Отчёт ревьюера ## Разбор находок
Каждая находка получает устойчивый идентификатор с уникальным префиксом Каждую находку сначала проверяют на трех осях: фактическая верность,
линии: `SPEC-A-N` и `SPEC-B-N` для постановки, `TASK-N` для соответствия применимость сценария к этому проекту и соразмерность исправления. Предложение
реализации задаче и `CODE-N` для качества кода. Полный файл содержит: ревьюера - один из вариантов. Исполнитель может закрыть дефект более подходящим
путем. Аргументированное отклонение имеет тот же статус, что и подтвержденное
исправление; квота отклонений не нужна.
- идентификатор, тяжесть и `файл:строка` либо раздел постановки; Находки о постановке разбирает координатор. Он сохраняет цель и границы,
- нарушенный критерий; проверяет технические утверждения доступным способом и выносит владельцу
- сценарий сбоя и доказательство; продуктовый выбор или существенный риск.
- минимальный способ проверки.
Неблокирующее соображение не получает идентификатор и тяжесть, не входит в Находки реализации разбирает исполнитель с контекстом кода. Он получает
счётчики и не меняет вердикт. Так сохраняй только существенный риск от подробные отчеты напрямую. Координатор добавляет только решения уровня задачи,
отложенного решения, не проектируя реализацию за следующего владельца. совпадения или противоречия линий. Каждый идентификатор получает один исход:
`CHANGES_REQUESTED` означает, что хотя бы одна находка требует исправить
документ на его собственном уровне. `APPROVED` означает отсутствие такого
дефекта, а не отсутствие всех будущих вопросов.
В сообщение координатору верни только: - `FIXED` - дефект подтвержден и исправлен; названы способ и проверка;
- `REJECTED` - утверждение не подтвердилось, неприменимо к проекту или не
описывает дефект по действующему договору; приведены контракт и доказательство;
- `OUT_OF_SCOPE` - решение меняет согласованные границы;
- `NEEDS_DECISION` - требуется выбор цели, устройства или остаточного риска.
- `VERDICT: APPROVED | CHANGES_REQUESTED`; `OUT_OF_SCOPE` и `NEEDS_DECISION` поднимаются координатору с вариантами,
- счётчики по тяжести; последствиями, стоимостью и рекомендацией исполнителя. Координатор не заменяет
- по одной строке на находку: идентификатор, область, суть и тяжесть; этот разбор молчаливым решением. Подробный файл резолюций сохраняет связь
- по одной строке на существенное неблокирующее соображение, если оно есть; между исходной находкой, ее исходом и проверкой.
- абсолютный путь к полному отчёту.
При отсутствии находок полный файл перечисляет просмотренный объём и Отклонение предложенного способа починки само по себе не закрывает
выполненные проверки. Голая строка `APPROVED` без подтверждения работы не подтвержденный применимый дефект. Такой дефект получает соразмерное
засчитывается. `FIXED`, либо решение владельца через `OUT_OF_SCOPE` или
`NEEDS_DECISION`.
## Владелец триажа ## Перепроверка
**Постановка.** Координатор принимает или отклоняет каждую находку, потому что Точечные исправления и отклонения проверяет тот же ревьюер в продолжении
цель, границы и критерии — его решения. Открытое техническое исследование он исходного контекста. Он читает собственный отчет, резолюции и измененную
может отдать deep-reasoner, но сам читает верхнеуровневые документы и итоговую версию, затем проверяет исходные идентификаторы и только соседние изменения.
постановку. Продуктовый выбор и принятие риска выносит партнёру. Для каждого `FIXED` или `REJECTED` он возвращает `CLOSED`, `NOT_CLOSED`,
`REJECTION_VALID` или `REJECTION_INVALID` с кратким доказательством.
`OUT_OF_SCOPE` и `NEEDS_DECISION` переносятся в индекс без изменения:
ревьюер их не пересматривает и не включает в свой вердикт. Они остаются
открытыми до решения владельца.
**Реализация.** Пофиндинговый триаж делает исполнитель, у которого есть Для `FIXED` ревьюер отдельно оценивает соразмерность починки:
контекст кода. Координатор передаёт актуальные подробные отчёты выбранных линий `PROPORTIONATE` либо `OVERREACH` с объяснением лишнего охвата. Для
без изменений и добавляет отдельную короткую шапку: совпадения, противоречия и `REJECTED` он судит по аргументу и проверке; совпадение со вкусом не требуется.
возможный выход за границы. Он не сливает и не удаляет «дубликаты». Узкая область не требует скрывать замеченный рядом новый дефект: такой дефект
получает новый устойчивый идентификатор и возвращается владельцу триажа.
Для каждого идентификатора исполнитель возвращает один статус: Выбранная линия ревью закрывается после начального `APPROVED` без открытых
вопросов либо после успешных нужных перепроверок и разрешения владельцем всех
вынесенных вопросов. Полномочный владелец также может явно записать принятие
оставшегося риска. Вердикт одной линии не закрывает открытые идентификаторы
другой.
- `FIXED` — исправлено и названо доказательство; Изменения шире прежней версии, слабый исходный отчет или новая независимая
- `REJECTED` — отклонено через контракт и проверку; неопределенность могут оправдать свежий общий обзор. Сам номер круга такого
- `OUT_OF_SCOPE` — требует отдельного решения о границах; основания не создает.
- `NEEDS_DECISION` — технического решения недостаточно.
Подробности остаются в файле триажа. Координатор получает по одной компактной ## Когда работа не сходится
строке `ID | status | essence` на находку, счётчики, вопросы уровня задачи и
путь. Риск и выход за границы решает координатор; техническую истинность
находки — исполнитель и ревьюер.
## Перепроверка и круги Сигналы несходимости: тот же спор повторяется без новых доказательств,
исправления разрастаются дальше исходного риска, новые общие обзоры мало что
добавляют или стороны проверяют разные версии и контракты. Координатор сначала
останавливает петлю и устанавливает общий предмет спора. Затем он может
уточнить постановку, сузить проверку, сменить исполнителя или ревьюера,
повысить доступную модель или глубину, разделить задачу либо принять риск в
пределах полномочий.
Один круг — назначенные обзоры, триаж его владельца и узкая перепроверка. Третий круг - практическое напоминание явно объяснить пользователю или
Исходный ревьюер читает свой отчёт и файл резолюций, проверяет только свои полномочному владельцу, почему работа не сходится, сколько стоит продолжение и
находки и соседние изменения. Выбранное независимое ревью закрывается какой подход меняется. Пятый круг - напоминание не начинать еще один повтор
`APPROVED` либо явным принятием риска полномочным координатором или партнёром. без явного решения. Это ориентиры наблюдения; обязательных этапов и
Координатор получает по одной компактной строке со статусом каждого исходного автоматических запросов разрешения здесь нет.
или нового идентификатора; подробности остаются в файле перепроверки.
Если идентификатор не закрыт либо появился рядом с исправлением, актуальный
отчёт перепроверки напрямую идёт владельцу следующего триажа. Координатор не
восстанавливает доказательства из компактной сводки.
Повторно поднятое аргументированно отклонённое замечание пометь как спор и ## Доказательства для координатора
отправь на отдельную узкую проверку усиленного уровня. Полный новый обзор
нужен, когда реализация широко изменилась, исходный отчёт слаб или требуется
новая независимая линия.
Третий круг — точка вмешательства: сообщи партнёру, почему процесс не сходится, Координатор обычно получает вердикт, счетчики, компактные строки находок и
какова стоимость и что меняешь. Координатор может уточнить постановку, пути. Он раскрывает подробный отчет, когда находка меняет границы или риск,
повысить модель или effort, заменить исполнителя свежим сильным агентом, линии противоречат друг другу, возник спор, сводка не дает основания для
разделить задачу, назначить усиленный гейт либо принять риск в пределах решения либо это нужно для собственной приемки. Для спорного утверждения он
мандата. читает соответствующее доказательство. Весь diff или журнал нужен лишь когда
узкого фрагмента недостаточно.
Пятый круг не начинай автоматически. Сначала прими явное решение и объясни его Так защита контекста остается ступенчатой: подробности доходят до владельца
партнёру; если полномочий недостаточно, остановись и запроси решение. Это триажа напрямую, а координатор читает ровно тот уровень, который нужен для
предохранитель от дорогой вложенной петли, а не запрет координатору управлять самостоятельного решения.
работой.
## Что читает координатор
Краткие строки находок нужны координатору для сравнения линий. Подробный файл
открывай, когда находка меняет границы или риск, ревьюеры противоречат друг
другу, возник спор, сводка непонятна либо без деталей нельзя выбрать следующий
шаг.
Для обычной починки координатор видит переход:
```text
CHANGES_REQUESTED -> triaged -> rechecked -> APPROVED
```
Полный diff, доказательства и журналы читают назначенные агенты. Координатор
углубляется в них по правилам приёмки основной оптики, когда это нужно для его
собственного решения.
@@ -1,212 +1,61 @@
# Уровни и роли # Роли и возможности среды
Маршрутизация моделей обновлена 2026-07-13. Имена и уровни здесь — датированная Читай этот файл при выборе агента, модели, глубины рассуждения или способа
настройка среды; логика [основной оптики](../SKILL.md) остаётся относительной. передачи истории. Сначала посмотри на схему доступного инструмента: она
описывает текущую среду точнее датированных заметок.
Читай этот файл только при настройке ролей или когда нужная роль недоступна. ## Распределение ответственности
[Основная оптика](../SKILL.md) описывает, когда отдельный агент вообще нужен.
Этот файл — условные настройки мандата, а не список обязательных участников.
Один агент может совмещать совместимую работу; не создавай тред на каждое имя.
- [Возможности хоста](#возможности-хоста) - **Координатор** держит замысел, выбирает устройство решения, разрешает
- [Выбор уровня](#выбор-уровня) спорные вопросы и принимает результат. Это роль ведущего текущей задачи.
- [Текущая маршрутизация](#текущая-маршрутизация) - **Sol или Terra** обычно реализует задачу, исследует техническую
- [Возможные мандаты](#возможные-мандаты) неопределенность, проверяет код и исправляет подтвержденные дефекты.
- [Файл пользовательского агента](#файл-пользовательского-агента) - **Luna** удобна для ясной механики, пакетных операций и известных проверок
- [Пределы параллельности](#пределы-параллельности) с объемным выводом.
## Возможности хоста Эти назначения служат отправной точкой. Состав собирай под задачу; один агент
может совмещать совместимую работу. Выбор определяется вкладом в задачу и
качеством доступных моделей. Название роли вторично.
Сначала установи, позволяет ли текущий хост выбрать пользовательского агента Свежая Astra полезна для отдельной проверки формы и соразмерности, когда
и его конфигурацию. цена такого взгляда оправдана.
- **Управляемая стоимость.** Хост видит агентов из `~/.codex/agents` или Если партнер поручил группу связанных тикетов, выбирай готовые к работе по
`.codex/agents` и схема `spawn_agent` открывает `agent_type`, `model` и их существующим зависимостям. Перед выдачей зависимого тикета убедись, что
`reasoning_effort` (про фактическое применение effort — кавеат в результат предшественника проверен и доступен исполнителю.
[выборе уровня](#выбор-уровня)). Для TOML-роли передавай `agent_type`, а
модель и глубину бери из её файла. Для разового выбора передавай `model` и
`reasoning_effort` без пользовательской роли с закреплённой моделью.
Плейбук использует `fork_turns="none"` ради чистого контекста. Технически
ограниченный fork числом тоже допускает переопределения; только полный
fork `all` наследует модель координатора и отклоняет их.
- **Неуправляемая стоимость.** Интерфейс запуска принимает только задачу и
имя треда. Передавай роль мандатом в промпте, но не утверждай, что выбрана
дешёвая или сильная модель. `task_name` — идентификатор треда, а не выбор
конфигурации агента.
Если способ выбора роли не виден в доступном инструменте, считай стоимость ## Модель и глубина
неуправляемой, отметь это в итоговом отчёте и не разделяй совместимую работу
на дополнительные роли без явной пользы.
Вызов TOML-роли: Модель и глубину рассуждения выбирай независимо, если среда открывает обе
ручки. Для ограниченной работы разумная отправная точка - `medium`. Для
необратимого решения, высокой цены тихой ошибки или существенной
неопределенности - `high` либо более сильная доступная настройка. Это примеры:
повышай глубину, когда не хватило поиска и рассуждения, а модель - когда не
хватило качества суждения.
```json Не обещай, что запрошенная модель или глубина фактически применились, если
{ инструмент подтверждает лишь принятие параметра. Опирайся на метаданные запуска,
"task_name": "explore_code", когда они доступны; иначе называй настройку запрошенной.
"message": "Исследуй код и верни выжимку по договору роли.",
"fork_turns": "none",
"agent_type": "explorer"
}
```
Разовый выбор модели без TOML-роли с закреплёнными настройками: ## Текущая схема Codex
```json На момент обновления доступный `spawn_agent` принимает `model`,
{ `reasoning_effort` и `fork_turns`. Значение `fork_turns` может быть `none`,
"task_name": "explore_code", `all` или положительным числом строкой.
"message": "Исследуй код и верни выжимку по договору результата.",
"fork_turns": "none",
"model": "<быстрая модель>",
"reasoning_effort": "medium"
}
```
Не смешивай режимы: роль применяется отдельным слоем конфигурации и может - `none` дает свежий контекст. Используй его для независимого исходного ревью
перекрыть прямые параметры. `service_tier` передавай только по явному запросу; и для роли, которой достаточно самодостаточного краткого задания.
он технически совместим и с полным fork. Если TOML-роль закрепляет - Положительное число передает ограниченный хвост истории. Это полезно, когда
`service_tier`, значение роли перекрывает аргумент вызова; для гарантированного без ближайшего контекста поручение раздуется, а вся история не нужна.
разового tier используй роль без закреплённого tier. - `all` передает полную историю и наследует модель и глубину координатора.
В этом режиме явные переопределения модели и глубины отклоняются.
Основание: [официальная документация о субагентах](https://learn.chatgpt.com/docs/agent-configuration/subagents) Для явного выбора модели или глубины используй `none` либо ограниченную
и [актуальная схема `spawn_agent`](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/handlers/multi_agents_spec.rs). историю. Продолжение через `followup_task` сохраняет полезный контекст уже
созданного агента; короткое уточнение работающему агенту передается сообщением.
Новый свежий обзор запускается отдельным агентом с `none`.
## Выбор уровня Эти сведения описывают текущий интерфейс координации. После изменения схемы
заново проверь доступные поля. Файлы локальных
| Уровень | Для чего | Настройка | ролей, установка моделей и внешняя настройка среды в работу этого скилла не
|---|---|---| входят. Владение общим состоянием задает [основная оптика](../SKILL.md).
| Быстрый | Поиск, журналы, известные проверки, ограниченная механика | Дешёвая подходящая модель, обычно `medium` |
| Рабочий | Обычная реализация и проверка по задаче | Подходящая ролевая модель, `medium` |
| Глубокий | Архитектура, сложная реализация, ревью кода | Сильная модель, `high` |
| Исключительный | Необратимое решение или несходимость сильных агентов | Самая сильная модель, `max` |
Критерий выбора — цена *тихой* ошибки этапа, не сложность работы: где
пропущенный дефект никто ниже по конвейеру не поймает (постановка, слепое
ревью, диагноз), ставь глубокий уровень; где за результатом стоит приёмка
координатора и ошибка громкая (узкая перепроверка, механика), хватает
рабочего. Таблица «для чего» — иллюстрация этого критерия, не замена.
Экономию уровня считай по конвейеру целиком: дешёвый этап, породивший
длинный триаж находок, выходит дороже дорогого.
Модель задаёт потолок способности, effort — глубину работы этой модели.
Повышай effort, когда подходящей модели не хватило поиска или рассуждения.
Повышай модель, когда не хватает качества решения. После двух слабых
результатов замени исполнителя свежим более сильным агентом вместо переноса
его неудачного контекста. От уверенной выдумки внешних фактов (форматы
артефактов, версии) не страхует никакой уровень — такие факты проверяй
реальным запросом или фикстурой из первоисточника.
Кавеат (2026-07-23): текущий хост принимает `reasoning_effort` субагента,
но фактически не применяет — рабочая ручка сейчас только модель;
перепроверяй после обновлений хоста.
`xhigh` не является автоматической ступенью: текущая эмпирика показывает
малый прирост относительно `high` при заметной цене. Выбирай его вручную для
узкой задачи. `max` заметно сильнее и дороже; используй по явному триггеру и
объясняй партнёру причину.
## Текущая маршрутизация
Это начальная рабочая таблица, а не рейтинг моделей. Проверяй её на прогонах и
меняй после согласования эмпирики с партнёром.
| Роль | Модель и effort |
|---|---|
| Простая ограниченная реализация, `fast-worker`, известная проверка | Luna `medium` |
| Узкий обзор постановки, проверка реализации по задаче | Terra `medium` |
| Обычная нетривиальная реализация | Sol `medium` |
| Сложная или рискованная реализация | Sol `high` |
| `deep-reasoner`: архитектурное предложение, декомпозиция, компромиссы | Sol `high` |
| Ревью кода | Sol `high` |
| Необратимое решение, спор сильных агентов, повторная несходимость | Sol `max` |
Официальное назначение текущих уровней семейства — в
[каталоге моделей OpenAI](https://developers.openai.com/api/docs/models).
Конкретные имена держи здесь и в конфигурации агентов, а не в `SKILL.md`.
## Возможные мандаты
### `fast-worker`
Уровень: быстрый. Читает шумный ввод, запускает проверки, выполняет простые
пакетные операции. Возвращает только выжимку и пути к полным журналам.
Обычно: `sandbox_mode = "workspace-write"`, потому что тесты и инструменты
создают временные файлы. В инструкциях ограничить изменения явно названной
механикой.
### `explorer`
Уровень: быстрый. Строит карту кода, находит точки входа, контракты и команды
проверки. Не запускает полный набор тестов и не проектирует решение, пока
координатор прямо не попросит. Узкую команду запускает только для проверки факта,
без которого карта ненадёжна.
Обычно: `sandbox_mode = "read-only"`.
### `worker`
Уровень: рабочий или глубокий по сложности задачи. Единственный владелец
реализации. Читает самодостаточный файл-задачу, меняет код и проверяет свою
часть. Не делает коммит.
Обычно: `sandbox_mode = "workspace-write"`.
### `deep-reasoner`
Уровень: глубокий. Принимает одно сложное решение: архитектура, алгоритм,
диагноз, противоречие требований. Возвращает предложение, ключевые доводы и
непроверенные предположения; итоговое решение принимает координатор.
Обычно: `sandbox_mode = "read-only"`.
### `reviewer`
Уровень: глубокий. Свежий тред без истории исполнителя. Ищет ошибки
корректности, безопасности, контракта и тестов. Каждая находка содержит
сценарий сбоя, доказательство, влияние и способ проверки.
Для полноценного ревью обычно нужен `sandbox_mode = "workspace-write"`: тесты,
кэши, временные артефакты и исследование не следует урезать ради запрета
правок. Исходники и постоянное окружение защищает явный мандат, Git сверяется
до и после. Доступ к сети проверять отдельно: право записи не гарантирует
поиск и документацию. Непроверенную внешнюю механику отмечать как гипотезу.
Канал результата от песочницы не зависит. При выбранном ревью используй
[единый договор](review-and-triage.md): назначенный файл отчёта — единственный
результат наблюдателя; временные кэши допустимы, исходники и Git неизменны.
### `verifier`
Уровень: быстрый. Запускает уже известные команды приёмки, разбирает сбои и
возвращает счётчики. Не ищет новые требования и не исправляет продуктовый
код.
Обычно: `sandbox_mode = "workspace-write"`.
## Файл пользовательского агента
Роли Codex хранятся в `~/.codex/agents/*.toml` или `.codex/agents/*.toml`.
Минимальный шаблон:
```toml
name = "role-name"
description = "Когда координатору выбирать эту роль."
model = "<актуальная модель нужного уровня>"
model_reasoning_effort = "medium"
sandbox_mode = "read-only"
developer_instructions = """
Одна узкая роль и её договор результата.
"""
```
Не подменяй выбор роли совпадением `task_name` с её именем: это работает
только при явной гарантии хоста. После добавления или изменения TOML начни
новую сессию и проверь, что имя роли появилось в описании `agent_type`.
## Пределы параллельности
- Держи глубину `1`: субагенты не создают собственное дерево исполнителей.
- Оставляй один слот координатору.
- Параллельно запускай только работу без конфликтующих входов, команд и
изменяемого состояния. Второй слепой обзор добавляй ради отдельной линии, а
не ради заполнения свободного слота.
- Реализацию и починку одного рабочего дерева выполняй последовательно одним
владельцем.