Плагин был помечен устаревшим решением Q и жил до перевода jellybit. Удалён раньше этого срока: условие пережило свою причину. Заморозка выглядела бесплатной, а платила собой в каждой проверке репозитория — exclude в pyproject.toml, SKIP_DIRS в copies.py, два абзаца README, оговорка в описании маркетплейса, чтобы не ловить триггер «добавь задачу в беклог». Пять исключений ради 706 строк, которые никто не читает, и каждое надо объяснять всякий раз, когда спрашивают, почему проверка обходит каталог. Причина условия отпала раньше названного срока. docs/backlog/ читает не backlog.py, а av-dev-pm:tasks — adopt.md и адаптер в tasks.py держат ту же раскладку как вход миграции. Плагин перестал быть единственным, кто её знает, ещё когда писался adopt, и «живёт до перевода последнего проекта» с тех пор охраняло пустоту. Перевод jellybit на канон это не задевает. Порядок вышел обратный ожидаемому: плагин удалён из маркетплейса, а с jellybit снят после. Ожидалась ручная чистка enabledPlugins и installed_plugins.json, но claude plugin uninstall отработал штатно — он идёт по реестру, а не по манифесту маркетплейса. Раздел «Снятие» в README переписан с частного случая на общую процедуру, предупреждение заменено проверенным фактом. Записи Q и HH получили парные статусы, тема 30 в DECISIONS несёт причины и три следствия, пункт 5 TODO отмечен, открытый вопрос из REMAINING убран. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
16 KiB
16 KiB
Работы по итогам разбора
Порядок и обоснование — DECISIONS.md, тема 8. Номера в скобках — следствия оттуда.
Замер (шаг 3) — единственный шаг, который нельзя переставить: он блокирует переезд jellybit. Всё остальное можно тасовать.
0. Предусловие
git push—092d07c..88c5d97, 17 коммитов ушли на origin (37)claude plugin marketplace update av-dev-skills— клон встал на88c5d97и видитav-dev-pmиav-dev-pipeline
1. Репозиторий плагинов
1.1 Переименование
av-dev-tasks→av-dev-pm: каталог,plugin.json,marketplace.json(18)- пространство имён во всех текстах:
av-dev-tasks:session→av-dev-pm:session, включая ссылку изtask-pipeline(18)
1.2 Канон — единственный дом определения
av-dev-pm/skills/canon/references/canon.md— раскладка, роли документов, правило единственного дома. Читаютinit,canon,docs(AA)av-dev-pm/skills/canon/references/changelog.md— журнал версий канона, версия 1 (26)
1.3 Правки существующих скиллов
tasks: убрать слот 6 «Команда учёта задач» (33)tasks: путь каталога жёсткийdocs/tasks, убрать цепочку разрешения (F)tasks:.tasks.json→docs/.pm.json, там же версия канона и путь миграций (23, 30)tasks: убрать слоты 3 «куда переезжает суть» и 5 «оракулы» — отвечает канон и семантика гейта (тема 4)session: убрать слот 7 и слот 4 «где живёт разбор процесса» (33, K)session: переписать «Стимулы, которые процесс создаёт» — снятая граница выбила опору у трёх защит (19)
1.4 Новые скиллы
init— интервью по брифу → канон нового проекта (R)canon—check/adopt/upgrade; поглощает скиллadopt(R, 21, 24)docs— содержимое канона: ADR из архивногоdesign.md, промоут конвенций, запись вresearch/иreview.md, чисткаarchitecture.md(X)docs.py— раскладка, лишние файлы, битые ссылки, версия, плейсхолдеры, маркеры долга; сверки миграции ↔database.mdи capability ↔architecture.md(T, 31)
1.5 av-dev-pipeline
- удалить скилл
project-briefиreferences/{project-brief,brief-template}.md(13) - снять ветки деградации OpenSpec в трёх местах:
task-pipeline,review-pipeline,task-batch(1) - девять charter'ов: разделы брифа → пути канона;
ops/adversary/reimplобязаны сшиватьresearch/иdatabase.md(14, 15) review-pipeline: убрать бриф, поразрядная деградация по документам (16)task-pipelineшаг 9 → построчный доклад по документам канона (28)task-pipeline/task-batch: закрытие задачи вызовом скиллаav-dev-pm:tasks, слот убрать (32, 33)promote.mdшаг 3: перечень механизированного →conventions/README.md(29)- описание плагина: «требует OpenSpec» (2)
1.6 Прочее
av-dev-backlog— пометить устаревшим, переписать описание, чтобы не ловило триггер (Q)README.mdмаркетплейса — три плагина, канон, установкаHISTORY.md— сжатьAGENTIC-TASKS.mdдо истории решений (CC)REMAINING.mdпересобрать: пункт 2 отменён, четыре вопроса закрыты, калибровка стала обязательной (38)
1.7 Линтеры скриптов (тема 9)
pyproject.toml: ruff + pyrefly черезuv, версии прибиты (DD, FF)- запрет внешних зависимостей двумя способами:
banned-api+ пустое окружение pyrefly (EE) RUF001–RUF003выключены,av-dev-backlogисключён (GG, HH)- починены 27 находок ruff и 14 pyrefly;
osизtasks.pyушёл (40, 41) - раздел «Проверка скриптов» в
README.md
1.8 Ревью двумя проходами (тема 10)
reopenберёт текст изHEAD, когда коммита удаления ещё нет (JJ)- шаг 11 коммитит учёт вторым коммитом; батч проверяет чистоту дерева (JJ)
- фиктивный ключ
tasks.sectionsубран из четырёх документов (KK) initпишет конфиг вdocs/.pm.json;looks_like_tasksего читает- урожай спринта заводится до
sprint close, слаг — из его отчёта - ответ на вопрос опустошает раздел «Вопросы» — во всех трёх местах
- путь отчёта триажа переживает архивацию (5 мест)
review-specsполучил режим 3 — стык после слияния- остальные 12 находок:
sprint.md, «9а», перечень проектных копий, параллельность в батче, триаж в финальной сверке, триггеры профиля, 8–12
1.9 Ревью зависимостей между плагинами (тема 11)
- опоры приёмки названы абстрактно, деградация без конвейера объявлена (MM)
- ветка деградации шага 9 ходит в свой
project-facts.md(NN) docsдаёт ветку «конвейера нет» для журнала и промоута- форма журнала дефектов сведена к дому, копия помечена в
changelog.md specsвернулся в читателиdocs/research/; дом списка назначен- пайплайн не называет
items/иSPRINT.md— их знаетav-dev-pm - манифесты объявили
av-dev-pmопциональным для конвейера (49)
1.10 Механическая проверка копий (тема 12)
scripts/copies.py: маркеры дома и копии, побайтовая сверка (OO)- строгий id, повторяемый в закрывающем маркере (PP)
- помечены два контракта; «когда заводить ADR» сведён к дословному (50)
- раздел «Проверка копий правил» в
README.md, правило — в обоих домах
2. healthlog — первая боевая проверка
canon adopt;docs/backlog/→docs/tasks/architecture.md1662 строки → обзор, остаток маркерами (W)- после выноса поведения — замерить остаток
architecture.mdи решить по каталожной форме: жмёт → следующая версия канона дляarchitecture.mdиreview.md, точка входаREADME.md(тема 16, GGG, 65; версию 3 занял роадмап с родом работы, тема 17, 68; версию 4 — секцияСопровождениеи порядок секций, тема 26) - завести
security.mdс периметром первой строкой (J) review-journal.md→review.md+ настройка конвейера (K, L)conventions.md→conventions/,local-research.md→research/(G)plan.md→docs/tasks/ROADMAP.md(E)- завести
docs/adr/ CLAUDE.md: severity инвариантов, семантика гейта, убрать раздел «Процесс» (M, N)docs.py checkвtask gate(V)- почистить
openspec/config.yaml(C) - удалить проектные копии:
.claude/skills/healthlog-{task,review}-pipelineи девять.claude/agents/healthlog-review-*.md— они прошлого поколения и после переезда указывают наdocs/conventions.md,docs/local-research.md,docs/review-journal.md, которых уже не будет
3. Калибровка — блокирует шаг 5
- замер на четырёх находках healthlog: скелет из
null, откат бинаря, канонизация в транзакции,-1 >= -1(1 из REMAINING, 14)
4. Обкатка
- один-два спринта healthlog на новом процессе
5. jellybit
BRIEF.md→docs/passport.md, обновитьdocs/specs/{recognition,review-ux,workflow}.md— сверить с capability и удалить как дубли (10)docs/specs/architecture.md→docs/architecture.md,database.md→docs/database.md,jellyfin-layout.md→docs/research/docs/review/journal.md→docs/review.mddrafts/растворить: roadmap →ROADMAP.md, conventions-backlog → записиresearch(сырьё: тип есть, «Вопрос» пуст), logical-title-model → ADR (H)docs/backlog/→docs/tasks/- удалить проектные копии скиллов и агентов (4 из REMAINING)
av-dev-backlogудалить из маркетплейса и снять с проекта (тема 30)
6. Канон версии 3 — повысить живые проекты (тема 17)
Оба проекта стоят на каноне 2 и держат docs/tasks/PLAN.md: healthlog 55 задач,
jellybit 43. Шаги повышения — changelog.md,
запись «Версия 3»; делаются скиллом av-dev-pm:canon в режиме upgrade.
- healthlog:
PLAN.md→ROADMAP.md, ссылки,"canon": 3— сделано, лежит в рабочем дереве проекта некоммитнутым - jellybit: то же
- род работы и раздел «Затрагивает» — не задним числом: сперва то, что
идёт в ближайший набор (
sprint takeбез них откажет), остальное по ходу переоценки (PPP) - секции роадмапа:
порядок→Запланировано,темы→Направления, завестиГотовоиСопровождение; прозаические разделы healthlog («Что уже пройдено», «Почему в таком порядке») разложить — звенья строками вГотово, обоснование очереди прозой внутриЗапланировано(тема 19, 80).checkтеперь называет чужую секцию ошибкой, так что шаг обязателен - переформулировать цели ответом на «что приложение будет уметь»; цели не
про приложение («Процесс и качество разработки» в jellybit) — в
Сопровождение check --fixна обоих: поднимет написание канонических секций, поставит отбивку после заголовков и сведёт секцию в мете файлов с заголовками. Секции беклога переименовать руками — имена выбирал проект (тема 20, ККК)- заголовки задач в форму действия — не задним числом: по мере попадания
задачи в работу.
checkпечатает их число,task-formпредложит формулировки пачкой (тема 20, ЕЕЕ)
Канон 4 — сверх того (changelog, запись «Версия 4»):
- healthlog:
## Разработка→## Сопровождение, поле «Секция» в целях этой секции,check --fix(переставитГотововниз и поправит отбивку),"canon": 4 - jellybit едет сразу на 4:
Готовозаводить последней, секцию сопровождения — сразу с новым именем, переставлять дважды не нужно - типы:
check --fixпереведётkind:/[goal]/[idea]в поле «Тип», снимет тег, поставит эмодзи, переименует «Секция» → «Категория» у задач и снесёт сырьё в конец категорий — за один проход, вместе с порядком секций - разобрать
НЕОДНОЗНАЧНОпосле--fix: записи без типа (заведены до появления рода работы) машина не угадывает —edit <слаг> --type … - имена файлов:
docs.py checkназовёт кириллицу, не-kebab-case и форму имени ADR. Переименование ADR — перенос ссылок одним проходом: слаг стоит вadr/README.md, вarchitecture.mdи в чужих документах - первый прогон
doc-consistencyна живом проекте — правило единственного дома до сих пор не проверял никто, урожай ожидается крупный; разбирать порциями doc-code-drift— на ближайшей сессии между спринтами, с разделом запретовCLAUDE.mdна входе- новые обязательные разделы — не задним числом:
Воспроизведениеу каждогоfixиВопрос+Куда ляжет ответу каждогоresearchпишутся по мере того, как задача идёт в набор (sprint takeбез них откажет). Сколько записей готово к взятию, печатает блок здоровьяcheck