diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index 9079d3a..745ff1d 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -16,8 +16,8 @@
"description": "Задачи и цели каталогом markdown-файлов, у каждой записи тип, и тип задаёт её схему. Спринт под одну цель, ритуал между спринтами, проверка согласованности скриптом tasks.py. Задача выполняется чем угодно: пайплайна плагин не требует и сам его не зовёт."
},
{
- "name": "av-dev-pipeline",
- "source": "./av-dev-pipeline",
+ "name": "av-dev-code",
+ "source": "./av-dev-code",
"description": "Решение одной задачи от постановки до закрытия: цикл SDD с чекпоинтом объяснения после ревью дизайна, у исследовательской задачи — ещё и чекпоинт вариантов до первого требования. Конвейер ревью с обязательным триажем. Требует OpenSpec. Задача принимается и обычным текстом; плагины av-dev-docs и av-dev-tasks опциональны — первый даёт документы канона для проходов ревью, второй учёт задач, без них прогон деградирует поразрядно и говорит об этом."
},
{
diff --git a/DECISIONS.md b/DECISIONS.md
index be15298..c520e18 100644
--- a/DECISIONS.md
+++ b/DECISIONS.md
@@ -3460,3 +3460,39 @@ change нет — берём источником актуальные спек
187. **Послабление, введённое ради одного потребителя, уходит вместе с ним.**
Исключение переживает своего заказчика и выглядит общим правилом; удаляя
потребителя, ищи его исключения — они и есть настоящий хвост.
+
+## 56. `av-dev-pipeline` → `av-dev-code`, `review-pipeline` → `review` (2026-08-09)
+
+**АЕАКО. Имя описывало устройство, а не предмет.** «Пайплайн» говорит, что внутри
+конвейер, — а плагин занят кодом по задачам, и после появления чекпоинтов он уже
+не конвейер в чистом виде: между остановками автоматика, на остановках разговор.
+
+**Набор имён стал параллельным, и это довод сам по себе:** `docs` / `tasks` /
+`code` / `git` — каждое называет **материал**, которым плагин занят. Прежнее имя
+выбивалось: три существительных и одна метафора устройства. По той же причине
+отвергнут `av-dev-solve` — глагол в ряду существительных, плюс заикание в главном
+вызове (`solve:resolve`), — и `av-dev-work`: «работы» в этом репозитории уже
+значат конкретное (цели и задачи роадмапа, секция «Сопровождение»), и имя начало
+бы спорить со словарём.
+
+Заодно `review-pipeline` стал `review`: слово «пайплайн» ушло из плагина целиком,
+а не наполовину, и скиллы выровнялись — `resolve` / `review` / `openspec`.
+
+**Журнал версий канона переписан вместе со всеми, и это не нарушение правила «не
+переписываем задним числом».** Разрез проходит не по типу файла, а по типу
+высказывания. Наблюдение и причина — неприкосновенны: их правка есть
+фальсификация. **Предписание и адрес обязаны оставаться исполнимыми**: запись
+версии 10 велит «проверить, что плагин `av-dev-pipeline` установлен», и проект,
+дошедший до неё, выполнит невыполнимое. `DECISIONS.md` при этом не тронут — в нём
+нет предписаний проекту, только записи о принятых решениях; там прежнее имя
+верно, потому что описывает состояние на дату записи.
+
+### Что из этого следует
+
+188. **Имя плагина называет материал, а не устройство.** Устройство меняется —
+ конвейер обзавёлся остановками, — а материал остаётся. Имя по устройству
+ протухает первым и при этом выглядит осмысленным.
+189. **Журнал не переписывается в наблюдениях и обязан оставаться исполнимым в
+ предписаниях.** Правило «не задним числом» защищает от подделки фактов, а не
+ от починки инструкций: инструкция, ссылающаяся на несуществующее, — не
+ свидетельство эпохи, а поломка с отложенным сроком.
diff --git a/README.md b/README.md
index 03989e9..86a83d6 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,8 @@
вычитывают их два отдельных прохода: `task-form` (форма записи) и
`task-wording` (язык записей);
- `session` — ритуал между спринтами и ведение спринта.
-- **av-dev-pipeline** — исполнение. **Требует OpenSpec и сам его заводит.**
+- **av-dev-code** — код по задачам: решение одной задачи и его проверка.
+ Владеет `openspec/`. **Требует OpenSpec и сам его заводит.**
- `openspec` — завести, настроить и **проверить** `openspec/` в проекте:
`openspec init`, замена примера в `config.yaml` настройкой канонической
формы, скрипт `openspec.py` (форма файла + сверка слепка с живой версией
@@ -39,7 +40,7 @@
**чекпоинта вариантов** — способы решить, цена каждого, рекомендация; выбор
оседает по адресу, который назвала сама задача. Между чекпоинтами — без
согласований;
- - `review-pipeline` — конвейер ревью **по темам**: документ проекта либо
+ - `review` — конвейер ревью **по темам**: документ проекта либо
заводит тему проверки, либо питает чужую тему источником, либо процессный и в
ревью не читается вовсе. Разметка идёт **один раз на задачу**, сразу после
`propose`: агент `review-scope` меряет изменение по двум осям — размер и
@@ -57,9 +58,9 @@
```mermaid
flowchart TB
- subgraph pipe["av-dev-pipeline — исполнение, требует OpenSpec"]
+ subgraph pipe["av-dev-code — исполнение, требует OpenSpec"]
direction LR
- tp["resolve
2 чекпоинта человеку"] --> rp["review-pipeline
10 агентов-проходов"]
+ tp["resolve
2 чекпоинта человеку"] --> rp["review
10 агентов-проходов"]
osp["openspec
заводит и проверяет openspec/"]
end
subgraph docsp["av-dev-docs — документация, владеет docs/"]
@@ -85,10 +86,10 @@ flowchart TB
tp --> tasks
```
-Зависимости **односторонние: `av-dev-pipeline` знает про `av-dev-docs` и
+Зависимости **односторонние: `av-dev-code` знает про `av-dev-docs` и
`av-dev-tasks`, обратно — нет.** Между собой эти двое тоже не связаны жёстко:
каждый работает без другого. Как именно зовут соседа и что делают, когда вызов не
-разрешился, — `shared/plugin-boundary.md`: правило нужно семи скиллам в трёх
+разрешился, — `shared/plugin-boundary.md`: правило нужно шести скиллам в двух
плагинах, и ни один им не владеет. То, что нужно нескольким дословно — граница
плагинов, язык проектных текстов, словарь сопровождения, — живёт домом в
`shared/` и уезжает в каждый плагин помеченной копией.
@@ -116,7 +117,7 @@ flowchart TB
Отдельного файла-брифа при этом нет — проходы читают документы напрямую; карта
«тема → её дом → что оттуда берётся» —
-[project-facts.md](av-dev-pipeline/skills/review-pipeline/references/project-facts.md).
+[project-facts.md](av-dev-code/skills/review/references/project-facts.md).
Прийти в старый проект и перевести его на канон — `/av-dev-docs:canon`. Канон
версионируется, и проекты повышаются по [журналу
@@ -137,7 +138,7 @@ claude plugin marketplace add https://git.vakhrushev.me/av/dev-skills.git --scop
# плагины: scope обязателен, умолчание у команды — user, а нам нужен project
claude plugin install av-dev-docs@av-dev-skills --scope project
claude plugin install av-dev-tasks@av-dev-skills --scope project
-claude plugin install av-dev-pipeline@av-dev-skills --scope project
+claude plugin install av-dev-code@av-dev-skills --scope project
claude plugin install av-dev-git@av-dev-skills --scope project
```
@@ -155,7 +156,7 @@ claude plugin install av-dev-git@av-dev-skills --scope project
"enabledPlugins": {
"av-dev-docs@av-dev-skills": true,
"av-dev-tasks@av-dev-skills": true,
- "av-dev-pipeline@av-dev-skills": true,
+ "av-dev-code@av-dev-skills": true,
"av-dev-git@av-dev-skills": true
}
}
@@ -186,7 +187,7 @@ claude plugin marketplace update av-dev-skills
cd /path/to/project
claude plugin update av-dev-docs@av-dev-skills --scope project
claude plugin update av-dev-tasks@av-dev-skills --scope project
-claude plugin update av-dev-pipeline@av-dev-skills --scope project
+claude plugin update av-dev-code@av-dev-skills --scope project
claude plugin update av-dev-git@av-dev-skills --scope project
```
@@ -306,7 +307,7 @@ uv run python scripts/frontmatter.py # 0 в порядке, 1 расхожд
а не «имя не то»;
- **цвет charter'а, не отвечающий его модели.** Цвет кодирует модель, а не роль
прохода — раскладка живёт в
- [review-pipeline/SKILL.md](av-dev-pipeline/skills/review-pipeline/SKILL.md),
+ [review/SKILL.md](av-dev-code/skills/review/SKILL.md),
разделе «Модель по проходу», здесь только её механизация. Держаться вниманием
правило не может: цвет ставится один раз при заведении charter'а, а модель
потом меняется калибровкой.
diff --git a/TODO.md b/TODO.md
index a57a15c..a2551a4 100644
--- a/TODO.md
+++ b/TODO.md
@@ -16,8 +16,8 @@
## Где мы сейчас
Плагинов четыре, и каждый ставится отдельно: `av-dev-docs` (канон документов и
-их содержимое), `av-dev-tasks` (задачи и цели), `av-dev-pipeline` (SDD и конвейер
-ревью, он же заводит OpenSpec), `av-dev-git`. Общее, что нужно нескольким
+их содержимое), `av-dev-tasks` (задачи и цели), `av-dev-code` (код по задачам:
+цикл SDD, конвейер ревью, OpenSpec), `av-dev-git`. Общее, что нужно нескольким
дословно, живёт домом в `shared/` и уезжает копиями.
Канон документов — **версия 11**. Живые проекты стоят на 2–3 и на плагине
@@ -31,9 +31,11 @@
### healthlog — первым
-- [ ] переустановить плагины: снять `av-dev-pm`, поставить `av-dev-docs` и
- `av-dev-tasks`. `marketplace update`, затем `plugin update` — одного шага
- мало (README, «Обновление»)
+- [ ] переустановить плагины: снять `av-dev-pm` и `av-dev-pipeline`, поставить
+ `av-dev-docs`, `av-dev-tasks`, `av-dev-code`, `av-dev-git`. Оба прежних
+ имени мертвы, и `plugin update` их не переименует — только снять и
+ поставить. `marketplace update`, затем `plugin update` — одного шага мало
+ (README, «Обновление»)
- [ ] удалить проектные копии: `.claude/skills/healthlog-{task,review}-pipeline`
и девять `.claude/agents/healthlog-review-*.md`. Они прошлого поколения и
после переезда указывают на документы, которых уже не будет
@@ -95,10 +97,10 @@
## 4. Пайплайн: что осталось после `resolve`
-Сам скилл написан (`av-dev-pipeline:resolve`, два чекпоинта, ветка разведки),
+Сам скилл написан (`av-dev-code:resolve`, два чекпоинта, ветка разведки),
`task-batch` удалён. Осталось то, что на бумаге не проверяется:
-- [ ] перемерить `review-pipeline` тем же вопросом, что и проект целиком:
+- [ ] перемерить скилл `review` тем же вопросом, что и проект целиком:
сколько из его стадий реально смотрятся глазами. Тысяча строк, и весь
автоматический участок между чекпоинтами держится на них
- [ ] чекпоинт «объяснение» собирается из `proposal.md` и `design.md`, а
diff --git a/av-dev-pipeline/.claude-plugin/plugin.json b/av-dev-code/.claude-plugin/plugin.json
similarity index 98%
rename from av-dev-pipeline/.claude-plugin/plugin.json
rename to av-dev-code/.claude-plugin/plugin.json
index a6f2e41..6d83d3c 100644
--- a/av-dev-pipeline/.claude-plugin/plugin.json
+++ b/av-dev-code/.claude-plugin/plugin.json
@@ -1,5 +1,5 @@
{
- "name": "av-dev-pipeline",
+ "name": "av-dev-code",
"description": "Решение одной задачи от постановки до закрытия скиллом resolve — полный цикл Spec Driven Development с двумя плановыми остановками: чекпоинт вариантов у исследовательской задачи и чекпоинт с объяснением человеческим языком после ревью дизайна у всякой. Между ними работа идёт без согласований. Плюс конвейер ревью с детерминированным гейтом, сверкой со спеками, враждебными постановками, эксплуатационным постмортемом, независимой реализацией и обязательным триажем. Требует OpenSpec и сам его заводит скиллом openspec. Задача принимается и обычным текстом. Плагины av-dev-docs и av-dev-tasks опциональны: первый даёт документы канона, из которых проходы читают проектную конкретику, второй — учёт задач; без них прогон деградирует поразрядно и называет это строкой.",
"author": {
"name": "Anton Vakhrushev",
diff --git a/av-dev-pipeline/agents/review-adversary.md b/av-dev-code/agents/review-adversary.md
similarity index 99%
rename from av-dev-pipeline/agents/review-adversary.md
rename to av-dev-code/agents/review-adversary.md
index d497bf9..b14b881 100644
--- a/av-dev-pipeline/agents/review-adversary.md
+++ b/av-dev-code/agents/review-adversary.md
@@ -13,7 +13,7 @@ color: yellow
равно опасен.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании).
**Ты помечен «держит машину»** — за тем, чтобы построенный путь можно было
@@ -73,7 +73,7 @@ color: yellow
находкой.
Карта «что нужно проходу → где лежит» —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`.
**Деградация поразрядная, и каждый пробел называется своей строкой.**
`docs/security.md` нет — работай по общей рамке ниже, `critical` не присваивай и
diff --git a/av-dev-pipeline/agents/review-architecture.md b/av-dev-code/agents/review-architecture.md
similarity index 99%
rename from av-dev-pipeline/agents/review-architecture.md
rename to av-dev-code/agents/review-architecture.md
index 31c5973..c28cd8f 100644
--- a/av-dev-pipeline/agents/review-architecture.md
+++ b/av-dev-code/agents/review-architecture.md
@@ -25,7 +25,7 @@ color: yellow
и граф зависимостей есть только у тебя.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании).
## Вход (собери до чтения диффа)
@@ -52,7 +52,7 @@ grep по именам концепций) и скажи об этом в гра
- дельта-спеки change.
Карта «что нужно проходу → где лежит» —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`.
Дифф — **последним, не первым**: он должен ложиться на карту, а не задавать её.
diff --git a/av-dev-pipeline/agents/review-autotests.md b/av-dev-code/agents/review-autotests.md
similarity index 98%
rename from av-dev-pipeline/agents/review-autotests.md
rename to av-dev-code/agents/review-autotests.md
index fd77d4a..7e1377c 100644
--- a/av-dev-pipeline/agents/review-autotests.md
+++ b/av-dev-code/agents/review-autotests.md
@@ -19,7 +19,7 @@ color: green
намеренно нет, из темы не выпадает — она уходит в границы покрытия.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании). Русская проза, идентификаторы и
команды — в оригинале.
@@ -31,7 +31,7 @@ color: green
запускать запрещено, с путями.
Карта «что нужно проходу → где лежит» —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`.
**Семантики гейта в `CLAUDE.md` нет** — найди команду сама (`Taskfile.yml`,
`Makefile`, `justfile`, `scripts/`) и выполни её, но: `critical` по основанию
diff --git a/av-dev-pipeline/agents/review-basics.md b/av-dev-code/agents/review-basics.md
similarity index 99%
rename from av-dev-pipeline/agents/review-basics.md
rename to av-dev-code/agents/review-basics.md
index 6e21570..7b69084 100644
--- a/av-dev-pipeline/agents/review-basics.md
+++ b/av-dev-code/agents/review-basics.md
@@ -36,7 +36,7 @@ color: yellow
самый дорогой проход, вместо которого его позвали.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании).
## Что тебе даёт план прогона
diff --git a/av-dev-pipeline/agents/review-code.md b/av-dev-code/agents/review-code.md
similarity index 99%
rename from av-dev-pipeline/agents/review-code.md
rename to av-dev-code/agents/review-code.md
index 1ae8ad9..f039fc5 100644
--- a/av-dev-pipeline/agents/review-code.md
+++ b/av-dev-code/agents/review-code.md
@@ -52,7 +52,7 @@ color: yellow
его неизбежным.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании). Русская проза, идентификаторы и пути —
в оригинале. Читай реальный код, ничего не выдумывай.
diff --git a/av-dev-pipeline/agents/review-ops.md b/av-dev-code/agents/review-ops.md
similarity index 99%
rename from av-dev-pipeline/agents/review-ops.md
rename to av-dev-code/agents/review-ops.md
index df3c642..db040a2 100644
--- a/av-dev-pipeline/agents/review-ops.md
+++ b/av-dev-code/agents/review-ops.md
@@ -11,7 +11,7 @@ color: green
увидит владелец сервиса, и дойди до строки кода.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании).
**Ты помечен «держит машину».** Конвейер за это ставит тебя в цепочку с другими
@@ -46,7 +46,7 @@ color: green
`docs/research/` процессный документ, и прогон его не открывает; чужое число
неизвестной свежести делало находку похожей на доказанную, ничего не доказывая.
Почему именно так и какие ещё есть стыки —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`, раздел
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`, раздел
«Сшивать обязаны проходы». Там же карта «что нужно проходу → где лежит».
Два обстоятельства почти всегда меняют цену отказов, и если документы их
diff --git a/av-dev-pipeline/agents/review-rubric.md b/av-dev-code/agents/review-rubric.md
similarity index 98%
rename from av-dev-pipeline/agents/review-rubric.md
rename to av-dev-code/agents/review-rubric.md
index ef59a51..2c41a07 100644
--- a/av-dev-pipeline/agents/review-rubric.md
+++ b/av-dev-code/agents/review-rubric.md
@@ -11,7 +11,7 @@ color: yellow
**порождаешь сам** — и делаешь это до того, как увидишь код.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании). Русская проза, идентификаторы — в
оригинале.
@@ -26,7 +26,7 @@ color: yellow
сформулированное по прецеденту, сильнее любого общего.
Карта «что нужно проходу → где лежит» —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`.
**Документа нет — строка на каждый, отдельно.** Нет `docs/review.md`: «рода
узлов и прецеденты неизвестны; требование „минимум три пункта специфичны для
diff --git a/av-dev-pipeline/agents/review-scope.md b/av-dev-code/agents/review-scope.md
similarity index 99%
rename from av-dev-pipeline/agents/review-scope.md
rename to av-dev-code/agents/review-scope.md
index 76b1a26..7080cab 100644
--- a/av-dev-pipeline/agents/review-scope.md
+++ b/av-dev-code/agents/review-scope.md
@@ -186,7 +186,7 @@ color: green
**Ты меряешь изменение по двум независимым осям и называешь обе.** Метка — не
ответ на один вопрос, а максимум по двум измерениям.
-Ниже рабочая выжимка. Дом правила — скилл `av-dev-pipeline:review-pipeline`,
+Ниже рабочая выжимка. Дом правила — скилл `av-dev-code:review`,
`references/review-levels.md`: там разобрано, почему оси именно эти, чем `small`
дешевле `medium` и какие доли служат проверкой правила. Открывай его, когда
метка **спорная или оспорена**; на обычной задаче хватает того, что здесь.
diff --git a/av-dev-pipeline/agents/review-specs.md b/av-dev-code/agents/review-specs.md
similarity index 98%
rename from av-dev-pipeline/agents/review-specs.md
rename to av-dev-code/agents/review-specs.md
index a62fb01..80eb64d 100644
--- a/av-dev-pipeline/agents/review-specs.md
+++ b/av-dev-code/agents/review-specs.md
@@ -10,7 +10,7 @@ color: yellow
Development на OpenSpec). Оптика — требования, а не стиль кода.
Находки — по контракту
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании). Русская проза; идентификаторы, пути и
ключевые слова спек (`SHALL`, `GIVEN/WHEN/THEN`) — в оригинале. Читай реальные
файлы перед выводом, ничего не выдумывай.
@@ -49,7 +49,7 @@ Development на OpenSpec). Оптика — требования, а не ст
Пути спек жёсткие: актуальные — `openspec/specs//spec.md`, дельты —
`openspec/changes//specs/`. Карта «что нужно проходу → где лежит» —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`.
**Нет инвариантов в `CLAUDE.md`** — сверяй только спеку с кодом, `critical` по
основанию «нарушен инвариант проекта» не присваивай и дай строку: «инвариантов в
diff --git a/av-dev-pipeline/agents/review-triage.md b/av-dev-code/agents/review-triage.md
similarity index 99%
rename from av-dev-pipeline/agents/review-triage.md
rename to av-dev-code/agents/review-triage.md
index 5753c2f..b59fbc3 100644
--- a/av-dev-pipeline/agents/review-triage.md
+++ b/av-dev-code/agents/review-triage.md
@@ -16,7 +16,7 @@ color: yellow
Потолок в 7 пунктов защищает код, а не читателя.
Контракт находок и формат финального отчёта —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/finding-contract.md`
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/finding-contract.md`
(точный путь конвейер передаёт в задании).
## Вход
@@ -47,7 +47,7 @@ color: yellow
целиком уезжают в границы покрытия и **не сливаются в один список**.
Карта «что нужно проходу → где лежит» —
-`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
+`${CLAUDE_PLUGIN_ROOT}/skills/review/references/project-facts.md`.
**Деградация поразрядная, и ты — тот, кто собирает её строки в один список,
сохраняя каждую.** Свою часть
diff --git a/av-dev-pipeline/skills/openspec/SKILL.md b/av-dev-code/skills/openspec/SKILL.md
similarity index 96%
rename from av-dev-pipeline/skills/openspec/SKILL.md
rename to av-dev-code/skills/openspec/SKILL.md
index 052295b..01ca4af 100644
--- a/av-dev-pipeline/skills/openspec/SKILL.md
+++ b/av-dev-code/skills/openspec/SKILL.md
@@ -44,7 +44,7 @@ openspec init --tools claude
проекта.
Сюда же — **требования к форме `proposal` и `design`**, на которых стоит чекпоинт
-скилла `av-dev-pipeline:resolve`: объяснение человеку собирается из этих двух
+скилла `av-dev-code:resolve`: объяснение человеку собирается из этих двух
артефактов, и требование к ним обязано применяться в момент, когда их пишут, а не
вспоминаться шагом позже. Образец их содержит.
@@ -126,10 +126,9 @@ python3 $os form # слепок формы против жив
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
diff --git a/av-dev-pipeline/skills/openspec/references/config-skeleton.md b/av-dev-code/skills/openspec/references/config-skeleton.md
similarity index 97%
rename from av-dev-pipeline/skills/openspec/references/config-skeleton.md
rename to av-dev-code/skills/openspec/references/config-skeleton.md
index 65ac7e7..1ffb9e4 100644
--- a/av-dev-pipeline/skills/openspec/references/config-skeleton.md
+++ b/av-dev-code/skills/openspec/references/config-skeleton.md
@@ -44,7 +44,7 @@ context: |
первым молча, и заметно это становится в предложении, которое уже написано.
Ревью: правило выбора метки и состав проходов здесь не пересказываем — их дом
- скилл av-dev-pipeline:review-pipeline, проектная настройка — docs/review.md.
+ скилл av-dev-code:review, проектная настройка — docs/review.md.
Конвенции кода: механизированное проверяет гейт, прозой остаётся
docs/conventions/. Ни состав шагов гейта, ни перечень конвенций здесь не
@@ -74,7 +74,7 @@ rules:
узнаёт их падением `openspec validate --strict`.
**Правила для `proposal` и `design` держат чекпоинт скилла
-`av-dev-pipeline:resolve`.** Там работа останавливается и человеку объясняют, в
+`av-dev-code:resolve`.** Там работа останавливается и человеку объясняют, в
чём проблема и как её решают, — а объяснение **собирается из этих двух
артефактов**, а не сочиняется заново: третий пересказ одного и того же разошёлся
бы с обоими. Требование поэтому стоит здесь, в момент порождения артефакта, а не
diff --git a/av-dev-pipeline/skills/openspec/scripts/openspec.py b/av-dev-code/skills/openspec/scripts/openspec.py
similarity index 99%
rename from av-dev-pipeline/skills/openspec/scripts/openspec.py
rename to av-dev-code/skills/openspec/scripts/openspec.py
index 861cade..737af41 100644
--- a/av-dev-pipeline/skills/openspec/scripts/openspec.py
+++ b/av-dev-code/skills/openspec/scripts/openspec.py
@@ -114,7 +114,7 @@ def rules_keys(live: str) -> list[str]:
Идём от строки `rules:` до следующего ключа нулевой колонки, а не ищем
отступ по всему файлу: блок `context: |` — литеральный скаляр, внутри него
- строки вида «Language: Russian» и «av-dev-pipeline:review-pipeline» выглядят
+ строки вида «Language: Russian» и «av-dev-code:review» выглядят
ключами и дали бы находку на ровном месте. Проверено на живом конфиге,
который так и падал.
"""
diff --git a/av-dev-pipeline/skills/resolve/SKILL.md b/av-dev-code/skills/resolve/SKILL.md
similarity index 98%
rename from av-dev-pipeline/skills/resolve/SKILL.md
rename to av-dev-code/skills/resolve/SKILL.md
index 126b3e4..450bee5 100644
--- a/av-dev-pipeline/skills/resolve/SKILL.md
+++ b/av-dev-code/skills/resolve/SKILL.md
@@ -10,7 +10,7 @@ description: "Решить одну задачу от постановки до
Тонкая обёртка над каноническими скиллами `opsx:explore` / `opsx:propose` /
`opsx:apply` / `opsx:archive` — зови их через Skill, не переизобретай их шаги.
-Ревью — скилл `av-dev-pipeline:review-pipeline`; он же держит правило выбора
+Ревью — скилл `av-dev-code:review`; он же держит правило выбора
метки, а называет её агент `review-scope` — один раз на задачу, для обеих стадий
ревью.
@@ -39,10 +39,9 @@ description: "Решить одну задачу от постановки до
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
@@ -60,7 +59,7 @@ description: "Решить одну задачу от постановки до
-Скилл зовёт `av-dev-pipeline:review-pipeline`, `av-dev-docs:docs` и
+Скилл зовёт `av-dev-code:review`, `av-dev-docs:docs` и
`av-dev-tasks:tasks`. Чем оборачивается отсутствие каждого — на самих шагах и в
разделе «Границы».
@@ -371,7 +370,7 @@ flowchart TD
### 4. Ревью дизайна — ДО кода, состав по метке
-Вызови Skill **`av-dev-pipeline:review-pipeline`**, дав ссылку на change ``,
+Вызови Skill **`av-dev-code:review`**, дав ссылку на change ``,
**план разметки с шага 3** и указание, что это ревью дизайна.
Состав приходит планом, а не решается здесь:
@@ -458,7 +457,7 @@ flowchart TD
### 7. Ревью кода — та же метка
-Вызови Skill **`av-dev-pipeline:review-pipeline`**, дав ссылку на change ``,
+Вызови Skill **`av-dev-code:review`**, дав ссылку на change ``,
базу диффа, **план разметки с шага 3** и режим запуска.
**Метку ты не выбираешь, и это правило, а не упрощение.** Её назвал
@@ -466,7 +465,7 @@ flowchart TD
оси. Причина в разведённости: ты только что написал этот код, и решать, насколько
глубоко его проверять, тебе нельзя — под давлением «я почти закончил» решение
известно заранее. Правило выбора живёт в скилле конвейера —
-`av-dev-pipeline:review-pipeline`, `references/review-levels.md`; проектные
+`av-dev-code:review`, `references/review-levels.md`; проектные
триггеры — в `docs/review.*`, подраздел «Триггеры метки».
**Метка не пересматривается по факту диффа.** Дифф может выйти крупнее, чем
@@ -555,7 +554,7 @@ flowchart TD
**Плагина `av-dev-docs` в проекте нет** — путь в его дерево не разрешится ниоткуда,
поэтому за списком иди в **свой** reference:
-[references/project-facts.md](../review-pipeline/references/project-facts.md)
+[references/project-facts.md](../review/references/project-facts.md)
конвейера ревью перечисляет все документы канона с их предметом. Пройди по этому
перечню — каждый документ получает строку, отрицание остаётся обязательным.
Триггеры при этом ты знаешь хуже, и это называется в докладе строкой: «синк
diff --git a/av-dev-pipeline/skills/review-pipeline/SKILL.md b/av-dev-code/skills/review/SKILL.md
similarity index 99%
rename from av-dev-pipeline/skills/review-pipeline/SKILL.md
rename to av-dev-code/skills/review/SKILL.md
index 1b8a571..81e4d6e 100644
--- a/av-dev-pipeline/skills/review-pipeline/SKILL.md
+++ b/av-dev-code/skills/review/SKILL.md
@@ -1,5 +1,5 @@
---
-name: review-pipeline
+name: review
description: "Конвейер ревью изменения, устроенный по темам: документ проекта либо заводит тему ревью, либо питает чужую тему источником, либо процессный и в ревью не читается вовсе. Ядро тем — requirements, autotests, conventions, architecture, security, operations; список тем открытый, свои темы проект заводит документом. Разметка задачи идёт один раз, после propose: агент review-scope выводит размер и сложность, из их максимума — метка, и раздаёт темы проходам обеих стадий. Метка правит и ревью дизайна (small — только specs; medium — плюс rubric; large — плюс architecture), и ревью кода (small — гейт, спеки, код, триаж; medium — плюс приёмник тем; large — плюс доказательство: враждебные постановки, эксплуатационный постмортем, архитектурный проход на широком входе). Триаж обязателен всегда. Порядок прогона — граф зависимостей: гейт открывает опиниативные проходы, проходы с пометкой «держит машину» идут цепочкой, триаж — единственный сток. Проектная специфика приходит из документов канона av-dev-docs. Вызывается из скилла resolve — двумя чекпоинтами: ревью дизайна до кода и ревью кода после apply."
---
@@ -52,13 +52,14 @@ description: "Конвейер ревью изменения, устроенны
требований. **Проект без OpenSpec этим конвейером не проверяется** — подключай
OpenSpec, а не понижай прогон: ветка деградации здесь не пишется, потому что
непроверенная ветка деградации хуже честного отказа. Заводить руками не надо:
- этим владеет скилл `av-dev-pipeline:openspec` — он заводит каталог и заменяет
+ этим владеет скилл `av-dev-code:openspec` — он заводит каталог и заменяет
пример в `config.yaml` настройкой. Его же зовут `av-dev-docs:init` на новом
проекте и `canon adopt` на переводимом.
- **Документы канона** — см. следующий раздел.
- **Проектные копии этих скиллов и агентов удаляются при установке.** Если в
- проекте уже лежат свои `.claude/skills/review-pipeline`,
- `.claude/skills/task-pipeline`, `.claude/skills/resolve` или
+ проекте уже лежат свои `.claude/skills/review`,
+ `.claude/skills/review-pipeline`, `.claude/skills/task-pipeline`,
+ `.claude/skills/resolve` или
`.claude/agents/<проект>-review-*.md` — снеси их. Иначе короткое имя разрешится
в устаревшую проектную копию, молча и без признаков подмены.
@@ -72,10 +73,9 @@ description: "Конвейер ревью изменения, устроенны
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
@@ -93,8 +93,8 @@ description: "Конвейер ревью изменения, устроенны
-Своих скиллов это касается ровно так же: `av-dev-pipeline:review-pipeline`,
-`av-dev-pipeline:resolve`, `av-dev-pipeline:openspec` — подменяется короткое имя,
+Своих скиллов это касается ровно так же: `av-dev-code:review`,
+`av-dev-code:resolve`, `av-dev-code:openspec` — подменяется короткое имя,
а не чужое.
## Темы, источники и процессные документы
@@ -196,7 +196,7 @@ description: "Конвейер ревью изменения, устроенны
прохода между метками;
- **контракт находок** — путь к
[references/finding-contract.md](references/finding-contract.md) (в
- установленном плагине — `${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/`);
+ установленном плагине — `${CLAUDE_PLUGIN_ROOT}/skills/review/references/`);
- **изменение** — идентификатор change и путь к его дельта-спекам;
- **база диффа**;
- **метка, его глубина и режим** прогона — чтобы проход знал, что писать в
@@ -849,7 +849,7 @@ Recall темы `conventions` равен длине конвенций прое
## Ревью дизайна — до кода
Запускается на первом чекпоинте ревью (шаг 4 скилла
-`av-dev-pipeline:resolve`), когда change уже имеет `proposal.md` и
+`av-dev-code:resolve`), когда change уже имеет `proposal.md` и
дельта-спеки, но кода ещё нет. Разметка задачи к этому моменту уже прошла — она
шагом раньше, и метка известна.
diff --git a/av-dev-pipeline/skills/review-pipeline/references/calibration.md b/av-dev-code/skills/review/references/calibration.md
similarity index 100%
rename from av-dev-pipeline/skills/review-pipeline/references/calibration.md
rename to av-dev-code/skills/review/references/calibration.md
diff --git a/av-dev-pipeline/skills/review-pipeline/references/finding-contract.md b/av-dev-code/skills/review/references/finding-contract.md
similarity index 100%
rename from av-dev-pipeline/skills/review-pipeline/references/finding-contract.md
rename to av-dev-code/skills/review/references/finding-contract.md
diff --git a/av-dev-pipeline/skills/review-pipeline/references/project-facts.md b/av-dev-code/skills/review/references/project-facts.md
similarity index 100%
rename from av-dev-pipeline/skills/review-pipeline/references/project-facts.md
rename to av-dev-code/skills/review/references/project-facts.md
diff --git a/av-dev-pipeline/skills/review-pipeline/references/promote.md b/av-dev-code/skills/review/references/promote.md
similarity index 100%
rename from av-dev-pipeline/skills/review-pipeline/references/promote.md
rename to av-dev-code/skills/review/references/promote.md
diff --git a/av-dev-pipeline/skills/review-pipeline/references/review-journal.md b/av-dev-code/skills/review/references/review-journal.md
similarity index 100%
rename from av-dev-pipeline/skills/review-pipeline/references/review-journal.md
rename to av-dev-code/skills/review/references/review-journal.md
diff --git a/av-dev-pipeline/skills/review-pipeline/references/review-levels.md b/av-dev-code/skills/review/references/review-levels.md
similarity index 100%
rename from av-dev-pipeline/skills/review-pipeline/references/review-levels.md
rename to av-dev-code/skills/review/references/review-levels.md
diff --git a/av-dev-docs/skills/canon/SKILL.md b/av-dev-docs/skills/canon/SKILL.md
index a5540b5..9bf33fc 100644
--- a/av-dev-docs/skills/canon/SKILL.md
+++ b/av-dev-docs/skills/canon/SKILL.md
@@ -52,7 +52,7 @@ python3 $ds version --dir <корень> # версия кано
```
**Формы `openspec/config.yaml` здесь больше нет.** Каталог принадлежит конвейеру,
-и форму смотрит его скрипт — `av-dev-pipeline`, скилл `openspec`, команда
+и форму смотрит его скрипт — `av-dev-code`, скилл `openspec`, команда
`openspec.py check`. Проект работает по OpenSpec, а плагина конвейера нет — форму
не проверяет никто, и это надо сказать строкой доклада, а не считать, что она
верна.
@@ -89,7 +89,7 @@ capability: незаполненный канон это переходное с
## Обращение к соседним плагинам
-`adopt` зовёт двоих: `av-dev-pipeline:openspec` (шаг 4, пункт 3) и
+`adopt` зовёт двоих: `av-dev-code:openspec` (шаг 4, пункт 3) и
`av-dev-tasks:tasks` (шаг 4, пункт 5). Каталоги `openspec/` и `tasks/` каноном не
ведутся, и трогать их этому скиллу нечем, кроме вызова.
@@ -101,10 +101,9 @@ capability: незаполненный канон это переходное с
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
@@ -183,7 +182,7 @@ capability), `openspec/config.yaml`.
2. каталоги канона и скелет **по [references/skeletons.md](references/skeletons.md)**:
незаполненное — одной честной информативной строкой, а не «TBD»;
3. **OpenSpec, если его нет или `config.yaml` остался примером** — **вызови
- Skill `av-dev-pipeline:openspec`**. Каталог принадлежит конвейеру, и команда
+ Skill `av-dev-code:openspec`**. Каталог принадлежит конвейеру, и команда
заведения с формой файла живут там. Пересказ инвариантов, конвенций и правил
ревью из `context` вычисти ссылкой на дом — на переводимом проекте он там
почти наверняка есть. Вызов не разрешился — `docs.py` о каталоге тогда тоже
diff --git a/av-dev-docs/skills/canon/references/canon.md b/av-dev-docs/skills/canon/references/canon.md
index 3e124ed..bb706c1 100644
--- a/av-dev-docs/skills/canon/references/canon.md
+++ b/av-dev-docs/skills/canon/references/canon.md
@@ -184,7 +184,7 @@ kebab-case.** Причина не эстетическая: имя файла с
какую тему питает. **Кто именно закрывает тему, здесь не указано намеренно**: это
зависит от метки прогона и меняется вместе с конвейером, а документ живёт
дольше. Раскладку «тема → проход → глубина» держит скилл
-`av-dev-pipeline:review-pipeline`.
+`av-dev-code:review`.
**Общего словаря у канона с конвейером ровно три вида имён: имена категорий,
имена тем и имена меток.** Категорий три — `тема`, `источник`, `процессный`;
@@ -430,7 +430,7 @@ kebab-case.** Причина не эстетическая: имя файла с
**Файл канону не принадлежит, и проверяет его тоже не канон.** Каталог
`openspec/` — предпосылка конвейера: без него не работают ни `opsx:propose`, ни
ревью дизайна, ни сверка требований. Заводит его, настраивает и **проверяет
-форму** плагин `av-dev-pipeline`, скилл `openspec`: там образец файла, там же
+форму** плагин `av-dev-code`, скилл `openspec`: там образец файла, там же
скрипт `openspec.py check`. `docs.py` о файле не говорит ничего.
Канон называет его здесь по одной причине: `openspec/specs/` — **дом темы
diff --git a/av-dev-docs/skills/canon/references/changelog.md b/av-dev-docs/skills/canon/references/changelog.md
index ac7c8d9..e38dc68 100644
--- a/av-dev-docs/skills/canon/references/changelog.md
+++ b/av-dev-docs/skills/canon/references/changelog.md
@@ -51,7 +51,7 @@ upgrade` идёт по записям снизу вверх от версии п
остались в `docs.py`, то есть у файла было два плагина — один заводит, другой
проверяет. Остаток закрыт.
-**Что появилось.** Скрипт `openspec.py` в скилле `av-dev-pipeline:openspec`, две
+**Что появилось.** Скрипт `openspec.py` в скилле `av-dev-code:openspec`, две
команды: `check --dir <корень>` — форма в проекте, `form` — сверка слепка с живым
OpenSpec. Коды выхода те же, что у `docs.py` и `tasks.py`.
@@ -80,7 +80,7 @@ OpenSpec. Коды выхода те же, что у `docs.py` и `tasks.py`.
Форму раньше проверял `docs.py check` заодно; теперь он о ней молчит, и без
отдельного шага незаменённый пример в `config.yaml` перестанет ловиться. Это
главная потеря этого повышения, и она тихая.
-3. Проект по OpenSpec без установленного `av-dev-pipeline` — форму не проверяет
+3. Проект по OpenSpec без установленного `av-dev-code` — форму не проверяет
никто. Либо поставить плагин, либо назвать это принятым риском вслух.
4. `docs/.pm.json`: `"canon": 10`.
@@ -94,7 +94,7 @@ OpenSpec работает конвейер — без каталога не за
высказывался. Проект, которому конвейер не нужен, получал отказ за отсутствие
того, чем не пользуется.
-**Что появилось.** Скилл `av-dev-pipeline:openspec`: заводит каталог, заменяет
+**Что появилось.** Скилл `av-dev-code:openspec`: заводит каталог, заменяет
закомментированный пример в `config.yaml` настройкой, объясняет разрез между
ссылкой и пересказом. Образец файла переехал туда же — в
`references/config-skeleton.md` того скилла.
@@ -115,7 +115,7 @@ OpenSpec работает конвейер — без каталога не за
1. Ничего не переносить: файлы проекта эта версия не двигает. Меняется только то,
кто их заводит.
-2. Проверить, что плагин `av-dev-pipeline` установлен, если проект работает по
+2. Проверить, что плагин `av-dev-code` установлен, если проект работает по
OpenSpec. Без него `docs.py check` про каталог промолчит — и молчание это
законное, так что отсутствие настройки перестанет ловиться само.
3. Проект **не** работает по OpenSpec: убедиться, что `openspec/` нет, и
@@ -653,5 +653,5 @@ ADR объясняет прошлое решение, а не предъявля
| Что копируется | Дом определения |
| --- | --- |
-| форма записи журнала дефектов в `docs/review.md` | `av-dev-pipeline/skills/review-pipeline/references/review-journal.md` |
+| форма записи журнала дефектов в `docs/review.md` | `av-dev-code/skills/review/references/review-journal.md` |
| правило заведения ADR в `docs/adr/README.md` | [canon.md](canon.md), раздел `adr/` |
diff --git a/av-dev-docs/skills/canon/references/skeletons.md b/av-dev-docs/skills/canon/references/skeletons.md
index 0d613a7..ef49ce6 100644
--- a/av-dev-docs/skills/canon/references/skeletons.md
+++ b/av-dev-docs/skills/canon/references/skeletons.md
@@ -340,7 +340,7 @@
Форма:
-
+
## ГГГГ-ММ-ДД — <краткое последствие> [проскочил|пойман]
- **Где:** путь:строка либо «конвейер, а не код»
@@ -420,7 +420,7 @@ severity стоит здесь, а не выводится каждым прох
## `openspec/config.yaml`
**Образец переехал.** Файл заводит и заполняет плагин конвейера — скилл
-`av-dev-pipeline:openspec`, — потому что по OpenSpec работает он, а не канон
+`av-dev-code:openspec`, — потому что по OpenSpec работает он, а не канон
документов. Проект без конвейера каталога `openspec/` не имеет вовсе, и образец
файла, которого у него нет, в скелетах канона лежал бы мёртвым грузом.
diff --git a/av-dev-docs/skills/canon/scripts/docs.py b/av-dev-docs/skills/canon/scripts/docs.py
index 9c24d6f..a202ee2 100644
--- a/av-dev-docs/skills/canon/scripts/docs.py
+++ b/av-dev-docs/skills/canon/scripts/docs.py
@@ -569,7 +569,7 @@ def report(rep: Report) -> int:
"\nМашина проверила раскладку, имена файлов, ссылки, версию и две\n"
"сверки с кодом. Форму openspec/config.yaml она не проверяет: каталог\n"
"принадлежит конвейеру, и форму смотрит его скрипт\n"
- "(`av-dev-pipeline:openspec`, команда `openspec.py check`). Согласованность\n"
+ "(`av-dev-code:openspec`, команда `openspec.py check`). Согласованность\n"
"документов между собой и с кодом — тоже не её: это суждение агентов\n"
"`doc-consistency` (документ ↔ документ ↔ openspec) и `doc-code-drift`\n"
"(документ ↔ код)."
diff --git a/av-dev-docs/skills/docs/SKILL.md b/av-dev-docs/skills/docs/SKILL.md
index bb3db16..7384cbe 100644
--- a/av-dev-docs/skills/docs/SKILL.md
+++ b/av-dev-docs/skills/docs/SKILL.md
@@ -130,10 +130,9 @@ description: Вести содержимое документов канона
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
@@ -160,7 +159,7 @@ description: Вести содержимое документов канона
конвейера. **Что в каком и в какой форме — в
[каноне](../canon/references/canon.md), раздел `review.md`**; подробности формы
записи и выбор адреса, куда она ведёт, — у конвейера ревью проекта (при
-`av-dev-pipeline` — `Skill av-dev-pipeline:review-pipeline`, его
+`av-dev-code` — `Skill av-dev-code:review`, его
`references/review-journal.md`). **Конвейера в проекте нет** — пиши по форме из
скелета `review.md`, которую положил канон, и скажи в докладе, что подробностей
формы взять негде.
@@ -173,8 +172,8 @@ description: Вести содержимое документов канона
## Промоут в конвенции
Находка → конвенция → правило линтера → **удаление из прозы**. Процедура целиком
-принадлежит конвейеру ревью проекта (при `av-dev-pipeline` — его
-`references/promote.md`, читается через `Skill av-dev-pipeline:review-pipeline`);
+принадлежит конвейеру ревью проекта (при `av-dev-code` — его
+`references/promote.md`, читается через `Skill av-dev-code:review`);
роль каталога конвенций — в [каноне](../canon/references/canon.md). **Конвейера
нет** — три шага всё равно твои, просто без его процедуры: сформулируй правило,
поищи, чем оно механизируется, и вычеркни прозу, если механизировалось.
diff --git a/av-dev-docs/skills/init/SKILL.md b/av-dev-docs/skills/init/SKILL.md
index c68a7c2..eaa0561 100644
--- a/av-dev-docs/skills/init/SKILL.md
+++ b/av-dev-docs/skills/init/SKILL.md
@@ -1,6 +1,6 @@
---
name: init
-description: "Завести новый проект — сессия вопросов и ответов по свободному описанию замысла, из которой рождается первичная документация по канону av-dev: паспорт, CLAUDE.md с инвариантами и командами, модель угроз с периметром, первые цели в роадмапе и скелет остальных документов. OpenSpec заводит не сам, а вызовом скилла av-dev-pipeline:openspec — каталог принадлежит конвейеру; плагина конвейера нет — шаг пропускается строкой доклада. Использовать, когда начинают новый проект с нуля, когда есть только текст «что мне нужно и почему» и надо превратить его в рабочую документацию, когда просят провести стартовое интервью по брифу. Проект, где документация уже как-то ведётся, переводит скилл canon."
+description: "Завести новый проект — сессия вопросов и ответов по свободному описанию замысла, из которой рождается первичная документация по канону av-dev: паспорт, CLAUDE.md с инвариантами и командами, модель угроз с периметром, первые цели в роадмапе и скелет остальных документов. OpenSpec заводит не сам, а вызовом скилла av-dev-code:openspec — каталог принадлежит конвейеру; плагина конвейера нет — шаг пропускается строкой доклада. Использовать, когда начинают новый проект с нуля, когда есть только текст «что мне нужно и почему» и надо превратить его в рабочую документацию, когда просят провести стартовое интервью по брифу. Проект, где документация уже как-то ведётся, переводит скилл canon."
---
# Заведение нового проекта
@@ -77,10 +77,9 @@ description: "Завести новый проект — сессия вопро
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо
@@ -105,7 +104,7 @@ description: "Завести новый проект — сессия вопро
1. Прочитай бриф целиком. Выпиши, на какие блоки интервью ответ уже есть.
2. Проведи интервью итерациями по ≤3 вопроса.
-3. **OpenSpec — вызови Skill `av-dev-pipeline:openspec`.** Он заводит каталог и
+3. **OpenSpec — вызови Skill `av-dev-code:openspec`.** Он заводит каталог и
заменяет пример в `config.yaml` настройкой. Делается это **до первого
документа**: без `openspec/` не работают ни `opsx:propose`, ни ревью дизайна,
ни сверка требований. Каталог принадлежит конвейеру, а не канону, поэтому
diff --git a/av-dev-tasks/skills/session/SKILL.md b/av-dev-tasks/skills/session/SKILL.md
index 052db0d..93a685f 100644
--- a/av-dev-tasks/skills/session/SKILL.md
+++ b/av-dev-tasks/skills/session/SKILL.md
@@ -228,7 +228,7 @@ python3 $tk reopen <слаг> --dir D --reason … # приёмка не со
- **независимый отчёт ревью** — артефакт, написанный не исполнителем; по нему
сверяют состав прогона и урожай. Где он лежит, знает пайплайн проекта; при
- конвейере `av-dev-pipeline` это отчёт триажа в
+ конвейере `av-dev-code` это отчёт триажа в
`openspec/changes/archive//review/` (до архивации — `changes//review/`);
- **`SPRINT.md` под git** — `git log -p` показывает, что и когда было закрыто.
Работает, только если закрытие **закоммичено**: удаление файла задачи и правка
diff --git a/av-dev-tasks/skills/session/references/sprint.md b/av-dev-tasks/skills/session/references/sprint.md
index e607515..2bb53a2 100644
--- a/av-dev-tasks/skills/session/references/sprint.md
+++ b/av-dev-tasks/skills/session/references/sprint.md
@@ -157,7 +157,7 @@ flowchart TD
2. **Принимает человек на сессии, а не отдельный агент.** Исполнитель и приёмщик
в момент закрытия **не разведены** (решение о снятии и его
цена — в `SKILL.md`, «Стимулы»). Опоры остались три: **сохранённый независимый
- отчёт ревью** (при конвейере `av-dev-pipeline` — отчёт триажа в
+ отчёт ревью** (при конвейере `av-dev-code` — отчёт триажа в
`openspec/changes/archive//review/`, до архивации — `changes//review/`),
`SPRINT.md` под git и `reopen`. Переоценка на сессии и есть момент, когда
критерии видит не исполнитель. **Конвейера ревью в проекте нет — первой опоры
diff --git a/pyproject.toml b/pyproject.toml
index a4d3781..a3f7232 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -58,7 +58,7 @@ quote-style = "double"
project-includes = [
"av-dev-tasks/skills/tasks/scripts/tasks.py",
"av-dev-docs/skills/canon/scripts/docs.py",
- "av-dev-pipeline/skills/openspec/scripts/openspec.py",
+ "av-dev-code/skills/openspec/scripts/openspec.py",
"scripts/addresses.py",
"scripts/copies.py",
"scripts/diagrams.py",
diff --git a/scripts/addresses.py b/scripts/addresses.py
index fceba91..cf26294 100644
--- a/scripts/addresses.py
+++ b/scripts/addresses.py
@@ -10,7 +10,7 @@
куда большей вероятностью, чем новая тема.
Адрес документа принадлежит одному плагину, а называют его все: `docs/*` стоит
-примерно в сорока местах `av-dev-pipeline`, `tasks/ROADMAP.md` — в четырёх местах
+примерно в сорока местах `av-dev-code`, `tasks/ROADMAP.md` — в четырёх местах
`av-dev-docs`. Переименование в каноне до этих мест не доходит.
**Почему тут нужна машина, а не аккуратность.** Прогон ревью умеет честно
diff --git a/scripts/frontmatter.py b/scripts/frontmatter.py
index 7771043..6d5b567 100644
--- a/scripts/frontmatter.py
+++ b/scripts/frontmatter.py
@@ -21,7 +21,7 @@
**Цвет, не отвечающий модели.** Цвет charter'а кодирует **модель**, на которой
идёт проход, а не его роль: раскладка — в
-`av-dev-pipeline/skills/review-pipeline/SKILL.md`, раздел «Модель по проходу».
+`av-dev-code/skills/review/SKILL.md`, раздел «Модель по проходу».
Правило существует ровно затем, чтобы стоимость прогона читалась взглядом по
списку агентов, и держаться вниманием оно не может: цвет ставится один раз при
заведении charter'а, а модель потом меняется калибровкой.
diff --git a/shared/operations.md b/shared/operations.md
index 557b343..fc52054 100644
--- a/shared/operations.md
+++ b/shared/operations.md
@@ -3,7 +3,7 @@
**Это дом.** Словарь «чем держат проект» назван в трёх местах трёх разных
плагинов: секция `Сопровождение` в роадмапе (`av-dev-tasks`), раздел
«Эксплуатация» в `architecture.md` (`av-dev-docs`) и тема ревью `operations`
-(`av-dev-pipeline`). Ни один из трёх им не владеет, поэтому дом стоит снаружи, а
+(`av-dev-code`). Ни один из трёх им не владеет, поэтому дом стоит снаружи, а
плагины везут копии.
Три перечня «чем держат проект» уже разъезжались — на «метриках и логах» против
diff --git a/shared/plugin-boundary.md b/shared/plugin-boundary.md
index 5f4fd30..19fbf00 100644
--- a/shared/plugin-boundary.md
+++ b/shared/plugin-boundary.md
@@ -1,7 +1,7 @@
# Граница между плагинами
**Это дом.** Правило обращения к соседнему плагину нужно всем, кто зовёт чужой
-скилл, — а таких скиллов семь в трёх плагинах, и ни один из трёх правилом не
+скилл, — а таких скиллов шесть в двух плагинах, и ни один из двух правилом не
владеет. Поэтому дом стоит снаружи, а плагины везут **копии**, помеченные
разметкой `copies.py`.
@@ -18,6 +18,9 @@
| `openspec` | путём в чужое дерево — никогда | есть |
| `canon` | — | есть |
+Имена с тех пор изменились — `task-pipeline` стал `resolve`, `review-pipeline` —
+`review`, `task-batch` удалён, — но замер относится к местам, а не к названиям.
+
Два разных довода, и ни в одном месте не было обоих. Три места из пяти молчали о
том, что делать, когда вызов не разрешился, — то есть о единственном, ради чего
правило и написано.
@@ -33,10 +36,9 @@
Плагины `av-dev` ставятся порознь, и ни один не вправе считать, что сосед на
месте.
-**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`,
-`av-dev-tasks:tasks`, `av-dev-pipeline:review-pipeline`. Короткое имя может
-разрешиться в устаревшую проектную копию из `.claude/skills/`, и подмены не будет
-видно ни в докладе, ни в поведении.
+**Чужой скилл зовётся полным именем** — `av-dev-docs:canon`, `av-dev-tasks:tasks`,
+`av-dev-code:review`. Короткое имя может разрешиться в устаревшую проектную копию
+из `.claude/skills/`, и подмены не будет видно ни в докладе, ни в поведении.
**Путь в дерево чужого плагина не пишется никогда.** `$CLAUDE_PLUGIN_ROOT` ведёт
только в свой плагин; вычисленный от него путь к соседу либо не откроется, либо