вычитка слияния: имена скиллов в прозе, роли вместо плагинов
Короткие имена скиллов (tasks, canon, docs, groom, healthcheck) в прозе и в уставах агентов заменены новыми: по прежнему имени скилл не находится. Фразы вида «плагин задач», «плагина конвейера нет» переписаны на то, чем они были на деле, — на часть раскладки проекта либо на скилл-владелец.
This commit is contained in:
@@ -75,12 +75,12 @@ color: green
|
||||
| **дельта-спеки** | сколько capability затронуто и сколько требований в каждой | `ADDED` целой capability — поведения такого рода не было; только `MODIFIED` в одной — было |
|
||||
|
||||
**Записи задачи может не быть вовсе, и это не довод за незнакомое.** Задача
|
||||
приходит текстом или из проекта без плагина задач — тогда раздела «Затрагивает»
|
||||
приходит текстом или из проекта без каталога задач — тогда раздела «Затрагивает»
|
||||
нет **по построению**, а не потому, что границы не назвали. Отличай:
|
||||
запись есть, а раздела в ней нет → незнакомое, как сказано в таблице; записи нет
|
||||
→ строка источника снимается, обе оси выводятся из остальных четырёх, и это
|
||||
называется в плане строкой «записи задачи нет, оси выведены по четырём
|
||||
источникам». Иначе всякая задача без плагина задач систематически едет в `large`
|
||||
источникам». Иначе всякая задача без каталога задач систематически едет в `large`
|
||||
за то, чего никто не терял.
|
||||
|
||||
**`design.md` информативен и своим отсутствием.** Его нет — либо задача
|
||||
|
||||
@@ -12,7 +12,7 @@ color: green
|
||||
|
||||
Оптика — смысл записи в её собственных рамках. Ты **не** судишь, нужна ли
|
||||
задача, верно ли выбрана цель и не крупна ли она: это разбор, и его ведёт
|
||||
человек со скиллом `tasks`.
|
||||
человек со скиллом `task-track`.
|
||||
|
||||
Границу с языком держи твёрдо. **Залог, оценки, стоп-слова, англицизмы, жаргон**
|
||||
— у агента `task-wording`, и тебе они не поручены даже там, где бросаются в
|
||||
|
||||
@@ -201,7 +201,7 @@ color: green
|
||||
тоже не твоя находка: твоя — язык того, что уже написано.
|
||||
|
||||
**Содержание работы**: нужна ли задача, верно ли выбрана цель, не крупна ли она,
|
||||
достаточна ли декомпозиция. Это разбор, и его ведёт человек со скиллом `tasks`.
|
||||
достаточна ли декомпозиция. Это разбор, и его ведёт человек со скиллом `task-track`.
|
||||
|
||||
**Полезное действие, параллельность и работающий заголовок** — тоже не твои.
|
||||
Они в доктрине языка, судит их человек: находка по ним требует увидеть текст
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
Резать стоит там, где разрез **снимает доказательство с большей части диффа**.
|
||||
Шов и правило нарезки живут у того, кто ведёт задачи, — скилл
|
||||
`av-dev:task-track`, его раздел о нарезке. Пути туда конвейер не выносит: за
|
||||
пределы своего плагина он ходит вызовом скилла, а не файлом.
|
||||
пределы своего скилла он ходит вызовом, а не файлом.
|
||||
|
||||
Разметка в костяк не входит — она платится один раз на задачу, а не один раз на
|
||||
прогон, и потому **разрез задачи её не удваивает**. Это единственное, что стало
|
||||
|
||||
@@ -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`.
|
||||
- **Не правит историю.** В старых коммитах старые пути остаются, и это нормально.
|
||||
|
||||
## Доклад
|
||||
|
||||
@@ -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`.
|
||||
|
||||
Раскладка отвечает, **где** текст лежит и на какой вопрос отвечает. Каким он
|
||||
должен быть **словами** — общий для всех документов канона файл
|
||||
|
||||
@@ -428,7 +428,7 @@ severity стоит здесь, а не выводится каждым прох
|
||||
|
||||
## `openspec/config.yaml`
|
||||
|
||||
**Образец переехал.** Файл заводит и заполняет плагин конвейера — скилл
|
||||
**Образец переехал.** Файл заводит и заполняет конвейер — скилл
|
||||
`av-dev:code-openspec`, — потому что по OpenSpec работает он, а не канон
|
||||
документов. Проект без конвейера каталога `openspec/` не имеет вовсе, и образец
|
||||
файла, которого у него нет, в скелетах канона лежал бы мёртвым грузом.
|
||||
|
||||
@@ -23,7 +23,7 @@ check` и его скрипт; здесь начинается там, где к
|
||||
`architecture.md` и уже живущий в `CLAUDE.md`;
|
||||
- **вернулись к проекту после перерыва** — прежде чем опираться на написанное;
|
||||
- **перед тем как опереться на документ в решении**, если оно дорогое;
|
||||
- шагом `adopt` и шагом `upgrade` — их зовёт скилл `canon` сам.
|
||||
- шагом `adopt` и шагом `upgrade` — их зовёт скилл `doc-canon` сам.
|
||||
|
||||
**Не на каждой задаче и не на каждом синке документации.** Цена реальная:
|
||||
`doc-consistency` идёт на `opus`, потому что сличение утверждений — суждение;
|
||||
|
||||
@@ -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/`
|
||||
наполняются его шагом синка, а не заранее.
|
||||
|
||||
@@ -9,9 +9,9 @@ description: Вести содержимое документов канона
|
||||
Определение канона и роли документов — [канон](../doc-canon/references/canon.md),
|
||||
здесь не пересказывается.
|
||||
|
||||
Главный вызывающий — **шаг синка документации в конвейере задачи**. Конвейер
|
||||
живёт в другом плагине и зовёт этот скилл по имени; проект без конвейера ведёт
|
||||
документацию тем же скиллом вручную.
|
||||
Главный вызывающий — **шаг синка документации в конвейере задачи**: скилл
|
||||
`av-dev:code-resolve` зовёт этот по имени. Задачу ведут не конвейером —
|
||||
документация ведётся тем же скиллом вручную.
|
||||
|
||||
## Правило, из которого всё следует
|
||||
|
||||
@@ -80,7 +80,7 @@ description: Вести содержимое документов канона
|
||||
**Язык правленого вычитывается тем же прогоном, который его написал, и зовёшь
|
||||
агента `doc-wording` ты.** Довод обратный доводу про судей: он читает **только
|
||||
названную пачку**, стоит дёшево и ищет ровно то, что портится в момент письма, —
|
||||
залог, оценку без факта, жаргон, термин без ввода. Ждать `healthcheck` здесь
|
||||
залог, оценку без факта, жаргон, термин без ввода. Ждать `doc-healthcheck` здесь
|
||||
нечего: через месяц никто уже не помнит, какую фразу имел в виду автор.
|
||||
|
||||
Позови его **последним шагом правки, до коммита**, отдав список файлов, которых
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
4. **Запиши ответ в тело задачи, опустоши раздел «Вопросы»**, сними тег
|
||||
(`edit <slug> --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` печатает, сколько записей готово к взятию, — по этому
|
||||
|
||||
@@ -10,7 +10,7 @@ description: Ведение задач и целей как каталога mar
|
||||
заводит, редактирует, закрывает, разбирает находки ревью, дробит, штурмует сырьё.
|
||||
|
||||
Чем он **не** владеет: **очередью** — что делать следующим и что перестало быть
|
||||
важным, решает скилл `groom`, а этот скилл лишь даёт ему операции; и выполнением
|
||||
важным, решает скилл `task-groom`, а этот скилл лишь даёт ему операции; и выполнением
|
||||
задачи — это конвейер проекта.
|
||||
|
||||
## Шесть правил, из которых всё следует
|
||||
@@ -742,6 +742,6 @@ python3 $tk adopt scan --from … | apply --plan … # разовая адап
|
||||
|
||||
Не пишет код, не заводит спеки и предложения об изменении, не берёт задачу в
|
||||
работу — этим занимается конвейер проекта. **Не ведёт очередь:** что делать
|
||||
следующим и что перестало быть важным — скилл `groom`, а этот даёт ему операции.
|
||||
следующим и что перестало быть важным — скилл `task-groom`, а этот даёт ему операции.
|
||||
Не решает за пользователя, что важно. Не
|
||||
переоформляет существующие задачи «заодно»: правится то, чего касается операция.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Проект, где задачи уже как-то ведутся, и из имеющегося материала **выводится**
|
||||
заполненный каталог задач: цели, задачи, кладбище, индексы. Операция разовая —
|
||||
после неё проект живёт скиллами `tasks` и `groom`.
|
||||
после неё проект живёт скиллами `task-track` и `task-groom`.
|
||||
|
||||
**Это часть приведения проекта к канону.** Раскладку `docs/` целиком ведёт скилл
|
||||
`av-dev:doc-canon`; он же зовёт этот сценарий на шаге «каталог задач», потому что
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
**Место этому — груминг, а не отдельный заход.** Отмена цели значит
|
||||
разбор всех её задач, а разбор задач и есть шаг 3 груминга
|
||||
(скилл `groom`, «что перестало быть важным»). Отменять на ходу,
|
||||
(скилл `task-groom`, «что перестало быть важным»). Отменять на ходу,
|
||||
между делом, — верный способ закрыть скопом то, что стоило перевесить.
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
Reference in New Issue
Block a user