docs(skills): в плейбук субагентов встроено разбиение /to-tickets и шкала ревью постановки

- Зачем:
  - прогон предразметки показал два сбоя: тикеты созданы мимо критериев /to-tickets, а текст тикета трижды проходил через контекст оркестратора.
- Что:
  - этап 1: разбиение по критериям /to-tickets, мерка «тикет берётся в отдельной сессии без общего контекста».
  - этап 2: правило «одно ревью на версию артефакта» и шкала риска вместо безусловного ревью постановки.
  - согласованы шапка скилла, роли, критерии закрытия этапов и список соседних скиллов; урок записан в references/lessons.md.
- Проверка:
  - вычитка SKILL.md: новые правила не противоречат этапам 3-6.
This commit is contained in:
Dmitry Dementiev committed 2026-07-21 11:43:49 +03:00
1 parent 90cc8456cd
commit 6fbe8f6be1
2 files changed
+46 -14

No files matched your search

@@ -2,9 +2,9 @@
name: claude-subagent-playbook name: claude-subagent-playbook
disable-model-invocation: true disable-model-invocation: true
description: >- description: >-
Конвейер одной задачи со стороны Claude Code: постановка → свежий взгляд → Конвейер одной задачи со стороны Claude Code: постановка тикетами-срезами →
реализация Кодексом → ревью по шкале риска (до слепого двойного) → свежий взгляд по шкале → реализация Кодексом → ревью по шкале риска
синтез. Знания, не каркас. (до слепого двойного) → синтез. Знания, не каркас.
--- ---
# Плейбук: одна задача через Кодекса и слепое ревью # Плейбук: одна задача через Кодекса и слепое ревью
@@ -56,7 +56,7 @@ description: >-
пишет в целом лучше, но верхнеуровнево планирует хуже — поэтому пишет в целом лучше, но верхнеуровнево планирует хуже — поэтому
декомпозиция и постановка остаются у тебя. Механика вызова — декомпозиция и постановка остаются у тебя. Механика вызова —
[references/codex-exec.md](references/codex-exec.md). [references/codex-exec.md](references/codex-exec.md).
- **Ревьюеры** — до двух (шкала — этап 4), **разных родословных**, слепые - **Ревьюеры** — до двух (шкалы — этапы 2 и 4), **разных родословных**, слепые
друг к другу: друг к другу:
Claude-субагент (`adversarial-reviewer`; нет в среде — `deep-reasoner` Claude-субагент (`adversarial-reviewer`; нет в среде — `deep-reasoner`
или скептический `general-purpose`) и Codex **свежим тредом**, не тем, или скептический `general-purpose`) и Codex **свежим тредом**, не тем,
@@ -87,20 +87,34 @@ description: >-
1. **Постановка — самодостаточный файл-задача.** У исполнителя нет твоего 1. **Постановка — самодостаточный файл-задача.** У исполнителя нет твоего
контекста; всё нужное — в файле: цель, критерии приёмки чекбоксами, контекста; всё нужное — в файле: цель, критерии приёмки чекбоксами,
границы («что трогать нельзя»), «сначала прочитать» (спека, ADR, README с границы («что трогать нельзя»), «сначала прочитать» (спека, ADR, README с
командами), команды проверки. Формат и место — по конвенции репозитория командами), команды проверки. Разбиение крупнее одного тикета веди по
(например, `.scratch/<feature>/issues/`; если репозиторий настроен под критериям `/to-tickets` — и его руками, если подключён (настройка —
скиллы Мэтта Покока — постановка через `/to-tickets` в его трекер: `/setup-matt-pocock-skills`, конвенции трекера — в `docs/agents/`):
тикеты-срезы с рёбрами блокировок вместо ad-hoc файла, конвенции — в тикет — вертикальный срез, демонстрируемый сам по себе; влезает в один
`docs/agents/`, настройка — `/setup-matt-pocock-skills`). Не хватает свежий контекст; рёбра блокировок явные. Мерка самодостаточности —
тикет можно взять в отдельной сессии вообще без общего контекста.
Сверка разбиения с пользователем внутри `/to-tickets` — уже первая
линия ревью постановки, засчитай её на этапе 2. Формат и место — по
конвенции репозитория (например, `.scratch/<feature>/issues/` или
трекер из `docs/agents/`). Не хватает
фактуры по внешним библиотекам/API — сначала `/research` и Context7 MCP, фактуры по внешним библиотекам/API — сначала `/research` и Context7 MCP,
выжимку — в выжимку — в
«сначала прочитать». Задача просится под test-first — сошлись в ней на «сначала прочитать». Задача просится под test-first — сошлись в ней на
`/tdd` (скиллы у Codex те же — общий каталог), ключевые требования `/tdd` (скиллы у Codex те же — общий каталог), ключевые требования
продублируй текстом. Готово, когда исполнитель может сделать задачу, продублируй текстом. Готово, когда исполнитель в свежей сессии может
не задав тебе ни одного вопроса. сделать задачу, не задав тебе ни одного вопроса.
2. **Свежий взгляд на постановку — до реализации.** Адверсарный ревьюер без 2. **Свежий взгляд на постановку — до реализации, по шкале и один раз.**
Правило: **одно ревью на версию артефакта**, а не на каждую передачу из
рук в руки — спека ревьюится при принятии, разбиение — сверкой с
пользователем в `/to-tickets`, тикет — здесь; отревьюенный и не
изменившийся тикет перед выполнением заново не ревьюится и целиком в
твой контекст не перечитывается (передавай номером/путём — исполнитель
прочтёт сам), после правок — узкая проверка дельты тем же ревьюером.
Шкала: тикет-срез по уже принятой спеке, без решений сверх неё —
внешнюю линию пропусти, причину назови одной фразой; обычный тикет —
адверсарный ревьюер без
твоего контекста проверяет задачу против кода: фактические ошибки, скрытые твоего контекста проверяет задачу против кода: фактические ошибки, скрытые
решения-«однострочники», недостающие критерии. Окупается каждый прогон: решения-«однострочники», недостающие критерии —
ловит блокеры, которые исполнитель молча реализовал бы. Постановка ловит блокеры, которые исполнитель молча реализовал бы. Постановка
крупная или крупная или
цена ошибки высока — сделай ревью двойным и слепым, как для кода: вторая цена ошибки высока — сделай ревью двойным и слепым, как для кода: вторая
@@ -111,7 +125,8 @@ description: >-
«формально отчитаться можно»), Клод — механику кода (нереализуемые «формально отчитаться можно»), Клод — механику кода (нереализуемые
формулировки, мёртвые стабы). Этап закрыт, когда каждая формулировки, мёртвые стабы). Этап закрыт, когда каждая
находка внесена в задачу **решением** или письменно отклонена — «пусть находка внесена в задачу **решением** или письменно отклонена — «пусть
решит исполнитель» решением не считается. решит исполнитель» решением не считается; при пропуске внешней линии —
когда причина пропуска названа.
3. **Реализация Кодексом.** Промпт: «задача самодостаточна, следуй буквально, 3. **Реализация Кодексом.** Промпт: «задача самодостаточна, следуй буквально,
коммит не делай». Запуск — прямым `codex exec` **фоновым Bash коммит не делай». Запуск — прямым `codex exec` **фоновым Bash
оркестратора**: шум — редиректами в файлы, в контекст читается только оркестратора**: шум — редиректами в файлы, в контекст читается только
@@ -234,6 +249,8 @@ teammate-субагентов — шум, а не событие: не докл
- `/claude-team-review` — ревью-петля, где лид сам чинит код (живёт - `/claude-team-review` — ревью-петля, где лид сам чинит код (живёт
отдельным репозиторием, в среде может быть не подключён). отдельным репозиторием, в среде может быть не подключён).
- `/adversarial-review` — разовое адверсарное ревью Кодексом. - `/adversarial-review` — разовое адверсарное ревью Кодексом.
- `/to-tickets` — разбиение на тикеты-срезы с рёбрами блокировок (этап 1);
его сверка разбиения с пользователем — первая линия ревью постановки.
- `/tdd` — дисциплина test-first: для задач-мелочей, которые делаешь сам, - `/tdd` — дисциплина test-first: для задач-мелочей, которые делаешь сам,
и как словарь для test-first-постановки (этап 1). и как словарь для test-first-постановки (этап 1).
- `/research` — фоновое исследование первоисточников с выжимкой-файлом; - `/research` — фоновое исследование первоисточников с выжимкой-файлом;
@@ -231,3 +231,18 @@ git (`git show HEAD:path`) + повторным наложением право
пользователя не узкое место, менять нечего; потенциальная полоса — пользователя не узкое место, менять нечего; потенциальная полоса —
bulk-механика /coordinator-loop и узкие починки, если лимиты станут bulk-механика /coordinator-loop и узкие починки, если лимиты станут
узкими. Проверка — один A/B на реальной узкой починке. узкими. Проверка — один A/B на реальной узкой починке.
## Прогон 2026-07-21: yantar-dags, предразметка — этап постановки
- Issues в GitLab созданы по конвенции репозитория, но мимо критериев
`/to-tickets`: без критериев приёмки чекбоксами, один тикет — два среза
(две разные точки стендовой проверки). Поймал пользователь сверкой ПОСЛЕ
публикации. Урок: сверка разбиения — до публикации, внутри `/to-tickets`.
- Пользователь заметил избыточность: текст тикета проходил через мастера
трижды (создание + проверка после создания + тщательное ревью перед
выполнением) — по времени и токенам. Поглощено 2026-07-21: SKILL.md
этапы 1–2 — `/to-tickets` как норма разбиения с меркой «тикет берётся в
свежей сессии без общего контекста»; правило «одно ревью на версию
артефакта» (сверка с пользователем = первая линия); шкала риска этапа 2
(срез по принятой спеке без новых решений — внешнюю линию пропустить с
одной фразой обоснования).