Files
dev-skills/TODO.md
T
av c6be879831 правило обращения к соседнему плагину получило дом
Стояло в пяти местах в пяти редакциях: два разных довода, ни в одном
месте оба, и три места из пяти молчали о том, что делать при
неразрешившемся вызове. Плюс невысказанный инвариант: $CLAUDE_PLUGIN_ROOT
ведёт только в свой плагин.

Дом — shared/plugin-boundary.md, блок «граница-плагинов», семь помеченных
копий. В дом вошло правило, последствия остались на местах вызова:
«нет плагина задач — учёт остаётся владельцу» знает только конвейер.

Оглавление адресов в CLAUDE.md проекта отклонено — второй дом раскладки,
и протухший адрес в нём выходит правдоподобной строкой честной
деградации. Сверка адресов уходит машине, записана в TODO разделом 5.
2026-08-09 15:02:46 +03:00

11 KiB

Что осталось сделать

Здесь только работы и их порядок. Чего здесь нет намеренно:

  • риски, открытые вопросы и принятые пределыREMAINING.md;
  • почему решено такDECISIONS.md, записи датированы;
  • шаги повышения проекта с версии канона на версию — журнал версий (changelog.md). Пересказ их сюда был бы вторым домом, и прежний план на этом уже разъезжался: он повторял записи версий 3, 4 и 5 построчно, и половина повторов протухла молча.

Сделанное отсюда удаляется, а не помечается галочкой. След остаётся в коммитах и в DECISIONS.md; список из двух сотен [x] перестают читать целиком, и живые пункты в нём теряются — прежний план умер именно так.

Где мы сейчас

Плагинов четыре, и каждый ставится отдельно: av-dev-docs (канон документов и их содержимое), av-dev-tasks (задачи и цели), av-dev-pipeline (SDD и конвейер ревью, он же заводит OpenSpec), av-dev-git. Общее, что нужно нескольким дословно, живёт домом в shared/ и уезжает копиями.

Канон документов — версия 11. Живые проекты стоят на 2–3 и на плагине av-dev-pm, которого больше нет.

1. Живые проекты — вернуть в рабочее состояние

Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один скилл, кроме docs.py check, не исполнялся на живом коде ни разу (см. REMAINING, «Что ещё не сделано»).

healthlog — первым

  • переустановить плагины: снять av-dev-pm, поставить av-dev-docs и av-dev-tasks. marketplace update, затем plugin update — одного шага мало (README, «Обновление»)
  • удалить проектные копии: .claude/skills/healthlog-{task,review}-pipeline и девять .claude/agents/healthlog-review-*.md. Они прошлого поколения и после переезда указывают на документы, которых уже не будет
  • av-dev-docs:canon в режиме adopt — он приведёт проект к канону 11 сразу, картой и с подтверждением. Файл-в-файл здесь не расписан: раскладку знает скилл, и второй перечень разошёлся бы с ним
  • каталог задач — в tasks/ корня (канон 11), не в docs/tasks/. Скилл задач зовётся из adopt сам
  • гейт проекта: три шага вместо одного — docs.py check, tasks.py check --dir tasks, openspec.py check. Второй и третий раньше не были нужны: согласованность задач тянул за собой docs.py, форму config.yaml он же. Теперь оба молчат, и без своих шагов дрейф перестанет ловиться
  • разобрать урожай doc-consistency и doc-code-drift порциями — правило единственного дома на живом проекте не проверял никто

jellybit — после калибровки

Порядок не произволен: замер (раздел 3) блокирует переезд jellybit, и только его.

  • то же, что у healthlog: плагины, проектные копии, adopt, каталог задач, гейт
  • проектные копии здесь опаснее: скиллы названы task-pipeline, review-pipeline, task-batchровно как в плагине, и короткое имя может увести в устаревшую копию молча (REMAINING)

2. Учёт работ без спринтов

Решено: спринты отменяются, беклог и роадмап остаются. Причина — процесс идёт задача за задачей, и замороженный набор перестал что-либо удерживать.

  • снять спринт: SPRINT.md, команды sprint *, переходы схемы состояний, правило «задача живёт в одном индексе за раз» упрощается до беклога
  • приоритет — явный порядок строк в беклоге. Правило 4 скилла задач («порядка нет, есть цель») переписывается целиком: оно обосновано тем, что «что делать дальше» отвечает набор спринта, — а набора больше нет. Записать, что приоритет это свойство очереди, а не задачи, и потому его дом индекс: то же исключение из правила 2, что уже есть у «в каком индексе лежит задача, знают индексы»
  • перевесить гейт готовности. Схема типа (обязательные разделы, ≥2 критерия, границы) проверяется на sprint take. Спринта нет — момента нет; нужен tasks.py ready <слаг> или check --task <слаг> на входе пайплайна, иначе задача уедет в работу без критериев приёмки
  • check --fix: восстановленная строка индекса теряет позицию, а позиция теперь и есть приоритет. Класть в конец категории и печатать пометкой, что приоритет назначен не человеком
  • session → скилл груминга внутри av-dev-tasks: пересортировка беклога, разбор вопросов, переоценка. references/sprint.md в мусор, cadence.md переписать под ритуал без спринта
  • запись в журнал версий канона: проектам надо снести SPRINT.md и расставить порядок

3. Калибровка — блокирует переезд jellybit

  • замер на четырёх находках healthlog: скелет из null, откат бинаря, канонизация в транзакции, -1 >= -1. Цена и ожидаемый исход — REMAINING, «Главный незакрытый риск»

4. Пайплайн одной задачи — три этапа

Обкатывается на healthlog после разделов 1 и 2. Пайплайн нескольких задач на паузе намеренно.

  • этап 1 — первичный ресерч и смысл задачи. Заканчивается дешёвым подтверждением: две строки «понял так, собираюсь делать это». Без него проверка «то ли я делаю» приходит после готового дизайна, то есть когда ошибка стоит дороже всего
  • этап 2 — propose, дизайн, ревью дизайна, краткое объяснение решения. Заканчивается полноценным чекпоинтом
  • этап 3 — код, ревью, архивация. Автоматически: дизайн уже согласован. Решить, что делает этап, когда ревью находит расхождение с утверждённым дизайном: находка внутри дизайна дожимается сама, находка, отменяющая дизайн, отменяет и чекпоинт и обязана всплыть к человеку
  • перемерить review-pipeline тем же вопросом, что и проект целиком: сколько из пяти стадий реально смотрятся глазами. 1028 строк, и весь автоматический этап держится на них

5. Стык плагинов — проверка адресов

Не блокирует ничего и делается после раздела 1: писать чекер лучше, когда adopt на живом проекте покажет, какие адреса называются вслух. Правило обращения к соседу дом уже получило (shared/plugin-boundary.md, решение 54) — осталась вторая половина.

  • scripts/addresses.py: владелец отдаёт перечень своих адресов машинно (константа, по которой он и так проверяет раскладку, — docs.py и tasks.py), чекер грепает чужие деревья и падает на адресе, которого у владельца нет. Зачем машина, а не внимание: протухший адрес в проходе ревью попадает в механизм честной деградации и выходит правдоподобной строкой «документа в проекте нет» (решение 54, вывод 179)
  • форма адреса нормализуется до имени темы: docs/security.md, docs/security/ и docs/security.* — одна запись. Иначе чекер начнёт требовать выбора формы, которую канон сознательно оставляет проекту
  • упоминание отставленного адреса в чужом плагине — тоже находка: карта RETIRED у docs.py уже есть, и сейчас её не сверяет никто. Журнал версий из проверки исключается — задним числом он не переписывается

6. Обкатка

  • один-два цикла healthlog на новом процессе; наблюдение к первой обкатке — не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые вопросы»)