Claude Code пишет код быстрее меня. Тесты, рефакторинг, ревью. Но если дать ему задачу и отойти, через час получишь 2000 строк без единого теста, три файла которые не компилируются и коммит «fix stuff». Мощность без процесса — это хаос с ускорением.
Несколько недель я превращал этот хаос в конвейер. Получилось две вещи: STC (формализованный процесс разработки) и Guardian MCP (сервер, который следит за соблюдением процесса автоматически). Ниже — как это работает и зачем вообще нужно.
Проблема: мощность без дисциплины
Когда я начал работать с Claude Code, первые дни были эйфорией. Даёшь задачу — получаешь код. Быстро. Много. Работает... иногда.
Проблемы начинались когда задача была больше одного файла. Агент делал три вещи одновременно: менял модель данных, переписывал API и правил фронтенд. Без тестов. Без проверки. Потом коммитил всё одним куском. Если что-то ломалось, откатывать приходилось всё.
Ещё хуже: он пропускал шаги. Говоришь «напиши тесты сначала», а он пишет три кейса из двадцати и сразу за код. Говоришь «проверь безопасность», отвечает «проверил, всё ок» и идёт дальше. Формально выполнил. По факту нет.
Это не проблема конкретного инструмента. Любой AI-агент без ограничений ведёт себя так же. Он оптимизирует на «быстрее закончить задачу», а не на «сделать правильно». Тесты замедляют, проверка замедляет, разбивка на шаги замедляет. Без внешнего контроля агент всегда выберет короткий путь.
STC: Spec-Test-Code
Расшифровывается просто: Spec-Test-Code. Перед тем как писать код — напиши спецификацию. Перед тем как писать код — напиши тесты. Только потом код.
Но за тремя буквами стоят семь фаз с жёстким порядком. Пропустить нельзя (ну, почти: можно skip с явным обоснованием). Перейти к следующей можно только закончив текущую.
Семь фаз: от спеки до коммита
Процесс делится на две части. Первая выполняется один раз на фичу:
Specify. Пишу спецификацию. Что делаем, зачем, какие ограничения, какой результат. Спека живёт в `.claude/specs/feature.md`. Это не формальность, а контракт между мной и агентом. Если в спеке не написано — этого не будет в коде. Написано криво — код будет кривой.
Clarify. Максимум два раунда вопросов по дырам в спеке. Агент читает документ и спрашивает: «А что если пользователь отправит пустую строку? А если API вернёт 429? А что с миграцией существующих данных?» Иногда вопросы тупые. Иногда ловят реальные дыры.
Plan. Декомпозиция на атомарные шаги. Не «сделай фичу», а «шаг 1: добавь модель в БД, шаг 2: напиши эндпоинт, шаг 3: добавь валидацию». Каждый шаг — пара предложений, 3-5 файлов максимум.
Опционально перед Plan можно запустить SCD Gate. Консилиум экспертов + дебаты по архитектурным решениям. Для сложных фич это спасает от ошибок проектирования.
Вторая часть повторяется на каждый атомарный шаг:
Test. Тесты из сценариев спеки. Запускаешь — они падают. Red. Так и должно быть.
Code. Агент пишет код. Тесты зеленеют. Green.
Verify. Три агента параллельно проверяют код (об этом ниже).
Commit. Только после Verify. Один шаг — один коммит.
Фича из 8 шагов — это 8 итераций Test-Code-Verify-Commit.
Атомарные шаги: никогда не делать всё целиком
Большая задача разбивается на куски, каждый из которых можно описать одним предложением. «Добавить модель Account с полями name, proxy, status.» «Написать endpoint POST /accounts с валидацией.» «Прикрутить warmup-скрипт к scheduler.»
Почему не сделать всё сразу? AI-агент на большой задаче теряет контекст. На третьем файле он забывает что решил на первом. На пятом начинает противоречить спеке. А ты не замечаешь, потому что diff на 800 строк невозможно нормально проверить.
Один шаг: 3-5 файлов, diff на 50-100 строк, проверка занимает минуту. Если что-то не так — откатить один шаг. Не весь день работы.
Guardian MCP: автоматический трекер
STC как набор правил в CLAUDE.md работал, но с дырами. Агент «забывал» вызвать проверку. Или перескакивал с Test сразу в Commit, минуя Verify. Или делал два шага подряд без фиксации между ними.
Guardian MCP — это MCP-сервер, который трекает процесс автоматически. Он знает текущее состояние и не даёт перейти дальше без выполнения условий.
- Как это работает:
- Начинаю фичу: `feature_register` создаёт трекер
- Закончил этап: `phase_advance` проверяет условия и двигает дальше
- Хочу пропустить: `phase_advance` + `skip_reason`. Можно, но причина зафиксирована
- Перед коммитом: `verify_checklist` проверяет что проверка была
Каждый переход — это вызов `phase_advance`. Без него трекер не знает что ты продвинулся. Агент физически может зафиксировать код без Verify. Но нарушение зафиксируется в логе, и я это увижу.
`phase_status` в любой момент показывает где ты и что от тебя требуется. `session_log` хранит полную историю переходов.
Verify: три агента параллельно
Verify — самая важная часть процесса. Три специализированных агента запускаются параллельно:
@code-reviewer смотрит на качество кода. Дублирование, неиспользуемые импорты, нарушение типизации, логические ошибки. Не линтер. Именно ревью: «Тут ты обрабатываешь ошибку 404 но не 429, а API возвращает 429 при rate limit.»
@security-guard проверяет безопасность. Секреты в коде, SQL-инъекции, небезопасные зависимости, открытые порты. «В строке 47 ты конкатенируешь пользовательский ввод в SQL-запрос.» Такие вещи.
@spec-verifier сверяет код со спекой. Если в спеке написано «эндпоинт возвращает 201 при создании», а код возвращает 200 — он это поймает. Если спека говорит «retry 3 раза при таймауте», а retry нет — тоже.
Три фокуса, параллельный запуск. Результаты уходят в `verify_checklist`. Без результатов всех трёх фиксация не пройдёт.
Как это выглядит на практике: MAKO
MAKO — мой конвейер для автогенерации коротких видео. Подробности про сборку и этапы системы в отдельных постах. Тут про то, как STC и Guardian работали на практике.
Stage 0 (прототип). 8 шагов. Спека на pipeline из 8 модулей. 73 теста по моим сценариям, ноль написаны мной вручную. Каждый шаг: тесты красные → код → тесты зелёные → проверка → фиксация.
Stage 1 (генератор контента). 11 шагов. Перед планом прошли дебаты Claude vs GPT по архитектуре Prompt Contract. GPT победил в вопросе разделения промптов на слои. Агент реализовал решение GPT.
Моя роль на каждом этапе: формулирую спеку, модерирую дебаты если есть спорные решения, принимаю решения, проверяю результат. Агент пишет код, тесты, реализует. Трекер не даёт пропустить шаги.
Масштаб из логов: 197 переходов между этапами, 52 проверки перед фиксацией, 8 тем дебатов (26 раундов суммарно), 9 спецификаций. Не «настроил и забыл». Живой процесс который работает каждый день.
Без STC Stage 1 выглядел бы так: «Перепиши генератор». Результат: один огромный кусок, без тестов, с парой багов которые всплывут через неделю. С STC: 11 маленьких фиксаций, каждая протестирована и проверена. Баги ловятся в Verify, а не на продакшене.
Медленно? Нет. Дорого ошибаться
Быстро сделать и потом неделю дебажить. Вот что медленно. STC добавляет 15-20 минут на шаг, но убирает часы дебага. На MAKO Stage 0 от первой строки до работающего конвейера прошло 2 дня. С тестами и проверками.
Почему не просто CLAUDE.md с правилами? Писал. Агент «забывает». Не со зла: у него нет состояния между вызовами. Guardian хранит состояние и напоминает. Разница между «правила написаны» и «правила enforced».
Итоги
- AI-агент без процесса оптимизирует на скорость, а не на качество. Тесты, проверки, декомпозиция — всё это он будет пропускать если не заставить
- STC (Spec-Test-Code): семь фаз. Specify, Clarify, Plan, Test, Code, Verify, Commit. Первые три на фичу, последние четыре на каждый шаг
- Guardian MCP трекает процесс автоматически. `phase_advance` на каждом переходе, `verify_checklist` перед фиксацией
- Verify = три агента параллельно: code-reviewer, security-guard, spec-verifier
- На MAKO это дало 73 теста, 19 шагов, 3 этапа за 2 дня. Каждый шаг протестирован и проверен
Связанные посты: как собирал MAKO за 2 дня | 3 этапа через спеки и дебаты | AI-дебаты как метод | SCD: гибрид дебатов и консилиума