Learn (Almost) Anything
КаталогСкачать курс

От промптов к спекам с AI-агентами

Почему ad-hoc промпты разваливаются на втором-третьем запросе: агент достраивает пробелы своими догадками, а у Cursor и Claude Code нет общего источника правды. Что такое spec-first и цикл Constitution → Specify → Plan → Tasks → Implement. Заводим репозиторий pet-проекта, папку /specs и первый CLAUDE.md (или rules в Cursor) как постоянный контекст.

ruМини-курс6 уроков1 модуль8
Spec Driven DevelopmentAI-агентамиSpec Driven Development на выходныхот спеки до приёмкиspecdrivendevelopmentпромптовспекамагентами

Зачем спека, если есть промпт

Почему ad-hoc промпты разваливаются на втором-третьем запросе: агент достраивает пробелы своими догадками, а у Cursor и Claude Code нет общего источника правды. Что такое spec-first и цикл Constitution → Specify → Plan → Tasks → Implement. Заводим репозиторий pet-проекта, папку /specs и первый CLAUDE.md (или rules в Cursor) как постоянный контекст.

Зачем спека, если есть промпт

Открываете новый чат в Claude Code, пишете развёрнутый промпт — и агент генерирует отличный стартер. Закрываете сессию. На следующий день открываете новую и просите добавить авторизацию. Агент уверенно предлагает хранить сессии в Redis — хотя вчера вы обсуждали JWT и договорились обойтись без сессий. Через два запроса он пишет fetchUser() рядом с уже существующей getUserById().

Это не глюк — это предсказуемое следствие одного факта: промпт исчезает вместе с сессией.

Каждая новая сессия — чистый лист: агент не помнит договорённостей из предыдущего чата.

Почему агент достраивает пробелы

У Cursor и Claude Code нет долгосрочной памяти о проекте между сессиями. При старте каждого нового чата агент видит только то, что лежит у него в контексте прямо сейчас. Нет ничего — значит, пробелы заполняются лучшими догадками.

Три симптома, которые появляются уже на третьем-четвёртом запросе:

  • Дрейф решений — агент забывает про договорённости по стеку и предлагает альтернативы «потому что так проще».
  • Дубли с вариацией — похожая функция пишется заново под другим именем, потому что агент не знает, что такая уже есть.
  • Молчаливые допущения — вы не описали edge-case, агент придумал что-то сам, и это «что-то» меняется от сессии к сессии.

Промпт — отличный инструмент для одного шага. На проект целиком он не масштабируется.

Spec-first: один источник правды

Идея SDD простая: решения фиксируются в текстовых файлах в репозитории до того, как агент начинает писать код. Эти файлы становятся общим источником правды — для вас, для продакта или аналитика и для агента.

Когда агент стартует новую задачу, вы кладёте ему в контекст не только промпт, но и спеку. Теперь у него есть «память» — не в голове, а в файловой системе проекта.

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

Файл спеки в репозитории — общий источник правды для разработчика и AI-агента.

Цикл SDD: от конституции до кода

В SDD пять этапов, которые идут по кругу:

flowchart TD C["Constitution<br/>CLAUDE.md / .cursor/rules"] --> S["Specify<br/>спека в /specs/"] S --> P["Plan<br/>план реализации"] P --> T["Tasks<br/>tasks.md"] T --> I["Implement<br/>агент пишет код"] I --> A{"Приёмка<br/>по спеке"} A -->|"принято"| D["Done"] A -->|"дрейф / новое"| S style C fill:#4a4f8a,color:#fff style D fill:#2d6a4f,color:#fff
flowchart TD
    C["Constitution<br/>CLAUDE.md / .cursor/rules"] --> S["Specify<br/>спека в /specs/"]
    S --> P["Plan<br/>план реализации"]
    P --> T["Tasks<br/>tasks.md"]
    T --> I["Implement<br/>агент пишет код"]
    I --> A{"Приёмка<br/>по спеке"}
    A -->|"принято"| D["Done"]
    A -->|"дрейф / новое"| S
    style C fill:#4a4f8a,color:#fff
    style D fill:#2d6a4f,color:#fff
Цикл SDD: Constitution — постоянная основа, остальные этапы повторяются для каждой фичи
  • Constitution («конституция») — файл CLAUDE.md (для Claude Code) или .cursor/rules/project.mdc (для Cursor). Описывает стек, соглашения по коду и неизменные принципы проекта. Агент читает его при каждом запуске автоматически.
  • Specify — спека конкретной фичи: что должна делать, каковы граничные случаи, что считается «готово». Живёт в /specs/feature-name.md.
  • Plan — агент превращает спеку в план реализации. Вы проверяете и корректируете.
  • Tasks — план разбивается на плоский список в tasks.md. Каждую задачу можно выполнить и проверить отдельно.
  • Implement — агент реализует задачи одну за другой, держась в рамках спеки.

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

Промпт или спека? Проверьте интуицию

ИнтерактивПромпт или спека?
Шесть утверждений — определите, к чему относится каждое: к одноразовому промпту или к постоянному документу (спеке / конституции). Нажмите нужную кнопку после каждого утверждения.

Заводим структуру прямо сейчас

Минимальная структура pet-проекта на старте:

my-project/
├── CLAUDE.md        # конституция (Claude Code читает автоматически)
├── specs/
│   └── README.md    # «здесь живут спеки фич»
└── tasks.md         # появится позже, на этапе декомпозиции
Минимальная структура файлов SDD-проекта в редакторе кода.

Первый CLAUDE.md — не роман. Достаточно трёх блоков:

# [Название проекта]

## Что это
[Одна строка: что делает проект и для кого]

## Стек
- [Язык / фреймворк]
- [База данных и ORM]
- [Что явно НЕ используем]

## Соглашения
- [Именование файлов и папок]
- [Паттерны, которым следуем]

Для Cursor — создайте .cursor/rules/project.mdc с тем же содержимым плюс frontmatter:

---
alwaysApply: true
---

alwaysApply: true означает, что правило применяется ко всем файлам проекта. Claude Code читает CLAUDE.md из корня при каждом запуске — никаких дополнительных настроек не нужно.

Панель Rules в Cursor IDE: файл project.mdc открыт с параметром alwaysApply: true.
Spec Driven Workflow with Claude Code #1 — Making a /spec Command - Первый выпуск серии, посвящённой SDD-воркфлоу в Claude Code: показывает создание /spec-команды с нуля и объясняет, почему это меняет подход к работе с агентом.

Три шага прямо сейчас

1. Создайте репозиторий для pet-проекта.

2. Создайте CLAUDE.md в корне — заполните три блока: «Что это», «Стек», «Соглашения». Не думайте над ним дольше 10 минут: это живой документ, он будет обновляться.

3. Создайте specs/README.md с одной строкой: «Здесь живут спеки фич».

В следующем подмодуле — анатомия рабочей спеки: что обязательно, что лишнее, и почему «требования» и «дизайн» лучше держать в разных секциях.

Самопроверка

  1. Почему агент предлагает Redis для хранения сессий, хотя в предыдущей сессии вы обсудили JWT и договорились об этом подходе?
  2. Какова основная цель хранения CLAUDE.md в репозитории проекта?
  3. Статья выделяет три симптома проблемы с промптами: дрейф решений, дубли с вариацией и молчаливые допущения. Что их объединяет?
  4. Согласно циклу SDD, если спека говорит «использовать JWT для авторизации», а план агента предлагает «хранить сессии в Redis», что нужно сделать?
  5. Чем структура с CLAUDE.md, /specs/ и tasks.md принципиально отличается от подхода, когда вы просто пишете развёрнутый промпт агенту?
  6. Почему CLAUDE.md читается агентом автоматически, а файлы из /specs/ надо вручную добавлять в контекст для каждой задачи?
  7. Какой вывод поддерживает статья фразой «Правки в тексте — дёшево. Правки в готовом коде — дорого»?
  8. На каком этапе цикла SDD агент превращает спеку конкретной фичи в план её реализации?

Домашние задания

Инициализируй pet-проект с SDDarchive

Создай CLAUDE.md в корне своего pet-проекта — это файл, который будет напоминать агенту твои решения при каждой новой сессии. Напиши три раздела: что делает проект в одну строку, какой стек и что явно не используешь, два-три соглашения по коду. Создай папку /specs с README.md, где одна строка про назначение папки. Архивируй всё и загрузи.

CLAUDE.md в корне с тремя разделами: описание проекта (одна строка), стек (минимум две технологии + что не используется), соглашения (минимум два конкретных правила). /specs/README.md существует и описывает назначение папки. Архив распаковывается без ошибок.

Напиши спеку для фичиdocument

Выбери простую фичу для своего проекта. Спека — это требования и граничные случаи, без деталей про реализацию. Напиши её в /specs/feature-name.md (используй реальное имя фичи): что делает, как используют (примеры), какие граничные случаи, когда готова. Агент должен понять задачу с первого чтения.

Спека в /specs/feature-name.md содержит: описание фичи (одно-два предложения без реализации), минимум три примера использования, минимум два граничных случая, criteria готовности (acceptance criteria). Нет деталей реализации или архитектуры.

Сдача и проверка заданий — в приложении Learn (Almost) Anything.

Источники

  1. From Vibe Coding to Spec-Driven Development | Towards Data Science
  2. Chapter 16: Spec-Driven Development with Claude Code | The AI Agent Factory
  3. Using CLAUDE.MD files: Customizing Claude Code for your codebase | Claude