From 2ec952c810fc996a24a4fcb6955fb033c7edd93b Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Thu, 23 Jul 2026 21:26:11 +0300 Subject: [PATCH] =?UTF-8?q?backlog:=20=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81=D0=BA=D0=B8=D0=BB=D0=BB=D0=B0?= =?UTF-8?q?=20=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B1=D0=B5?= =?UTF-8?q?=D0=BA=D0=BB=D0=BE=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Беклог теперь ведётся пользовательским скиллом `backlog` (заведение из диалога, разбор находок ревью, груминг, приоритизация, декомпозиция, штурм). CLAUDE.md делегирует ему формат и держит только проектные тонкости; добавлены источники задач (диалог, Tududi, находки ревью) и кладбище `docs/backlog/CLOSED.md` для выкинутого без реализации. - task-pipeline: шаги 1 и 9 больше не описывают формат сами, ссылаются на скилл; шаг 9 гоняет `backlog.py check` после удаления файла задачи. - review-pipeline: отложенная реальная находка (не для текущего мерджа) заводится задачей через скилл с тегом партии review-ГГГГ-ММ-ДД. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/review-pipeline/SKILL.md | 4 ++++ .claude/skills/task-pipeline/SKILL.md | 11 ++++++++-- CLAUDE.md | 28 ++++++++++++++++--------- docs/backlog/CLOSED.md | 13 ++++++++++++ 4 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 docs/backlog/CLOSED.md diff --git a/.claude/skills/review-pipeline/SKILL.md b/.claude/skills/review-pipeline/SKILL.md index cee0999..57790f8 100644 --- a/.claude/skills/review-pipeline/SKILL.md +++ b/.claude/skills/review-pipeline/SKILL.md @@ -164,6 +164,10 @@ task review:context > tmp/review-context.md - Оркестратор чинит помеченное `Действие: инлайн` и **не логирует мелочь**. - `Действие: развилка` — на человека через `AskUserQuestion`, вопросом с вариантами. +- Находка не для этого мерджа, но реальная (отложенный `major`, развилка, + решённая «потом») — не теряется: заводится задачей через скилл `backlog` + (интейк из ревью), с оракулом и провенансом в теле. Мелочь класса `nit` — в + пакетный файл, а не файлом на находку. - `Promote candidates` — по процедуре [references/promote.md](references/promote.md): находка → конвенция → правило линтера → **удаление из конвенций и из промптов**. Третий шаг обязателен. diff --git a/.claude/skills/task-pipeline/SKILL.md b/.claude/skills/task-pipeline/SKILL.md index a94f1f8..44975e2 100644 --- a/.claude/skills/task-pipeline/SKILL.md +++ b/.claude/skills/task-pipeline/SKILL.md @@ -41,6 +41,10 @@ description: Автономно проводит задачу jellybit чере - Задача с префиксом `[идея]` (ещё без решения «делаем») — сперва обязательно через explore (шаг 2), там она либо становится задачей, либо остаётся идеей. +Формат файла задачи и индекса держит скилл `backlog` — здесь мы беклог только +читаем. Если по ходу выбора вскрылось, что задача устарела, дублируется или +разрослась в эпик, это работа для скилла `backlog`, а не для пайплайна. + Оцени тривиальность (влияет на шаг 4): - **Тривиальная** — локальная правка без изменения поведения/спек/схемы БД, очевидное решение. Explore и ревью спек пропускаем. @@ -126,11 +130,14 @@ goose + синк ER-схемы `docs/specs/database.md`, htmx по web-ui-кон Ревью выполненного — **до** чистки (память `review-before-backlog-cleanup`). Затем: -- Удали файл задачи `docs/backlog/.md` и строку в `docs/backlog/README.md` - (реализованное не держим в беклоге — CLAUDE.md). +- Удали файл задачи `docs/backlog/.md` и строку в `docs/backlog/README.md`. + Реализованное не держим в беклоге и на кладбище `CLOSED.md` не пишем — у него + есть коммит, спека и ADR (формат — скилл `backlog`). - Суть переехавшего решения — в `docs/specs`/`docs/adr`, если ещё не там. - Если менялась структура БД — убедись, что ER-схема `docs/specs/database.md` обновлена в этом же change. +- Прогони `python3 ~/.claude/skills/backlog/scripts/backlog.py check` — индекс не + должен ссылаться на удалённый файл. ### 10. Коммит diff --git a/CLAUDE.md b/CLAUDE.md index 9eaf4c1..7538252 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -97,18 +97,26 @@ OpenSpec (пилот — `ingest`). До переноса источник ис ## Задачи и беклог - **Единственный источник беклога — каталог [docs/backlog/](docs/backlog/README.md)**: - одна задача = один markdown-файл (`docs/backlog/.md`), плюс - индекс [README.md](docs/backlog/README.md) со списком по приоритетам - (высокий/средний/низкий) и хуками. В теле файла — контекст, принятые - решения, шаги и ссылки на спеки/ADR/черновики. Заводи задачу новым файлом - и строкой в индексе; закрытую (реализованную) — удаляй, суть переезжает в - `docs/specs`/`docs/adr`. -- Спекулятивные задачи (ещё без решения «делаем») помечены префиксом - `[идея]` в названии — их сперва прорабатываем. + одна задача = один markdown-файл (`docs/backlog/.md`) + строка в индексе + [README.md](docs/backlog/README.md). Приоритеты: высокий/средний/низкий. + Работа с беклогом (заведение из диалога, разбор находок ревью/аудита, груминг, + приоритизация, декомпозиция, штурм идеи) — через скилл **`backlog`**; формат + файла, слага, индекса и кладбища он и держит, здесь не дублируем. +- **Источники задач:** диалог, инбокс Tududi и находки ревью. Отложенная находка + `review-pipeline` (реальная, но не для текущего мерджа) заводится задачей через + скилл `backlog` с тегом партии `review-ГГГГ-ММ-ДД` — так уже сделаны задачи + `review-*` в беклоге. +- **Проектные тонкости для скилла `backlog`:** + - каталог беклога — `docs/backlog/`, язык — русский, слаги — латиница; + - реализованная задача удаляется, её суть переезжает в `docs/specs`/`docs/adr` + (это делает пайплайн задачи на шаге 9, не скилл беклога); + - выкинутая без реализации уезжает строкой в `docs/backlog/CLOSED.md` (кладбище); + - спекулятивные задачи помечены `[idea]` в заголовке (тип — английское + ключевое слово idea/epic/task) — сперва штурм. - **Tududi — только инбокс сырых идей** (проект `jellybit`, project_id 14). Беклог там больше не ведём; идея из Tududi становится задачей, когда её - оформляют файлом в `docs/backlog/`. Прежняя единая `docs/backlog.md` - доступна в истории git. + оформляют файлом в `docs/backlog/` через скилл `backlog`. Прежняя единая + `docs/backlog.md` доступна в истории git. ## Язык diff --git a/docs/backlog/CLOSED.md b/docs/backlog/CLOSED.md new file mode 100644 index 0000000..cff494d --- /dev/null +++ b/docs/backlog/CLOSED.md @@ -0,0 +1,13 @@ +# Кладбище беклога + +Задачи, покинувшие беклог **без реализации**: выкинутые, отменённые решением, +слитые в другие. Причина отказа переживает саму задачу — иначе та же идея +вернётся через квартал тем же текстом через инбокс Tududi. + +Реализованные сюда **не** попадают: у них остаётся коммит, спека, ADR. Ведётся +скиллом `backlog`; формат строки — в его `references/task-format.md`. + +Запись здесь не запрещает завести задачу заново: изменился контекст — заводим и +ссылаемся на строку кладбища, объясняя, что изменилось. + +