From 7d559e60ecc3d2006d6bf27550c4b3a6a516d9c3 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Thu, 13 Aug 2026 10:35:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=8B=D1=87=D0=B8=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8=D1=8F:=20=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=81=D0=BA=D0=B8=D0=BB=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B2=20=D0=BF=D1=80=D0=BE=D0=B7=D0=B5,=20=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Короткие имена скиллов (tasks, canon, docs, groom, healthcheck) в прозе и в уставах агентов заменены новыми: по прежнему имени скилл не находится. Фразы вида «плагин задач», «плагина конвейера нет» переписаны на то, чем они были на деле, — на часть раскладки проекта либо на скилл-владелец. --- av-dev/agents/review-scope.md | 4 ++-- av-dev/agents/task-form.md | 2 +- av-dev/agents/task-wording.md | 2 +- .../skills/code-review/references/review-levels.md | 2 +- av-dev/skills/doc-canon/SKILL.md | 13 ++++++------- av-dev/skills/doc-canon/references/canon.md | 4 ++-- av-dev/skills/doc-canon/references/skeletons.md | 2 +- av-dev/skills/doc-healthcheck/SKILL.md | 2 +- av-dev/skills/doc-init/SKILL.md | 8 ++++---- av-dev/skills/doc-sync/SKILL.md | 8 ++++---- av-dev/skills/task-groom/SKILL.md | 10 +++++----- av-dev/skills/task-groom/references/portions.md | 4 ++-- av-dev/skills/task-track/SKILL.md | 4 ++-- av-dev/skills/task-track/references/adopt.md | 2 +- av-dev/skills/task-track/references/task-goal.md | 2 +- 15 files changed, 34 insertions(+), 35 deletions(-) diff --git a/av-dev/agents/review-scope.md b/av-dev/agents/review-scope.md index 58ca574..708b47e 100644 --- a/av-dev/agents/review-scope.md +++ b/av-dev/agents/review-scope.md @@ -75,12 +75,12 @@ color: green | **дельта-спеки** | сколько capability затронуто и сколько требований в каждой | `ADDED` целой capability — поведения такого рода не было; только `MODIFIED` в одной — было | **Записи задачи может не быть вовсе, и это не довод за незнакомое.** Задача -приходит текстом или из проекта без плагина задач — тогда раздела «Затрагивает» +приходит текстом или из проекта без каталога задач — тогда раздела «Затрагивает» нет **по построению**, а не потому, что границы не назвали. Отличай: запись есть, а раздела в ней нет → незнакомое, как сказано в таблице; записи нет → строка источника снимается, обе оси выводятся из остальных четырёх, и это называется в плане строкой «записи задачи нет, оси выведены по четырём -источникам». Иначе всякая задача без плагина задач систематически едет в `large` +источникам». Иначе всякая задача без каталога задач систематически едет в `large` за то, чего никто не терял. **`design.md` информативен и своим отсутствием.** Его нет — либо задача diff --git a/av-dev/agents/task-form.md b/av-dev/agents/task-form.md index f707ec7..f9fccfb 100644 --- a/av-dev/agents/task-form.md +++ b/av-dev/agents/task-form.md @@ -12,7 +12,7 @@ color: green Оптика — смысл записи в её собственных рамках. Ты **не** судишь, нужна ли задача, верно ли выбрана цель и не крупна ли она: это разбор, и его ведёт -человек со скиллом `tasks`. +человек со скиллом `task-track`. Границу с языком держи твёрдо. **Залог, оценки, стоп-слова, англицизмы, жаргон** — у агента `task-wording`, и тебе они не поручены даже там, где бросаются в diff --git a/av-dev/agents/task-wording.md b/av-dev/agents/task-wording.md index e8f253b..2b8207b 100644 --- a/av-dev/agents/task-wording.md +++ b/av-dev/agents/task-wording.md @@ -201,7 +201,7 @@ color: green тоже не твоя находка: твоя — язык того, что уже написано. **Содержание работы**: нужна ли задача, верно ли выбрана цель, не крупна ли она, -достаточна ли декомпозиция. Это разбор, и его ведёт человек со скиллом `tasks`. +достаточна ли декомпозиция. Это разбор, и его ведёт человек со скиллом `task-track`. **Полезное действие, параллельность и работающий заголовок** — тоже не твои. Они в доктрине языка, судит их человек: находка по ним требует увидеть текст diff --git a/av-dev/skills/code-review/references/review-levels.md b/av-dev/skills/code-review/references/review-levels.md index 229dab3..d139f4c 100644 --- a/av-dev/skills/code-review/references/review-levels.md +++ b/av-dev/skills/code-review/references/review-levels.md @@ -96,7 +96,7 @@ Резать стоит там, где разрез **снимает доказательство с большей части диффа**. Шов и правило нарезки живут у того, кто ведёт задачи, — скилл `av-dev:task-track`, его раздел о нарезке. Пути туда конвейер не выносит: за -пределы своего плагина он ходит вызовом скилла, а не файлом. +пределы своего скилла он ходит вызовом, а не файлом. Разметка в костяк не входит — она платится один раз на задачу, а не один раз на прогон, и потому **разрез задачи её не удваивает**. Это единственное, что стало diff --git a/av-dev/skills/doc-canon/SKILL.md b/av-dev/skills/doc-canon/SKILL.md index 788f6d2..8409345 100644 --- a/av-dev/skills/doc-canon/SKILL.md +++ b/av-dev/skills/doc-canon/SKILL.md @@ -24,8 +24,7 @@ description: Привести проект к канону документов информационный стиль, применённый к проектным текстам, таблицы англицизмов и жаргона. Раскладка отвечает, где текст лежит, — этот файл отвечает, каким он должен быть. Правила общие для документов канона, задач, решений ADR и - записок разведки, и дом у них общий — `shared/language.md` в репозитории - плагинов, а этот файл его копия. Вычитывают их два прохода по охвату: + записок разведки, и это их **дом**. Вычитывают их два прохода по охвату: документы — `doc-wording`, записи каталога задач — `task-wording`. - [references/changelog.md](references/changelog.md) — журнал версий раскладки; закрытые журналы до слияния плагинов лежат рядом. @@ -54,7 +53,7 @@ python3 $ds version --dir <корень> # версия кано **Формы `openspec/config.yaml` здесь больше нет.** Каталог принадлежит конвейеру, и форму смотрит его скрипт — скилл `av-dev:code-openspec`, команда -`openspec.py check`. Проект работает по OpenSpec, а плагина конвейера нет — форму +`openspec.py check`. Проект работает по OpenSpec, а каталога `openspec/` нет — форму не проверяет никто, и это надо сказать строкой доклада, а не считать, что она верна. @@ -139,7 +138,7 @@ capability: незаполненный канон это переходное с 2. **Судей документов на каждом `check` не зови.** Ими владеет отдельный скилл — `av-dev:doc-healthcheck`, — и там же записано, когда его звать: он дорог, и прогон по каждому `check` не окупается. `check` отвечает на «сходится ли - форма», `healthcheck` — на «не разошлись ли утверждения». + форма», `doc-healthcheck` — на «не разошлись ли утверждения». 3. Доклад: вывод скрипта строкой исхода и **граница покрытия** — что смотрели и чего не смотрели. Если суждение здесь нужно, скажи это строкой и предложи `healthcheck`, а не зови агентов сам. @@ -225,7 +224,7 @@ capability), `openspec/config.yaml`. отказ. Пересчитай эти пункты в докладе переходного состояния — не выдавай их за поломку и не молчи о них. - **Задачи `docs.py` не проверяет** — их ведёт другой плагин, и согласованность + **Задачи `docs.py` не проверяет** — их ведёт другой скилл, и согласованность каталога показывает только `tasks.py check`. Позвал на шаге 5 скилл задач — его отчёт идёт в доклад отдельной строкой, и пункт «задачи без цели» в нём зелёным не станет: цели не сочиняются адаптацией (запрет записан у того, кто @@ -311,8 +310,8 @@ capability), `openspec/config.yaml`. хуже отсутствующего: по нему будут строиться находки. - **Не удаляет то, чьё содержимое не нашло дом.** Оригинал живёт, пока не названо поимённо, куда переехал каждый его кусок. -- **Не ведёт содержимое канона** — это скилл `docs`. Здесь только раскладка. -- **Не заводит проект с нуля** — это скилл `init`. +- **Не ведёт содержимое канона** — это скилл `doc-sync`. Здесь только раскладка. +- **Не заводит проект с нуля** — это скилл `doc-init`. - **Не правит историю.** В старых коммитах старые пути остаются, и это нормально. ## Доклад diff --git a/av-dev/skills/doc-canon/references/canon.md b/av-dev/skills/doc-canon/references/canon.md index f49ee2d..2d46c74 100644 --- a/av-dev/skills/doc-canon/references/canon.md +++ b/av-dev/skills/doc-canon/references/canon.md @@ -6,7 +6,7 @@ [журнала](changelog.md). Литерал в шапке был третьим и отстал на первом же повышении — версию 13 он пережил, объявляя канон двенадцатым. -Это **единственный дом определения канона**. Скиллы `init`, `canon` и `docs` +Это **единственный дом определения канона**. Скиллы `doc-init`, `doc-canon` и `doc-sync` читают его, а не пересказывают: три описания одной раскладки разъедутся, и работать будет то, которое прочитали последним. Меняется канон — меняется этот файл и появляется запись в [changelog.md](changelog.md). @@ -19,7 +19,7 @@ Рядом лежит OpenSpec, у которого структура тоже строгая. Цена принята сознательно: плагин не переносится на чужой репозиторий как есть — -чужой репозиторий **приводится** к канону скиллом `canon`. +чужой репозиторий **приводится** к канону скиллом `doc-canon`. Раскладка отвечает, **где** текст лежит и на какой вопрос отвечает. Каким он должен быть **словами** — общий для всех документов канона файл diff --git a/av-dev/skills/doc-canon/references/skeletons.md b/av-dev/skills/doc-canon/references/skeletons.md index 1d540f3..9fe56b7 100644 --- a/av-dev/skills/doc-canon/references/skeletons.md +++ b/av-dev/skills/doc-canon/references/skeletons.md @@ -428,7 +428,7 @@ severity стоит здесь, а не выводится каждым прох ## `openspec/config.yaml` -**Образец переехал.** Файл заводит и заполняет плагин конвейера — скилл +**Образец переехал.** Файл заводит и заполняет конвейер — скилл `av-dev:code-openspec`, — потому что по OpenSpec работает он, а не канон документов. Проект без конвейера каталога `openspec/` не имеет вовсе, и образец файла, которого у него нет, в скелетах канона лежал бы мёртвым грузом. diff --git a/av-dev/skills/doc-healthcheck/SKILL.md b/av-dev/skills/doc-healthcheck/SKILL.md index eeb38a9..c2622c9 100644 --- a/av-dev/skills/doc-healthcheck/SKILL.md +++ b/av-dev/skills/doc-healthcheck/SKILL.md @@ -23,7 +23,7 @@ check` и его скрипт; здесь начинается там, где к `architecture.md` и уже живущий в `CLAUDE.md`; - **вернулись к проекту после перерыва** — прежде чем опираться на написанное; - **перед тем как опереться на документ в решении**, если оно дорогое; -- шагом `adopt` и шагом `upgrade` — их зовёт скилл `canon` сам. +- шагом `adopt` и шагом `upgrade` — их зовёт скилл `doc-canon` сам. **Не на каждой задаче и не на каждом синке документации.** Цена реальная: `doc-consistency` идёт на `opus`, потому что сличение утверждений — суждение; diff --git a/av-dev/skills/doc-init/SKILL.md b/av-dev/skills/doc-init/SKILL.md index e80369d..8cbfa41 100644 --- a/av-dev/skills/doc-init/SKILL.md +++ b/av-dev/skills/doc-init/SKILL.md @@ -1,6 +1,6 @@ --- name: doc-init -description: "Завести новый проект — сессия вопросов и ответов по свободному описанию замысла, из которой рождается первичная документация по канону av-dev: паспорт, CLAUDE.md с инвариантами и командами, модель угроз с периметром и скелет остальных документов; первые цели собирает интервью, а записывает их вызовом скилла av-dev:task-track — роадмап принадлежит плагину задач. OpenSpec заводит не сам, а вызовом скилла av-dev:code-openspec — каталог принадлежит конвейеру; плагина конвейера нет — шаг пропускается строкой доклада. Использовать, когда начинают новый проект с нуля, когда есть только текст «что мне нужно и почему» и надо превратить его в рабочую документацию, когда просят провести стартовое интервью по брифу. Проект, где документация уже как-то ведётся, переводит скилл canon." +description: "Завести новый проект — сессия вопросов и ответов по свободному описанию замысла, из которой рождается первичная документация по канону av-dev: паспорт, CLAUDE.md с инвариантами и командами, модель угроз с периметром и скелет остальных документов; первые цели собирает интервью, а записывает их вызовом скилла av-dev:task-track — роадмап принадлежит учёту работ. OpenSpec заводит не сам, а вызовом скилла av-dev:code-openspec — каталог принадлежит конвейеру. Использовать, когда начинают новый проект с нуля, когда есть только текст «что мне нужно и почему» и надо превратить его в рабочую документацию, когда просят провести стартовое интервью по брифу. Проект, где документация уже как-то ведётся, переводит скилл doc-canon." --- # Заведение нового проекта @@ -72,7 +72,7 @@ description: "Завести новый проект — сессия вопро ## Чего может не быть Два шага порядка работы — вызовы чужого: OpenSpec заводит конвейер, каталог задач -ведёт плагин задач. Ни того, ни другого `init` не делает руками. +ведёт скилл задач. Ни того, ни другого `init` не делает руками. **Копия.** Дом правила — `shared/absence.md` в репозитории плагина. Правится дом, а не этот файл. @@ -135,7 +135,7 @@ description: "Завести новый проект — сессия вопро 7. Каталог задач и первые цели — **вызови скилл `av-dev:task-track`**: он владеет форматом целей и задач. Не разрешился — учёт задач остаётся владельцу, и это тоже строка доклада. -8. `docs.py check` из скилла `canon` — до отсутствия дрейфа. Замечания о +8. `docs.py check` из скилла `doc-canon` — до отсутствия дрейфа. Замечания о незаполненных плейсхолдерах остаются: их закрывает не `init`, а работа. 9. **Вычитай написанное — агент `doc-wording`**, по пачке заполненных документов (`passport.md`, `CLAUDE.md`, `security.md`). Здесь он нужен сильнее, чем где @@ -148,7 +148,7 @@ description: "Завести новый проект — сессия вопро ## Что дальше -- Содержимое канона по ходу разработки ведёт скилл `docs`. +- Содержимое канона по ходу разработки ведёт скилл `doc-sync`. - Раскладку проверяет `canon check`. - Первую задачу берёт конвейер проекта; `architecture.md` и `conventions/` наполняются его шагом синка, а не заранее. diff --git a/av-dev/skills/doc-sync/SKILL.md b/av-dev/skills/doc-sync/SKILL.md index 1f014b0..a264b7e 100644 --- a/av-dev/skills/doc-sync/SKILL.md +++ b/av-dev/skills/doc-sync/SKILL.md @@ -9,9 +9,9 @@ description: Вести содержимое документов канона Определение канона и роли документов — [канон](../doc-canon/references/canon.md), здесь не пересказывается. -Главный вызывающий — **шаг синка документации в конвейере задачи**. Конвейер -живёт в другом плагине и зовёт этот скилл по имени; проект без конвейера ведёт -документацию тем же скиллом вручную. +Главный вызывающий — **шаг синка документации в конвейере задачи**: скилл +`av-dev:code-resolve` зовёт этот по имени. Задачу ведут не конвейером — +документация ведётся тем же скиллом вручную. ## Правило, из которого всё следует @@ -80,7 +80,7 @@ description: Вести содержимое документов канона **Язык правленого вычитывается тем же прогоном, который его написал, и зовёшь агента `doc-wording` ты.** Довод обратный доводу про судей: он читает **только названную пачку**, стоит дёшево и ищет ровно то, что портится в момент письма, — -залог, оценку без факта, жаргон, термин без ввода. Ждать `healthcheck` здесь +залог, оценку без факта, жаргон, термин без ввода. Ждать `doc-healthcheck` здесь нечего: через месяц никто уже не помнит, какую фразу имел в виду автор. Позови его **последним шагом правки, до коммита**, отдав список файлов, которых diff --git a/av-dev/skills/task-groom/SKILL.md b/av-dev/skills/task-groom/SKILL.md index 77cfd5c..0b3ef2f 100644 --- a/av-dev/skills/task-groom/SKILL.md +++ b/av-dev/skills/task-groom/SKILL.md @@ -13,7 +13,7 @@ description: "Груминг беклога — интерактивный ра Ответ на оба **записывается порядком строк в беклоге**: первая строка секции — то, что делают следующим; то, что перестало быть важным, из беклога уходит с причиной. Приоритет — свойство очереди, а не задачи, и живёт он в индексе -(правило 4 скилла `tasks`). Груминг — единственное место, где очередь +(правило 4 скилла `task-track`). Груминг — единственное место, где очередь назначается человеком. **Скилл интерактивный.** Он не «приводит беклог в порядок» сам: суждение о @@ -21,7 +21,7 @@ description: "Груминг беклога — интерактивный ра рекомендацией. Что решается фактом (сделано, отменено, дублируется), решается без вопросов и показывается списком. -Форматом и содержимым записей владеет скилл `tasks` — груминг зовёт его +Форматом и содержимым записей владеет скилл `task-track` — груминг зовёт его операции, а не правит файлы руками. Выполнением задачи — конвейер проекта. ## Три правила, из которых всё следует @@ -209,7 +209,7 @@ flowchart TD - **Расставить порядок молча**, без доводов: тогда через месяц он неотличим от случайного. Защита: причина у каждого движения и строка доклада. - **Разобрать много и мелко** вместо немногого и важного: тридцать полей гигиены - вместо трёх решений о важности. Защита: гигиена — работа скилла `tasks` и + вместо трёх решений о важности. Защита: гигиена — работа скилла `task-track` и побочный продукт здесь; доклад называет **решения**, а не правки. ## Слоты проекта @@ -218,7 +218,7 @@ flowchart TD 1. **Что считается сломанным** — какая красная проверка обгоняет развитие. Не названо — спрашиваем человека, а не решаем сами. -2. **Необратимое** — что спрашивается всегда (тот же слот, что у скилла `tasks`; +2. **Необратимое** — что спрашивается всегда (тот же слот, что у скилла `task-track`; дом один). 3. **Ориентир по размеру порции**, если он замерялся. Умолчание — 5–8 задач, и это **ориентир, а не закон**. @@ -241,7 +241,7 @@ flowchart TD ## Чего этот скилл не делает Не пишет код и не выполняет задачи. Не заводит и не переоформляет записи сам по -себе — формат и содержимое ведёт `tasks` (груминг зовёт его операции). Не решает +себе — формат и содержимое ведёт `task-track` (груминг зовёт его операции). Не решает за человека, что важно: он готовит развилки и рекомендует. Не принимает закрытые задачи отдельным ритуалом — `reopen` есть, момента у него нет. Не судит документы проекта — это скиллы `av-dev:doc-canon` и `av-dev:doc-healthcheck`. diff --git a/av-dev/skills/task-groom/references/portions.md b/av-dev/skills/task-groom/references/portions.md index de74e92..ca6d3a5 100644 --- a/av-dev/skills/task-groom/references/portions.md +++ b/av-dev/skills/task-groom/references/portions.md @@ -19,7 +19,7 @@ 4. **Запиши ответ в тело задачи, опустоши раздел «Вопросы»**, сними тег (`edit --rm-tag question`), **перепиши «зачем»**: «Решено: …» на вопрос «почему это лежит в беклоге» уже не отвечает. Опустошение раздела — не - уборка, а условие взятия: правило и причина в скилле `tasks`, + уборка, а условие взятия: правило и причина в скилле `task-track`, [references/task-format.md](../../task-track/references/task-format.md). **Вопросы на верхних строках очереди разбираются вне очереди порции** — здесь @@ -71,7 +71,7 @@ 5. **Гигиена полей** — протухшее «зачем», вопрос в прозе, снятый ответ, свойство репозитория в рамках, предписание процесса в теле, тип, разошедшийся с задачей, границы вместо реализации в разделе «Затрагивает». Список и правила — - в скилле `tasks`. **Груминг — то самое место, где беклог добирает тип и + в скилле `task-track`. **Груминг — то самое место, где беклог добирает тип и разделы его схемы:** требовать их на входе значило бы выгонять в заметки то, что должно лежать задачей, а к взятию в работу они уже обязательны (`ready`). Блок здоровья `check` печатает, сколько записей готово к взятию, — по этому diff --git a/av-dev/skills/task-track/SKILL.md b/av-dev/skills/task-track/SKILL.md index 31d0edb..e1bd63a 100644 --- a/av-dev/skills/task-track/SKILL.md +++ b/av-dev/skills/task-track/SKILL.md @@ -10,7 +10,7 @@ description: Ведение задач и целей как каталога mar заводит, редактирует, закрывает, разбирает находки ревью, дробит, штурмует сырьё. Чем он **не** владеет: **очередью** — что делать следующим и что перестало быть -важным, решает скилл `groom`, а этот скилл лишь даёт ему операции; и выполнением +важным, решает скилл `task-groom`, а этот скилл лишь даёт ему операции; и выполнением задачи — это конвейер проекта. ## Шесть правил, из которых всё следует @@ -742,6 +742,6 @@ python3 $tk adopt scan --from … | apply --plan … # разовая адап Не пишет код, не заводит спеки и предложения об изменении, не берёт задачу в работу — этим занимается конвейер проекта. **Не ведёт очередь:** что делать -следующим и что перестало быть важным — скилл `groom`, а этот даёт ему операции. +следующим и что перестало быть важным — скилл `task-groom`, а этот даёт ему операции. Не решает за пользователя, что важно. Не переоформляет существующие задачи «заодно»: правится то, чего касается операция. diff --git a/av-dev/skills/task-track/references/adopt.md b/av-dev/skills/task-track/references/adopt.md index fe94429..47811e3 100644 --- a/av-dev/skills/task-track/references/adopt.md +++ b/av-dev/skills/task-track/references/adopt.md @@ -2,7 +2,7 @@ Проект, где задачи уже как-то ведутся, и из имеющегося материала **выводится** заполненный каталог задач: цели, задачи, кладбище, индексы. Операция разовая — -после неё проект живёт скиллами `tasks` и `groom`. +после неё проект живёт скиллами `task-track` и `task-groom`. **Это часть приведения проекта к канону.** Раскладку `docs/` целиком ведёт скилл `av-dev:doc-canon`; он же зовёт этот сценарий на шаге «каталог задач», потому что diff --git a/av-dev/skills/task-track/references/task-goal.md b/av-dev/skills/task-track/references/task-goal.md index 01b0c5b..0828443 100644 --- a/av-dev/skills/task-track/references/task-goal.md +++ b/av-dev/skills/task-track/references/task-goal.md @@ -77,7 +77,7 @@ **Место этому — груминг, а не отдельный заход.** Отмена цели значит разбор всех её задач, а разбор задач и есть шаг 3 груминга -(скилл `groom`, «что перестало быть важным»). Отменять на ходу, +(скилл `task-groom`, «что перестало быть важным»). Отменять на ходу, между делом, — верный способ закрыть скопом то, что стоило перевесить. ## Что видит машина, а что человек