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:
@@ -0,0 +1,104 @@
|
||||
# Формат беклога
|
||||
|
||||
Заголовок, мета-строку и строку индекса ставит `backlog.py add` — руками их не
|
||||
пишут. Этот файл описывает, что именно скрипт создаёт и что проверяет `check`;
|
||||
тело задачи (контекст, шаги, ссылки) дописывает агент.
|
||||
|
||||
## Файл задачи
|
||||
|
||||
`<slug>.md` в каталоге беклога:
|
||||
|
||||
```markdown
|
||||
# Раздачи с докачиванием (merge при повторном добавлении)
|
||||
|
||||
**Приоритет:** высокий — блокирует типовой сценарий свежих сериалов · **Теги:** layout, ingest
|
||||
|
||||
Свежий сериал раздают по мере выхода: торрент с 5 из 10 эпизодов позже
|
||||
перезаливают целиком, пользователь добавляет раздачу повторно. …
|
||||
|
||||
Шаги:
|
||||
- в плане раскладки отличать «путь занят живой ссылкой того же матча» от коллизии
|
||||
- merge-раскладка: существующее пропустить, недостающее доложить
|
||||
|
||||
Зависит от правила сходимости. Связано: drafts/logical-title-model.md §6.2.
|
||||
```
|
||||
|
||||
- **Заголовок H1** — он же заголовок строки в индексе, дословно. Тип кодируется
|
||||
префиксом `[idea]` / `[epic]`; обычная задача без префикса. Отдельного поля
|
||||
типа **нет**: два места для одного факта разъезжаются, а префикс виден прямо в
|
||||
индексе, где и принимается решение «брать или не брать».
|
||||
- **Мета-строка** — первая непустая строка после заголовка. Обязателен приоритет,
|
||||
причина после тире желательна, теги опциональны. Поля разделяются ` · `, их
|
||||
порядок свободный. `·` — служебный разделитель: в тексте причины его быть не
|
||||
должно, иначе причина обрежется по нему.
|
||||
- **Тело** — контекст (почему это вообще задача), принятые решения, шаги,
|
||||
ссылки на спеки, ADR, черновики, прошлые ревью. Пишется на языке документации
|
||||
проекта.
|
||||
|
||||
Тело — не план реализации и не спецификация: принятое и реализованное переезжает
|
||||
в документацию проекта, а файл задачи удаляется.
|
||||
|
||||
## Слаг
|
||||
|
||||
Латиница и цифры, kebab-case, без ведущих, хвостовых и двойных дефисов
|
||||
(`foo-bar`, не `-foo`, `a--b`). Именуется **по сути задачи, а не по текущей
|
||||
формулировке**: заголовок будет переписан на груминге, а слаг стоит в ссылках из
|
||||
других задач, коммитов и черновиков. Транслит русского названия допустим, если
|
||||
суть иначе не выражается коротко.
|
||||
|
||||
## Индекс
|
||||
|
||||
`README.md` в том же каталоге: преамбула, затем секции по приоритетам, в каждой —
|
||||
строки вида
|
||||
|
||||
```markdown
|
||||
- [Заголовок задачи дословно](slug.md) — хук
|
||||
```
|
||||
|
||||
Хук отвечает на «почему это лежит в беклоге» одним предложением: состояние,
|
||||
остаток, боль. Пересказ первого абзаца бесполезен — он уже есть по ссылке.
|
||||
|
||||
Порядок секций задаёт порядок приоритетов, их названия — единственный словарь
|
||||
уровней. Внутри секции порядок значения не имеет. Секции приоритетов — **единственные
|
||||
заголовки `##` в индексе**: любой другой `##` в преамбуле проверка сочтёт уровнем
|
||||
приоритета.
|
||||
|
||||
Индекс **производен**: расходится с файлом — правим индекс. Строку индекса руками
|
||||
не пишут — её ставит `backlog.py add` в секцию приоритета и двигает `move`.
|
||||
|
||||
## Кладбище — `CLOSED.md`
|
||||
|
||||
Туда уходит задача, покинувшая беклог **без реализации**. Строку пишет
|
||||
`backlog.py close --reason`, а `check` следит за её форматом:
|
||||
|
||||
```markdown
|
||||
- 2026-07-23 `versii-kachestvo-repaki` — Версии/качество одного тайтла (репаки,
|
||||
апгрейд 1080p → 2160p). Причина: калибровка болей — не боль, ни разу не
|
||||
возникло за полгода. Был приоритет: низкий.
|
||||
```
|
||||
|
||||
Реализованные сюда не попадают: у них остаётся коммит, спека, ADR. У выкинутой не
|
||||
остаётся ничего — и через квартал она возвращается тем же текстом через инбокс.
|
||||
Кладбище — первое место, куда смотрит дедупликация при заведении.
|
||||
|
||||
Запись на кладбище не запрещает завести задачу заново: изменился контекст —
|
||||
заводим и ссылаемся на строку кладбища, объясняя, что изменилось.
|
||||
|
||||
## Тест «готова к взятию»
|
||||
|
||||
Задача готова, если из файла отвечаются три вопроса:
|
||||
|
||||
1. **Что станет наблюдаемо иначе**, когда она сделана — снаружи: пользователю,
|
||||
владельцу сервиса или разработчику. «Отрефакторить X» — не ответ; «перестанет
|
||||
ломаться Y при Z» — ответ.
|
||||
2. **По чему видно, что закончено.** Признак завершённости, а не список работ.
|
||||
3. **Почему приоритет такой** — одна строка.
|
||||
|
||||
Не отвечается первый или второй вопрос → это **идея**, её место в штурме, а не в
|
||||
приоритизации. Приоритизировать идеи бессмысленно: сравнивается неизвестно что.
|
||||
|
||||
Отвечается всё, но задача не делается одним заходом и не мерджится целиком →
|
||||
**эпик**, сперва декомпозиция.
|
||||
|
||||
Тест применяется при заведении и на груминге. К старым задачам, которых операция
|
||||
не касается, задним числом не применяется — беклог не переоформляют «заодно».
|
||||
Reference in New Issue
Block a user