граница: правило стало про раскладку проекта, а не про соседний плагин
Дом shared/plugin-boundary.md переехал в shared/absence.md: отсутствовала всё это время не установка плагина, а часть раскладки проекта, и узнавалась она следом на диске. Перечень внешнего сократился до двух — opsx и av-dev-git. Ветки «плагина нет» переписаны на «этой части в проекте нет»; там, где ветка существовала только ради неразрешимого пути в чужое дерево, она снята вовсе. Внутриплагинные копии языка и словаря сопровождения сняты: два справочника по 213 строк и один по 34 заменены ссылкой на общий дом. Копии остались там, где текст обязан лежать внутри промпта, — в уставах вычитки. Заодно починены пути $CLAUDE_PLUGIN_ROOT и относительные ссылки, разъехавшиеся с новыми именами каталогов.
This commit is contained in:
@@ -48,38 +48,44 @@ description: "Взять одну задачу и довести её до за
|
||||
`.claude/agents/<проект>-review-*.md`). Две копии одного скилла расходятся, и
|
||||
побеждает та, что короче названа.
|
||||
|
||||
### Обращение к соседним плагинам
|
||||
### Чего может не быть
|
||||
|
||||
**Копия.** Дом — `shared/plugin-boundary.md` в репозитории плагинов: правило
|
||||
общее для всех, кто зовёт чужое, и ни один плагин им не владеет. Правится дом, а
|
||||
не этот файл.
|
||||
**Копия.** Дом правила — `shared/absence.md` в репозитории плагина: правило
|
||||
общее для всех, кто приходит в чужой проект, и ни один скилл им не владеет.
|
||||
Правится дом, а не этот файл.
|
||||
|
||||
<!-- копия: граница-плагинов из av-dev/shared/plugin-boundary.md -->
|
||||
<!-- копия: отсутствие из av-dev/shared/absence.md -->
|
||||
|
||||
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
|
||||
месте.
|
||||
**Скилл не вправе считать раскладку проекта полной.** Части заводятся порознь и
|
||||
живут порознь; каждая узнаётся своим следом:
|
||||
|
||||
**Чужой скилл зовётся полным именем** — `av-dev:doc-canon`, `av-dev:task-track`,
|
||||
`av-dev:code-review`. Короткое имя может разрешиться в устаревшую проектную копию
|
||||
из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
|
||||
| Чего нет | Как видно | Чего теперь не делает никто |
|
||||
| --- | --- | --- |
|
||||
| раскладка av-dev | нет `.av-dev.toml` в корне | проект под процесс не заводился; версии нет, настроек нет |
|
||||
| документы канона | нет `docs/` | проектную конкретику брать неоткуда — темы, инварианты, прецеденты |
|
||||
| учёт работ | нет каталога задач | запись остаётся владельцу: назови её текстом в докладе |
|
||||
| источник требований | нет `openspec/config.yaml` | цикл SDD не запускается: спеки не с чем сверять |
|
||||
|
||||
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
|
||||
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
|
||||
откроет чужую установку. Нужен чужой справочник — зови владеющий им скилл, он
|
||||
прочитает его сам.
|
||||
**Свой скилл зовётся полным именем** — `av-dev:doc-canon`, `av-dev:task-track`,
|
||||
`av-dev:code-review`. Короткое имя может разрешиться в устаревшую проектную
|
||||
копию из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в
|
||||
поведении.
|
||||
|
||||
**Вызов не разрешился — плагина в проекте нет.** Это исход, а не поломка: назови
|
||||
строкой доклада, чего теперь не делает никто, и продолжай работу. Молчать нельзя,
|
||||
пропуск неотличим от сделанного; выдумывать обходной путь нельзя тоже.
|
||||
**Внешний плагин может не стоять.** Их два: `opsx:*` — цикл SDD, и
|
||||
`av-dev-git:commit` — сообщения коммитов. Путь в дерево чужого плагина не
|
||||
пишется никогда: `$CLAUDE_PLUGIN_ROOT` ведёт только в своё дерево, а
|
||||
вычисленный от него путь к соседу либо не откроется, либо откроет чужую
|
||||
установку. Нужен чужой справочник — зови владеющий им скилл, он прочитает его
|
||||
сам.
|
||||
|
||||
**Присутствие узнаётся вызовом или следом в проекте, но не объявлением.** Перечня
|
||||
установленных плагинов проект не ведёт — он разошёлся бы с действительностью
|
||||
молча. Что сосед здесь работал, видно по заведённому им файлу: `docs/.docs.json` —
|
||||
канон, `<каталог задач>/.tasks.json` — задачи, `openspec/config.yaml` — конвейер.
|
||||
Имя файла — имя плагина, который его завёл, и держит он в том числе версию своего
|
||||
формата: у канона документов и у каталога задач они свои и двигаются порознь.
|
||||
**Отсутствие — исход, а не поломка.** Назови строкой доклада, чего теперь не
|
||||
делает никто, и продолжай работу. Молчать нельзя: пропуск неотличим от
|
||||
сделанного. Выдумывать обходной путь нельзя тоже.
|
||||
|
||||
<!-- /копия: граница-плагинов -->
|
||||
**Присутствие узнаётся следом в проекте, а не объявлением.** Перечня того, что
|
||||
здесь заведено, проект не ведёт — он разошёлся бы с действительностью молча.
|
||||
|
||||
<!-- /копия: отсутствие -->
|
||||
|
||||
Скилл зовёт `av-dev:code-review`, `av-dev:doc-sync` и
|
||||
`av-dev:task-track`. Чем оборачивается отсутствие каждого — на самих шагах и в
|
||||
@@ -87,7 +93,7 @@ description: "Взять одну задачу и довести её до за
|
||||
|
||||
Перед стартом прочитай `CLAUDE.md` проекта и то, на что он ссылается, если ещё
|
||||
не в контексте. Проектные факты, нужные ревью — инварианты, семантика гейта,
|
||||
объёмы, модель угроз, прецеденты, — живут в **документах канона** `av-dev-docs`;
|
||||
объёмы, модель угроз, прецеденты, — живут в **документах канона**;
|
||||
карта «что где» — `references/project-facts.md` конвейера ревью.
|
||||
|
||||
**Документов канона нет — проект к нему не приведён.** Скажи это строкой и
|
||||
@@ -114,7 +120,7 @@ description: "Взять одну задачу и довести её до за
|
||||
**Отказ `ready` сценарий не выбирает.** Запись `research` без раздела «Вопрос»
|
||||
(сырьё) — отказ и здесь: у неё нет вопроса, и разведывать нечего.
|
||||
|
||||
Плагина `av-dev-tasks` в проекте нет или задача пришла текстом — прогонять
|
||||
Каталога задач в проекте нет или задача пришла текстом — прогонять
|
||||
нечего. Тогда прочитай постановку сам и скажи строкой, что готовность машиной не
|
||||
проверялась; работу при этом не останавливай.
|
||||
|
||||
@@ -259,7 +265,7 @@ flowchart TD
|
||||
что успели узнать, где остановились и почему.
|
||||
|
||||
**Что остатком не является — правило живёт не здесь.** Канонический текст с обеими
|
||||
оговорками — в плагине `av-dev-tasks`, скилл `av-dev:task-groom`, раздел
|
||||
оговорками — в скилле `av-dev:task-groom`, раздел
|
||||
`## Вопрос, блокер, необратимое`, подраздел «Отличать вопрос от застревания».
|
||||
Правило принадлежит управлению задачами, потому что решает **сделана задача или
|
||||
вышла**, — это исход планирования, а не исполнения. **Ссылайся, не
|
||||
@@ -272,7 +278,7 @@ flowchart TD
|
||||
Оба порога — стоп: первый поднимает решение до начала записи, второй даёт исход
|
||||
«не доведена».
|
||||
|
||||
Плагин `av-dev-tasks` не подключён — правило не отменяется, а становится
|
||||
Каталога задач в проекте нет — правило не отменяется, а становится
|
||||
осторожнее: прежде чем записать зависящее от нерешённого куда бы то ни было —
|
||||
в хранилище, в журнал, в витрину или наружу, — спрашивай человека.
|
||||
|
||||
|
||||
@@ -331,11 +331,9 @@ Change ты не передаёшь — его нет.
|
||||
«ничего не решали, поменяли оснастку».
|
||||
|
||||
Список документов и их триггеров здесь не дублируется — он в чек-листе скилла
|
||||
`av-dev:doc-sync`; копия уже однажды разошлась с оригиналом. Плагина в проекте
|
||||
нет — иди за перечнем в свой reference,
|
||||
[references/project-facts.md](../../review/references/project-facts.md) конвейера
|
||||
ревью, добавь `adr/` руками и скажи строкой, что синк сделан по перечню
|
||||
документов, без списка триггеров.
|
||||
`av-dev:doc-sync`; копия уже однажды разошлась с оригиналом. Документов канона в
|
||||
проекте нет — синка нет вовсе: скажи это исходом и предложи завести канон
|
||||
скиллом `av-dev:doc-canon`.
|
||||
|
||||
### 6. Коммит
|
||||
|
||||
|
||||
@@ -265,13 +265,9 @@ git и читается диффом, а второй стоп на каждой
|
||||
незачем. Но **названо должно быть каждое место, куда ты писал**, — доклад без
|
||||
перечня адресов неотличим от доклада о ненаписанном.
|
||||
|
||||
**Плагина `av-dev-docs` нет** — путь в его дерево не разрешится ниоткуда, поэтому
|
||||
за перечнем документов иди в **свой** reference:
|
||||
[references/project-facts.md](../../review/references/project-facts.md) конвейера
|
||||
ревью. `docs/adr/` и `docs/research/` в нём отсутствуют намеренно (проход ревью их
|
||||
не открывает), а разведке нужны как раз они — добавь их руками. Пиши сам, скажи
|
||||
строкой: «ответ записан без скилла документации — форму и вычитку не сверял
|
||||
никто».
|
||||
**Документов канона в проекте нет** — писать ответ некуда: назови это исходом,
|
||||
предложи завести канон скиллом `av-dev:doc-canon` и оставь ответ в докладе
|
||||
целиком, чтобы работа не пропала. Заводить `docs/` мимо канона нельзя.
|
||||
|
||||
### 5. Задачи: завести и уточнить
|
||||
|
||||
|
||||
@@ -332,21 +332,10 @@ flowchart TD
|
||||
`av-dev:doc-sync`, и копия уже однажды разошлась с оригиналом, потеряв два
|
||||
триггера.
|
||||
|
||||
**Плагина `av-dev-docs` в проекте нет** — путь в его дерево не разрешится ниоткуда,
|
||||
поэтому за списком иди в **свой** reference:
|
||||
[references/project-facts.md](../../review/references/project-facts.md)
|
||||
конвейера ревью перечисляет все документы канона с их предметом. Пройди по этому
|
||||
перечню — каждый документ получает строку, отрицание остаётся обязательным.
|
||||
|
||||
**Двух домов в том перечне нет намеренно, а синку они нужны: `docs/adr/` и
|
||||
`docs/research/`.** Проход ревью их не открывает — процессные, — но ADR как раз
|
||||
**главный выход синка**: решение, принятое по ходу задачи, без этой строки
|
||||
теряется систематически. Добавь их к перечню руками: `adr/` — решение с ценой,
|
||||
принятое в этой задаче; `research/` — если по ходу узналось новое о внешнем мире
|
||||
(записку разведки, предшествовавшей задаче, пишет не этот сценарий).
|
||||
Триггеры при этом ты знаешь хуже, и это называется в докладе строкой: «синк
|
||||
сделан по перечню документов, без списка триггеров — плагина `av-dev-docs` нет».
|
||||
Канона в проекте тоже нет — назови это исходом и предложи `av-dev:doc-canon`.
|
||||
**Документов канона в проекте нет** — синка нет вовсе: назови это исходом и
|
||||
предложи завести канон скиллом `av-dev:doc-canon`. Придумывать раскладку под
|
||||
задачу нельзя: документ, заведённый мимо канона, окажется вторым домом ровно
|
||||
тому, что канон потом заведёт своим.
|
||||
|
||||
### 10. Коммит
|
||||
|
||||
@@ -368,7 +357,7 @@ flowchart TD
|
||||
оставило бы задачу закрытой без единого следа работы, если шаг 10 упадёт.
|
||||
|
||||
**Закрытие тоже коммитится — вторым коммитом, тут же.** Удаление файла задачи и
|
||||
правка индексов (их имена знает `av-dev-tasks`, не ты) — это правки в рабочем
|
||||
правка индексов (их имена знает `av-dev:task-track`, не ты) — это правки в рабочем
|
||||
дереве, и оставить их незакоммиченными нельзя: закрытие, не доехавшее до основной
|
||||
ветки, оставит задачу открытой молча, а опора «индексы под git показывают, что и
|
||||
когда закрыто» без коммита — пустые слова. Сообщение короткое, про учёт, а не про
|
||||
|
||||
Reference in New Issue
Block a user