Spec Writer
Пишет проектные документы трёх типов как самостоятельные Markdown-файлы, которые
читаются как человеческая документация: Spec (спецификация), Plan (план
реализации) и Brief (аналитическая записка для руководства). Навык только
пишет документ — он ничего не исполняет, не правит код проекта и не делает
коммитов.
Когда какой режим использовать
| Режим |
Что на входе |
Что на выходе |
| Spec |
Идея, проблема, размытое описание фичи |
Структурированная спецификация: проблема, цели, архитектура, решения, риски |
| Plan |
Готовая спека (или описание проекта) |
План реализации: фазы, оценки, зависимости, контрольные точки |
| Brief |
Спека или описание проблемы |
Короткая записка для руководства: проблема, решение, сроки, риски. Без кода и терминов. |
Если пользователь просит и спеку, и план — делай оба документа, сначала spec,
потом plan (plan ссылается на spec).
Аудитория и контекст
Навык заточен под три аудитории:
| Аудитория |
Что важно |
Формат |
| Сам разработчик |
Ясность мышления, фиксация решений, передача агенту |
Spec + Plan |
| CEO / руководство |
Бизнес-смысл, сроки, риски, никакого кода |
Brief |
| AI-агенты (Claude Code, OpenCode, Hermes) |
Однозначность, полный контекст, явные шаги |
Spec (полная) или Plan (если spec уже есть) |
Принципы:
- Spec — это в первую очередь для тебя. Документ должен помочь самому
продумать решение до того, как начнёшь писать код.
- Пиши так, чтобы агент понял. Если spec пойдёт в Claude Code — он должен
содержать достаточно контекста, чтобы агент не гадал.
- Для руководства — отдельный формат. Не отправляй CEO техническую спеку.
Пиши brief: проблема, решение, сроки, риски — на языке бизнеса.
Инструменты
Работа идёт штатными инструментами ассистента над файлами проекта:
| Операция |
Инструмент |
| Прочитать существующий код/доку |
Read |
| Найти файлы по имени/маске |
Glob (например **/*.py, **/models.py) |
| Найти по содержимому |
Grep (regex, фильтр glob) |
| Создать документ |
Write |
| Точечная правка документа |
Edit |
| Дата, git, slug (терминал) |
Bash (POSIX) или PowerShell |
| Подтянуть внешний контекст по URL |
WebFetch (опционально) |
Навык не исполняет код проекта, не запускает тесты, не делает коммитов и не
правит исходники. Read/Glob/Grep нужны только чтобы изучить проект перед
написанием документа.
Путь сохранения
Определи каталог для документов один раз, дальше передавай инструментам
абсолютные пути. Порядок разрешения:
- Переменная окружения
SPEC_WRITER_DIR, если задана.
- Путь, который явно указал пользователь.
- Дефолт:
docs/specs/ в корне проекта (создай каталог, если его нет).
Вне git-репозитория — сохраняй в текущую рабочую папку или уточни путь.
Никогда не передавай инструментам строку $SPEC_WRITER_DIR буквально — сначала
разверни её в реальный путь.
Имя файла: YYYY-MM-DD-<slug>-<type>.md, где <type> — spec, plan или
brief (например 2026-06-23-email-notifications-spec.md). Slug — короткий,
kebab-case, латиницей.
Дата
Документы датируются и именуются по дате. Перед записью любого файла бери
сегодняшнюю реальную дату из контекста сессии (харнесс сообщает текущую дату).
Не переиспользуй дату из примера или предыдущего документа и не угадывай год —
это типовая ошибка. При необходимости получить дату в терминале: date +%F
(bash) или Get-Date -Format yyyy-MM-dd (PowerShell).
Общие правила для всех режимов
- Сначала изучи. Если проект существует — посмотри структуру, ключевые
файлы, архитектуру (
Glob/Grep/Read). Не пиши документ в вакууме.
- Задавай уточняющие вопросы только если информация критична и ты не можешь
заполнить пробел сам. Не больше 3-5 вопросов за раз.
- Пиши на языке пользователя. Если пользователь пишет по-русски — документ
на русском (технические термины — на языке проекта).
- Сохраняй по правилам раздела «Путь сохранения».
- Не выполняй код. Ты только пишешь документ — никаких коммитов, правок в
проекте, запуска тестов.
- После сохранения дай краткое резюме: что за документ, где лежит, ключевые
решения.
Режим 1: Spec (спецификация)
Назначение
Превратить идею или проблему в структурированный документ, который отвечает на
вопросы: что мы делаем, зачем, какие есть ограничения, как это будет работать.
Шаблон спеки
Полный шаблон — в references/templates.md (§ Spec).
Скелет разделов:
- Резюме (TL;DR) · 2. Проблема и контекст (текущая ситуация, бизнес-потребность) ·
- Цели и анти-цели · 4. Предлагаемое решение (обзор архитектуры, ключевые решения
в формате ADR-lite «контекст → варианты → выбор → обоснование → последствия»,
модель данных, API/интерфейсы) · 5. Альтернативы (отклонённые) · 6. Риски и
смягчение (таблица) · 7. Открытые вопросы · 8. Критерии готовности (чекбоксы).
Процесс написания спеки
- Собери контекст: прочитай описание пользователя, изучи кодовую базу
(если проект существует).
- Выяви пробелы: что неясно? Если пробелов >3 и они критичны — задай
уточняющие вопросы.
- Сформируй документ по шаблону выше. Секции, которые неприменимы —
пропускай (не пиши «N/A», просто не включай).
- Проверь сам:
- TL;DR понятен без чтения остального? ✓
- Каждое решение объяснено (контекст, альтернативы, обоснование)? ✓
- Риски перечислены конкретно (не «может не работать», а «может не
работать при нагрузке >1000 RPS потому что ...»)? ✓
- Сохрани по правилам раздела «Путь сохранения».
Режим 2: Plan (план реализации)
Назначение
Взять спеку (или описание проекта) и разложить на фазы реализации с оценками,
зависимостями и рисками. Это не микро-таски TDD — это план уровня
«неделя/фаза», понятный команде.
Шаблон плана
Полный шаблон — в references/templates.md (§ Plan).
Скелет разделов:
- Обзор · 2. Фазы реализации (для каждой: цель, задачи-чекбоксы, зависимости,
критерий завершения, оценка в часах/днях) · 3. График зависимостей (ASCII или
текст: что параллелится) · 4. Оценки — сводная таблица с буфером · 5. Риски и
зависимости (внутренние/внешние) · 6. Что НЕ входит в план · 7. Контрольные точки.
Процесс написания плана
- Загрузи контекст: прочитай spec-документ или описание от пользователя.
Если спеки нет — сначала предложи написать спеку.
- Разбей на фазы по принципу: каждая фаза — доставляемая ценность
(можно задеплоить/показать), а не просто «сделали модель».
- Оцени каждую фазу в часах или днях. Если не хватает данных — укажи
диапазон («3-5 дней») и пометь как предварительную оценку.
- Выяви зависимости между фазами и внешние блокирующие факторы.
- Сохрани по правилам раздела «Путь сохранения».
Режим 3: Brief (аналитическая записка для руководства)
Назначение
Короткий документ (1-2 страницы) для не-технического руководителя. Никакого кода,
никаких Django/Celery/Redis — только бизнес-смысл. CEO должен понять: в чём
проблема, что мы делаем, сколько займёт, какие риски.
Когда использовать
- Пользователь явно просит: «напиши для CEO», «аналитическая записка», «executive summary»
- Ты написал spec и пользователь говорит «а теперь кратко для руководства»
- Пользователь описывает проблему и говорит «нужно показать CEO»
Шаблон brief
Полный шаблон — в references/templates.md (§ Brief).
Скелет разделов: Суть (2-3 предложения без терминов) · Проблема (конкретно, что
теряем) · Что предлагаю (в терминах бизнеса, 3-5 пунктов) · Сроки и ресурсы ·
Риски (2-3 честных) · Альтернативы (показать, что решение продумано) · Итог
(одно предложение).
Правила для brief
- Никакого кода. Вообще. Даже названий фреймворков — только если без них
никак.
- Один уровень детализации. Не углубляйся. Если CEO захочет деталей — он
спросит.
- Конкретные цифры где возможно. Не «часть пользователей», а «~30%».
Не «быстро сделаем», а «3-4 дня».
- Проблема → Решение → Сроки. Именно в этом порядке. CEO читает сверху вниз.
- Объём: 1-2 страницы. Если больше — ты пишешь спеку, а не brief.
Быстрая дизамбигуация
- «Напиши спеку» / «tech spec» / «design doc» / «запроектируй фичу» → Режим 1 (Spec)
- «План разработки» / «implementation plan» / «разбей на фазы» → Режим 2 (Plan)
- «Для CEO» / «аналитическая записка» / «executive summary» / «кратко для руководства» → Режим 3 (Brief)
- «ADR» / «запиши решение» как самостоятельный документ → секция 4.2 спеки или отдельный ADR
- «И спеку, и план» → сначала Spec, потом Plan (plan ссылается на spec)
Примеры
См. references/example-spec.md, references/example-plan.md и
references/example-brief.md — сквозной пример (система email-уведомлений) во
всех трёх режимах.
Связанные навыки
sage — координатор виртуальной команды: сырой вход → пакет документов
(summary, discussion, design/runbook). spec-writer пишет один spec/plan/brief,
когда тип документа уже ясен.
agent-workflow — превращает размытые описания в промты для AI-агента. Используй
для подготовки конкретной задачи агенту; spec-writer — для проектного документа
человеку/команде.
docs-generator — README, ADR, docstrings, синхронизация CLAUDE.md/AGENTS.md.
Это справочная документация по существующему коду; spec-writer проектирует то,
чего ещё нет (spec/plan), либо объясняет бизнесу (brief).
harness-engineering — обвязка проекта для агентов; spec/plan хорошо ложатся в
проектную документацию и Definition of Done.
codebase-recon / codebase-recon — изучение незнакомого проекта перед
написанием спеки (раздел «текущая ситуация»).
django-audit / python-project-audit — если спека касается существующего
Django/Python-проекта, помогут наполнить раздел «текущая ситуация» фактами.
Best practices (на чём основан)
- Amazon Kiro
/spec: структура Problem → Goals → Design → Risks
- ADR (Architecture Decision Records): формат «контекст → решение → последствия»
(Michael Nygard, 2011)
- RFC-культура: открытые вопросы, явные анти-цели, «что не входит»
- Google Design Docs: TL;DR для руководства, детали для инженеров
1---2name: spec-writer3description: Проектный документ в файл, три режима: spec (проблема, цели, архитектура, ADR-решения, риски), plan (фазы, оценки, зависимости) и brief (записка для руководства без кода и терминов). Используй когда пользователь просит «составь план для реализации пунктов из ROADMAP», «разложи это в SPEC/PLAN», «напиши спеку», «tech spec», «design doc», «запроектируй фичу», «аналитическая записка». Только документ, ничего не исполняет: нарезать на агентские куски — agent-workflow (режим decompose); документация по существующему коду — docs-generator; пакет от виртуальной команды по сырому входу — sage.4---56# Spec Writer78Пишет проектные документы трёх типов как самостоятельные Markdown-файлы, которые9читаются как человеческая документация: **Spec** (спецификация), **Plan** (план10реализации) и **Brief** (аналитическая записка для руководства). Навык только11*пишет документ* — он ничего не исполняет, не правит код проекта и не делает12коммитов.1314## Когда какой режим использовать1516| Режим | Что на входе | Что на выходе |17|-------|-------------|---------------|18| **Spec** | Идея, проблема, размытое описание фичи | Структурированная спецификация: проблема, цели, архитектура, решения, риски |19| **Plan** | Готовая спека (или описание проекта) | План реализации: фазы, оценки, зависимости, контрольные точки |20| **Brief** | Спека или описание проблемы | Короткая записка для руководства: проблема, решение, сроки, риски. Без кода и терминов. |2122Если пользователь просит и спеку, и план — делай оба документа, сначала spec,23потом plan (plan ссылается на spec).2425## Аудитория и контекст2627Навык заточен под три аудитории:2829| Аудитория | Что важно | Формат |30|-----------|-----------|--------|31| **Сам разработчик** | Ясность мышления, фиксация решений, передача агенту | Spec + Plan |32| **CEO / руководство** | Бизнес-смысл, сроки, риски, никакого кода | Brief |33| **AI-агенты** (Claude Code, OpenCode, Hermes) | Однозначность, полный контекст, явные шаги | Spec (полная) или Plan (если spec уже есть) |3435Принципы:36- **Spec — это в первую очередь для тебя.** Документ должен помочь самому37 продумать решение до того, как начнёшь писать код.38- **Пиши так, чтобы агент понял.** Если spec пойдёт в Claude Code — он должен39 содержать достаточно контекста, чтобы агент не гадал.40- **Для руководства — отдельный формат.** Не отправляй CEO техническую спеку.41 Пиши brief: проблема, решение, сроки, риски — на языке бизнеса.4243## Инструменты4445Работа идёт штатными инструментами ассистента над файлами проекта:4647| Операция | Инструмент |48|----------|------------|49| Прочитать существующий код/доку | `Read` |50| Найти файлы по имени/маске | `Glob` (например `**/*.py`, `**/models.py`) |51| Найти по содержимому | `Grep` (regex, фильтр `glob`) |52| Создать документ | `Write` |53| Точечная правка документа | `Edit` |54| Дата, git, slug (терминал) | `Bash` (POSIX) или `PowerShell` |55| Подтянуть внешний контекст по URL | `WebFetch` (опционально) |5657Навык **не исполняет код проекта**, не запускает тесты, не делает коммитов и не58правит исходники. Read/Glob/Grep нужны только чтобы изучить проект перед59написанием документа.6061## Путь сохранения6263Определи каталог для документов один раз, дальше передавай инструментам64абсолютные пути. Порядок разрешения:65661. Переменная окружения `SPEC_WRITER_DIR`, если задана.672. Путь, который явно указал пользователь.683. Дефолт: `docs/specs/` в корне проекта (создай каталог, если его нет).69 Вне git-репозитория — сохраняй в текущую рабочую папку или уточни путь.7071Никогда не передавай инструментам строку `$SPEC_WRITER_DIR` буквально — сначала72разверни её в реальный путь.7374**Имя файла:** `YYYY-MM-DD-<slug>-<type>.md`, где `<type>` — `spec`, `plan` или75`brief` (например `2026-06-23-email-notifications-spec.md`). Slug — короткий,76kebab-case, латиницей.7778## Дата7980Документы датируются и именуются по дате. **Перед записью любого файла бери81сегодняшнюю реальную дату из контекста сессии** (харнесс сообщает текущую дату).82Не переиспользуй дату из примера или предыдущего документа и не угадывай год —83это типовая ошибка. При необходимости получить дату в терминале: `date +%F`84(bash) или `Get-Date -Format yyyy-MM-dd` (PowerShell).8586## Общие правила для всех режимов87881. **Сначала изучи.** Если проект существует — посмотри структуру, ключевые89 файлы, архитектуру (`Glob`/`Grep`/`Read`). Не пиши документ в вакууме.902. **Задавай уточняющие вопросы** только если информация критична и ты не можешь91 заполнить пробел сам. Не больше 3-5 вопросов за раз.923. **Пиши на языке пользователя.** Если пользователь пишет по-русски — документ93 на русском (технические термины — на языке проекта).944. **Сохраняй** по правилам раздела «Путь сохранения».955. **Не выполняй код.** Ты только пишешь документ — никаких коммитов, правок в96 проекте, запуска тестов.976. **После сохранения** дай краткое резюме: что за документ, где лежит, ключевые98 решения.99100---101102## Режим 1: Spec (спецификация)103104### Назначение105Превратить идею или проблему в структурированный документ, который отвечает на106вопросы: *что мы делаем, зачем, какие есть ограничения, как это будет работать.*107108### Шаблон спеки109110Полный шаблон — в [references/templates.md](references/templates.md) (§ Spec).111Скелет разделов:1121131. Резюме (TL;DR) · 2. Проблема и контекст (текущая ситуация, бизнес-потребность) ·1143. Цели и анти-цели · 4. Предлагаемое решение (обзор архитектуры, ключевые решения115в формате ADR-lite «контекст → варианты → выбор → обоснование → последствия»,116модель данных, API/интерфейсы) · 5. Альтернативы (отклонённые) · 6. Риски и117смягчение (таблица) · 7. Открытые вопросы · 8. Критерии готовности (чекбоксы).118119### Процесс написания спеки1201211. **Собери контекст**: прочитай описание пользователя, изучи кодовую базу122 (если проект существует).1232. **Выяви пробелы**: что неясно? Если пробелов >3 и они критичны — задай124 уточняющие вопросы.1253. **Сформируй документ** по шаблону выше. Секции, которые неприменимы —126 пропускай (не пиши «N/A», просто не включай).1274. **Проверь сам:**128 - TL;DR понятен без чтения остального? ✓129 - Каждое решение объяснено (контекст, альтернативы, обоснование)? ✓130 - Риски перечислены конкретно (не «может не работать», а «может не131 работать при нагрузке >1000 RPS потому что ...»)? ✓1325. **Сохрани** по правилам раздела «Путь сохранения».133134---135136## Режим 2: Plan (план реализации)137138### Назначение139Взять спеку (или описание проекта) и разложить на фазы реализации с оценками,140зависимостями и рисками. Это **не** микро-таски TDD — это план уровня141«неделя/фаза», понятный команде.142143### Шаблон плана144145Полный шаблон — в [references/templates.md](references/templates.md) (§ Plan).146Скелет разделов:1471481. Обзор · 2. Фазы реализации (для каждой: цель, задачи-чекбоксы, зависимости,149критерий завершения, оценка в часах/днях) · 3. График зависимостей (ASCII или150текст: что параллелится) · 4. Оценки — сводная таблица с буфером · 5. Риски и151зависимости (внутренние/внешние) · 6. Что НЕ входит в план · 7. Контрольные точки.152153### Процесс написания плана1541551. **Загрузи контекст**: прочитай spec-документ или описание от пользователя.156 Если спеки нет — сначала предложи написать спеку.1572. **Разбей на фазы** по принципу: каждая фаза — доставляемая ценность158 (можно задеплоить/показать), а не просто «сделали модель».1593. **Оцени** каждую фазу в часах или днях. Если не хватает данных — укажи160 диапазон («3-5 дней») и пометь как предварительную оценку.1614. **Выяви зависимости** между фазами и внешние блокирующие факторы.1625. **Сохрани** по правилам раздела «Путь сохранения».163164---165166## Режим 3: Brief (аналитическая записка для руководства)167168### Назначение169Короткий документ (1-2 страницы) для не-технического руководителя. Никакого кода,170никаких Django/Celery/Redis — только бизнес-смысл. CEO должен понять: *в чём171проблема, что мы делаем, сколько займёт, какие риски.*172173### Когда использовать174- Пользователь явно просит: «напиши для CEO», «аналитическая записка», «executive summary»175- Ты написал spec и пользователь говорит «а теперь кратко для руководства»176- Пользователь описывает проблему и говорит «нужно показать CEO»177178### Шаблон brief179180Полный шаблон — в [references/templates.md](references/templates.md) (§ Brief).181Скелет разделов: Суть (2-3 предложения без терминов) · Проблема (конкретно, что182теряем) · Что предлагаю (в терминах бизнеса, 3-5 пунктов) · Сроки и ресурсы ·183Риски (2-3 честных) · Альтернативы (показать, что решение продумано) · Итог184(одно предложение).185186### Правила для brief1871881. **Никакого кода.** Вообще. Даже названий фреймворков — только если без них189 никак.1902. **Один уровень детализации.** Не углубляйся. Если CEO захочет деталей — он191 спросит.1923. **Конкретные цифры где возможно.** Не «часть пользователей», а «~30%».193 Не «быстро сделаем», а «3-4 дня».1944. **Проблема → Решение → Сроки.** Именно в этом порядке. CEO читает сверху вниз.1955. **Объём: 1-2 страницы.** Если больше — ты пишешь спеку, а не brief.196197---198199## Быстрая дизамбигуация200201- **«Напиши спеку» / «tech spec» / «design doc» / «запроектируй фичу»** → Режим 1 (Spec)202- **«План разработки» / «implementation plan» / «разбей на фазы»** → Режим 2 (Plan)203- **«Для CEO» / «аналитическая записка» / «executive summary» / «кратко для руководства»** → Режим 3 (Brief)204- **«ADR» / «запиши решение» как самостоятельный документ** → секция 4.2 спеки или отдельный ADR205- **«И спеку, и план»** → сначала Spec, потом Plan (plan ссылается на spec)206207## Примеры208209См. `references/example-spec.md`, `references/example-plan.md` и210`references/example-brief.md` — сквозной пример (система email-уведомлений) во211всех трёх режимах.212213## Связанные навыки214215- `sage` — координатор виртуальной команды: сырой вход → пакет документов216 (summary, discussion, design/runbook). spec-writer пишет один spec/plan/brief,217 когда тип документа уже ясен.218- `agent-workflow` — превращает размытые описания в промты для AI-агента. Используй219 для подготовки конкретной задачи агенту; spec-writer — для проектного документа220 человеку/команде.221- `docs-generator` — README, ADR, docstrings, синхронизация `CLAUDE.md`/`AGENTS.md`.222 Это справочная документация по существующему коду; spec-writer проектирует то,223 чего ещё нет (spec/plan), либо объясняет бизнесу (brief).224- `harness-engineering` — обвязка проекта для агентов; spec/plan хорошо ложатся в225 проектную документацию и Definition of Done.226- `codebase-recon` / `codebase-recon` — изучение незнакомого проекта перед227 написанием спеки (раздел «текущая ситуация»).228- `django-audit` / `python-project-audit` — если спека касается существующего229 Django/Python-проекта, помогут наполнить раздел «текущая ситуация» фактами.230231## Best practices (на чём основан)232233- **Amazon Kiro `/spec`**: структура Problem → Goals → Design → Risks234- **ADR (Architecture Decision Records)**: формат «контекст → решение → последствия»235 (Michael Nygard, 2011)236- **RFC-культура**: открытые вопросы, явные анти-цели, «что не входит»237- **Google Design Docs**: TL;DR для руководства, детали для инженеров