Отдельный репозиторий-маркетплейс для личных плагинов и скилов разработки, чтобы подключать их к проектам через `/plugin`, а не держать в глобальном `~/.claude/skills`. Первый плагин — backlog: перенесён скилл ведения беклога из `~/.claude/skills/backlog` под именем `av-dev-backlog`. Путь к `backlog.py` переведён с фиксированного `~/.claude/...` на `$CLAUDE_PLUGIN_ROOT`, чтобы работать после установки плагина. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7.6 KiB
Задачи из аудита и ревью
Ревью и аудиты — код-ревью, архитектурный проход, аудит безопасности, любой разбор другим агентом — порождают находки, часть которых становится задачами беклога. Это отдельный интейк со своей опасностью, зеркальной интейку из диалога.
- Интейк из диалога грешит переполнением: из одной мысли рождается пять файлов.
- Интейк из ревью грешит сваливанием: сорок сырых находок превращаются в сорок файлов. Беклог раздувается, а следующий груминг склеивает их обратно.
Защита от сваливания — та же, что в самом ревью: кластеризация по причине, а не файл-на-находку. Если у ревью был триаж — половина работы уже сделана, бери его выход. Если нет — триажируй сам, прежде чем заводить.
Находка агента — не задача
Мнение агента — гипотеза, пока у неё нет свидетельства (падающий тест, воспроизводимый шаг, положение гайда). Согласие нескольких находок само по себе достоверность не повышает: это один источник, высказавшийся несколько раз.
Отсюда фильтр входа, поверх обычного «не делаем сейчас + пожалеем о потере»:
- Находка со свидетельством, отложенная к исполнению → задача. Свидетельство и последствие переносим в тело — это её «почему», то самое, что переживает запись.
- Находка без свидетельства / низкой уверенности → идея (
[idea]), а не задача. Она не заработала приоритизацию: сравнивать неподтверждённое не с чем. Её судьба — штурм, где либо найдётся подтверждение, либо она уедет на кладбище. - Уже починено по ходу ревью → ничего. Починенное не заводим.
- Развилка, решённая при ревью → ничего; решённая «потом» → задача с зафиксированным вопросом.
Порядок
- Возьми выход триажа, а не сырые находки. Сырой отчёт — это симптомы до дедупликации; в нём одна причина размазана по нескольким строкам.
- Кластеризуй по причине. Пять находок об одном отсутствующем инварианте — одна задача, а не пять. Класс мелочи (nits, косметика) — один пакетный файл со списком пунктов, а не файл на каждую запятую.
- Дедуп против беклога и кладбища. Аудит переоткрывает уже заведённое и уже выкинутое. Нашлось в беклоге — дописываем находку в существующий файл. Нашлось на кладбище — это сигнал: причина отказа могла устареть, выноси пользователю, а не заводи молча заново.
- Покажи карту до создания файлов. Кластер → задача / идея / строка в
пакетный файл / уже в беклоге / отброшено — пачкой через
AskUserQuestion. Это тот же барьер, что и «три кандидата» в интейке из диалога: массовое заведение файлов без подтверждения — ровно тот отказ, ради которого интейк из ревью и выделен. Дешёвая мелочь по явному согласию может заводиться и без поштучного вопроса — но карта пользователю всё равно предъявляется. - Заводи утверждённое через
backlog.py add, с двумя добавками:- тег партии —
add … --tag review-ГГГГ-ММ-ДД(илиaudit-<тема>), чтобы весь заход груминга поднимался одной командойbacklog.py list --tag …; - провенанс в теле — кто нашёл, каким проходом, с каким свидетельством. Без него через месяц не отличить проверенную находку от догадки.
- тег партии —
backlog.py check.
Отображение серьёзности на приоритет
Правило концептуальное, от полей конкретного отчёта не зависит:
- выше серьёзность → выше приоритет. Самый тяжёлый класс находок → верхняя секция индекса, следующий → следующая. Отображать словарь серьёзности отчёта на словарь приоритетов проекта точно нечем — при сомнении спрашивай пользователя.
- низкая уверенность или нет свидетельства → идея, не задача.
- мелочь → строка в пакетный файл, не отдельный.
- уже починено / развилка решена сейчас → ничего.
Если у ревью структурированный отчёт с полями серьёзности, уверенности,
свидетельства и предписанного действия (например, конвейер ревью jellybit даёт
Severity/Confidence/Оракул/Действие: инлайн|развилка) — правило выше
ложится на эти поля механически. Но это пример одного формата, а не требование к
источнику: тот же фильтр применяется к находкам в свободной форме.
Границы покрытия отчёта — то, что ревью проверить не смогло, — не находки и в задачи не идут: у них нет предмета. Их место — в докладе, не в беклоге.
Доклад
- Источник (какое ревью/аудит, сколько находок на входе).
- Свёрнуто в задачи: N кластеров из M находок, со слагами и тегом партии.
- Что не заведено и почему: починено инлайн, уже в беклоге, ушло в идеи, на кладбище.
backlog.py check.