Files
dev-skills/av-dev-pm/skills/init/SKILL.md
T
avandClaude Opus 5 47a2f3de63 язык скиллов av-dev-pm: проход упрощения пятью агентами и разбор находок
Эксперимент: по сабагенту на каждый скилл av-dev-pm, задача — переписать текст
более простыми словами, но только там, где уверен и без потери смысла и
точности. Нормой служил устав языка самого проекта, language.md, включая его
раздел «Порог правки»: правка без нарушенного правила не делается.

36 правок в двенадцати файлах, +64/-63 — почти строго замена, а не
переписывание. Правили залог (пассив с названным деятелем в творительном),
отглагольные существительные, параллельность перечней, канцелярит «является»,
пару garden-path и одно двойное отрицание. Контракт не задет нигде: в диффе нет
изменённых строк-заголовков, а код-спаны встречаются ровно парой минус-плюс,
то есть ни имя, ни флаг, ни путь не переписаны.

Отчёты «что рассматривал и не тронул» вышли длиннее отчётов о правках у всех
пятерых, и это главный результат прогона. Самый частый повод остановиться —
слово, живущее в четырёх файлах: конфляция, интейк, провенанс, непоймание.
Правка в одном месте развела бы словарь, а править все — уже не упрощение
текста скилла, а сквозной проход по репозиторию. Второй повод — формулировка,
дословно повторённая в соседнем плагине: декорреляция, материализация
нерешённого, «при расхождении прав текст».

Шестой агент проверил все 36 правок и нашёл четыре.

Перестановка слов в task-research.md развела формулу с её домом: «число без
источника проход ревью обязан читать как условие» стоит в canon.md и в уставе
doc-consistency, который прямо ссылается на канон как на источник. Откачено —
это ровно тот класс расхождения, который сам doc-consistency и ловит.

«Держит H1, мету и индекс в согласии» — управление требует дополнения, а
language.md в разделе англицизмов прямо оговаривает: русский аналог звучит
коряво — остаётся термин. Взят третий вариант, «согласованными».

В skeletons.md «правка тянет запись, и она называет» — местоимение указывает
на два женских существительных сразу. Стало «и запись называет».

Четвёртая находка не откачена: правка в init/SKILL.md хорошая, но развела
конструкцию с близнецом в canon/SKILL.md — выровнена вторая половина.

Побочно найдена старая логическая инверсия в DECISIONS.md, решение U:
«становится неотличимым, только если отрицание обязательно» — смысл вывернут,
в docs/SKILL.md и во второй записи журнала он правильный. Починено.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 14:49:03 +03:00

98 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: init
description: "Завести новый проект — сессия вопросов и ответов по свободному описанию замысла, из которой рождается первичная документация по канону av-dev: паспорт, CLAUDE.md с инвариантами и командами, модель угроз с периметром, первые цели в роадмапе и скелет остальных документов. Использовать, когда начинают новый проект с нуля, когда есть только текст «что мне нужно и почему» и надо превратить его в рабочую документацию, когда просят провести стартовое интервью по брифу. Проект, где документация уже как-то ведётся, переводит скилл canon."
---
# Заведение нового проекта
Вход — свободный текст «что мне нужно и почему». Выход — канон документов, с
которого дальше работают все остальные скиллы.
**Определение канона — [канон](../canon/references/canon.md).** Прочитай его до
первого вопроса: интервью идёт по слотам канона, а не по вкусу. Что класть в
каждый файл — [скелеты](../canon/references/skeletons.md); не выдумывай заглушки
своей формы, `docs.py` узнаёт только плейсхолдер оттуда.
## Что `init` физически не может произвести
В новом репозитории **нет кода**, а `architecture.md`, `database.md`,
`conventions/` и `research/` выводятся из него. Сочинить их на старте — значит
проектировать вперёд реальности, и написанное протухнет раньше первой задачи.
Поэтому `init` заполняет то, что человек знает **до первой строки кода**:
| Заполняется | Остаётся скелетом с честной строкой |
| --- | --- |
| `passport.md` | `architecture.md` |
| `CLAUDE.md` | `database.md` |
| `security.md` | `conventions/` |
| `docs/tasks/ROADMAP.md` — первые цели | `research/`, `adr/` |
| `docs/.pm.json` | `review.md` — журнал пуст, настройка появится с первым ревью |
Честная строка информативна, а не «TBD»: «архитектуры пока нет: кода нет,
заводится первой задачей». Проход читает её как факт.
## Порядок интервью — зависимость, а не удобство
Каждый блок опирается на ответ предыдущего; переставлять нельзя.
1. **Цель и потребители.** Ради чего это; кто пользуется — список закрытый, и
он определяет, что считать нужным, а что интересным.
2. **Чем это НЕ является и мера успеха.** Граница домена — критерий, по
которому архитектурный проход потом судит о переносе понятия. Мера — по чему
поймём, что удалось.
3. **Периметр и недоверенный вход.** Открыт наружу или контур доверенный; что
приходит извне и каким каналом; что чувствительнее чего. Контур ещё не
развёрнут — назови **оба** периметра, целевой и сегодняшний.
4. **Стек, хранилище, необратимое.** Чем пишем и почему; где данные; что в этом
проекте нельзя откатить — деплой, выкладка наружу, перезапись данных.
5. **Чем краснеет гейт.** Какие проверки обязательны; что красит безусловно;
чего в гейте намеренно не будет и кто тогда это гоняет.
6. **Первые цели.** Возможности приложения, а не задачи: три-пять целей в
`Запланировано`, каждая — ответ на «что приложение будет уметь», с
обоснованием очереди прозой.
### Как вести
- **Не больше трёх вопросов за итерацию** (`AskUserQuestion`), рекомендация
первым вариантом. Между итерациями применяй уже решённое.
- **Сперва вычитай ответы из брифа.** Если ответ уже есть в тексте, вопрос не
задавай — покажи своё прочтение и спроси, верно ли.
- **Не выдумывай четыре вещи:** периметр, что необратимо, измеренные числа и
адресата дорогой проверки. Их из замысла не вывести. Не сказано — пиши
«неизвестно» с пометкой, что ждёт ответа.
- **Развилка замысла — человеку, механика — сама.** Имена файлов, слаги, порядок
строк не выноси.
## Порядок работы
1. Прочитай бриф целиком. Выпиши, на какие блоки интервью ответ уже есть.
2. Проведи интервью итерациями по ≤3 вопроса.
3. Заведи `docs/.pm.json` с текущей версией канона.
4. Напиши заполняемые документы. **Бриф переезжает в `passport.md`** и
отдельным файлом не остаётся: два дома для одного замысла разойдутся на
первом же уточнении.
5. Заведи скелет остальных по [скелетам](../canon/references/skeletons.md) —
каждый с честной строкой.
6. Каталог задач и первые цели — **вызови скилл `av-dev-pm:tasks`**: он владеет
форматом целей и задач.
7. `docs.py check` из скилла `canon` — до отсутствия дрейфа. Замечания о
незаполненных плейсхолдерах остаются: их закрывает не `init`, а работа.
8. Покажи человеку, что получилось, и **отдельным списком** — что выведено из
брифа, что предположено, что осталось неизвестным. Правят по этим строкам.
## Что дальше
- Содержимое канона по ходу разработки ведёт скилл `docs`.
- Раскладку проверяет `canon check`.
- Первую задачу берёт пайплайн проекта; `architecture.md` и `conventions/`
наполняются его шагом синка, а не заранее.
## Чего этот скилл не делает
- **Не проектирует систему.** Архитектура выводится из кода, а не наоборот.
- **Не пишет код** и не заводит сборку.
- **Не переводит существующий проект** — это `canon adopt`. Признак: в
репозитории уже есть документация или беклог в какой-то раскладке.
- **Не решает за человека**, что важно: цель, границы и периметр — его ответы.