Egor Urvanov

Podlodka Crew

Spec-Driven Development in Practice

A talk about Spec-Driven Development: using specifications to make AI agents write code that matches intent, not just instructions. Below is the full slide text of the talk — the state of AI development, the theory, and a hands-on OpenSpec workshop (in Russian).

Open the slide deck (in Russian)

Section 1 · Industry

Кто я и почему стоит слушать

  • Егор Урванов. Консультирую бизнесы по AI — ~10 компаний с внедрёнными подходами
  • 35 интервью с инженерами, тимлидами, CTO — как AI зашёл в их команду
  • 3 Telegram-чата, ~975 участников: Agent coding, Vibe Coding Community, Крабоводоведы — прочитано, размечено, отцитировано
  • В бою: работаю в крупном холдинге, делаю SaaS-решения для саппорта
  • Практика: вайб-кодинг в своих проектах и продакшн-разработке, внедрение продуктовых и операционных решений в бизнесах
Доклад — обобщение чужого и своего опыта.
1
Индустрия
Где мы все сейчас

Где мы все сейчас

  • ~20 из 35 самостоятельно изобрели SDD-практику — не зная этого слова
  • 35 интервью — реально пробовали SDD: ~5 человек, слышали 8-10, не знали 22-25
  • 0.1% упоминаний «SDD» в чатах. А «спека» — сотни раз.
если вы пробовали что-то полгода назад и вам не понравилось — стоит попробовать сейчас ещё раз. За последние полгода скачок очень сильный— Anton K · чат «Agent coding», 16 марта

Кто сейчас использует AI

  • Новички — 60%. «Слышал про агентов, хочу вкатиться»
  • Продвинутые — 25%. Tmux с 4 Claude, MCP, эксперименты
  • Техлиды — 10%. Внедряют в командах, строят процессы
  • Основатели / CTO — 5%. Строят продукт поверх AI
  • Не-разработчики — 10%. PM, аналитики, дизайнеры, режиссёры

SDD нужен не только разработчикам. Shift left захватывает PM и аналитиков.

Что реально получают команды

  • 99.5% кода от Claude — техлид продуктовой разработки
  • TTM 4 дня → часы — клиентский сервис, команда только валидирует
  • 80 часов на полную веб-версию — оценивали месяцами
  • 50 агентов в продукте — async flow: трекер → агент ночью → PR утром
  • 8 разработчиков → 4 — стартап после внедрения Claude Code

Все цифры — из интервью, анонимно. Контекст варьируется.

Многие уже пишут спеки. Вручную.

  • Спека живёт в чате — через неделю не найдёшь почему приняли решение
  • Контекст теряется при копипасте — ChatGPT → Claude: Claude не видит рассуждений
  • Спека и код разъезжаются — в процессе меняешь архитектуру — спека старая
  • Не масштабируется на команду — один человек — ок, три — хаос
делайте спеки и доки, блин, вайбкодеры юные. spec-first разработка, мазафака— Олег Дегтярев · чат «Крабоводоведы», 7 марта

Чем масштабнее задача — тем лучше работает агент

  • Миграция 20-летнего легаси Firebird → Postgres — полностью AI
  • Переписать монолит на микросервисы — агент держит весь контекст
  • Маленькая задача («кнопка синяя → зелёная») — агент закапывается

Большие задачи требуют структуры до старта. Именно для этого существует Spec-Driven Development.

Как компании сейчас внедряют AI

  1. Корпоративная подписка — доступ всем, добровольный режим
    Месяцами — никакого результата
  2. Воркшоп с эффектом «вау» — Happy Path прямо на месте
    Человек сам видит что работает
  3. Прыжок веры — разработчик должен поверить, это разблокирует переход на следующий уровень
    Некоторые запрещают старый способ на 2 недели — и это работает

Привычки меняются медленнее, чем инструменты. Это нормально — задача лида помогать и объяснять. Важно помнить, что скорость изменений катастрофическая.

Section 2 · Problem → theory → solution

2
Проблема → теория → решение
От боли к решению

Где вы сейчас?

  1. Tab-completion. Cursor дополняет строки
  2. Существенные куски кода. AI пишет функции целиком
  3. Агентный режим. Смотришь, жмёшь Enter
  4. Прыжок веры. Кажется можно не смотреть — но ещё не веришь
autocomplete → code completion → code generation → spec-first → полная автономия— Константин Чуйков · Vibe Coding Community, 6 августа 2025

Где вы сейчас?

1
Автокомплит
YNYN
2
Чат с Y/N
3
YOLO-режим
4
YOLO + контекст
$ claude> run...
5
CLI · Claude Code
6
Несколько инстансов
7
Параллельные агенты
orch
8
Оркестрация
Каждая ступень снимает боттлнек предыдущей.

Этапы 1–4: эволюция ассистента

1YN23–4

1 → 4

  • Что меняется: от строчки-подсказки до агента, который сам пишет файлы и запускает тесты без подтверждений
  • Пример: Cursor → Copilot → ранний Cline в YOLO-режиме + контекст из memory-файлов
  • Боттлнек здесь: сам разработчик — недоверие к AI, постоянные прерывания, откат к старой привычке
  • Решение: воркшопы, корпоративные подписки, обучение — и принудительный сдвиг

Этап 5: CLI как точка перелома

$ claude> analyzing...> writing code> done ✓

5

  • Что меняется: агент из IDE переходит в терминал — длинные сессии, bash, MCP-серверы
  • Пример: Claude Code — запускает тесты, читает базы, коммитит код
  • Боттлнек переезжает: из разработки — в архитектуру. Без спеки агент «додумывает»
  • Решение: структурировать работу через формальные подходы — архитектуру, спеку и верификацию

Этапы 6–8: параллельность и оркестрация

orchABC

6 → 8

  • Что меняется: несколько агентов в git worktree, оркестратор распределяет задачи
  • Пример: TDD + SDD + DDD — тесты как критерий готовности, спека как задание, домен как изоляция
  • Боттлнек: токены и время фокуса разработчика — не хватает ни того, ни другого
  • Решение: автономный агент на сервере — на основе логов, задач и скиллов с MCP

Куда переезжает боттлнек

без вайб-кодингаботтлнекв разработкес вайб-кодингомботтлнекв требованияхс SDDботтлнекубирается
Без вайб-кодинга — боттлнек в разработке. Когда внедрён — перекочёвывает в требования. SDD убирает и этот.

Как это выглядит на практике

DISCOVERYроль 1Product Managerпишет код · PoC · спекався репа · отдельный каталогClaude Code · свои скиллымеханизм связкиАртефакты / Контрактспека / требования → контрактпромпты + скиллыверсионируется как кодDELIVERYроль 2Product Engineerадаптирует · тестирует · встраиваетпрод-качествоClaude Code · свои скиллыправит спекувсё в репе
Есть условный product manager и есть условный product engineer. Все, у кого это работает — делают примерно одинаково.

Стоимость фичи и техдолг

Product ManagerсоздаётProduct Engineerвстраиваетдомен Bновый!домен Aсуществующий

Пересечение не решается промптом

Придётся делить домен и договариваться с продактом

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

4 уровня зрелости SDD

SF · Spec-First. Сначала требования, потом реализация — нюансы реализации уточняют спеку. Решает: хаос vibe-coding. Проблема: спека фрагментируется.
Пример: Spec Kit
SA · Spec-Anchored. Спека обновляется через схлопывание дельт — позволяет сохранять домен актуальным. Решает: фрагментацию. Проблема: требует дисциплины команды.
Пример: OpenSpec
SaS · Spec-as-Source. Спека и есть система — код генерируется из неё автоматически. Решает: дисциплину. Проблема: недетерминизм LLM.
→ вектор развития · Tessl движется сюда, но нормальных решений пока нет
SiL · Spec-in-the-Loop. Спека учится у системы — метрики и инциденты корректируют её автоматически. Решает: недетерминизм через обратную связь.
→ наше расширение классификации · решений нет вообще
Классификация SF · SA · SaS— Birgitta Böckeler · martinfowler.com

Механика каждого уровня

СПЕКА
КОД
SF
spec-v1.mdspec-v2.md
src/
решает: ХаосЕсть структура · Спека фрагментируется
SA
specs/domain.md
схлопывает
src/
решает: ФрагментациюДомен актуален · Нужна дисциплина команды
SaS
specs/domain.md
≈ генерируетручные итерации
DO NOT EDIT
решает: ДисциплинуСпека генерирует код · Недетерминизм LLM
SiL
specs/domain.md
ошибки · latency
DO NOT EDIT
решает: НедетерминизмТехн. метрики корректируют спеку · Продуктовые метрики — вручную
решение
проблема

4 паттерна AI-разработки

AR · Agent Role Кто принимает решения на каждом этапе — PM, аналитик, разработчик. Фреймворки задают, кто владеет артефактом и когда передаёт контроль.
Пример: BMAD
SDD · Spec-Driven Development Спека — единственный источник правды, который живёт рядом с кодом. Именно она движется через этапы и трансформируется.
Пример: OpenSpec, Spec Kit
AW · Agent Workflow Контейнер для работы: Discovery → Design → Delivery. Фреймворки работают с разными паттернами, поэтому их можно комбинировать.
Пример: GSD
AS · Agent Skills Правила поведения AI-агента: CLAUDE.md, .claude/, системные промпты. Задаёт что агент умеет, как рассуждает и какие ограничения соблюдает.
Пример: Superpowers, персональные скиллы

Механика паттернов

АРТЕФАКТРОЛЬПРОЦЕССARSDDAWspecspec'PMDiscoveryAnalystDesignDevDelivery

Ландшафт

ИнструментКатегорияКогда применятьСуть
Spec KitSDD · SF · spec-firstМного команд · зависимости · проекты с нуляСтруктурирует проект через конституцию
OpenSpecSDD · SA · spec-anchoredScrum-команда · brownfield · любой проект · DDDВедёт историю изменений спеки
TesslSDD · SaS · spec-as-sourceТолько для экспериментовРеестр скиллов и контекста для агентовразвивается медленно
SuperpowersAS · agent skillsНовички · первые кастомные скиллы · до выбора фреймворка · мелкие правкиЗадаёт правила поведения AI-агента
BMADAR · agent rolesПосле первых скиллов · появились процессыОркестрирует роли и взаимодействие AI-агентов
GSDAW · agent pipelineЗрелые процессы · чёткая спека · команда доверяет агентуАвтономно выполняет задачи

Две философии

OpenSpec

fluid not rigid

  • 3 команды + 4 артефакта
  • Embrace failure
  • Дельты → merge в specs/
  • Brownfield-friendly — работает с существующим кодом
  • Монорепо и мульти-репо
  • Гибкий — можно построить любой процесс

Spec Kit

prevent failure

  • 6 шагов + 8 файлов
  • Constitution как guardrail
  • Spec остаётся архивом решений
  • Structured, для больших команд
  • Проекты с высокой архитектурной сложностью
Я на OpenSpec пересел, более лаконичен. SpecKit целится видимо в крупный enterprise.— Константин Чуйков · Vibe Coding Community, 4 ноября 2025

Spec-репа

Spec-репаплатформенный слойскиллы · rules · ADR.cursorrules · conventionsспеки по репамspecs/repo-A/ · specs/repo-B/подтягивается как зависимостьв каждую code-репуcode-репа Aсервис / фронтcode-репа Bсоседний сервис… и другие репоk8s кластерprodосновной трафикcanary5% трафикановая версия👤платф. инж.👤👤👤инженерыPRзависимостьагенты генерируют код по спекеоткат если нужно

Ограничения — и как жить

Слабость
Решение
Любая задача → спека
Исключение: мелкая косметика (покрасить кнопку). Задача без спеки — антипаттерн
Мульти-репо: нет общего контекста
Spec-repo: отдельная репа со specs/, ADR, rules. Подтягивается зависимостью в каждую code-репу — агент везде видит одну правду
AI дрейфует от спеки
Подгружать specs/ в контекст явно. В CLAUDE.md: «перед задачей читай спеку». Сверять итог с исходным требованием
Дельты хрупкие
Мелкие дельты, архивировать сразу
Токены дорого
Sonnet — обычные задачи, Opus — кросс-доменная архитектура
Jira / Confluence
MCP-сервер: тянет задачи и комментирует напрямую. Confluence — тоже. Картинки не поддерживаются

Попробуй на следующей задаче: proposal → код

Section 3 · OpenSpec workshop

3
Воркшоп OpenSpec
Живой воркшоп по OpenSpec

CLI + slash-команды

  • CLI — полный контроль, скрипты, CI. Работает с любым AI.
  • Slash-команды — тонкая обёртка для работы с AI в IDE.
  • openspec/ — спеки общие для всех инструментов.

Поменяли инструмент — спеки остались.

Три команды, весь воркфлоу

Expanded профиль — ещё 8 команд: verify, sync, bulk-archive, ff и другие.

4 артефакта, 2 директории

Набор файлов — не жёсткий стандарт. Можно кастомить под свой процесс.

Промпт без спеки — антипаттерн.

Дельты — как git diff для требований

  • Дельта — пишешь только изменения, не перепечатываешь всю спеку
  • archive — мержит дельту в specs/
  • specs/ — живая карта системы, всегда актуальна
4
Воркшоп
Делаем фичу для бота вместе

Подключайтесь к боту

@podlodka_eurvanov_bot

Напишите боту /start — будем работать с ним прямо в демо

Что мы получили

  1. Архитектура = контракт человека и AI — без него решает AI
  2. Любая задача → спека — мелкая косметика исключение, всё остальное антипаттерн
  3. OpenSpec: 3 команды, 4 артефакта — specs/ как живая карта системы
  4. Мульти-репо → spec-repo — один источник правды для N сервисов
  5. Vendor-agnostic — openspec/ переживёт любую смену AI-инструмента

Попробуй на этой неделе

⊞
Каталог паттернов — кнопка ⊞
60+ паттернов работы с AI-агентами. Прямо сейчас в правом углу.
1
Установи OpenSpec в свой проект
npm install -g openspec && openspec init --tools claude-code
2
Возьми реальную задачу из беклога
/opsx:propose "твоя задача"
Не todo — а то, что сейчас болит
3
Дай AI реализовать по спеке
/opsx:apply
Агент читает proposal → design → tasks. Не додумывает.
4
Зафиксируй и двигайся дальше
/opsx:archive
specs/ знает о новой фиче. Следующий proposal — с контекстом.
Q&A
Spec-Driven Development на практике
Спасибо · Егор Урванов
© 2026 Egor Urvanov