ревью: подключить конвейер в task-pipeline и task-batch
Шаг 4 стал профилем design на предложении (архитектурная находка на готовом коде стоит переписывания и потому игнорируется — на предложении она стоит абзаца), шаг 7 — вызовом review-pipeline с профилем по факту изменения. Границы покрытия протаскиваются в финальный доклад строкой. В task-batch финальная сверка сужена до того, что появилось от слияния: повторять полный конвейер на интегрированном диффе бессмысленно — те же проходы на тех же файлах дают те же находки и удорожают триаж. Заодно убрана ссылка на несуществующий скилл verify: шага не было ни в проекте, ни у пользователя, поведенческую верификацию делает Skill run. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -60,15 +60,19 @@ description: Автономно проводит задачу jellybit чере
|
||||
`### Requirement` содержит `SHALL`/`MUST`; структурные заголовки английские,
|
||||
сценарии `GIVEN/WHEN/THEN`. Прогони `openspec validate --strict <id>`.
|
||||
|
||||
### 4. (Нетривиальная) Ревью спек — сабагент, ДО кода
|
||||
### 4. (Нетривиальная) Ревью предложения — профиль `design`, ДО кода
|
||||
|
||||
Первый чекпоинт ревью-процесса из CLAUDE.md. Запусти **один** сабагент
|
||||
`jellybit-review-specs` (Agent tool, `subagent_type`) в режиме «дизайн/спеки ДО
|
||||
кода». Charter самодостаточен — дай ссылку на change `<id>`. Агент проверит
|
||||
полноту покрытия, сценарии `GIVEN/WHEN/THEN`, scope, инварианты безопасности
|
||||
данных, согласованность со спеками и capability-нарезкой, наличие `SHALL`/`MUST`.
|
||||
Первый чекпоинт ревью-процесса. Вызови Skill **`review-pipeline`** с профилем
|
||||
`design` и ссылкой на change `<id>`. Он запустит `jellybit-review-specs` (режим
|
||||
«дизайн/спеки ДО кода»), `jellybit-review-rubric` (фаза 1: приёмочные критерии
|
||||
для задуманного узла), `jellybit-review-idiom` и `jellybit-review-architecture`
|
||||
по предложению.
|
||||
|
||||
### 5. Отработать замечания ревью спек
|
||||
Смысл профиля: архитектурная находка на готовом коде стоит переписывания и
|
||||
потому игнорируется — та же находка здесь стоит абзаца обсуждения. Рубрику из
|
||||
`jellybit-review-rubric` перенеси в `tasks.md` как приёмочные критерии.
|
||||
|
||||
### 5. Отработать замечания ревью предложения
|
||||
|
||||
- Мелочь и явные улучшения — правь сам в спеках/дизайне.
|
||||
- Развилки (компромисс, scope, инвариант) — на пользователя (AskUserQuestion).
|
||||
@@ -80,33 +84,38 @@ description: Автономно проводит задачу jellybit чере
|
||||
`docs/conventions/*`: ошибки stdlib с `%w`/`errors.Is`, логи только `slog` без
|
||||
секретов, время в UTC через `store.Now()`, ULID через `internal/ident`, миграции
|
||||
goose + синк ER-схемы `docs/specs/database.md`, htmx по web-ui-конвенции.
|
||||
Прогони `task test` и `task lint` (или `task build`), добейся зелёного.
|
||||
Прогони `task gate` и добейся зелёного — он же гейт следующего шага.
|
||||
|
||||
**Поведенческая верификация (нетривиальные задачи с рантайм-поверхностью).** Если
|
||||
задача меняет реальное поведение (новый флоу, схема БД, эндпоинт/htmx-путь, разбор
|
||||
входа) — зелёных юнит-тестов мало: прогони через Skill **`verify`**, чтобы
|
||||
прокатить изменение end-to-end и увидеть его вживую, а не только в тестах.
|
||||
Пропусти для чисто внутренних правок без наблюдаемого рантайма (рефактор, доки,
|
||||
правка только тестов). Под `task-batch` verify идёт в worktree задачи — портами/БД
|
||||
не конфликтуй с соседними прогонами.
|
||||
входа) — зелёных юнит-тестов мало: прогони изменение вживую через Skill **`run`**,
|
||||
чтобы увидеть его end-to-end, а не только в тестах. Пропусти для чисто внутренних
|
||||
правок без наблюдаемого рантайма (рефактор, доки, правка только тестов). Под
|
||||
`task-batch` запуск идёт в worktree задачи — портами/БД не конфликтуй с соседними
|
||||
прогонами.
|
||||
|
||||
### 7. Ревью кода — сабагент(ы)
|
||||
### 7. Ревью кода — Skill `review-pipeline`
|
||||
|
||||
Второй чекпоинт. Ревьюеры — кастомные агенты из `.claude/agents/` (запускай их
|
||||
через Agent tool с `subagent_type`). Число зависит от тривиальности:
|
||||
Второй чекпоинт. Вызови Skill **`review-pipeline`**, дав ссылку на change
|
||||
`<id>`, базу диффа и профиль. Профиль выбирается по факту изменения, а не по
|
||||
ощущению важности (правило — в самом скилле):
|
||||
|
||||
- **Тривиальная задача — один сабагент** `jellybit-review-code`. В промпте
|
||||
добавь просьбу дополнительно **бегло сверить соответствие дельта-спекам и
|
||||
tasks.md** (он единственный, покрывает и спеки, и конвенции).
|
||||
- **Нетривиальная — два параллельных сабагента одним сообщением**, чтобы шли
|
||||
конкурентно: `jellybit-review-specs` (оптика спек) и `jellybit-review-code`
|
||||
(оптика архитектуры/конвенций/стиля).
|
||||
- миграция, новый пакет, изменение публичного контракта, раскладка файлов/пути →
|
||||
`deep`;
|
||||
- иначе меняется поведение, видимое снаружи → `standard`;
|
||||
- иначе (багфикс, локальная правка, доки) → `quick`.
|
||||
|
||||
Charter'ы агентов самодостаточны — детальный промпт писать не нужно, дай ссылку
|
||||
на change (`<id>`) и diff/список файлов (`git diff`).
|
||||
Скилл сам гоняет гейт, нужные проходы и обязательный триаж. Возвращает отчёт с
|
||||
потолком 7 пунктов, разметкой `Действие: инлайн | развилка` и секцией границ
|
||||
покрытия.
|
||||
|
||||
Отработай так же, как шаг 5: мелочь чини инлайн, развилки — на пользователя.
|
||||
После правок — снова `task test`/`task lint`.
|
||||
Отработай так же, как шаг 5: помеченное `инлайн` чини сам и не логируй,
|
||||
`развилка` — на пользователя через AskUserQuestion (вопрос уже сформулирован
|
||||
триажем). После правок — снова `task gate`.
|
||||
|
||||
**Границы покрытия из отчёта не выбрасывай** — они уезжают в финальный доклад
|
||||
(шаг 10) сжатой строкой. Отчёт, из которого исчезло «что проверить было
|
||||
невозможно», превращается в ложное ощущение проверенности.
|
||||
|
||||
### 8. Архивировать — `opsx:archive`
|
||||
|
||||
@@ -139,7 +148,10 @@ Charter'ы агентов самодостаточны — детальный п
|
||||
шёл apply).
|
||||
|
||||
Готово — доложи пользователю кратко: что сделано, какие развилки решались, ссылки
|
||||
на архивный change и спеки.
|
||||
на архивный change и спеки. **Плюс одна строка границ покрытия** из отчёта ревью:
|
||||
какой профиль гонялся и что проверить было невозможно (пропущенный шаг гейта,
|
||||
непокрытая ветка, вопрос, оставшийся человеку). Доклад без неё сообщает
|
||||
«проверено», не сообщая, что именно.
|
||||
|
||||
## Тонкости
|
||||
|
||||
@@ -148,9 +160,11 @@ Charter'ы агентов самодостаточны — детальный п
|
||||
пушь. При одиночном запуске это master, под `task-batch` — ветка задачи в своём
|
||||
worktree; поведение одинаковое.
|
||||
- Не пропускай `openspec validate --strict` перед архивацией.
|
||||
- Тривиальная задача: шаги 2 и 4 пропускаются; ревью кода (шаг 7) оставляем, но
|
||||
одним сабагентом на всё. Два параллельных ревьювера — только на нетривиальных.
|
||||
- Если сабагент-ревьюер сам предлагает крупную переработку — это развилка, не
|
||||
правь молча, вынеси пользователю.
|
||||
- Тривиальная задача: шаги 2 и 4 пропускаются; ревью кода (шаг 7) остаётся
|
||||
всегда, но в профиле `quick` — гейт, сверка со спекой, триаж.
|
||||
- Гейт блокирует: пока `task gate` красный, опиниативные проходы не запускаются.
|
||||
Чинить и перезапускать, а не «посмотреть заодно».
|
||||
- Если ревью предлагает крупную переработку — это развилка, не правь молча,
|
||||
вынеси пользователю.
|
||||
- Держи пользователя в цикле короткими репликами на переходах фаз, но не проси
|
||||
подтверждать механику.
|
||||
|
||||
Reference in New Issue
Block a user