Статьи/Спеки
ПлейбукСпеки

Плейбук: как писать спеки, которым агенты следуют

Пошаговое руководство по написанию агентных спеков: точных, тестируемых и компонуемых.

15 января 202614 мин

Практическое руководство по написанию работающих спеков. Паттерны из 200+ продакшн-спеков.

Анатомия спека

Пять секций. Пропустите любую — теряете надёжность.

spec:
  goal: "Что агент должен сделать"
  context: "Что агенту нужно знать"
  constraints: "Чего не должен делать"
  output: "Как выглядит результат"
  verification: "Как узнаем, что сработало"

Шаг 1: Цель

Одно предложение. Если нужны два — нужны два спека.

Плохо: «Помочь с кодом» / «Отрефакторить авторизацию и обновить тесты и задеплоить»

Хорошо: «Извлечь инлайн SQL в UserRepository в параметризованные prepared statements»

Тест: можно верифицировать да/нет? Если нет — заточите.

Шаг 2: Контекст

Не «всё, что может понадобиться». Минимум информации без вопросов.

context:
  repository: "payments-service"
  files_in_scope:
    - "src/repositories/UserRepository.ts"
  relevant_patterns:
    - "Репозитории используют DatabaseClient из src/db/client.ts"
    - "Параметризованные запросы: client.query(sql, params)"
  technical_constraints:
    - "TypeScript strict mode"
    - "Без ORM — только raw SQL"

Шаг 3: Ограничения

Самая важная секция. Три типа:

Граничные

do_not_modify: ["src/db/client.ts", "src/migrations/*"]
do_not_change: ["Сигнатуры API", "Схема БД"]

Поведенческие

behavior:
  - "Каждое изменение в отдельном коммите"
  - "Тесты проходят после каждого коммита"
  - "Без новых зависимостей"

Качественные

quality:
  - "Весь новый код с типами"
  - "Без any"
  - "SQL параметризован, без конкатенации"

Шаг 4: Формат вывода

output:
  format: "git-patch"
  structure:
    - commit_message: "Conventional Commits"
    - files_changed: "Список с описанием"
    - test_results: "Полный вывод"

Шаг 5: Верификация

verification:
  automated:
    - "TypeScript компилируется без ошибок"
    - "Все тесты проходят"
    - "Нет новых 'any'"
  manual:
    - "Ревью каждого коммита на семантику"

Частые ошибки

  1. Неявные ограничения — не сказали «не удаляй» — агент может удалить.
  2. Перегруженные цели — «и» в цели = разделите спек.
  3. Недостающий контекст — неявное знание сделайте явным.
  4. Без верификации — «посмотрю вручную» — не верификация.

Шаблон

spec:
  goal: "[одно предложение]"
  context:
    repository: ""
    files_in_scope: []
    relevant_patterns: []
  constraints:
    boundaries: []
    behavior: []
    quality: []
  output:
    format: ""
    structure: []
  verification:
    automated: []
    manual: []

«Хорошо написанный спек — контракт. Плохо написанный — пожелание.»

CatoCut
CatoCut
Agent-First инженерия