docs(skills): плейбук — заметки к рефакторингу: ось вкуса и набор запахов

Зачем.
Прогон #18 показал, чего не хватает: обе наши ручки выбора (эффорт,
модель) про силу, вкус ими не выражается. Решения приняты, но структурные
правки скилла отложены — чтобы не потерялись, они записаны в открытый
вопрос, который читается при следующем заходе.

Что.
- Третья ось выбора: разрез по подзадачам на этапе планирования, вкусовое
  Опусу, руки Кодексу, ось ревью переворачивается. С требованием спросить
  у пользователя матрицу и примеры.
- Набор запахов Фаулера из /code-review Мэтта Покока — сильнее самодельных
  примеров в блоке Taste; оттуда же правило не сливать находки двух осей.
- Разбор журнала Codex-ревьюера: восстановление стенда ловушкой без
  проверки, самовольные subagent-ы вопреки правилу «глубина один».

Проверка.
Правка документации, прогонять нечего.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dmitry DementievandClaude Opus 5 committed 2026-07-31 15:21:10 +03:00
1 parent 4f19cce325
commit 59e9c0787e
1 file changed
+39
@@ -490,6 +490,14 @@ compose down`); отдельных событий эскалации в `--json`
долгоживущие службы здоровы», а `kafka` и `prometheus` лежали `exited`:
их погасил её же страж и не поднял. `docker compose ps` без `-a`
погашенных не показывает вовсе — легко принять за здоровый стенд.
Разбор журнала сессии: ревьюер написал `trap ... EXIT` с `make up` и
счёл восстановление состоявшимся, не проверив его. Ровно тот дефект,
который вкусовая линза и должна ловить, — проверка, проходящая без
доказательства собственного утверждения, — только допустил его сам
ревьюер. Заодно оттуда же: он дважды вызвал `spawn_agent`, то есть
развернул своих субагентов вопреки правилу «глубина один». Правило
живёт в SKILL.md для оркестратора и до Codex-ревьюера не доезжает —
писать его в мандат.
- Две линии ревью на одном живом стенде мешают друг другу: стражи гасят
службы и роняют таблицы, параллельная линия получает загрязнённые
прогоны (заметили обе, независимо). Либо стенд одной линии, либо явный
@@ -532,3 +540,34 @@ compose down`); отдельных событий эскалации в `--json`
делить между линиями).
- Заодно проверить остальные заготовки на то же расхождение «константа
живёт в документации вместо `prompts/`».
- **Третья ось выбора — вкус.** Наши две ручки (эффорт, модель) обе про
силу; матрица Тео (@t3dotgg) разводит стоимость, интеллект и вкус и
заставляет выбирать исполнителя на каждую задачу, а не наследовать
дефолт. Прогон #18 показал цену: код технически безупречен и при этом
неправильной формы. Решение пользователя 2026-07-31 — то, что читает
человек, пишет модель со вкусом (в учебном репозитории это почти всё);
Кодексу — техническая работа, где его лимиты и работают на нас; ось
ревью переворачивается. **Спроси у пользователя матрицу и примеры её
применения**: числа Тео расписаны под другой набор моделей (gpt-5.5,
opus-4.8) и требуют пересчёта под наш.
Разрез идёт не по тикету, а **по подзадачам, и назначается на этапе 1**:
что человек будет читать и разбирать — Опусу, руки (сборка образа,
обвязка проверок, повторяющиеся правки) — Кодексу. Два ограничения.
Порядок: сначала вкусовая часть — она задаёт форму, имена и границы,
под которые механическая потом подстраивается; наоборот получится
ретрофит. И один писатель в дереве остаётся в силе — либо
последовательно, либо по разным worktree, шов вести по файлам, которые
не пересекаются.
- **Принести ревьюеру набор запахов.** В `/code-review` Мэтта Покока
(`~/dotfiles/agents/.agents/skills/code-review/SKILL.md`) есть готовая
база из двенадцати запахов Фаулера, которая вклеивается ревьюеру в
промпт целиком, с оговорками «документированный стандарт репозитория
побеждает» и «каждый запах — суждение, не нарушение». Это сильнее моих
трёх самодельных примеров в блоке `Taste:`: имена вроде Speculative
Generality или Data Clumps — слова из претрейна, они поднимают целый
пласт поведения, а пересказ своими словами — нет. Наши CODE и TASK
повторяют его оси Standards и Spec, придуманные независимо; забрать
оттуда стоит и правило «находки двух осей не сливать и не
переранжировать» — оно прямо про то, как уверенный вердикт одной линии
закрывает собой другую. Показательно, что Codex-ревьюер #18 открыл этот
файл сам первой командой прогона: механизма нет, а нужда есть.