Я полностью перешёл на SDD

от автора

Точнее, на Spec Kit от GitHub. Полгода назад я бы над этим посмеялся: спеки, планы, декомпозиция задач — привет из 2010-го, когда это называлось waterfall и все дружно от него убегали. Оказалось, убегали не от спек, а от того, что их писали люди и потом никто не читал. В этой статье расскажу, где я отхожу от стандарта в угоду скорости.

Что такое SDD по сути

Спецификация становится источником истины, а код — производной от неё. Не промпт в чате, который живёт до перезапуска сессии, а артефакты в репозитории:

  • constitution.md — неизменяемые принципы проекта. Стек, стандарты тестирования, архитектурные ограничения. То, что агент не имеет права нарушить, даже если очень захочется. Я сюда пишу про i18n, тестирование на живом сервере и тп.

  • spec.md — что строим. Пользовательские сценарии, критерии приёмки. Без деталей реализации.

  • plan.md — как строим. Технические решения со ссылкой на constitution.

  • tasks.md — декомпозиция на исполнимые куски.

Пайплайн у Spec Kit такой: /speckit.constitution/speckit.specify/speckit.clarify/speckit.plan/speckit.tasks/speckit.analyze/speckit.implement.

Два шага здесь ключевые, и это не те, о которых обычно говорят.

clarify заставляет агента вычитать спеку и задать вопросы по всем неоднозначностям до того, как он напишет строчку кода. Недоспецификация — основная причина, по которой агент уезжает не туда. Не глупость модели, а то, что вы не договорили, а она додумала.

analyze — гейт консистентности между constitution, spec, plan и tasks. Ловит рассинхрон до того, как он станет коммитом.

Как это выглядит у меня сейчас (личный напильник)

Сразу дисклеймер: то, что ниже, не канон Spec Kit. В коробке верхний уровень — это спека, а никакого roadmap над ней не предусмотрено. Я его надстроил сам, потому что на дистанции длиннее одной фичи без него разваливается.

Итак, сверху лежит roadmap с этапами. Этап — это осмысленный кусок продукта, а не квартальная хотелка. Дальше этап разбивается на спеки автоматически, и спеки уходят в реализацию.

По размеру спека у меня встала где-то между Story и Epic. Меньше Epic, потому что должна помещаться в один связный цикл specify → plan → tasks → implement без потери контекста. Больше Story, потому что описывает поведение целиком, а не один тикет. Практический критерий простой: спека — это то, что можно принять как работающий кусок функциональности и откатить одним движением, если не понравилось.

И вот тут начинается то, ради чего всё затевалось. Когда спеки лежат структурой, а не россыпью, нормально работает команда вида “сделай сразу спеки с 1 по 10”. Агент уходит на час, я занимаюсь другим. Это возможно ровно потому, что каждая спека прошла clarify и analyze: неоднозначности вычищены заранее, и мне не нужно сидеть рядом и ловить момент, где он свернул не туда.

Планирование стало отдельным этапом работы, а не прелюдией к ней. По ощущениям я теперь больше времени трачу на roadmap и разбиение, чем на надзор за реализацией. Это, судя по всему, правильное перераспределение.

Чем это отличается от powertools вокруг Claude Code

Powertools — plan mode, сабагенты, скиллы, хуки, CLAUDE.md — отвечают на вопрос “как агент работает”. Это тюнинг исполнителя: дать ему параллелизм, ограничить права, подсунуть правила линтера, заставить показать blast radius перед рефакторингом.

SDD отвечает на вопрос “что он строит и почему именно так”. Это тюнинг постановки задачи.

Разница практическая, а не философская:

  1. Артефакты против конфигурации. CLAUDE.md — это правила поведения агента. spec.md — это описание продукта. Первое устареет при смене инструмента, второе переживёт три поколения моделей.

  2. Портируемость. Spec Kit работает с тремя десятками агентов. Спека, написанная под Claude Code, читается Copilot и Cursor без переписывания. Скиллы и хуки — нет.

  3. Ревьюируемость. Спеку можно принести на груминг, показать заказчику, обсудить с командой. Скилл в .claude/skills/ обсуждать бессмысленно, там нет предметной области.

Они не конкуренты. Powertools остались, я их не выкидывал. Просто теперь /speckit.implement запускается внутри Claude Code с его plan mode и сабагентами, и это нормальная композиция: SDD задаёт что, powertools — как.

Где больно

Оверхед реальный. На правку в три строки весь ритуал избыточен, и я на такое его не тяну. Brownfield тяжелее greenfield: положить SDD-цикл на существующий проект без спеки означает сначала реконструировать спеку из кода, а это отдельная работа.

Ещё пакетный прогон спек честно ломается, если ошибка была в roadmap. Тогда десять спек уезжают в одном и том же неверном направлении, аккуратно и консистентно. Цена ошибки сместилась вверх по цепочке. Отчасти это плата за самодельный слой: roadmap не проходит через analyze, его никто не валидирует, кроме меня.

И главный неочевидный эффект: SDD подсвечивает, что вы сами не знаете, что строите. Раньше это выяснялось на демо. Теперь — на шаге clarify, где агент задаёт пять вопросов и вы не можете ответить ни на один.

Это, вообще-то, и есть основная ценность.

Подписывайтесь на канал ТехДир Подсекин, ставьте лайк, вам не сложно, мне — приятно.

ссылка на оригинал статьи https://habr.com/ru/articles/1063712/