Что такое spec-driven development
Spec-driven development (SDD) — подход, в котором работа над задачей начинается со спецификации: что должна делать система, какие ограничения, как проверить результат. Агент получает спеку и по ней строит план, разбивает работу на задачи и пишет код.
Подход вырос из проблемы вайб-кодинга. Когда разработчик описывает задачу агенту в чате, требования остаются в истории переписки. Агент заполняет пробелы догадками, и через неделю никто не помнит, почему код устроен именно так. Спека фиксирует требования в файле, который лежит в репозитории, проходит ревью и меняется вместе с кодом.
Зачем спека, если агент и так понимает задачу
- Агент не додумывает молча. Если в спеке нет ответа, агент задаёт вопрос до начала работы. Без спеки он выбирает вариант сам, и ошибка всплывает на ревью или в production.
- Ревью становится короче. Ревьюер сверяет код со спекой и acceptance criteria. Ему не нужно восстанавливать замысел по диффу.
- Дефект можно отследить до причины. Если в спеке ошибка, чинят спеку или её шаблон. Если спека верная, а код нет, чинят правила и проверки в harness.
- Работу можно передать другому агенту. Спека отделяет «что делаем» от «как делаем», поэтому одну задачу могут вести планировщик, исполнитель и ревьюер.
Как выглядит процесс
Большинство инструментов SDD используют одну последовательность шагов.
- Specify. Описать, что нужно и зачем: пользовательские сценарии, требования, acceptance criteria. Без выбора технологий.
- Clarify. Агент находит неясные места и задаёт вопросы. Ответы записываются в спеку.
- Plan. Технический план: архитектура, изменения в данных, контракты, риски.
- Tasks. Разбивка плана на небольшие задачи, каждую можно проверить отдельно.
- Implement. Агент выполняет задачи, тесты и ревью проверяют результат по acceptance criteria.
Человек участвует на переходах: утверждает спеку, принимает план, смотрит результат. Внутри шагов работает агент.
Что писать в спецификации
Хорошая спека для агента короткая и проверяемая. Минимальный набор разделов:
- Контекст. Зачем задача, кто пользователь, какую проблему решаем.
- Требования. Что система должна делать, нумерованным списком.
- Acceptance criteria. Конкретные проверки в формате «дано, когда, тогда». Каждый критерий связан с тестом. Как агенту писать такие тесты — в статье про генерацию тестов.
- Вне задачи. Что в этой задаче не делаем, чтобы агент не расширял объём.
- Ограничения. Производительность, безопасность, совместимость, какие модули трогать нельзя.
- Открытые вопросы. Агент дописывает их на шаге clarify, человек отвечает.
Пример фрагмента спеки:
# Сводный отчёт по сделкам за день
## Требования
1. Отчёт группирует сделки по дате в часовом поясе клиента.
2. Сумма за день совпадает с суммой сделок клиента за эти сутки.
## Acceptance criteria
- AC-1. Дано: клиент в UTC+3, сделка в 23:40 по местному времени 14.03.
Когда: строим отчёт за 14.03.
Тогда: сделка входит в отчёт за 14.03.
Тест: reports/test_daily.py::test_local_day_boundary
- AC-2. Дано: 1000 сделок за сутки.
Тогда: отчёт строится быстрее 2 секунд.
## Вне задачи
- Экспорт в Excel.
- Изменение схемы таблицы deals.
Критерий AC-1 появился после реального дефекта: агрегация шла по серверному UTC, и поздние сделки попадали в соседние сутки. Когда такой критерий записан в шаблон спеки, агент учитывает часовой пояс с первой задачи.
Три уровня SDD
Бригитта Бёкелер из Thoughtworks в разборе инструментов SDD выделяет три уровня того, насколько серьёзно команда относится к спеке:
| Уровень | Что происходит со спекой |
|---|---|
| Spec-first | Спеку пишут перед задачей, агент работает по ней. После мержа спеку больше не трогают. |
| Spec-anchored | Спека живёт рядом с кодом. При изменении функции сначала правят спеку, потом код. |
| Spec-as-source | Человек правит только спеку. Код целиком генерируется из неё и вручную не меняется. |
Большинству команд стоит начинать со spec-first на новых задачах и переходить к spec-anchored для модулей, которые часто меняются. Spec-as-source пока остаётся экспериментом.
Инструменты: Spec Kit, Kiro и markdown в репозитории
GitHub Spec Kit
Spec Kit — открытый набор шаблонов и команд от GitHub. Он ставится в репозиторий и работает с агентом, которым команда уже пользуется: Copilot, Claude Code, Cursor, Gemini CLI и другими. Процесс идёт через команды /speckit.specify, /speckit.plan, /speckit.tasks и /speckit.implement. Перед ними пишется constitution — общие принципы проекта, которые действуют для всех спек.
Kiro
Kiro — среда разработки от AWS на базе Code OSS со встроенным процессом SDD. Спека в Kiro состоит из трёх файлов: требования, дизайн и задачи. Требования пишутся в формате EARS («когда …, система должна …»). Kiro подходит, если команда готова сменить IDE. Если нет, тот же процесс собирают на Spec Kit или на своих шаблонах.
Свои шаблоны в markdown
Для старта инструмент не обязателен. Папка specs/ в репозитории, шаблон спеки и правило в AGENTS.md «перед реализацией прочитай спеку задачи и сверь план с acceptance criteria» дают основную часть эффекта.
Что делать, если задачи живут в Jira
В крупных компаниях Jira часто нельзя заменить: через неё идут планирование, отчётность и согласования. Спеки в этом случае встраивают рядом:
- Тикет в Jira остаётся точкой учёта: приоритет, исполнитель, статус.
- Спека лежит в репозитории, тикет ссылается на неё, а спека — на тикет.
- Агент читает тикет через интеграцию и создаёт черновик спеки, человек его утверждает.
- Изменения требований вносят в спеку через merge request, чтобы история была в git.
Какой вариант подходит, решается на диагностике: где команда реально договаривается о требованиях и кто сможет поддерживать спеки.
Когда SDD не нужен
- Правка опечатки, обновление зависимости, мелкий рефакторинг внутри модуля. Хватит хорошего AGENTS.md и тестов.
- Прототип, который выбросят через неделю.
- Исследовательская задача, где требования появятся только после эксперимента. Сначала спайк, потом спека по его итогам.
Чем больше модулей и команд затрагивает изменение, тем подробнее спека.
Спеки в программе Праксора
На диагностике смотрим, как устроена постановка задач: Jira, которую не сдвинуть, или спеки в markdown прямо в репозитории. В первой версии harness спека становится главным документом задачи. На воркшопе пилотная команда проводит две-три задачи из своего бэклога через весь цикл: спека, генерация, валидация, выкладка. Как проходит внедрение
Вопросы
Чем спека для агента отличается от обычного ТЗ?
Спека короче и проверяемее. Каждый acceptance criterion связан с тестом, а спека лежит в репозитории и меняется через merge request вместе с кодом.
Кто пишет спеки: аналитик, разработчик или агент?
Черновик часто пишет агент по тикету или описанию задачи. Утверждает спеку человек, который отвечает за результат: аналитик, продакт или техлид. Важно, чтобы у каждой спеки был владелец.
Не замедлит ли SDD работу команды?
На первых задачах написание спек занимает время. Его отбивает более короткое ревью и меньшее число переделок. Мелкие задачи можно вести без спеки.
Нужен ли GitHub Spec Kit, чтобы начать?
Нет. Достаточно папки со спеками, шаблона и правила в AGENTS.md. Spec Kit полезен, когда нужен готовый процесс с командами для агента.