Files
dev-skills/av-dev/shared/absence.md
T
av 441469d78d вычитка ревью: пережитки трёх плагинов и язык слияния
Восемнадцать веток «плагина нет» описывали недостижимое: скиллы и агенты теперь
в одном плагине и разрешаются всегда. Где предмет всё же может отсутствовать —
ветка переписана на след в проекте (нет docs/, нет каталога задач, нет
openspec/); где отсутствовать нечему — снята. Туда же анонсы, обещавшие ветку,
которой в разделе больше нет.

Правило копий и его применение разъезжались в одном коммите: правило называло
два законных случая, а absence.md разослан семью копиями по SKILL.md. Назван
третий случай, и разрез проверяемый — файл, который модель получает целиком,
против файла, за которым она идёт отдельным чтением. Заодно сняты объявления
копий там, где копию сменила ссылка, и довод у карты домов в doc-consistency:
он ссылался на отсутствие плагина, хотя устав едет вместе с плагином.

Описания скиллов во фронтматтерах звали снятые короткие имена — по ним скилл не
находится. task-track перестал обещать повышение: версию двигает doc-canon.

Язык: сняты кросс-вызов, опцион и деградация, конверсия и «читатель» в
config.py, charter'ы против уставов, замер против подсчёта, страдательный залог
в журнале. Строка «настройки av-dev» в таблице отсутствия — слово «раскладка»
называло и целое, и его часть.

Мелкое: тема 52 в README была 64, транслит в task-wording машина не проверяет,
мёртвая ветка REQUIRED в addresses.py, ссылки на язык в закрытом журнале.
2026-08-13 11:03:11 +03:00

60 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Чего может не быть
**Это дом.** Правило нужно почти каждому скиллу: любой приходит в проект, где
может не оказаться ни документов канона, ни каталога задач, ни `openspec/`, а
рядом может не стоять внешний плагин, которого он ждёт. Ни один скилл правилом
не владеет, поэтому дом стоит в `shared/`, а скиллы везут **копии**, помеченные
разметкой `copies.py`.
Правится **здесь**. Копия, поправленная у себя, — расхождение, а не правка.
До слияния правило называлось «граница плагинов» и говорило о соседе:
`av-dev-docs`, `av-dev-tasks` и `av-dev-code` ставились порознь, и каждый обязан
был пережить отсутствие двоих. Плагин теперь один, а правило осталось, и не по
инерции: **отсутствовала всё это время не установка, а раскладка проекта**, и
узнавалась она следом на диске, а не перечнем плагинов. Перечень того, чего
может не быть, стал короче на три имени — механика не изменилась вовсе.
Правило завели по подсчёту: к первому расколу оно стояло в пяти местах в пяти
редакциях, и три из пяти молчали о том, ради чего написано, — что делать, когда
недостающее нашлось.
<!-- дом: отсутствие -->
**Скилл не вправе считать раскладку проекта полной.** Части заводятся порознь и
живут порознь; каждая узнаётся своим следом:
| Чего нет | Как видно | Чего теперь не делает никто |
| --- | --- | --- |
| настройки av-dev | нет `.av-dev.toml` в корне | проект под процесс не заводился; версии нет, настроек нет |
| документы канона | нет `docs/` | проектную конкретику брать неоткуда — темы, инварианты, прецеденты |
| учёт работ | нет каталога задач | запись остаётся владельцу: назови её текстом в докладе |
| источник требований | нет `openspec/config.yaml` | цикл SDD не запускается: спеки не с чем сверять |
**Свой скилл зовётся полным именем**`av-dev:doc-canon`, `av-dev:task-track`,
`av-dev:code-review`. Короткое имя может разрешиться в устаревшую проектную
копию из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в
поведении.
**Внешний плагин может не стоять.** Их два: `opsx:*` — цикл SDD, и
`av-dev-git:commit` — сообщения коммитов. Путь в дерево чужого плагина не
пишется никогда: `$CLAUDE_PLUGIN_ROOT` ведёт только в своё дерево, а
вычисленный от него путь к соседу либо не откроется, либо откроет чужую
установку. Нужен чужой справочник — зови владеющий им скилл, он прочитает его
сам.
**Отсутствие — исход, а не поломка.** Назови строкой доклада, чего теперь не
делает никто, и продолжай работу. Молчать нельзя: пропуск неотличим от
сделанного. Выдумывать обходной путь нельзя тоже.
**Присутствие узнаётся следом в проекте, а не объявлением.** Перечня того, что
здесь заведено, проект не ведёт — он разошёлся бы с действительностью молча.
<!-- /дом: отсутствие -->
**Что в дом не идёт: чем именно оборачивается нехватка у тебя.** «Нет каталога
задач — учёт остаётся владельцу» знает конвейер; «нет `openspec/``docs.py`
о каталоге молчит» знает канон. Правило общее, последствие местное, и держать
последствия здесь значило бы завести дом, который знает про всех своих
потребителей.