граница: правило стало про раскладку проекта, а не про соседний плагин
Дом shared/plugin-boundary.md переехал в shared/absence.md: отсутствовала всё это время не установка плагина, а часть раскладки проекта, и узнавалась она следом на диске. Перечень внешнего сократился до двух — opsx и av-dev-git. Ветки «плагина нет» переписаны на «этой части в проекте нет»; там, где ветка существовала только ради неразрешимого пути в чужое дерево, она снята вовсе. Внутриплагинные копии языка и словаря сопровождения сняты: два справочника по 213 строк и один по 34 заменены ссылкой на общий дом. Копии остались там, где текст обязан лежать внутри промпта, — в уставах вычитки. Заодно починены пути $CLAUDE_PLUGIN_ROOT и относительные ссылки, разъехавшиеся с новыми именами каталогов.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Чего может не быть
|
||||
|
||||
**Это дом.** Правило нужно почти каждому скиллу: любой приходит в проект, где
|
||||
может не оказаться ни документов канона, ни каталога задач, ни `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`
|
||||
о каталоге молчит» знает канон. Правило общее, последствие местное, и держать
|
||||
последствия здесь значило бы завести дом, который знает про всех своих
|
||||
потребителей.
|
||||
Reference in New Issue
Block a user