init: маркетплейс av-dev-skills + плагин backlog

Отдельный репозиторий-маркетплейс для личных плагинов и скилов разработки,
чтобы подключать их к проектам через `/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>
This commit is contained in:
av
2026-07-24 08:45:32 +03:00
co-authored by Claude Opus 4.8
commit a22a825c40
10 changed files with 1280 additions and 0 deletions
@@ -0,0 +1,84 @@
# Задачи из аудита и ревью
Ревью и аудиты — код-ревью, архитектурный проход, аудит безопасности, любой
разбор другим агентом — порождают находки, часть которых становится задачами
беклога. Это отдельный интейк со своей опасностью, **зеркальной** интейку из
диалога.
- Интейк из диалога грешит переполнением: из одной мысли рождается пять файлов.
- Интейк из ревью грешит сваливанием: сорок сырых находок превращаются в сорок
файлов. Беклог раздувается, а следующий груминг склеивает их обратно.
Защита от сваливания — та же, что в самом ревью: **кластеризация по причине, а не
файл-на-находку.** Если у ревью был триаж — половина работы уже сделана, бери его
выход. Если нет — триажируй сам, прежде чем заводить.
## Находка агента — не задача
Мнение агента — **гипотеза, пока у неё нет свидетельства** (падающий тест,
воспроизводимый шаг, положение гайда). Согласие нескольких находок само по себе
достоверность не повышает: это один источник, высказавшийся несколько раз.
Отсюда фильтр входа, поверх обычного «не делаем сейчас + пожалеем о потере»:
- **Находка со свидетельством**, отложенная к исполнению → **задача**.
Свидетельство и последствие переносим в тело — это её «почему», то самое, что
переживает запись.
- **Находка без свидетельства / низкой уверенности** → **идея** (`[idea]`), а не
задача. Она не заработала приоритизацию: сравнивать неподтверждённое не с чем.
Её судьба — штурм, где либо найдётся подтверждение, либо она уедет на кладбище.
- **Уже починено по ходу ревью** → **ничего**. Починенное не заводим.
- **Развилка, решённая при ревью** → ничего; решённая «потом» → задача с
зафиксированным вопросом.
## Порядок
1. **Возьми выход триажа, а не сырые находки.** Сырой отчёт — это симптомы до
дедупликации; в нём одна причина размазана по нескольким строкам.
2. **Кластеризуй по причине.** Пять находок об одном отсутствующем инварианте —
одна задача, а не пять. Класс мелочи (nits, косметика) — **один пакетный файл**
со списком пунктов, а не файл на каждую запятую.
3. **Дедуп против беклога и кладбища.** Аудит переоткрывает уже заведённое и уже
выкинутое. Нашлось в беклоге — дописываем находку в существующий файл. Нашлось
на кладбище — это сигнал: причина отказа могла устареть, выноси пользователю, а
не заводи молча заново.
4. **Покажи карту до создания файлов.** Кластер → задача / идея / строка в
пакетный файл / уже в беклоге / отброшено — пачкой через `AskUserQuestion`.
Это тот же барьер, что и «три кандидата» в интейке из диалога: массовое
заведение файлов без подтверждения — ровно тот отказ, ради которого интейк из
ревью и выделен. Дешёвая мелочь по явному согласию может заводиться и без
поштучного вопроса — но карта пользователю всё равно предъявляется.
5. **Заводи утверждённое** через `backlog.py add`, с двумя добавками:
- **тег партии** — `add … --tag review-ГГГГ-ММ-ДД` (или `audit-<тема>`), чтобы
весь заход груминга поднимался одной командой `backlog.py list --tag …`;
- **провенанс в теле** — кто нашёл, каким проходом, с каким свидетельством. Без
него через месяц не отличить проверенную находку от догадки.
6. `backlog.py check`.
## Отображение серьёзности на приоритет
Правило концептуальное, от полей конкретного отчёта не зависит:
- **выше серьёзность → выше приоритет.** Самый тяжёлый класс находок → верхняя
секция индекса, следующий → следующая. Отображать словарь серьёзности отчёта на
словарь приоритетов проекта точно нечем — при сомнении спрашивай пользователя.
- **низкая уверенность или нет свидетельства → идея**, не задача.
- **мелочь → строка в пакетный файл**, не отдельный.
- **уже починено / развилка решена сейчас → ничего.**
Если у ревью структурированный отчёт с полями серьёзности, уверенности,
свидетельства и предписанного действия (например, конвейер ревью jellybit даёт
`Severity`/`Confidence`/`Оракул`/`Действие: инлайн|развилка`) — правило выше
ложится на эти поля механически. Но это пример одного формата, а не требование к
источнику: тот же фильтр применяется к находкам в свободной форме.
Границы покрытия отчёта — то, что ревью проверить **не смогло**, — не находки и в
задачи не идут: у них нет предмета. Их место — в докладе, не в беклоге.
## Доклад
- Источник (какое ревью/аудит, сколько находок на входе).
- Свёрнуто в задачи: N кластеров из M находок, со слагами и тегом партии.
- Что не заведено и почему: починено инлайн, уже в беклоге, ушло в идеи, на
кладбище.
- `backlog.py check`.