1 апреля 2026
Классический SDLC построен вокруг передачи задачи между ролями: аналитик формулирует требования, разработчик пишет код, QA проверяет результат. Каждый handoff - потеря контекста и время ожидания. AI-агенты инвертируют эту модель: агент ведёт задачу от спецификации до готового кода, а инженеры подключаются на контрольных точках. Но попытка вставить агента в существующий пайплайн "вместо разработчика" не работает - нужен другой процесс. Статья описывает как его построить, какие фреймворки существуют, и как внедрить это в организацию с уже выстроенным SDLC.
Историческая рамка: как менялся SDLC и почему агентам нужен новый
Прежде чем разбирать, что меняется с появлением агентов, полезно зафиксировать, откуда взялся сам SDLC и какие проблемы каждое следующее поколение пыталось решить. Без этой рамки spec-driven подход выглядит как очередной хайп, а не как закономерный шаг.
Waterfall (Royce, 1970): handoff как явление
Канонический waterfall обычно приписывают Уинстону Ройсу и его статье «Managing the Development of Large Software Systems» (Proceedings of IEEE WESCON, август 1970). Парадокс: Royce показал классическую последовательную диаграмму (requirements → design → implementation → verification → maintenance) именно как пример того, что не работает на крупных системах. Дальше в той же статье он описывает итеративные улучшения с обратной связью между фазами. Но запомнили только первую диаграмму, и в течение 1970-1980-х она стала контрактной моделью для DoD, NASA и крупного ентерпрайза. Передача артефакта между фазами (requirements → design document → code → test report) - первое формализованное появление handoff как явления в SDLC.
Spiral и iterative (Boehm, 1986)
Барри Боэм в статье «A Spiral Model of Software Development and Enhancement» (ACM SIGSOFT Software Engineering Notes, август 1986; переиздана в IEEE Computer, май 1988) предложил спиральную модель: вместо одного прохода по фазам - несколько итераций с risk assessment в начале каждой. Это первый широко принятый отказ от waterfall в пользу итераций. Боэм же в книге «Software Engineering Economics» (Prentice-Hall, 1981) количественно показал, что стоимость исправления дефекта растёт экспоненциально по мере продвижения вниз по фазам - аргумент, который до сих пор используется в защиту раннего проектирования.
Agile Manifesto (2001): отказ от тяжёлых артефактов
В феврале 2001 семнадцать практиков (включая Kent Beck, Martin Fowler, Ward Cunningham, Jeff Sutherland, Ken Schwaber) подписали Agile Manifesto. Четыре ценности явно противопоставили работающий софт исчерпывающей документации, сотрудничество с заказчиком - переговорам по контракту, реагирование на изменения - следованию плану. Это не отменяло handoff как таковой, но сильно сократило тяжесть передаваемых артефактов. Scrum (Schwaber/Sutherland, формализован к 2002) и Extreme Programming (Beck, «Extreme Programming Explained», 1999) стали двумя главными операционализациями.
Параллельно Kent Beck в той же XP-волне канонизировал Test-Driven Development («Test-Driven Development: By Example», Addison-Wesley, 2002): тест перед кодом как способ зафиксировать спецификацию поведения. Дэн Норт в «Introducing BDD» (Better Software, март 2006) вынес эту идею с уровня юнита на уровень сценария поведения. Подробнее об этой родословной - в статье о Spec Kit.
DevOps и continuous delivery (2009-2015)
Появление DevOps (термин закрепился после первой DevOpsDays в Генте в октябре 2009, организованной Patrick Debois) и continuous delivery («Continuous Delivery» Jez Humble и David Farley, Addison-Wesley, 2010) убрало последний крупный handoff внутри инженерии - между разработкой и operations. Идея: deployment - не отдельная фаза, а часть pipeline; инфраструктура - код; конвейер от commit до production автоматизирован и проходится за минуты. Это сократило цикл feedback с недель до часов и сделало возможным реальный CD в продуктовых компаниях.
«Software 2.0» (Karpathy, 2017): первый сигнал смены парадигмы
Андрей Карпати в эссе «Software 2.0» (Medium, ноябрь 2017) предложил рамку: классический софт пишется людьми на конкретных языках программирования (Software 1.0); ML-системы пишутся в форме датасетов и весов модели, а компилятором является градиентный спуск (Software 2.0). Эссе не про агентов, но это первая широко обсуждаемая попытка сказать вслух: SDLC, выстроенный вокруг человеческого автора кода, - не единственный возможный. С точки зрения 2026 года Karpathy недооценил третью волну: агентов, которые пишут Software 1.0, но управляются спецификацией. По сути, это синтез - человеческий код, но с не-человеческим автором.
Агенты как исполнители (Anthropic, 2024-2025)
В декабре 2024 Anthropic опубликовали «Building Effective Agents»: рамка для проектирования LLM-агентов с явным разделением workflows (предопределённая последовательность шагов) и agents (динамическое принятие решений). В 2025 в Claude Code появилась SKILL.md-система: переиспользуемые навыки с frontmatter-метаданными, которые автоматически инжектируются в контекст по триггерам. Это перевело разговор от «как промптить модель» к «какую инфраструктуру построить вокруг агента, чтобы он работал воспроизводимо». Параллельно вышло первое большое индустриальное измерение последствий - DORA Report 2025 зафиксировал, что наивный adoption AI-инструментов даёт +9% багов и +91% времени code review при 90% использовании.
Что именно меняется в 2024-2026
Каждое предыдущее поколение SDLC оптимизировало взаимодействие между людьми. Waterfall формализовал handoff как контракт. Agile сократил тяжесть передаваемых артефактов. DevOps убрал handoff dev/ops. Но во всех этих моделях исполнителем кода оставался человек, а артефакты (документация, тесты, спецификации) обслуживали этого человека. С появлением способных агентов исполнителем становится не-человек, и артефакты начинают обслуживать его. Это смещение и заставляет пересобирать SDLC заново.
Почему классический SDLC не работает с агентами
Стандартный процесс разработки - это конвейер с передачей ответственности:
| Этап | Роль | Артефакт | Время ожидания |
|---|---|---|---|
| Анализ | Аналитик/PM | Требования в Jira | Часы-дни |
| Приёмочные критерии | QA / Аналитик | Acceptance criteria, тест-кейсы | Часы-дни |
| Дизайн | Архитектор | Техническое решение | Часы-дни |
| Разработка | Разработчик | Pull Request | Дни-недели |
| Тестирование | QA | Тест-репорт | Часы-дни |
| Релиз | DevOps/Release manager | Deployment | Часы |
Проблема не в самих этапах - они логичны. Проблема в handoffs. Каждая передача задачи между людьми означает: ожидание в очереди, потерю контекста при передаче, синхронизацию через митинги и комментарии. На типичной задаче 70-80% lead time - это время ожидания, а не работы.
Даже если каждый участник ускоряет свою работу с помощью AI - аналитик быстрее пишет требования, разработчик генерирует код с Copilot, QA автоматизирует тест-кейсы - это не решает системную проблему. Handoffs остаются. Очереди остаются. Задача по-прежнему ждёт в backlog разработчика, потом в очереди на review, потом в очереди QA. AI ускоряет работу внутри каждого этапа, но не устраняет ожидание между ними.
AI-агенты работают иначе. За одну сессию агент читает спецификацию, анализирует кодовую базу, пишет код, создаёт тесты, запускает линтер, исправляет ошибки и формирует PR. Время выполнения - минуты, не дни.
Но у агентов есть ограничение: они stateless. Каждая сессия начинается с нуля. Агент не помнит предыдущих решений, не знает контекст проекта, не понимает бизнес-логику - если ему это не передали явно.
Попытка вставить агента в существующий пайплайн "вместо разработчика" - антипаттерн. Агент получает задачу из Jira, написанную для человека (с неявными допущениями, ссылками на устные договорённости, контекстом из предыдущих спринтов) - и генерирует код, который формально соответствует описанию, но не учитывает реальные constraints проекта.
DORA 2025 подтверждает: при 90% adoption AI-инструментов в команде зафиксировано +9% багов и +91% времени code review. Агенты генерируют код быстрее, но если процесс не адаптирован - качество падает, а нагрузка на review растёт.
Инвертированная модель: агенты работают, люди проверяют
В классическом SDLC человек - исполнитель, инструменты - средства. IDE подсвечивает ошибки, CI запускает тесты, Jira трекает прогресс. Но решения принимает и код пишет человек.
В AI-driven SDLC агент - исполнитель, человек - валидатор и архитектор контекста. Агент пишет код, запускает тесты, итерирует до зелёного билда. Человек определяет что делать (спецификация), обеспечивает контекст (rules, memory, knowledge base) и проверяет результат (review).
Что меняется для организации:
Раньше: 5-7 человек в команде. Аналитик пишет требования, 2-3 разработчика реализуют, QA тестирует, тимлид координирует. Пропускная способность - количество разработчиков × их скорость.
Теперь: пропускная способность определяется не количеством людей, а качеством спецификаций и контекста. Один инженер с хорошей инфраструктурой контекста может запускать несколько агентных сессий параллельно.
Истоки spec-driven подхода: от Мейера до Karpathy
Spec-driven development в текущем виде - это не изобретение GitHub spec-kit и не реакция исключительно на LLM-агентов. Это пятая или шестая итерация одной идеи: спецификация - не комментарий и не отдельная документация, а первичный артефакт, из которого выводится остальное. Знание этой родословной нужно по практической причине: каждое поколение ломалось на одних и тех же антипаттернах, и у нынешнего нет иммунитета.
Дизайн как контракт (Meyer, 1988)
Бертран Мейер в книге «Object-Oriented Software Construction» (Prentice Hall, первое издание 1988, расширенное 1997) сформулировал Design by Contract: каждый метод имеет precondition, postcondition и инвариант класса; контракт встроен в синтаксис языка Eiffel и проверяется во время выполнения. Это первая инженерная попытка сделать спецификацию исполняемой в самом строгом смысле - не «документ рядом с кодом», а часть программы, которая падает при нарушении. DbC так и остался нишевым (overhead на ручное написание контрактов перевесил выгоду), но идея «спецификация - артефакт, а не комментарий» унаследована современным SDD напрямую.
Тест как спецификация поведения (Beck, 2002; North, 2006)
TDD и BDD - две родительские линии. Kent Beck в «Test-Driven Development: By Example» (Addison-Wesley, 2002) канонизировал red-green-refactor: тест перед кодом фиксирует поведение на уровне юнита. Дэн Норт в эссе «Introducing BDD» (Better Software, март 2006) сместил формат с «test_calculate_total» на «Given пустая корзина, When добавляется товар, Then total равен цене»; эту идею подхватил Cucumber (Aslak Hellesoy) и десятки других инструментов. SDD прямо использует BDD-формат в шаблонах: spec.md в Spec Kit содержит User Stories с acceptance scenarios в формате Given/When/Then, и эта связь явная.
API как первичный артефакт (Swagger, OpenAPI, Stripe)
Параллельно с BDD развивалась линия «спецификация интерфейса первична». Tony Tam опубликовал Swagger Specification в 2011, а в 2015 формат был передан Linux Foundation и переименован в OpenAPI Specification. В публикациях Brandur Leach (инженера Stripe, brandur.org) описывается, как Stripe использует OpenAPI как внутренний source of truth: код обработчиков, клиентские библиотеки и документация генерируются или сверяются со спецификацией. Это спецификация на уровне системы, не на уровне теста - но ограничена интерфейсом, не покрывает поведение и архитектурные решения.
SDD как операционализация для агентов (GitHub spec-kit, 2024-2025)
Команда GitHub spec-kit (открытый репозиторий github/spec-kit) в 2024-2025 формализовала фазы specify → plan → tasks → implement, где каждая фаза - артефакт, который человек ревьюит до перехода к следующей. Технически это синтез предшественников: User Stories и Given/When/Then из BDD, «спецификация как исполняемый артефакт» из DbC и OpenAPI, обязательность тестов до кода - из TDD (часто прописывается в constitution.md как NON-NEGOTIABLE-принцип). Новое - то, что спецификация теперь исполняется не компилятором и не тест-раннером, а LLM-агентом. Подробный разбор лестницы DbC → TDD → BDD → spec-as-API → SDD - в статье о Spec Kit.
Сдвиг автора: от человека к агенту (Karpathy, Anthropic)
Эссе «Software 2.0» Андрея Карпати (Medium, ноябрь 2017) и более позднее обсуждение «Software 3.0» в его публичных лекциях зафиксировали смещение: автор кода перестаёт быть единственно человеческим. У SDD есть прямой ответ: если кодом занимается агент, спецификация должна быть достаточно строгой, чтобы из неё выводился ожидаемый результат, и достаточно человекочитаемой, чтобы её ревьюил человек. Anthropic в декабре 2024 опубликовали «Building Effective Agents», разделив workflows и agents и формализовав паттерны (prompt chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer). В 2025 в Claude Code появилась SKILL.md-система: переиспользуемые навыки с frontmatter-метаданными, инжектируемые в контекст по триггерам. Это сдвинуло фокус с «как промптить» на «какую инфраструктуру построить вокруг агента».
Что унаследовано, что добавлено
| Поколение | Кто пишет спецификацию | Кто исполняет | Что унаследовало SDD |
|---|---|---|---|
| DbC (Meyer, 1988) | Инженер | Runtime/компилятор | Идея исполняемой спецификации |
| TDD (Beck, 2002) | Инженер | Test runner | Тесты до кода как принцип constitution |
| BDD (North, 2006) | Инженер + продукт | Cucumber-подобные runners | Формат Given/When/Then в spec.md |
| OpenAPI (Tam, 2011; LF, 2015) | Инженер API | Code generators + validation | Спецификация - source of truth, код выводится |
| SDD (GitHub spec-kit, 2024-2025) | Инженер + продукт | LLM-агент с human-in-the-loop | Всё перечисленное + четыре фазы и review gates |
Практическое следствие: если в команде уже работает какая-то spec-практика (например, OpenAPI для API-контрактов или BDD-сценарии для критичных flow) - адаптация SDD идёт быстрее, потому что культура spec-as-artifact уже есть. Если нет - сначала разворачивается базовая практика «текст до кода» на одном типе задач, и только потом подключается агент.
Spec-driven development как фундамент
Все зрелые AI-driven SDLC фреймворки сходятся в одном: спецификация до кода - обязательное условие. Причина проста: агент, получивший размытое описание, генерирует код, который формально соответствует запросу, но не решает реальную задачу.
OpenSpec формулирует это так: "AI coding assistants are powerful but unpredictable when requirements live only in chat history". SPECTRE идёт дальше: "Ambiguity is death" (SPECTRE) - чем точнее спецификация, тем дольше агент работает автономно без эскалации.
Ниже - детальный разбор шести фреймворков: что они добавляют в проект, как организованы артефакты, где стоят контрольные точки и как на основе накопленных артефактов строится экспертиза.
BMAD Method
Самый комплексный фреймворк. 12+ агентных ролей (PM, Architect, Developer, UX, QA, Scrum Master), 34+ workflows, модульная система расширений.
Что добавляется в проект
your-project/
├── _bmad/ # Конфигурация: агенты, workflows, skills
└── _bmad-output/
├── planning-artifacts/
│ ├── PRD.md # Product Requirements Document
│ ├── architecture.md # Архитектурные решения
│ └── epics/ # Эпики и user stories
├── implementation-artifacts/
│ └── sprint-status.yaml # Трекинг прогресса по спринтам
└── project-context.md # Общий контекст проекта
Фазы и контрольные точки
- Analysis (опционально) - product brief, PRFAQ, исследования. Контрольная точка: нет, фаза опциональна.
- Planning - PRD через workflow
bmad-create-prd. Контрольная точка: PRD должен существовать до перехода к solutioning. - Solutioning - architecture.md, эпики и stories. Контрольная точка:
bmad-check-implementation-readinessвалидирует когерентность всех документов. - Implementation - sprint-status.yaml, код. Контрольная точка: sprint planning должен пройти до начала build-цикла.
Развитие артефактов
PRD обновляется при изменении scope. Architecture.md дополняется при архитектурных решениях в ходе реализации. Sprint-status.yaml - живой документ, отражающий текущее состояние. Scale-adaptive intelligence автоматически регулирует глубину каждого артефакта: для bug fix - минимальный набор, для enterprise feature - полный цикл.
Экспертиза по артефактам
Накопленные PRD и architecture.md формируют историю product decisions. Sprint-status.yaml даёт данные о velocity и паттернах. Party Mode позволяет запустить несколько агентных ролей в одной сессии для кросс-функциональной ревизии артефактов.
Несколько команд и sustainability
43K+ stars, активная ежедневная разработка, за фреймворком стоит BMad Code, LLC. Модульная система (BMM, TEA, BMGD, CIS) позволяет разным командам использовать разные модули. Party Mode и Cross Platform Agent Team поддерживают кросс-командное взаимодействие. Однако явной поддержки monorepo с team-level конфигурацией нет - каждая команда работает со своим набором агентов и workflows.
OpenSpec
Философия: "fluid not rigid, iterative not waterfall, built for brownfield not just greenfield". Минимальная церемония, максимальная итеративность.
Что добавляется в проект
your-project/
└── openspec/
├── config.yml # Конфигурация, профиль
└── changes/
├── add-dark-mode/ # Папка на каждое изменение
│ ├── proposal.md # Зачем делаем, что меняется
│ ├── specs/ # Требования и сценарии
│ ├── design.md # Техническое решение
│ └── tasks.md # Чеклист реализации
└── archive/
└── 2026-03-15-add-dark-mode/ # Завершённые изменения
Фазы и контрольные точки
- Propose (
/opsx:propose) - AI генерирует proposal.md, specs/, design.md, tasks.md за один проход. Контрольная точка: человек ревьюит и правит артефакты до перехода к реализации. Нет rigid gates - любой артефакт можно обновить в любой момент. - Apply (
/opsx:apply) - агент реализует tasks последовательно. Контрольная точка: каждый task отмечается как выполненный. - Archive (
/opsx:archive) - завершённая работа перемещается в archive/ с датой.
Расширенный workflow добавляет: /opsx:new (новая фича), /opsx:continue (продолжить прерванную работу), /opsx:verify (валидация), /opsx:sync (синхронизация артефактов с кодом).
Развитие артефактов
Ключевое отличие OpenSpec - "update any artifact anytime, no rigid phase gates". Proposal обновляется если scope изменился в ходе реализации. Design.md правится если реальность разошлась с планом. Specs дополняются новыми сценариями. После завершения - archive сохраняет финальное состояние для будущей референции.
Экспертиза по артефактам
Archive формирует историю всех изменений с контекстом (proposal = зачем, specs = что именно, design = как). Можно анализировать паттерны: какие типы изменений проходят гладко, где чаще расходятся plan и реальность, какие домены требуют больше итераций.
Несколько команд и sustainability
36K+ stars, за фреймворком Fission AI (организация с коммерческим Teams-предложением). Есть /opsx:onboard для onboarding новых участников. Команды поддерживаются через отдельный Slack-канал. Однако team-level конфигурация в monorepo не документирована - каждый проект получает свою директорию openspec/.
Spec Kit (GitHub)
Слоган Spec Kit: «specifications become executable - code serves specifications, not the other way around». Python CLI (Specify), 25+ поддерживаемых AI-агентов, расширяемая экосистема с 40+ community extensions.
Несмотря на принадлежность GitHub, Spec Kit - tool-agnostic. Поддерживает Claude Code, Cursor, Gemini CLI, Codex CLI, GitHub Copilot, Windsurf, Kiro CLI, Qwen Code, OpenCode, Amp, Roo Code и другие. Установка через specify init . --ai claude (или любой другой агент). Для неподдерживаемых агентов есть --ai generic.
Что добавляется в проект
your-project/
├── constitution.md # Принципы и стандарты проекта
└── specs/
└── 003-chat-system/ # Автонумерация + semantic name
├── spec.md # Спецификация (что и зачем)
├── plan.md # Технический план (как)
├── tasks.md # Декомпозированные задачи
├── data-model.md # Схема данных
├── contracts/ # API контракты
├── research.md # Исследование: библиотеки, бенчмарки
└── quickstart.md # Ключевые сценарии валидации
Фазы и контрольные точки
- Constitution (
/speckit.constitution) - принципы проекта: quality standards, performance requirements, UX consistency, архитектурные ограничения. Constitution - "законы", которым подчиняются все последующие артефакты. Обновляется редко. - Specification (
/speckit.specify) - описание что и зачем, без деталей реализации. Шаблон явно запрещает агенту писать про технический стек: "Focus on WHAT users need and WHY, avoid HOW to implement". Неопределённости маркируются[NEEDS CLARIFICATION]вместо угадывания. Автоматически создаётся feature branch и директория. Контрольная точка: spec.md ревьюится человеком, все[NEEDS CLARIFICATION]должны быть разрешены. - Planning (
/speckit.plan) - технический план: стек, архитектура, ключевые решения. Генерирует дополнительные артефакты: data-model.md, contracts/, research.md, quickstart.md. Каждый технический выбор ссылается на конкретное требование из spec. Контрольная точка: plan.md может быть заблокирован через extension Plan Review Gate - требует PR/MR approval до перехода к tasks. - Task Breakdown (
/speckit.tasks) - анализирует plan.md, data-model.md и contracts/ для генерации задач. Независимые задачи маркируются[P](параллелизуемые). Контрольная точка: tasks.md ревьюится. - Implementation (
/speckit.implement) - агент реализует задачи. Контрольная точка: extensions для post-implementation review (Verify, Staff Review, QA Testing).
Как артефакты эволюционируют
Spec Kit рассматривает спецификации как "living documents", а код - как "continuously regenerated output":
- Constitution - стабильный фундамент. Обновляется при стратегических изменениях (новый стек, новые архитектурные принципы). Все спецификации автоматически проверяются на соответствие constitution.
- Spec → Plan - однонаправленная зависимость. Изменение в spec.md автоматически флагирует затронутые технические решения в plan.md. Extension Iterate позволяет обновить spec mid-implementation и сразу вернуться к реализации.
- Drift detection - extension Reconcile обнаруживает расхождения между спецификацией и реализацией. Extension Spec Sync предлагает AI-assisted resolution с human approval.
- Post-implementation - extension Retrospective анализирует spec adherence (насколько код соответствует спецификации), предлагает обновления. Extension Archive перемещает завершённые фичи в project memory.
- Production feedback - метрики и инциденты из production становятся входными данными для обновления спецификаций. Баг в production - обновление acceptance criteria в spec, не просто hotfix.
Экспертиза по артефактам
Самая развитая экосистема для аналитики:
| Extension | Категория | Что делает |
|---|---|---|
| Understanding | docs | 31 метрика качества спецификаций по IEEE/ISO + energy-based ambiguity detection |
| Spec Critique | docs | Двойной анализ: product strategy + engineering risk |
| V-Model | docs | Парная генерация: dev spec → test spec с полной traceability |
| Verify Tasks | code | Обнаружение "phantom completions": задачи [X], но реализации нет |
| Staff Review | code | Staff-engineer-level review: spec compliance, security, performance |
| MAQA | process | Multi-Agent QA: параллельная реализация через worktree + автоматический QA |
| Fleet Orchestrator | process | Full lifecycle orchestration с human-in-the-loop gates |
| Jira / Linear / GitHub Projects | integration | Синхронизация спецификаций с task trackers |
Несколько команд и sustainability
84K+ stars - крупнейший фреймворк в категории. Принадлежит GitHub (Microsoft), ежедневная активная разработка. Самая богатая экосистема для multi-team: MAQA для параллельной реализации, Fleet Orchestrator для lifecycle, интеграции с пятью task trackers. Enterprise/air-gapped installation. Brownfield walkthroughs документированы: ASP.NET CMS (307K строк C#), Jakarta EE runtime (420K строк Java), Go/React dashboard. Де-факто стандарт в пространстве spec-driven development.
cc-sdd
Kiro-inspired workflow с явным brownfield path. 8 AI-агентов, 13 языков, кастомизируемые шаблоны.
Что добавляется в проект
your-project/
└── .kiro/
├── settings/
│ ├── templates/ # Кастомизируемые шаблоны
│ │ ├── requirements.md # Шаблон требований
│ │ ├── design.md # Шаблон дизайна
│ │ └── tasks.md # Шаблон задач
│ └── rules/ # Правила генерации для AI
├── steering.md # Контекст проекта (brownfield)
├── memory.md # Память между сессиями
└── specs/
└── photo-albums-en/
├── requirements.md # EARS-format требования
├── design.md # Архитектура + Mermaid-диаграммы
└── tasks.md # Задачи с зависимостями
Фазы и контрольные точки
Greenfield path:
spec-init- создать скелет спецификацииspec-requirements- сгенерировать требования в EARS-формате (Exceptional, Alternative, Real world, Specification)spec-design- архитектура с Mermaid-диаграммамиspec-tasks- декомпозиция с dependency trackingspec-impl- реализация
Brownfield path (ключевое отличие):
steering- описать существующий проект, стек, conventionsspec-init- создать спецификацию измененияvalidate-gap- агент анализирует gap между текущим состоянием и требованиями. Контрольная точка: результат валидации ревьюится человеком.spec-design- дизайн с учётом существующей архитектурыvalidate-design- агент проверяет что дизайн не ломает существующий код. Контрольная точка: результат ревьюится.spec-tasks- задачиspec-impl- реализация
Развитие артефактов
Шаблоны в templates/ кастомизируются под процессы команды один раз - дальше все агенты генерируют артефакты в едином формате. Memory.md накапливает контекст между сессиями: архитектурные решения, паттерны, стандарты. Steering.md обновляется при значительных изменениях в проекте.
Экспертиза по артефактам
EARS-формат требований (стандарт из automotive/aerospace) делает требования формально проверяемыми. Mermaid-диаграммы в design.md дают визуальную архитектуру. Dependency tracking в tasks.md показывает критический путь. Кастомизация шаблонов позволяет встроить специфичные для команды чеклисты и критерии.
Несколько команд и sustainability
3K stars, за фреймворком gotalab (японский разработчик, автор книги на Amazon). Явная поддержка команд: "Team-aligned templates - customize once, all agents output docs that fit your approval process." Шаблоны в .kiro/settings/templates/ кастомизируются под процесс команды. 8 AI-агентов с единым workflow. Последняя активность - март 2026. Совместим с Kiro IDE спецификациями (миграция между инструментами).
SPECTRE
Семь фаз по акрониму. Философия: "Great Inputs → Great Outputs" и "Ambiguity is Death". Создан за 12+ месяцев ежедневного использования Claude Code. Протестирован на кодовых базах до 250K строк.
Что добавляется в проект
your-project/
├── .spectre/
│ └── manifest.json
├── docs/tasks/
│ └── rate-limiting/ # Папка на каждую фичу
│ ├── specs/
│ │ ├── scope.md # Что делаем и что НЕ делаем
│ │ ├── ux.md # User flows и компоненты
│ │ ├── plan.md # Технический дизайн
│ │ ├── tasks.md # Задачи для исполнения
│ │ ├── code_review.md # Результаты code review
│ │ └── gaps.md # Обнаруженные пробелы
│ └── session_logs/ # Логи сессий (handoff)
│ ├── 2026-04-01_01.md
│ └── 2026-04-01_02.md
└── .claude/skills/
└── rate-limiting/
└── skill.md # Captured knowledge для будущих сессий
Фазы и контрольные точки
| Фаза | Команда | Что делает | Контрольная точка |
|---|---|---|---|
| Scope | /spectre:scope |
Интерактивный скоупинг: что строим, что НЕ строим, constraints | scope.md ревьюится человеком |
| Plan | /spectre:plan |
Исследование кодовой базы, технический дизайн | plan.md ревьюится, /spectre:handoff для чистого контекста |
| Execute | /spectre:execute |
Параллельная реализация через субагентов (wave-based delivery) | /spectre:validate верифицирует каждую задачу |
| Clean | /spectre:clean |
Deep cleanup: dead code, дубликаты, lint, logical commits | Все изменения коммитятся |
| Test | /spectre:test |
Risk-aware тестирование, субагенты пишут тесты | Test coverage |
| Rebase | /spectre:rebase |
Подготовка к merge с обработкой конфликтов | Clean merge |
| Evaluate | /spectre:evaluate |
Архитектурный review + knowledge capture | skill.md создан и зарегистрирован |
Развитие артефактов
Session logs - ключевой механизм. /spectre:handoff сохраняет snapshot текущей сессии. Субагент @spectre:sync объединяет последние 3 session logs в единую memory. При /clear новая сессия автоматически получает контекст предыдущих.
Skills - кумулятивная экспертиза. /spectre:evaluate после каждой фичи генерирует skill.md с gotchas, decisions, patterns, procedures. SessionStart hook при каждом запуске проверяет registry и инжектирует релевантные skills в контекст. Каждая следующая сессия умнее предыдущей.
Экспертиза по артефактам
Пять категорий captured knowledge:
- Gotchas - "websocket reconnect silently fails if..."
- Decisions - "chose SQLite over Postgres because..."
- Features - архитектурные досье: ключевые файлы, flows, типичные задачи
- Patterns - переиспользуемые решения, установленные в кодовой базе
- Procedures - deploy, release, migrate
/spectre:recall auth находит и загружает всё, что известно про auth. Gaps.md после validate - явный список того, что агент пропустил. Это данные для улучшения scope и спецификаций.
Несколько команд и sustainability
119 stars, автор - ex-Meta/Amazon PM, проект создавался как личный daily driver. Не рассчитан на multi-team из коробки: session logs и skills привязаны к одному пользователю. Однако skills в .claude/skills/ коммитятся в git и доступны всей команде. Session memory - индивидуальная. Для команды потребуется адаптация: shared skills + индивидуальные session logs.
IDD (Intent-Driven Development)
Не инструмент, а процессный фреймворк. Заменяет Agile-артефакты (Epic/Story/Task) на четырёхуровневую иерархию, оптимизированную для AI-агентов.
Что добавляется в проект (концептуально)
your-project/
└── specs/
├── products/
│ └── payment-system.md # Product (заменяет Epic)
├── intentions/
│ └── add-rate-limiting.md # Intention (заменяет Feature)
├── expectations/
│ └── rate-limit-429.md # Expectation (заменяет Acceptance Criteria)
└── specs/
└── impl-rate-limit.md # Spec (заменяет Story+Tasks, AI-ready)
Четыре уровня "chain of context"
| Уровень IDD | Заменяет в Agile | Назначение | Частота обновления |
|---|---|---|---|
| Product | Epic | Описание продукта/подсистемы на бизнес-языке | Редко |
| Intention | Feature | Что хотим изменить и зачем (intent, не реализация) | При новой фиче |
| Expectation | Acceptance Criteria | Конкретные ожидания с edge cases, testable утверждения | По мере обнаружения edge cases |
| Spec | Story + Tasks | AI-ready инструкция с явными Boundaries (что агент НЕ должен делать) | Одноразовый: написал → реализовал → закрыл |
Развитие артефактов
Products и Intentions - стабильные документы, обновляются при стратегических изменениях. Expectations дополняются по мере обнаружения edge cases (в том числе по результатам агентных сессий). Specs - одноразовые: написал → агент реализовал → spec закрыт. Но накопленные specs формируют базу знаний о том, как устроен каждый домен.
Экспертиза по артефактам
Spec quality - основная метрика производительности. Не velocity, не story points, а качество спецификаций. Измеряется: процент specs, выполненных агентом без эскалации; количество iterations до merge; частота boundary violations. Вводится continuous flow вместо спринтов, WIP limits вместо sprint capacity.
Несколько команд и sustainability
3 stars - концептуальный фреймворк, а не популярный инструмент. IDD не требует установки: это набор принципов и формат артефактов. Именно поэтому он легко масштабируется на несколько команд - каждая команда адаптирует четырёхуровневую иерархию под свой домен. Риск: автор может перестать поддерживать. Но поскольку IDD - процесс, а не код, зависимость от репозитория минимальна.
Сравнение и выбор
| Фреймворк | Порог входа | Brownfield | Артефакты | Контрольные точки | Knowledge capture |
|---|---|---|---|---|---|
| BMAD Method | Высокий | Scale detection | _bmad/, _bmad-output/ |
Implementation readiness check | Party Mode, project-context.md |
| OpenSpec | Низкий | Явная поддержка | openspec/changes/ |
Нет rigid gates, human review | Archive с полным контекстом |
| Spec Kit | Средний | Через extensions | constitution.md, specs/ |
Extension-based gates | 40+ extensions для аналитики |
| cc-sdd | Средний | validate-gap, validate-design | .kiro/specs/ |
Validation checkpoints | memory.md, steering.md |
| SPECTRE | Средний | Codebase research | docs/tasks/, skills/ |
validate + code_review | Skills auto-loading, session logs |
| IDD | Низкий | Overlay | specs/ (4 уровня) |
Spec quality | Накопленные specs |
Как выбрать:
- Быстрый старт с минимальным overhead → OpenSpec. Три команды (propose/apply/archive), итеративность, brownfield из коробки.
- Контроль на brownfield с legacy → cc-sdd. Validation checkpoints не дают агенту сломать существующий код.
- Расширяемая платформа → Spec Kit. Core минимален, 40+ extensions. Интеграции с Jira, Azure DevOps, GitHub Projects.
- Полный lifecycle для enterprise → BMAD Method. Модульная система, 34+ workflows, scale-adaptive.
- Ежедневный workflow для product builder → SPECTRE. Session memory, knowledge capture, субагенты.
- Изменить процесс, а не инструменты → IDD. Накладывается на любой стек. Spec quality как метрика.
Выбор фреймворка по размеру команды и зрелости
Разбор шести фреймворков выше отвечает на вопрос «что они умеют». Этот раздел отвечает на вопрос «что брать в моей конкретной ситуации». Главные оси выбора - размер команды, доля greenfield/brownfield-кода и зрелость существующего SDLC.
Solo operator или малая команда (1-3 человека, MVP/стартап)
Главный риск - утонуть в инструментарии вместо того, чтобы доставлять. Нужен фреймворк с минимальным overhead, без отдельной фазы tooling-onboarding.
- OpenSpec - три команды (propose/apply/archive), brownfield из коробки, нет rigid gates. Подходит, если команда уже привыкла к итеративной работе.
- SPECTRE - заточен под daily driver одного человека: session memory, knowledge capture в skills/, субагенты. Чем дольше используешь, тем лучше работает.
- Spec Kit с минимальным набором extensions - если позже планируется рост, начать сразу с расширяемой платформы дешевле, чем мигрировать.
Растущий стартап с несколькими командами (10-50 инженеров, 2-5 команд)
Главный риск - расхождение стилей между командами и отсутствие governance над общими rules. Нужен фреймворк, который поддерживает несколько проектов в одном репозитории и даёт точки входа для общих стандартов.
- Spec Kit - constitution.md как организационный контракт, шаблоны фаз одинаковы у всех команд, extensions добавляются по мере зрелости. Tool-agnostic - команды могут использовать разные агенты (Claude Code, Cursor, Codex) с одной общей spec-структурой.
- cc-sdd - явная фишка «Team-aligned templates: customize once, all agents output docs that fit your approval process». Подходит, если у команды уже есть устоявшийся approval-процесс, который нужно сохранить.
- IDD - не инструмент, а формат артефактов. Подходит, когда команды хотят разные технические инструменты, но единый процессный фундамент. Особенно полезен в переходе от Agile-практик (Epic → Product, Story → Spec).
Enterprise или регулируемая отрасль (50+ инженеров, compliance-требования)
Главный риск - конфликт между быстрыми итерациями spec-driven процесса и тяжёлыми требованиями к traceability, аудиту, согласованиям. Нужны явные approval-gates, integration с task-trackers и enterprise-installation.
- BMAD Method - 12+ ролей, 34+ workflows, scale-adaptive intelligence. Полный lifecycle, включая фазы Analysis и Planning с PRFAQ и PRD. Высокий порог входа, но максимальная структурированность; подходит, когда у компании уже есть PMO и формальный SDLC.
- Spec Kit + extensions - Plan Review Gate, Staff Review, MAQA, Fleet Orchestrator, интеграции с Jira/Azure DevOps/Linear. Brownfield walkthroughs документированы для крупных кодовых баз (ASP.NET CMS 307K строк, Jakarta EE 420K строк). Air-gapped установка для регулируемых сред.
- cc-sdd - validate-gap и validate-design между фазами; EARS-формат требований (стандарт automotive/aerospace) даёт формальную проверяемость. Логичный выбор для компаний, уже работающих в EARS или близких форматах.
Ось зрелости существующего SDLC
Размер команды - не единственный фактор. Не менее важна зрелость процесса до внедрения spec-driven подхода.
| Состояние SDLC до внедрения | Что брать сначала | Чего избегать |
|---|---|---|
| Нет регулярных code review, нет CI, тесты редкие | Базовая инфраструктура (CI, тесты, review) до любого фреймворка | Любой фреймворк - усилит хаос, а не уберёт его |
| Есть CI и review, но нет письменных спецификаций | OpenSpec или Spec Kit core, минимум extensions | BMAD - слишком тяжеловесно для команды без культуры spec |
| Есть acceptance criteria и/или OpenAPI-спецификации | Spec Kit с extensions для V-Model и Verify Tasks; IDD как процессный overlay | Игнорировать существующие spec-форматы и переписывать всё в новом формате |
| Есть PMO, формальный SDLC, регулярные аудиты | BMAD Method или Spec Kit с Fleet Orchestrator + Jira-интеграцией | Лёгкие фреймворки без явных gates - компания всё равно их добавит сверху, но менее консистентно |
Стилизованный пример решения по выбору
Это стилизованный пример на основе типичных паттернов, не описание конкретной компании. B2B SaaS, 80 инженеров, 8 продуктовых команд, средний стек (Go + React + Postgres), CI/CD есть, formal compliance отсутствует. Решение: Spec Kit как платформа во всех командах, core + extension Plan Review Gate для двух наиболее критичных команд (платежи, identity), интеграция с Linear (где уже живут задачи), constitution.md на уровне организации с обязательными принципами (test-first, security review для auth-кода) и слой принципов на уровне каждой команды. Через 2 квартала - оценка по spec quality score и lead time, по результатам решение - расширять extensions или остановиться на текущем наборе.
Анатомия AI-driven задачи: от идеи до merge
Разберём полный жизненный цикл продуктовой задачи. Пример: в Rails-приложении с парольной аутентификацией нужно добавить вход по passkey (WebAuthn). Задача нетривиальная: криптография, клиентский JavaScript, серверная валидация, миграции, обратная совместимость с существующими пользователями. Подробнее о самой технологии - в статье о passkey-аутентификации.
Шаг 1: Спецификация (Spec Author)
Spec Author создаёт структурированную спецификацию по шаблону фреймворка:
Feature: Passkey Authentication (WebAuthn)
Issue: PROJ-892
## What
Добавить вход по passkey как альтернативу паролю.
Регистрация passkey в настройках профиля, вход через
биометрию или PIN. Существующий парольный вход остаётся.
Fallback: если браузер не поддерживает WebAuthn или
пользователь потерял устройство - одноразовый код на email.
## Why
Фишинг-атаки на пользователей участились. Passkey устраняет
фишинг как вектор: приватный ключ привязан к домену и
не передаётся по сети.
## Constraints
- Аутентификация через собственный session controller
(без Devise, без Warden)
- PostgreSQL для хранения credentials
- Stimulus для клиентского JS (не React)
- Поддержка: Chrome, Safari, Firefox (последние 2 версии)
- Email-отправка через ActionMailer + существующий SMTP
## Acceptance Criteria
- Пользователь регистрирует passkey в профиле
- Вход по passkey с биометрией/PIN
- Парольный вход продолжает работать
- Один пользователь - несколько passkeys (ноутбук + телефон)
- Удаление passkey из профиля
- Fallback: кнопка "Войти по email" отправляет одноразовый
код (6 цифр, TTL 10 минут, одноразовый)
- Если у пользователя нет passkey - показывать только
пароль + email fallback
## Boundaries
- НЕ удалять парольную аутентификацию
- НЕ менять существующую модель User (добавить связанные)
- НЕ добавлять OAuth
- НЕ использовать Devise/Warden
- Только серверная валидация, НЕ полагаться на клиентские проверки
Спецификация сохраняется как файл в репозитории. Это источник правды для агента. Boundaries критичны: без них агент может "улучшить" существующий auth flow, сломав его для текущих пользователей.
Шаг 2: Валидация спецификации (Context Engineer)
Context Engineer проверяет готовность контекста:
- Есть ли в rules описание текущего session controller и auth flow? Если нет - дополнить, иначе агент может переизобрести аутентификацию.
- Знает ли агент про структуру Stimulus-контроллеров в проекте? Есть ли примеры?
- Описан ли формат миграций и conventions для новых таблиц?
- Описана ли конфигурация ActionMailer? Агенту нужно знать как отправлять email.
Пробелы закрываются до запуска агента. Каждый пробел, обнаруженный после провала агентной сессии - это потраченные токены и время.
Шаг 3: Агентная сессия (Agent)
Агент получает спецификацию и работает автономно. Вот что он реально делает на каждом этапе:
Анализ существующего кода:
- Читает session controller, находит паттерн аутентификации (bcrypt,
authenticate_by) - Изучает модель User, связи, callbacks
- Анализирует маршруты - находит
login,logout,profile - Смотрит существующие Stimulus-контроллеры для понимания паттернов
Миграции и модели:
- Создаёт
db/migrate/..._create_webauthn_credentials.rb- таблицаwebauthn_credentialsс полямиexternal_id,public_key,sign_count,nickname - Создаёт
db/migrate/..._create_email_auth_codes.rb- таблица для одноразовых кодов с полямиcode_digest,expires_at,used_at - Создаёт модели
WebauthnCredentialиEmailAuthCodeс валидациями иbelongs_to :user
Серверная логика:
WebauthnRegistrationsController- challenge generation, credential verification, сохранение public keyWebauthnSessionsController- authentication challenge, signature verification, session creationEmailAuthCodesController- генерация 6-значного кода, отправка через ActionMailer, верификация с проверкой TTL и одноразовости- Маршруты добавлены по паттерну проекта
Клиентская часть:
webauthn_registration_controller.js(Stimulus) - вызовnavigator.credentials.create(), передача attestation на серверwebauthn_auth_controller.js(Stimulus) - вызовnavigator.credentials.get(), передача assertion на сервер- Проверка
PublicKeyCredentialв браузере для показа/скрытия passkey-кнопки
Тесты:
- Request specs: регистрация passkey, вход по passkey, удаление, email fallback, edge cases (просроченный код, повторное использование кода)
- Model specs: валидации WebauthnCredential, EmailAuthCode, scope для неиспользованных кодов
Финализация:
- Запуск
bundle exec rspec- 3 падения, исправление (неправильный формат challenge в тесте) - Запуск
bundle exec rubocop- 2 замечания (длинный метод, неиспользуемая переменная), исправление - PR с описанием: что сделано, как тестировать вручную, ссылка на spec
Точка эскалации: агент спросил, нужно ли отправлять email через Sidekiq (async) или inline. Спецификация не описывала это. Context Engineer ответил: Sidekiq, как все остальные email в проекте. Это пробел в контексте - после задачи в rules добавили "email отправляется через deliver_later".
Шаг 4: Review (Reviewer)
Reviewer фокусируется на том, что агент не может оценить сам:
- Security - challenge generation действительно случайный? Origin validation корректна? Replay protection работает? Email-код хранится как digest, не plaintext?
- Обратная совместимость - существующие пользователи с паролями не затронуты? Новые миграции не ломают существующие данные?
- Edge cases - что если пользователь удалит единственный passkey и забудет пароль? (fallback на email работает). Rate limiting на отправку email-кодов? (агент не добавил - reviewer запрашивает доработку)
- Соответствие spec - не добавил ли агент OAuth "для удобства" в нарушение boundaries?
Шаг 5: Merge и обновление контекста
После merge в knowledge base добавляется: паттерн интеграции WebAuthn, структура Stimulus-контроллера для browser API, правило "email через deliver_later". Следующая задача с криптографией или browser APIs пройдёт быстрее - агент уже знает паттерны проекта.
Инфраструктура контекста: что нужно агенту для работы
Агент не помнит ничего между сессиями. Без подготовленного контекста он каждый раз начинает с нуля: не знает архитектуру, не знает conventions, не знает ограничения. Инфраструктура контекста - это набор файлов в репозитории, которые загружаются в контекстное окно агента при каждой сессии. Подробнее - в статье об инфраструктуре контекста и context engineering.
Минимальный пример на Claude Code (аналогичные механизмы есть в Cursor, Windsurf и других):
your-project/
├── CLAUDE.md # Конституция (загружается всегда)
└── .claude/
└── rules/
├── api-conventions.md # Загружается при работе с app/controllers/api/
├── migration-rules.md # Загружается при работе с db/migrate/
└── testing-patterns.md # Загружается при работе с spec/
Конституция: CLAUDE.md
Загружается в контекст каждой сессии. Содержит только то, что агент не может вывести из кода самостоятельно:
# Project
Ruby 3.1.2, Rails 7.0.4+, PostgreSQL 15, Redis 7.
Puma + Nginx. Docker Compose для деплоя.
## Architecture
- Controllers: `Web::` (HTML), `Api::V1::` (JSON), `Telegram::` (bot)
- Auth: собственный session controller, bcrypt, без Devise
- JS: Stimulus + Turbo, importmap (не webpack)
- Background jobs: Sidekiq
## Commands
```
bundle exec rspec # тесты
bundle exec rubocop # стиль
bundle exec rubocop -A # автофикс
bin/rails server # dev server
```
## Critical constraints
- SimpleCov requires 100% line coverage
- RuboCop max AbcSize is 17
- Email отправляется через deliver_later (Sidekiq)
- Не использовать raw SQL в контроллерах
Это ~30 строк. Правило: чем меньше конституция, тем больше места для рабочего контекста задачи. Если инструкцию можно вывести из кода (gem-версии, структура директорий) - не дублируй.
Rules: доменные правила
Загружаются автоматически, когда агент открывает файл в соответствующей директории. Пример .claude/rules/api-conventions.md:
---
paths:
- app/controllers/api/**
---
# API Conventions
- Namespace: `Api::V1::`
- Inherit from `Api::V1::BaseController`
- Response: JSON, camelCase keys
- Auth: API key в header `X-Api-Key`
- Errors: `{ error: "message" }`, HTTP status codes
- Pagination: Kaminari, `page` и `per_page` params
- Тесты: request specs в `spec/requests/api/v1/`
Когда агент работает с файлом в app/controllers/api/, harness автоматически инжектирует это правило в контекст. Агент не знает о существовании правила до момента инжекции - и не может его проигнорировать.
Несколько команд в одной кодовой базе
Если в организации уже работает domain ownership, инфраструктура контекста повторяет существующую структуру:
monorepo/
├── CLAUDE.md # Platform conventions (стек, CI/CD)
├── .claude/rules/
│ └── shared-conventions.md # Общие правила
├── payments/
│ ├── CLAUDE.md # Team conventions payments-команды
│ └── .claude/rules/
│ └── payment-rules.md # Правила домена
├── notifications/
│ ├── CLAUDE.md # Team conventions notifications-команды
│ └── .claude/rules/
│ └── notification-rules.md
└── shared/
└── .claude/rules/
└── shared-code-rules.md # Правила для кода без владельца
Агент, работающий в payments/, видит: корневой CLAUDE.md + payments/CLAUDE.md + payment-rules.md. Правила notifications-команды он не видит. Это те же границы, в которых работают люди - просто формализованные в файлах.
Управление задачами и контекстом снаружи
Инфраструктура контекста живёт в репозитории. Но задачи живут снаружи - в Jira, Linear, GitHub Issues. Разрыв между внешним backlog и spec-driven workflow - главная нерешённая проблема большинства фреймворков.
Текущее состояние
Большинство spec-driven фреймворков игнорируют внешние системы управления задачами. OpenSpec, SPECTRE, cc-sdd работают с артефактами в репозитории. Backlog management - "вне скоупа". На практике это создаёт две системы правды: менеджмент смотрит в Jira, агент работает со спецификациями в репозитории.
Исключение - Spec Kit: extensions для интеграции с Jira, Azure DevOps, GitHub Projects, Linear, Trello. Но даже они решают задачу синхронизации статусов, а не полной интеграции workflow.
Что предлагают task trackers
Трекеры задач двигаются навстречу AI-driven разработке:
- Jira - с февраля 2026 AI-агенты в Jira стали first-class team members. Агент может быть assignee на issue, его работа видна на sprint/kanban board рядом с человеческой. Rovo Dev превращает Jira work items в код. AI Work Breakdown декомпозирует эпики в подзадачи. Для spec-driven workflow: Spec Kit extensions (spec-kit-jira, spec-kit-maqa-jira) синхронизируют спецификации с Jira Epics, Stories и Tasks.
- Linear - CEO Linear объявил "issue tracking is dead". Linear Agent (март 2026): агенты - полноценные участники workspace, их можно assign на issues, упоминать в тредах. Code Intelligence позволяет нетехническим участникам спрашивать о фичах и системе. Интеграции с GitHub Copilot, Devin для цикла issue → code → tested PR. Активность агента видна в тех же project views, что и человеческая.
- GitHub Projects v2 - наиболее естественная интеграция: issues, PR и project board в одном месте. Spec Kit extension (spec-kit-maqa-github-projects) синхронизирует draft issues и статусы. Для команд, уже использующих GitHub - минимальный gap между spec workflow и task tracking.
Visibility для менеджмента
Ключевая проблема: менеджмент привык видеть прогресс через статусы задач в трекере. В AI-driven процессе задача может перейти из "To Do" в "Done" за час. Привычные сигналы прогресса (daily updates, sprint burndown) перестают работать.
Что работает вместо них:
- Spec → PR → Merge pipeline - автоматическое обновление статуса issue в трекере при каждом событии. Менеджмент видит не "задача в работе", а "спецификация написана → PR создан → review пройден → merged".
- Dashboard с метриками - lead time, spec quality score, количество задач в день. Заменяет velocity и burndown charts.
- Spec review как checkpoint - менеджмент может участвовать в review спецификаций (не кода). Это точка, где бизнес-контекст проверяется до начала работы агента.
Паттерн интеграции
- Issue в трекере - описание задачи на бизнес-языке, приоритет, привязка к эпику. Для менеджмента и планирования.
- Spec в репозитории - техническая спецификация, созданная по шаблону фреймворка. Ссылка на issue. Для агента.
- Агентная сессия - агент работает со спецификацией, формирует PR.
- PR - ссылка на issue и на spec. Review происходит здесь.
- Обновление issue - статус, время, метрики. Автоматизируется через CI/CD hooks.
Что автоматизируется
- Создание скелета spec из issue (шаблон + metadata из трекера)
- Обновление статуса issue при создании PR
- Линковка PR → issue → spec
- Сбор метрик (время от spec до merge, количество эскалаций)
Что остаётся ручным
- Написание самой спецификации (интеллектуальная работа)
- Приоритизация backlog
- Review результатов агента
- Архитектурные решения
Роли в новом SDLC
AI-driven SDLC не отменяет роли - он трансформирует их. Масштаб трансформации зависит от размера организации.
Solo Operator (1 человек)
Один инженер совмещает все роли: пишет спецификации, поддерживает инфраструктуру контекста, запускает агентов, ревьюит результат. Подходит для side-проектов, внутренних инструментов, MVP. Фреймворки SPECTRE и OpenSpec спроектированы именно под эту модель.
Ограничение: при росте сложности solo operator становится bottleneck на review и спецификациях. Один человек не может качественно ревьюить 10+ PR в день и одновременно писать спецификации для следующих задач.
Minimal Team (2 человека)
PM/Spec Author + Engineer/Operator. PM формулирует что делать и пишет бизнес-часть спецификации. Engineer дополняет технической частью, поддерживает контекст, ревьюит.
IDD Framework построен вокруг этой модели: Spec Author пишет Intentions и Expectations, Engineer переводит их в Specs с Boundaries и запускает агента.
Scaled Team (3-5 человек)
Spec Authors + Context Engineers + Reviewers. Каждый Context Engineer управляет несколькими агентными сессиями параллельно. Модель OpenAgentsControl: "Propose → Approve → Execute" с чёткими approval gates.
Enterprise (существующая оргструктура)
Существующие роли трансформируются:
| Классическая роль | Новая роль | Что меняется |
|---|---|---|
| Бизнес-аналитик | Spec Author | Структурированные спецификации вместо описаний в свободной форме |
| Разработчик | Context Engineer + Reviewer | Поддержка инфраструктуры контекста, review кода агента |
| Senior Developer | Context Architect | Проектирование rules, skills, knowledge base |
| QA | Acceptance Criteria Author + Validator | Testable criteria до реализации, валидация результата после |
| Tech Lead | Operator | Управление агентными сессиями, мониторинг метрик |
| DevOps | Без изменений | CI/CD + автоматизация spec → PR pipeline |
Шесть режимов провала при внедрении spec-driven SDLC
Spec-driven подход кажется очевидным улучшением: записали что хотим, агент сделал, проверили. На практике большинство команд, которые быстро объявили о переходе на spec-driven, через 2-3 квартала откатываются обратно к чату с агентом или вовсе к ручному коду. Причины повторяются. Ниже - шесть наиболее частых режимов провала и узнаваемые сигналы каждого.
1. Spec drift: спецификация и код расходятся
Самый распространённый паттерн. Spec написан, агент реализовал, через две недели в код внесены ручные правки или новый агентный прогон без обновления spec. Через месяц spec.md описывает один интерфейс, код реализует другой, тесты проходят на третьем. На этом этапе spec из контракта превращается в устаревшую документацию, и все начинают читать только код.
Сигналы. «Не верь spec, смотри код» в комментариях к PR. Агентные сессии завершаются «расхождениями со spec», но никто их не разрешает. Архив изменений (например, OpenSpec archive) пустой или давно не пополнялся. Антидот. Drift detection (Spec Kit Reconcile, аналогичные practices в OpenSpec через ручной audit), правило «изменение spec обязательно при любом изменении контракта», обязательная фаза archive после merge.
2. Documentation theater: spec есть, но никто его не использует
Команда внедрила spec-driven фреймворк, потому что «так делают». Spec пишется ради процесса, а не для агента. Шаблоны заполнены, контрольные точки пройдены, но реальная работа всё равно идёт через чат с агентом, где задача формулируется заново в свободной форме. Spec становится отчётным артефактом, который читают только при ретроспективах.
Сигналы. Spec.md содержит общие фразы вроде «реализовать функциональность согласно бизнес-требованиям». PR не ссылаются на spec, или ссылка формальная. Агент работает в IDE-чате, а не через команды фреймворка (/speckit.implement, /opsx:apply и аналоги). Антидот. Audit реальных PR за две недели: процент с явной ссылкой на spec и пройденными фазами фреймворка. Если ниже 70%, spec используется как театр.
3. Over-specification: spec тяжелее кода
Обратная крайность. Spec пишется так подробно, что время на написание спецификации превышает время реализации. Команда тратит дни на обсуждение формулировок acceptance criteria для двухдневной задачи. Возникает соблазн «давайте просто напишем код, а spec потом» - и это начинает работать чаще, чем нет.
Сигналы. Spec на типовую CRUD-задачу занимает 5+ страниц. На spec-фазу уходит больше времени, чем на implement. Команда жалуется, что «процесс задушил скорость». Антидот. Scale-adaptive подход (BMAD scale detection, минимальные шаблоны OpenSpec для bug fix), правило «spec не должен повторять boilerplate, который агент выведет из rules», обязательный лимит времени на фазу specify (например, 20% от ожидаемого implement-времени).
4. No validation gates: spec написан, но никто не ревьюит
Spec пишет один человек (часто автор задачи или Spec Author) и сразу запускает агента. Никто не проверяет полноту спецификации до того, как агент потратит токены и время. Половина агентных сессий заканчивается «нужны уточнения», что в корне противоречит идее автономной работы.
Сигналы. Метрика Agent Autonomy Rate ниже 50%. Эскалации от агента случаются на каждой второй задаче. Один и тот же тип неопределённостей всплывает снова и снова (например, «как обрабатывать ошибки»). Антидот. Обязательный peer review на фазе specify. Чек-лист готовности spec: все ли [NEEDS CLARIFICATION] разрешены, описаны ли error handling и edge cases, явно ли указаны Boundaries.
5. Tooling without process: spec-фреймворк без культуры использования
Команда установила Spec Kit, OpenSpec или другой фреймворк по инициативе одного энтузиаста. Файлы появились в репозитории, но нет договорённости когда их использовать. Часть команды работает по-старому, часть - по-новому. Spec-файлы накапливаются хаотично, часть - устаревшие, часть - дубли. Через квартал кто-то предлагает «удалить эту папку, всё равно никто не понимает что там».
Сигналы. Папка specs/ или openspec/ содержит файлы без обновлений за месяц+. Новые сотрудники не получают инструкции по использованию фреймворка во время онбординга. Нет owner-а у фреймворка - никто не отвечает за rules, шаблоны, обновления. Антидот. Назначить явного owner-а инфраструктуры контекста на старте. Включить spec-driven-процесс в onboarding и в Definition of Done. Обзор и чистка spec-структуры каждый квартал.
6. Single-author spec: спецификация одного человека
Все spec пишет один senior-инженер или Spec Author. Остальная команда работает «исполнителями» - запускает агентов и ревьюит код. Бутылочное горлышко смещается с написания кода (где раньше была проблема) на написание спецификаций. Single-author spec ещё и не получает peer-review, потому что автор - самый компетентный человек в команде по этому домену.
Сигналы. 80%+ spec-файлов в репозитории - от одного автора. Время от создания issue до начала агентной сессии растёт. Spec Author жалуется на перегрузку, остальная команда - на скуку. Антидот. Постепенное расширение круга авторов через парные сессии (опытный Spec Author + новичок). Шаблоны и чек-листы, которые делают первый spec безопасным для новичка. Метрика - доля spec-файлов от non-primary автора.
Связь между режимами провала
Эти шесть паттернов часто появляются вместе. Single-author spec приводит к over-specification (потому что автор перестраховывается). Over-specification приводит к documentation theater (потому что команда устаёт читать длинные spec). Theater приводит к no validation gates (зачем ревьюить то, что никто не использует). Без gates растёт spec drift, и через квартал команда говорит «spec-driven у нас не работает».
Внедрение в существующую организацию
Переход на AI-driven SDLC - не переключатель, а градиент. Попытка перевести всю команду на новый процесс за спринт закончится откатом.
Шаг 1: Аудит текущего SDLC
Зафиксировать текущий процесс и найти точку входа:
- Value stream mapping - проследить 5-10 последних задач от идеи до production. Зафиксировать время на каждом этапе и между этапами. Где самые длинные ожидания?
- Типизация задач - какие категории задач повторяются? CRUD, интеграции, bug fixes, рефакторинги? Какой процент задач достаточно формализуем для спецификации?
- Handoff analysis - сколько раз задача переходит между людьми? Какой контекст теряется при каждой передаче?
- Текущий инструментарий - какие AI-инструменты уже используются? Copilot в IDE? ChatGPT для вопросов? Как это влияет на метрики?
На этом этапе важно договориться о базовых метриках: lead time, change failure rate, время review. Они понадобятся для сравнения "до" и "после".
Шаг 2: Инфраструктура контекста
До первой агентной задачи должна быть базовая инфраструктура:
- Конституция проекта - CLAUDE.md (или эквивалент) с описанием стека, архитектурных соглашений, команд сборки и тестирования
- Rules для критических доменов - минимум для тех директорий, где будет работать агент на пилоте
- Шаблон спецификации - согласованный формат, который будут использовать все участники
- Определение Definition of Done - что считается завершённой агентной задачей: тесты зелёные, rubocop чистый, PR создан, spec requirements выполнены
Обсудить с командой: какие conventions не зафиксированы в коде и существуют только в головах? Именно они должны попасть в rules первыми.
Шаг 3: Пилот на одном типе задач
Выбрать категорию задач с двумя свойствами: повторяемость и чёткие boundaries. Примеры: CRUD-эндпоинты, стандартные миграции, bug fixes с воспроизводимым сценарием, добавление валидаций или бизнес-правил.
Один-два инженера работают по новому процессу, остальная команда - по старому. Фиксировать: lead time каждой задачи, количество эскалаций от агента, время review, количество итераций до merge, причины каждой эскалации (пробел в контексте? неточная спецификация? ограничение агента?).
Шаг 4: Расширение scope
По результатам пилота провести ретроспективу:
- Какие типы задач показали наибольшее ускорение?
- Какие спецификации работали, какие приводили к эскалациям?
- Где агент эскалировал чаще всего? Каждая эскалация - пробел в контексте или спецификации, который нужно закрыть.
- Как изменился lead time по сравнению с базовыми метриками из шага 1?
- Какие concerns у команды: качество кода, скорость review, понимание сгенерированного кода?
На основе ретроспективы: расширять scope задач, дополнять инфраструктуру контекста, формализовать шаблоны спецификаций для новых типов задач.
Шаг 5: Масштабирование на организацию
Когда процесс стабилен на одной команде и метрики подтверждают эффект:
- Организационные стандарты - shared rules и conventions, общий шаблон конституции проекта
- Обучение - program для Spec Authors (как писать спецификации) и Context Engineers (как поддерживать инфраструктуру контекста)
- Метрики на уровне организации - dashboard с lead time, spec quality score, agent autonomy rate по командам
- Governance - кто владеет организационными rules? Как разрешаются конфликты между командными и организационными conventions?
- Бюджетирование - прогноз расходов на API токены при масштабе, сравнение со стоимостью инженерного времени
Барьеры внедрения и как с ними работать
Потеря прозрачности. Менеджмент привык видеть прогресс через Jira-статусы и standup-отчёты. Когда агент делает работу за минуты вместо дней, привычные сигналы прогресса исчезают. PR появляется "из ниоткуда", и непонятно что за ним стоит - час работы или пять минут.
Как работать: spec-driven workflow создаёт более прозрачный audit trail, чем классический процесс. Каждая задача имеет спецификацию (что делаем и зачем), PR с diff (что сделано), и метрики (время, эскалации). Dashboard с этими данными даёт менеджменту больше visibility, чем Jira-статусы.
Страх потери контроля над кодом. Код пишет агент, а не человек. Кто отвечает за качество? Кто понимает что в нём происходит? Если агент сгенерировал 500 строк - кто-то вообще их читал?
Как работать: в spec-driven процессе review - обязательный gate. Но review AI-generated кода отличается от review человеческого. Код структурно чистый (агент следует rules), проблемы - в логике и edge cases. Это другой навык review, и его нужно развивать. Автоматизированные проверки (тесты, линтер, security scanning) закрывают механические аспекты. Человек фокусируется на том, что автоматизация не ловит: архитектурная корректность, бизнес-логика, security implications.
Неопределённость ролей. "Я senior developer, теперь я Context Engineer - это повышение или понижение? Что конкретно я делаю каждый день?" Без ответа на этот вопрос люди саботируют процесс или уходят.
Как работать: начинать с пилота, где 1-2 инженера пробуют новую модель добровольно. Они становятся internal champions и показывают команде как это выглядит на практике. Явно описать ежедневные задачи для каждой роли: Context Engineer утром проверяет очередь спецификаций, запускает агентные сессии, ревьюит результаты, дополняет knowledge base. Это не абстрактная трансформация - это конкретный рабочий день.
Compliance и security concerns. В регулируемых отраслях (финтех, медтех) код должен проходить аудит. AI-generated код вызывает вопросы: можно ли его сертифицировать? Кто несёт ответственность за уязвимости?
Как работать: spec-driven процесс упрощает аудит, а не усложняет. Каждый фрагмент кода имеет спецификацию (требования), PR (review), тесты (верификация). Traceability от требования до реализации полнее, чем в классическом SDLC. Security scanning в CI ловит типовые уязвимости. Permission system ограничивает что агент может делать (нет доступа к production, нет push без approval).
Сопротивление "это не мой код". Инженеры, которые гордятся craftsmanship, воспринимают AI-generated код как чужеродный. "Я бы написал это иначе" - частая реакция на review.
Как работать: правила в rules и constitution определяют стиль кода. Если команда хочет определённые паттерны - они описываются в rules, и агент им следует. Код становится "кодом команды, написанным по правилам команды" - просто написанным быстрее. Review - момент, где инженер влияет на результат.
Метрики: как понять, что работает
DORA в контексте AI-driven SDLC
Четыре метрики DORA остаются релевантными, но их интерпретация меняется:
- Deployment Frequency - должна расти. Агенты генерируют код быстрее, merge cycle короче.
- Lead Time for Changes - ключевая метрика. В классическом SDLC основная часть lead time - ожидание. В AI-driven - время спецификации + агентная сессия + review. Если lead time не сократился - процесс не работает.
- Change Failure Rate - индикатор качества спецификаций. Высокий CFR означает: спецификации не покрывают edge cases, или review пропускает проблемы.
- Time to Restore Service - агенты могут помогать с hotfixes (быстрая диагностика + fix по спецификации инцидента).
Специфичные метрики AI-driven SDLC
| Метрика | Что измеряет | Целевой показатель |
|---|---|---|
| Spec Quality Score | Процент агентных сессий без эскалации | 70-80% (100% = задачи слишком простые) |
| Agent Autonomy Rate | Соотношение автономной работы к общему времени | Растёт по мере улучшения контекста |
| Context Coverage | Процент кодовой базы, покрытый rules и knowledge base | Покрывать частые домены, не стремиться к 100% |
| Cost per Task | Токены + инженерное время vs. классический SDLC | Ниже полной стоимости задачи без агентов |
Риски и ограничения
Что агенты не умеют
- Архитектурные решения - агент может предложить решение, но не может оценить его в контексте roadmap, бизнес-стратегии, team capabilities. Архитектура остаётся за людьми.
- Product decisions - "что делать" - задача людей. "Как делать" - задача агента с хорошей спецификацией.
- Нестандартные интеграции - чем уникальнее задача, тем хуже работает агент. Внутренние API без документации, legacy-системы с неявными контрактами.
- Cross-system reasoning - агент работает в рамках одного репозитория. Задачи, требующие понимания взаимодействия 5 сервисов - пока для людей.
Security
Агент имеет доступ к кодовой базе и может выполнять команды. Это attack surface: prompt injection через данные, которые агент читает (issue descriptions, API responses); случайное включение секретов в commits; генерация кода с уязвимостями (SQL injection, XSS).
Минимизация: permission system (агент не может push без approval), security-focused rules в инфраструктуре контекста, automated security scanning в CI.
"Чёрный ящик": код, который никто не понимает
Через несколько месяцев активной генерации кода агентами команда может обнаружить, что никто не понимает, как работают отдельные модули. AI генерирует код, который проходит тесты и review, но при отладке оказывается сложнее, чем написанный человеком: неочевидные зависимости, неявные контракты между компонентами, пропущенные edge cases.
Spec-driven подход снижает этот риск: спецификация документирует зачем код написан, boundaries определяют scope, review фокусируется на логике. Но риск остаётся, особенно если review формальный. Практика: после merge сложных фич обновлять knowledge base с описанием архитектурных решений и нетривиальных паттернов.
Стоимость при масштабе
Агентная сессия на крупной задаче - тысячи вызовов API, миллионы токенов. При команде из 10 context engineers, каждый из которых запускает 5-10 сессий в день, счёт за API измеряется тысячами долларов в месяц. Это дешевле зарплат, но требует бюджетирования и мониторинга.
Качество кода при масштабном adoption
Данные из индустрии за 2025-2026:
- AI-generated код вносит в 1.7x больше issues, чем написанный человеком (Sonar)
- Static analysis warnings растут на 30% после adoption AI, сложность кода - на 41%
- Change failure rate увеличивается на 30%, инциденты на PR - на 23.5%
- DORA 2025: +9% багов и +91% времени code review при 90% adoption
Эти цифры - следствие плохого процесса, а не агентов как таковых. Команды, которые «просто включили Copilot» без spec-driven workflow, получили больше кода и больше проблем. Spec-driven подход работает в обратную сторону: спецификация ограничивает scope, rules обеспечивают conventions, тесты и линтер ловят механические ошибки.
Практический пример
Hublix - платформа процессных AI-агентов в Telegram. Python-монорепозиторий с OpenSpec. Разберём как выглядит реальная задача в spec-driven процессе.
Инфраструктура проекта
hublix/
├── CLAUDE.md # Конституция: стек, архитектура, trigger tables
├── .claude/agents/ # Специализированные агенты по доменам
│ ├── orchestration-specialist.md
│ ├── identity-specialist.md
│ ├── state-engine-specialist.md
│ ├── frontend-specialist.md
│ ├── infra-specialist.md
│ └── pr-reviewer.md
├── .claude/rules/
│ ├── testing.md # 100% coverage, pytest conventions
│ ├── design.md # OpenSpec proposal до кода
│ └── security.md # 152-ФЗ, валидация, секреты
├── openspec/
│ ├── specs/ # Tier 3: холодная память по подсистемам
│ │ ├── auth-flows/
│ │ ├── orchestration-pipeline/
│ │ ├── tenant-isolation/
│ │ └── ...
│ └── changes/ # Активные и архивные изменения
│ ├── yookassa-payments/ # В работе
│ └── archive/
│ └── 2026-04-01-tenant-balance-credits/
├── services/ # 4 микросервиса
│ ├── identity/ # Auth, tenants, balance
│ ├── messaging/ # Webhook gateway
│ ├── orchestration/ # FSM + LLM
│ └── scheduler/ # Cron jobs
├── libs/ # Shared code
│ ├── db/ # SQLAlchemy, Alembic, repos
│ └── shared/ # Pydantic types
└── apps/ # React UI
├── admin/ # Tenant admin
└── backstage/ # Platform admin
Конституция (CLAUDE.md) содержит trigger tables - автоматическую маршрутизацию агентов: при изменении файлов в services/orchestration/ подключается orchestration-specialist, при работе с services/identity/ - identity-specialist. Правило #9: "Use OpenSpec for planning - /opsx:propose before implementing non-trivial changes".
Реальная задача: Tenant Balance & Credits
Задача: добавить систему баланса в рублях, чтобы контролировать расход LLM-токенов по тенантам. Каждый вызов YandexGPT стоит денег, и тенанты должны работать только пока баланс положительный.
1. Proposal (/opsx:propose)
OpenSpec сгенерировал proposal.md с ключевыми решениями:
- Рубли, не абстрактные кредиты - тенанты видят "у вас 500₽ на балансе", не "у вас 500 credits"
- Immutable transaction ledger - баланс = SUM(credits) - SUM(debits), никогда мутабельный счётчик
- Materialized balance с CHECK constraint -
balance >= 0на уровне БД, предотвращает овердрафт даже при конкурентных запросах - Pre-check + post-deduct - проверка до вызова LLM (не тратить токены впустую), списание после (по реальному расходу)
- Identity owns the ledger - баланс принадлежит домену тенантов, orchestration вызывает internal API
Proposal также определил scope (11 пунктов) и out of scope (YooKassa, per-tool pricing, analytics - будущие фазы). Это те самые boundaries, которые не дают агенту "улучшить" задачу.
2. Design
Агент сгенерировал design.md с полной технической спецификацией. Ключевые артефакты:
Схема данных - две таблицы в identity schema:
balance_transactions (append-only ledger)
───────────────────────────────────────────
id UUID PK
tenant_id UUID FK → tenants.id
type VARCHAR(20) -- initial_grant | topup | usage | adjustment
amount INTEGER -- копейки: положительное = credit, отрицательное = debit
reference_type VARCHAR(50) -- turn | manual | system
reference_id VARCHAR(255) -- turn_id, admin user_id, etc.
memo TEXT -- "Ручное пополнение", "LLM usage: 347 tokens"
created_at TIMESTAMPTZ
tenant_balances (materialized cache)
───────────────────────────────────────────
tenant_id UUID PK FK → tenants.id
balance INTEGER DEFAULT 0 -- копейки
updated_at TIMESTAMPTZ
CHECK (balance >= 0) -- предотвращает овердрафт на уровне БД
API контракты - два уровня доступа:
Internal (без JWT, K8s network trust):
POST /internal/balance/check {tenant_id, estimated_kopecks: 40}
→ {allowed: true, balance: 48500}
POST /internal/balance/deduct {tenant_id, amount_kopecks: 28, turn_id}
→ {balance: 48472}
Backstage (JWT required):
GET /backstage/tenants/{id}/balance → {balance_rub: "484.72", ...}
POST /backstage/tenants/{id}/topup {amount_rub: "100.00", memo: "..."}
GET /backstage/tenants/{id}/transactions → paginated list
Sequence diagram - агент создал docs/diagrams/balance-credit-flow.puml с четырьмя сценариями:
Сценарий 2: Входящее сообщение - balance check + deduct
User → Telegram → Messaging → Orchestration Worker → Identity Service → PostgreSQL
1. User отправляет "Привет" в Telegram
2. Webhook → Messaging → ARQ job → Orchestration Worker
3. Worker → Identity: POST /internal/balance/check {estimated_kopecks: 40}
4. Identity → DB: SELECT balance FROM tenant_balances
5. Identity → Worker: {allowed: true, balance: 48000}
6. Worker: FSM + LLM processing (tokens_used = 347)
7. Worker → Identity: POST /internal/balance/deduct {amount_kopecks: 28, turn_id}
8. Identity → DB: INSERT balance_transaction (-28) + UPDATE tenant_balances
9. Worker → Telegram: ответ пользователю
Сценарий 3: Баланс исчерпан
...шаги 1-4...
5. Identity → Worker: {allowed: false, balance: 0}
6. Worker → Telegram: "Баланс исчерпан" (LLM не вызывается)
Design также описал error handling (fail-open при недоступности Identity), конфигурацию (4 env variables) и future extensibility (YooKassa, per-tool pricing, analytics - без изменения схемы).
3. Tasks (/opsx:apply)
tasks.md - 11 задач. Каждая - атомарная единица работы для одной агентной сессии. Порядок определён зависимостями:
- [x] 1. ORM-модели BalanceTransaction + TenantBalance + Alembic-миграция
(включая initial_grant для существующих тенантов) + тесты
- [x] 2. BalanceTransactionRepository + TenantBalanceRepository
+ wire в BackstageUnitOfWork и APIUnitOfWork + тесты
- [x] 3. BalanceService: get_balance, get_balance_summary, create_initial_grant,
topup (₽ string → копейки), record_usage, list_transactions + тесты
- [x] 4. Internal API: POST /internal/balance/check, POST /internal/balance/deduct
(копейки, без JWT) + тесты
- [x] 5. Backstage API: GET balance (₽), POST topup (₽ input → копейки),
GET transactions (paginated) + тесты
- [x] 6. Wire initial_grant в tenant creation flow (auth_service +
backstage_auth_service) + IdentityConfig + тесты
- [x] 7. BalanceChecker protocol + HttpBalanceChecker в Orchestration +
balance gate в IncomingMessageProcessor (pre-check + post-deduct,
token → копейки conversion) + config + тесты
- [x] 8. Backstage UI: баланс в ₽ на tenant detail, topup modal,
transaction history tab
- [x] 9. PlantUML sequence diagram: docs/diagrams/balance-credit-flow.puml
- [x] 10. Update ERD: docs/diagrams/erd-data-model.puml
- [x] 11. Full quality gates: ruff check + ruff format + pytest --cov-fail-under=100
Агент выполнял задачи последовательно. Задачи 1-3 - фундамент (модели, репозитории, сервис). Задачи 4-6 - API слой. Задача 7 - интеграция между сервисами (Orchestration вызывает Identity). Задача 8 - UI. Задачи 9-11 - документация и quality gates.
В процессе выполнения задачи 7 агент обнаружил, что IncomingMessageProcessor не имел injection point для внешних зависимостей. Агент добавил BalanceChecker protocol и HttpBalanceChecker implementation, следуя dependency injection паттерну, который уже использовался в проекте для других internal clients. Это решение не требовало эскалации - агент нашёл паттерн в кодовой базе самостоятельно.
4. Результат и архивация
После completion - /opsx:archive:
openspec/changes/archive/2026-04-01-tenant-balance-credits/
├── proposal.md # Зачем, scope, out of scope, key decisions, future phases
├── design.md # Схема данных, API контракты, sequence diagram, config
└── tasks.md # 11 задач, все [x]
Артефакты сохранены для будущей референции. Когда через месяц нужно понять почему баланс в копейках, а не рублях - ответ в proposal.md, ключевое решение #1: "Rubles, not credits - no abstract unit conversion. Tenants see real money."
Следующая задача в pipeline - YooKassa payments - уже в openspec/changes/yookassa-payments/. Её proposal ссылается на Phase 2 из balance proposal. Design использует balance_transactions с reference_type='yookassa' - расширение, которое было заложено в design предыдущей задачи (раздел "Future Extensibility"). Контекст передаётся через артефакты, не через чат-историю.
Что показывает этот пример
- Proposal определяет boundaries - без раздела "Out of Scope" агент мог бы сразу добавить YooKassa, per-tool pricing и аналитику. Proposal явно ограничил scope, и агент работал в рамках.
- Design фиксирует решения до кода - "копейки вместо float", "CHECK constraint на уровне БД", "Identity owns the ledger". Эти решения приняты человеком, агент реализовал.
- Tasks - атомарные единицы - каждая задача выполнима за одну агентную сессию. Агент не должен удерживать контекст всей фичи - только текущей задачи + design.
- Archive сохраняет контекст - когда через месяц нужно понять почему баланс в копейках, а не рублях - ответ в proposal.md, ключевое решение #1.
- Фичи связаны через phases - YooKassa payments ссылается на Phase 2 из balance proposal. Цепочка задач формируется из артефактов, не из Jira-описаний.
- Quality gates обязательны - каждая задача завершается
ruff check + ruff format + pytest --cov --cov-fail-under=100. Без зелёного CI задача не закрыта.
Источники и смежные статьи
Историческая рамка SDLC
- Winston W. Royce. «Managing the Development of Large Software Systems». Proceedings of IEEE WESCON, август 1970. Канонический waterfall - и одновременно его критика, которую обычно забывают.
- Barry Boehm. «A Spiral Model of Software Development and Enhancement». ACM SIGSOFT Software Engineering Notes, август 1986; переиздана в IEEE Computer, май 1988. Первая широко принятая итеративная альтернатива waterfall.
- Barry Boehm. Software Engineering Economics. Prentice-Hall, 1981. Экспоненциальный рост стоимости поздно обнаруженных дефектов.
- Agile Manifesto. Февраль 2001. 17 авторов, четыре ценности, двенадцать принципов.
- Kent Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley, 1999. XP как операционализация Agile-ценностей.
- Jez Humble, David Farley. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley, 2010. CD как разрушение последнего handoff внутри инженерии.
Spec-driven родословная
- Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall, 1-е издание 1988, 2-е расширенное 1997. Design by Contract, исходная формулировка идеи «спецификация - часть программы».
- Kent Beck. Test-Driven Development: By Example. Addison-Wesley, 2002. Канонизация red-green-refactor.
- Dan North. «Introducing BDD». Better Software, март 2006. Перевод TDD на язык поведения.
- Tony Tam, OpenAPI Initiative (Linux Foundation, с 2015). OpenAPI Specification. Spec-as-API как первичный артефакт.
- Brandur Leach. «API Paradigms» и серия публикаций о Stripe API на brandur.org. Внутренняя практика OpenAPI как source of truth.
Эпоха агентов
- Andrej Karpathy. «Software 2.0». Medium, ноябрь 2017. Первая широко обсуждаемая попытка пересмотреть SDLC как инвариант человеческого автора.
- Anthropic. «Building Effective Agents». Декабрь 2024. Workflows vs agents, паттерны проектирования (prompt chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer).
- Anthropic Claude Code SKILL.md system. 2025. Переиспользуемые навыки с frontmatter-метаданными и автоматической инжекцией по триггерам.
- DORA Report 2025. Google. Количественное измерение последствий наивного adoption AI-инструментов: +9% багов, +91% времени code review при 90% adoption.
Spec-driven фреймворки
- BMAD Method. 12+ ролей, 34+ workflows, scale-adaptive intelligence, модульная система расширений.
- OpenSpec. «Fluid not rigid, iterative not waterfall, built for brownfield».
- Spec Kit (GitHub). Tool-agnostic, 25+ поддерживаемых агентов, 40+ extensions, brownfield walkthroughs на крупных кодовых базах.
- cc-sdd. Kiro-inspired workflow с явным brownfield path, EARS-формат требований, team-aligned templates.
- SPECTRE. Семь фаз (Scope, Plan, Execute, Clean, Test, Rebase, Evaluate), session memory, knowledge capture в .claude/skills/.
- IDD (Intent-Driven Development). Процессный фреймворк, четырёхуровневая иерархия Product → Intention → Expectation → Spec.
- Kiro. AWS-IDE, родоначальник cc-sdd-workflow.
Качество AI-generated кода и метрики
- Sonar. Исследование 2024-2025 о качестве AI-generated кода: в 1.7x больше issues по сравнению с человеческим кодом.
- Static analysis warnings +30%, code complexity +41% после adoption AI-инструментов - данные индустриальных отчётов 2025-2026.
- Nicole Forsgren, Jez Humble, Gene Kim. Accelerate. IT Revolution Press, 2018. Базовая методология DORA.
- Dominica DeGrandis. Making Work Visible. IT Revolution Press, 2017. Экономика очередей и времени ожидания, релевантна для понимания «зачем убирать handoffs».
Смежные статьи блога
- Spec Kit - детальный разбор Spec Kit, включая лестницу DbC → TDD → BDD → spec-as-API → SDD.
- Контекст-инжиниринг - как устроена инфраструктура контекста, которую агент использует на каждой сессии.
- Текущее состояние агентного кодинга - срез по способностям агентов и их ограничениям.
- Passkey-аутентификация - предметный пример задачи, на которой разобрана анатомия AI-driven цикла.
- Системный менеджмент - почему структура команд определяет, как ляжет spec-driven процесс.
- DORA и SPACE метрики - метрики, на которых измеряется эффект внедрения.