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

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

Самый дешёвый этап для правок — пока кода ещё нет. Гоняем спеку через clarify-цикл: пусть агент задаёт вопросы, подсвечивает дыры и противоречия, а вы дорабатываете формулировки. Чек-лист готовности спеки: однозначность, покрытие edge-кейсов, измеримые критерии приёмки. Несколько раундов уточнений в Cursor/Claude Code, пока спека не перестанет вызывать вопросы.

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

Чек спеки перед кодом и итерации с агентом

Самый дешёвый этап для правок — пока кода ещё нет. Гоняем спеку через clarify-цикл: пусть агент задаёт вопросы, подсвечивает дыры и противоречия, а вы дорабатываете формулировки. Чек-лист готовности спеки: однозначность, покрытие edge-кейсов, измеримые критерии приёмки. Несколько раундов уточнений в Cursor/Claude Code, пока спека не перестанет вызывать вопросы.

Чек спеки перед кодом и итерации с агентом

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

Стоимость правки требования в Markdown несопоставимо ниже, чем рефакторинг уже реализованного модуля.

Clarify-промпт: отдаём спеку агенту на разбор

Самый прямой способ найти дыры — попросить агента сыграть роль въедливого инженера, который читает спеку с единственной целью: задать вопросы, без которых реализация будет неоднозначной.

В Claude Code откройте новую сессию, добавьте CLAUDE.md и нужную спеку в контекст, затем отправьте:

Прочитай specs/[feature].md. Не пиши код и не предлагай реализацию.
Задай мне все вопросы, которые делают реализацию неоднозначной или неполной.
Сгруппируй по разделам: Требования, Граничные случаи, Критерии готовности.
Начни с самых критичных.

В Cursor — то же самое, но в режиме чата (Chat), а не Agent/Composer: так агент не начнёт редактировать файлы самостоятельно.

В Cursor clarify-промпт запускают в панели Chat, а не в Composer/Agent — иначе агент сразу начнёт менять файлы.

Пример того, что агент может вернуть на спеку авторизации из прошлого подмодуля:

> Требования:

> — Неясно, чувствителен ли email к регистру. User@example.com и user@example.com — один пользователь или разные?

> — Что происходит, если верный пароль вводится во время периода блокировки?

>

> Критерии готовности:

> — «Блокировка после 5 ошибок» — подряд или суммарно за сессию?

Это именно те дыры, которые агент иначе заполнил бы своей догадкой — молча.

flowchart TD A[Черновик спеки готов] --> B[Clarify-промпт агенту] B --> C{Агент нашёл вопросы?} C -- Да --> D[Отвечаете / правите спеку] D --> B C -- "Нет или только\nтехнические детали" --> E[Спека готова к декомпозиции]
flowchart TD
    A[Черновик спеки готов] --> B[Clarify-промпт агенту]
    B --> C{Агент нашёл вопросы?}
    C -- Да --> D[Отвечаете / правите спеку]
    D --> B
    C -- "Нет или только\nтехнические детали" --> E[Спека готова к декомпозиции]
Clarify-цикл: гоняем спеку через агента, пока не закончатся вопросы по существу

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

Три типа проблем, которые агент находит

Вопросы агента почти всегда попадают в одну из трёх категорий.

Размытые требования — формулировки, допускающие несколько интерпретаций. «Система должна быть быстрой» — не требование. «P95 ответа < 300 мс при нагрузке 100 RPS» — требование. Агент спросит: «Что значит быстрой?» Это хороший знак.

Непокрытые граничные случаи — ситуации, которые вы не предусмотрели. Спека описывает счастливый путь, но молчит о таймауте, пустом вводе или невалидных данных. Агент либо спросит — либо, что хуже, придумает что-то сам и не скажет.

Конфликты между требованиями — редкость в небольших спеках, но встречается: «все запросы требуют авторизации» плюс «API-документация доступна без токена» — противоречие. Агент его заметит, если вы попросите.

Как работать с ответами агента

Не каждый вопрос требует нового пункта в спеке. Разбирайте по схеме:

  • Вопрос про поведение фичи → дополнить «Требования» или «Граничные случаи»
  • Вопрос про технический выбор → дополнить «Дизайн» или CLAUDE.md
  • Вопрос про что-то вне скоупа → добавить явно в «Не-цели»
  • Вопрос, на который агент сам может принять разумное решение → написать «Оставляю на усмотрение агента, предпочтительно X»

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

Чек-лист готовности: потренируйте инстинкт

ИнтерактивНайди неоднозначное требование
Пять требований из разных спек — определите, какие готовы к реализации, а какие нужно уточнить. Сразу объясняем, почему.

Прежде чем двигаться к декомпозиции, пройдите по пяти критериям.

Однозначность. Каждое требование допускает ровно одну интерпретацию. Если два разработчика прочитают одно требование и придут к разным выводам — его нужно переписать.

Покрытие edge-кейсов. Для каждого основного сценария описан хотя бы один сценарий ошибки или граничный случай.

Измеримые критерии приёмки. Каждый пункт в «Критериях готовности» можно проверить — тестом, запросом к API, вручную. «Работает корректно» — не критерий. «Возвращает 401 при неверном пароле» — критерий.

Отсутствие конфликтов. Требования не противоречат друг другу и не противоречат CLAUDE.md.

Явные не-цели. Всё, что могло войти в эту фичу, но не войдёт — написано явно. Это защищает от разрастания скоупа прямо во время реализации.

Когда останавливаться

Спека готова, когда агент перестаёт задавать вопросы по существу. Если после второго раунда остались только технические вопросы — «какой HTTP-клиент использовать?», «как назвать файл?» — продуктовая часть закрыта. Технические детали уходят в «Дизайн» или решаются по умолчанию.

Если после третьего раунда вопросы не кончаются — скорее всего, фича слишком большая или смешивает несколько независимых сценариев. Стоит разбить спеку на две.

Задание

Возьмите спеку из прошлого подмодуля. Загрузите CLAUDE.md и спеку в контекст Cursor или Claude Code, запустите clarify-промпт. Обновите спеку по ответам — и запустите снова. Когда вопросов не останется или останутся только технические детали — спека готова. В следующем подмодуле она пойдёт в декомпозицию на задачи.

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

  1. Почему в статье подчёркивается, что проверку спеки нужно делать ДО написания кода?
  2. Почему в clarify-промпте просят агента играть роль «въедливого инженера»?
  3. Агент спросил: «Что происходит, если верный пароль вводится во время блокировки?» К какому типу проблем это относится?
  4. На вопрос агента о техническом выборе, где правильнее поместить ответ согласно статье?
  5. Какой из примеров лучше всего соответствует определению ИЗМЕРИМОГО критерия приёмки?
  6. Требование в спеке: «Приложение должно быть оптимальным». Какой тип проблемы выявит агент?
  7. Почему статья рекомендует запускать clarify-промпт несколько раз?
  8. В какой ситуации спеку стоит разбить на две части?

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

Clarify-цикл раунд 1: вытаскиваем скрытые вопросыtext

Возьмите простую спеку (напишите сами или используйте одну из примеров: API авторизации, система сохранения заметок, очередь задач). Откройте Claude Code или Cursor в новой сессии. Добавьте спеку в контекст. Отправьте агенту промпт: 'Прочитай спеку. Не пиши код. Задай все вопросы, которые делают реализацию неоднозначной или неполной. Сгруппируй по разделам: Требования, Граничные случаи, Критерии готовности. Начни с критичных.' Запишите все вопросы агента. Распределите их по трём разделам. Выделите 3–5 самых критичных — без ответа на которые невозможно начать код.

1) Clarify-промпт отправлен в Claude Code/Cursor (не в чат с Claude, а в среду разработки). 2) Все вопросы агента записаны полностью. 3) Вопросы разделены на три раздела логично. 4) Выделены критичные вопросы. 5) Формулировки ясные, без потери смысла.

Спека готовна: две итерации и зелёный чек-листdocument

Возьмите спеку и вопросы из Assignment 1. Обновите спеку: напишите ясный ответ на каждый критичный вопрос. Раздел может вырасти, появятся новые пункты — это нормально. Запустите clarify-промпт второй раз на обновлённой спеке. Запишите новые вопросы. Если их много — обновите спеку ещё раз и запустите третий раунд (можно кратко). Когда вопросов не останется или останутся только технические детали ('какой статус-код использовать', 'как назвать переменную'), спека готова. Проверьте по чек-листу из статьи: (1) однозначность — два разработчика прочитают требование и придут к одному выводу; (2) edge-case — для каждого основного сценария описана ошибка или граничный случай; (3) измеримость критериев — каждый пункт в 'Критериях готовности' проверяется тестом или запросом, а не на глаз; (4) отсутствие конфликтов — требования не противоречат друг другу; (5) явные не-цели — всё, что могло войти, но не войдёт. Обновляйте спеку, пока не закроете хотя бы 4 из 5 пунктов.

1) Спека обновлена и адресует критичные вопросы из Assignment 1. 2) Второй clarify-раунд запущен, вопросы записаны. 3) Видна итерация: какие вопросы закрылись, какие новые появились. 4) Чек-лист заполнен для всех 5 пунктов (✓ или описание проблемы). 5) Минимум 4 из 5 критериев отмечены ✓. 6) Если есть недоработки — описан план закрытия или обоснование, почему вывели в не-цели.

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

Источники

  1. Chapter 16: Spec-Driven Development with Claude Code | The AI Agent Factory
  2. Spec-Driven Development with Claude Code: A Guided Tutorial | DataCamp