# Чего может не быть **Это дом.** Правило нужно почти каждому скиллу: любой приходит в проект, где может не оказаться ни документов канона, ни каталога задач, ни `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:canon`, `av-dev:task-track`, `av-dev:code-review`. Короткое имя может разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении. **Внешний плагин может не стоять.** Их два: `opsx:*` — цикл SDD, и `av-dev-git:commit` — сообщения коммитов. Путь в дерево чужого плагина не пишется никогда: `$CLAUDE_PLUGIN_ROOT` ведёт только в своё дерево, а вычисленный от него путь к соседу либо не откроется, либо откроет чужую установку. Нужен чужой справочник — зови владеющий им скилл, он прочитает его сам. **Отсутствие — исход, а не поломка.** Назови строкой доклада, чего теперь не делает никто, и продолжай работу. Молчать нельзя: пропуск неотличим от сделанного. Выдумывать обходной путь нельзя тоже. **Присутствие узнаётся следом в проекте, а не объявлением.** Перечня того, что здесь заведено, проект не ведёт — он разошёлся бы с действительностью молча. **Что в дом не идёт: чем именно оборачивается нехватка у тебя.** «Нет каталога задач — учёт остаётся владельцу» знает конвейер; «нет `openspec/` — `docs.py` о каталоге молчит» знает канон. Правило общее, последствие местное, и держать последствия здесь значило бы завести дом, который знает про всех своих потребителей.