Большие языковые модели часто используют как один большой "мозг": написал промпт, нажал Enter - и сразу запускаешь сгенерированный код. Быстро, удобно и наполненно магией. Такой подход можно называть вайб-коддингом.
Для разовой или несложной задачи это еще ок, а вот для полноценной продуктовой разработки уже достаточно спорно: архитектура, тесты, ревью и релизы не очень хорошо ложатся на слабо предсказуемый код, который генерирует ИИ.
В этой статье я покажу, как относиться к LLM не как к "герою-одиночке", а как к команде ролей (аналитик, ресерчер, архитектор, разработчик, ревьюер, QA, техписатель, валидатор) и собрать полноценный AI-Driven Development (AIDD) процесс с понятными договорами и quality-гейтами на каждом шаге.
Это практический how-to: от минимальной версии до более строгого процесса с ролями, гейтами и интеграцией с CI. Все примеры - на базе Claude Code, но принципы подхода можно перенести и на другие инструменты (Cursor, Copilot, локальные агенты и т.п.).
Статья будет полезна, если вы:
разработчик или тимлид;
уже пользуетесь LLM в работе (хотя бы "чатик в браузере" или IDE-плагин);
устали от режима "/dev сделай всё" и хотите воспроизводимый AI-workflow для команды;
готовы немного покрутить репозиторий и процесс, а не только «подкрутить промпт».
Не вайб‑коддинг, а управляемый AI‑процесс, встроенный в привычный SDLC.
Прозрачный прогресс по тикетам: у каждой фичи есть PRD, план, tasklist, QA‑отчет и статусы гейтов.
LLM работает не по принципу "сделай всё", а как пати в RPG: у каждого класса своя роль и обязанности — аналитик, архитектор, разработчик, ревьюер, QA, техписатель, валидатор.
Ошибки ловятся не только тестами, но и quality‑гейтами: нельзя перескочить архитектуру, задачи, ревью и доку.
Концепция AIDD: LLM как команда ролей + pipeline фичи + набор quality‑гейтов.
Пример структуры репозитория под AI‑процесс: conventions.md, workflow.md, CLAUDE.md, .claude/**, docs/**, reports/**.
Примеры ролей (subagents), слэш‑команд и hooks для Claude Code — в виде готовых .md и скриптов.
Два уровня внедрения:
Minimal AIDD, который можно собрать за вечер;
дорожка к Full AIDD: строгие гейты, оркестратор /feature-development, headless‑скрипты и интеграция с CI.
Хотите идею с минимально описанной реализацией -> читайте разделы 1-5.
Хотите встроить AIDD в свой процесс разработки с Claude Code -> добавьте разделы 6-9.
Хотите только чек лист -> не пропускайте раздел 10 (чек-лист внедрения).
Итоги и идеи -> раздел 11
Под "чистым вайб-коддингом" я буду понимать экстремальный режим работы с ИИ:
Разработчик описывает желаемое поведение на естественном языке.
ИИ генерирует код.
Код почти сразу запускается - без PRD, архитектурного дизайна, декомпозиции и нормальных тестов.
Плюсы:
очень низкий порог входа;
супербыстрый путь от идеи до первого прототипа;
классный режим "посмотреть, на что вообще способен ассистент".
Минусы, которые в долгую перевешивают все плюсы скорости и простоты:
Структура и качество. Модель не знает ваших архитектурных соглашений, паттернов и инфраструктурных ограничений. Код получается:
избыточным и непоследовательным;
с техдолгом по умолчанию;
плохо масштабируемым.
Ошибки и уязвимости. Размытая постановка заставляет модель додумывать детали:
небезопасные решения;
отсутствие валидации;
возможные секреты в коде;
странные зависимости и/или решения.
Масштабирование и командная работа. Хаотичный AI-код:
усложняет ревью и интеграцию;
без нормального покрытия тестами увеличивает стоимость регресса и страх трогать любой файл.
Вывод: вайб-коддинг годится для одноразовых прототипов и "пощупать идею".
Для продукта в свою очередь нужен инженерный процесс, куда AI встроен в привычный SDLC:
Под AI-Driven Development (AIDD) я буду понимать не волшебную методологию, а вполне приземленный процесс:
Типичный набор ролей:
Analyst - собирает требования, ведет Q&A, формирует PRD.
Researcher - исследует кодовую базу и внешние ограничения.
Architect / Planner - проектирует архитектуру, пишет ADR, составляет план.
Implementer (Dev) - пишет код маленькими шагами по задачам.
Reviewer - делает code review, отлавливает архитектурные и стилевые проблемы.
QA - думает, как сломать то что сделали, формирует тест-план и отчет.
Tech Writer - приводит документацию в порядок.
Validator - следит за прохождением quality-гейтов по тикету/релизу.
|
Роль |
Вход |
Выход |
|---|---|---|
|
Analyst |
идея, контекст |
|
|
Researcher |
PRD, кодовая база |
|
|
Planner |
PRD, research |
|
|
Implementer |
план, tasklist, conventions |
код+тесты, обновленный tasklist |
|
Reviewer |
diff, PRD, план, conventions |
замечания, follow-up-задачи |
|
QA |
PRD, план, список задач/тикетов |
|
|
Tech Writer |
PRD, план, tasklist, QA-отчеты |
|
|
Validator |
все из |
статусы гейтов по тикету/релизу |
В Claude Code эти роли удобно оформлять как subagents в .claude/agents/*.md: у каждого свой промпт, список доступных tools и ожидаемые артефакты.
Чтобы не пытаться сделать полноценный процесс разработки с одного наскока, начнем с минимальной версии - без hooks, CI и кучи агентов.
Минимальный набор:
CLAUDE.md — один главный проектный файл, где зафиксированы базовые договорённости с LLM.
Один шаблон PRD и один шаблон плана.
docs/tasklist/<ticket>.md как чек-лист задач по фиче.
Этого уже достаточно, чтобы перестать делать "/dev сделай всё" и начать работать через роли и артефакты.
Теперь используем состав из пункта 3.1 как чек-лист внедрения.
Цель — перестать вайб-кодить и ввести базовый AIDD без сложной автоматизации, чтобы почувствовать, как можно вписать AI в ваш процесс разработки.
[ ] Создать CLAUDE.md.
В минимальной версии это ваш единственный «договор» с LLM. Сложите сюда всё:
какие языки и форматтеры вы используете;
какие есть архитектурные слои;
как логируете ошибки;
какие требования к тестам;
как работать с секретами;
как выбирать текущий тикет;
что надо посмотреть перед правками (PRD/план/tasklist);
что делать после (diff, текст коммита, обновление tasklist).
[ ] Добавить шаблоны PRD/плана/tasklist.
Простые markdown-шаблоны, которые будете копировать под каждую фичу: пара заголовков, блоки "Контекст", "Цели", "Сценарии", "Метрики", "Задачи".
[ ] Завести docs/prd/<ticket>.prd.md и docs/tasklist/<ticket>.md хотя бы для одной фичи.
PRD — договор о том, что делаем и зачем. Tasklist — список задач, по которым можно работать маленькими шагами.
[ ] Подружить LLM с этими файлами.
Просить модель не "написать эндпоинт", а:
"собери PRD по этим заметкам";
"предложи tasklist по этому плану";
"дополни tests для этого изменения".
[ ] Прогнать одну фичу по цепочке Minimal AIDD.
PRD → план → tasklist → реализация маленькими шагами → ревью.
После — честно посмотреть, где модель помогла, а где мешала, и подправить CLAUDE.md.
Когда такой уровень начнет работать, Full AIDD будет уже не "еще одна громоздкая методология", а естественное развитие вашего мини-процесса.
А теперь - полная версия, с которой можно построить полноценный процесс.
Agreements - это в сути своей договоры между вами и LLM:
как писать код;
в каком порядке работать;
когда можно переходить на следующий шаг.
Для полноценного AIDD можно распределить "ответственность" на такой набор файлов:
conventions.md - общие конвенции проекта для людей:
кодстайл и форматтеры;
архитектурные принципы, слои;
правила ошибок и логирования;
требования к тестам;
правила работы с секретами;
allowlist/banlist зависимостей.
CLAUDE.md - инструкция для Claude Code:
как использовать conventions;
как работать с тикетами;
что делать до/после правок;
как относиться к PRD/планам/tasklist.
workflow.md - человеческое описание процесса:
шаги pipeline;
роли;
quality‑гейты;
когда считается "готово".
.claude/agents/* - роли (subagents).
.claude/commands/* - слэш‑команды.
.claude/settings.json - hooks и общие настройки.
conventions.md workflow.md CLAUDE.md .claude/ agents/ analyst.md researcher.md planner.md implementer.md reviewer.md qa.md validator.md tech-writer.md task-planner.md commands/ idea.md researcher.md plan.md review-prd.md tasks.md implement.md review.md qa.md validate.md feature-development.md docs-update.md settings.json hooks/ gate-workflow.sh after-edit.sh docs/ .active_ticket prd/ T-104.prd.md plan/ T-104.md tasklist/ T-104.md research/ T-104.md reports/ qa/ T-104.md CHANGELOG.md
Чтобы перестать полагаться на "память чата" и сделать агента более гибким, для каждой фичи/тикета заводим мини-набор файлов:
docs/prd/T-104.prd.md # Product Requirements Document docs/plan/T-104.md # архитектура и план docs/tasklist/T-104.md # чеклист задач docs/research/T-104.md # отчет по кодовой базе reports/qa/T-104.md # отчет QA-агента docs/releases/R-12.3.md # состав релиза, связанные тикеты и заметки
Именно эти файлы читает Claude Code, когда вы запускаете /idea, /researcher, /plan, /tasks, /implement, /review, /qa по этому тикету или релизу.
Контекст работы - это структурированная память проекта, а не "последние 20 сообщений в чате".
Роли оформляем в .claude/agents/*.md:
.claude/agents/ analyst.md researcher.md planner.md implementer.md prd-reviewer.md reviewer.md qa.md validator.md tech-writer.md task-planner.md
У каждого файла:
YAML-фронтматтер (name, description, tools, model, permissionMode),
дальше - по сути должностная инструкция: входные артефакты, ожидаемый выход, ограничения.
Важно различать:
Агент (subagent) - кто делает (роль / персона). Примеры: analyst, planner, qa, reviewer, task-planner.
Команда (/slash-команда) - что и когда делаем. Примеры: /idea, /plan, /qa, /validate, /feature-development, /docs-update.
Команды описываются в .claude/commands/*.md и превращаются в слэш-команды в интерфейсе Claude Code.
Примеры связки:
/idea -> агент analyst;
/plan -> planner;
/tasks -> task-planner;
/qa -> qa;
/validate -> validator;
/docs-update -> tech-writer.
Детальные примеры .md для агентов и команд будут описаны прямо в пошаговом примере (раздел 7).
Чтобы AIDD не превратился в тот же вайб-коддинг, только с красивыми файлами, нужны стоп-сигналы - quality-гейты между этапами.
Примерный набор:
|
Этап |
Gate |
Что проверяем |
|---|---|---|
|
Agreements (проект) |
|
есть conventions, CLAUDE, workflow, базовые агенты/команды |
|
PRD |
|
PRD заполнен, нет блокирующих вопросов, есть метрики |
|
Архитектура + ресерч |
|
архитектура описана, учтены риски и NFR, ADR согласован |
|
Задачи |
|
есть tasklist, задачи мелкие, с acceptance-критериями |
|
Реализация (по шагу) |
|
код+тесты+обновленный tasklist по текущей задаче |
|
Review |
|
изменения прошли CI и ревью, нет blocking-замечаний |
|
QA / релиз |
|
релиз прошел QA, критических багов нет/осознанно приняты |
|
Документация |
|
архитектура/runbook/changelog обновлены |
Каждый гейт можно реализовать на трех уровнях:
Ручной - статус в Markdown + чек-лист.
Пример: Status: PRD_READY в docs/prd/T-104.prd.md.
AI-уровень - валидатор /validate, который:
смотрит PRD, план, tasklist, QA;
пишет, что уже ок, а что не дотянуто.
Жесткий - hooks в .claude/settings.json, которые не дают нарушить договор:
блокируют Edit/Write, если не выполнены гейты по активному тикету. AGREEMENTS_ON относится ко всему проекту, его удобно фиксировать разово (например, чек-лист в docs/process-status.md).
С этого раздела начинается блок, где мы подробно разберем весь процесс по шагам.
Этап 0 - это то, что вы делаете один раз на проект, а дальше только тюните под свои конвенции, архитектуру и развитие процесса. Вся остальная работа по тикетам уже опирается на эти договоренности и не требует каждый раз заново придумывать правила.
Прежде чем просить LLM писать код, с ней надо сделать то же, что вы делаете с новым разработчиком, а именно онбординг.
В корне репозитория:
conventions.md - все, что обычно живет "в головах" и в устных договоренностях.
CLAUDE.md - главный системный промпт для Claude Code.
Пример фрагмента CLAUDE.md:
Рабочий процесс фиксируем в workflow.md, например:
Под этот флоу описываем слэш-команд (примеры md файлов команд будут описаны ниже):
.claude/commands/ idea.md # /idea researcher.md # /researcher plan.md # /plan review-prd.md # /review-prd tasks.md # /tasks implement.md # /implement review.md # /review qa.md # /qa validate.md # /validate feature-development.md# /feature-development (оркестратор) docs-update.md # /docs-update
Quality-gate: AGREEMENTS_ON
Минимум:
есть conventions.md, workflow.md, CLAUDE.md;
базовые агенты и команды лежат в .claude/agents и .claude/commands;
в docs/process-status.md отмечено, что эти артефакты заведены.
Теперь давайте посмотрим весь workflow на примере одной конкретной задачи, чтобы не оставаться в абстракции и увидеть, как шаги работают вместе.
Возьмем условный тикет:
По нему пройдем весь путь:
PRD -> архитектура -> задачи -> реализация -> ревью -> QA -> доки.
Вместо "/dev сделай эндпоинт" - сначала PRD.
Вы набрасываете идею: "Нужен эндпоинт GET /invoices/{id} для поддержки и бухгалтерии".
Вызываете:
/idea T-104 "GET /invoices/{id} в сервисе billing-api"
Команда /idea использует агента analyst, который:
создает docs/prd/T-104.prd.md по шаблону,
задает вопросы,
помогает докрутить требования.
--- name: analyst description: "Собирает исходную идею, уточняет требования и оформляет PRD по тикету." tools: Read, Glob, Grep, Write model: inherit --- ## Роль Ты - продуктовый аналитик. Твоя задача - превратить сырую идею и артефакты из репозитория в понятный, структурированный PRD. ## Входные артефакты - docs/.active_ticket - текущий тикет. - docs/prd/<ticket>.prd.md - черновик PRD (если есть). - docs/research/<ticket>.md - отчет ресерча (если есть). ## Выход - Обновленный docs/prd/<ticket>.prd.md: - цель и контекст, - user stories и сценарии, - метрики и критерии успеха, - ограничения и риски, - открытые вопросы. Правила: - Не придумывай бизнес-требования, если они не следуют из контекста. - Если информации не хватает - явно выпиши вопросы в "Открытых вопросах".
--- description: "Инициализация фичи: зафиксировать тикет и собрать черновик PRD" argument-hint: "[ticket-id] [short-title]" allowed-tools: Read, Write, Glob, Grep model: inherit --- Используй subagent `analyst`. Ты запускаешь процесс работы над фичей с идентификатором `$1`. Шаги: 1. Обнови `docs/.active_ticket` значением `$1`. 2. Если файла `docs/prd/$1.prd.md` нет - создай его из шаблона `@docs/prd.template.md`. 3. Перенеси `$ARGUMENTS` в раздел "Контекст / идея". 4. Заведи разделы: цели, user stories, сценарии, метрики, ограничения, риски, открытые вопросы. 5. Заполни то, что можно вывести из контекста репозитория. 6. Если данных мало - сформулируй вопросы к команде, проставь `Status: DRAFT`. 7. Если PRD выглядит цельным и без блокирующих вопросов - проставь `Status: PRD_READY`.
# $TICKET: $TITLE Status: DRAFT ## Контекст / идея ... ## Цели ... ## User stories ... ## Основные сценарии ... ## Успех / метрики ... ## Ограничения и допущения ... ## Риски ... ## Открытые вопросы ...
Gate PRD_READY:
PRD существует;
заполнены ключевые разделы;
нет блокирующих вопросов;
Status: PRD_READY.
После закрытия всех открытых вопросов, можно либо самому на них ответить, либо вызвать команду ресерч:
/researcher T-104 (сюда можно добавить некий дополнительный пейлоад чтобы модель лучше понимала где и что надо искать)
Агент researcher:
смотрит кодовую базу, конфиги, существующие эндпоинты;
описывает связанные модули, сущности, риски;
пишет docs/research/T-104.md.
--- name: researcher description: "Исследует кодовую базу и окружающий контекст по тикету." tools: Read, Glob, Grep model: inherit --- ## Роль Ты - ресерчер. Твоя задача - понять, как текущий код и инфраструктура влияют на реализацию тикета, и собрать контекст в один документ. ## Вход - docs/.active_ticket - docs/prd/<ticket>.prd.md (если есть) - структура src/, конфиги, docs/ ## Выход - docs/research/<ticket>.md: - связанные модули/сервисы, - текущие эндпоинты и контракты, - используемые паттерны, - ограничения и риски, - открытые технические вопросы.
--- description: "Собрать технический контекст и оформить research-документ по тикету" argument-hint: "[ticket-id]" allowed-tools: Read, Write, Glob, Grep model: inherit --- Используй subagent `researcher`. 1. Прочитай `docs/prd/$1.prd.md`, если файл существует. 2. Просканируй ключевые директории проекта (src, docs, конфиги) на предмет сущностей и модулей, связанных с тикетом. 3. Зафиксируй в `docs/research/$1.md`: - существующие эндпоинты и контракты, - слои и зависимости, - используемые паттерны, - ограничения и риски, - открытые технические вопросы. 4. Не меняй код, только собирай информацию.
После закрытия всех открытых вопросов по фиче и понимания куда мы можем встроиться необходимо подготовить архитектуру и план:
/plan T-104
Агент planner:
читает PRD и ресерч;
проектирует решение;
создает docs/plan/T-104.md (компоненты, интерфейсы, потоки данных, NFR, риски);
при необходимости - docs/adr/T-104.md.
--- name: planner description: "Проектирует архитектуру решения и план реализации по тикету." tools: Read, Glob, Grep, Write model: inherit --- ## Роль Ты - архитектор/планировщик. На основе PRD и ресерча ты предлагаешь архитектуру и план изменений. ## Вход - docs/.active_ticket - docs/prd/<ticket>.prd.md - docs/research/<ticket>.md (если есть) - conventions.md (архитектурные правила) ## Выход - docs/plan/<ticket>.md: - компоненты и модули, - целевые интерфейсы и контракты, - потоки данных, - NFR, - риски и альтернативы. - опционально docs/adr/<ticket>.md, если есть значимые архитектурные развилки. Требования: - Соблюдай слои и запреты из conventions.md. - Явно описывай принятые trade-off'ы.
--- description: "Сформировать архитектуру и план реализации по тикету" argument-hint: "[ticket-id]" allowed-tools: Read, Write, Glob, Grep model: inherit --- Используй subagent `planner`. 1. Прочитай: - `docs/prd/$1.prd.md`, - `docs/research/$1.md` (если есть), - `conventions.md`. 2. Создай или обнови `docs/plan/$1.md` со структурой: - Components - API contract - Data flows - NFR - Risks - Open questions (если есть). 3. Если есть архитектурные развилки - создай `docs/adr/$1.md` с вариантами и принятым решением. 4. Если план согласован - установи в `docs/plan/$1.md` строку `Status: PLAN_APPROVED`.
Gate PLAN_APPROVED:
есть план (и при необходимости ADR);
описаны компоненты, контракты, NFR;
статус: Status: PLAN_APPROVED.
Теперь когда у нас есть план необходимо превратить его в набор маленьких задач с понятными критериями готовности.
/tasks T-104
Команда /tasks использует агента task-planner и создает docs/tasklist/T-104.md.
--- name: task-planner description: "Разбивает архитектурный план на мелкие задачи с понятными критериями готовности." tools: Read, Write, Glob, Grep model: inherit --- ## Роль Ты - планировщик задач. На основе PRD и плана по тикету ты формируешь docs/tasklist/<ticket>.md с небольшими, проверяемыми задачами. ## Вход - docs/.active_ticket - docs/prd/<ticket>.prd.md - docs/plan/<ticket>.md ## Выход - docs/tasklist/<ticket>.md: - список задач с чекбоксами, - необязательные подзадачи, - acceptance-критерии для каждой задачи, - статус файла (DRAFT, TASKLIST_READY). Правила: - Задачи должны быть максимально независимыми. - Acceptance-критерий должен быть проверяемым (не "улучшить", а "есть тест X, проходит сценарий Y").
--- description: "Разбить план по тикету на список небольших задач (tasklist)" argument-hint: "[ticket-id]" allowed-tools: Read, Write, Glob, Grep model: inherit --- Используй subagent `task-planner`. 1. Прочитай: - `docs/prd/$1.prd.md`, - `docs/plan/$1.md`. 2. Сформируй `docs/tasklist/$1.md`: - заголовок и краткий контекст, - список задач с `- [ ]`, - для каждой задачи - 1-2 acceptance-критерия. 3. Если tasklist выглядит цельным и покрывает план - установи `Status: TASKLIST_READY`.
Пример самого tasklist:
Пример docs/tasklist/T-104.md# T-104: GET /invoices/{id} Status: TASKLIST_READY Контекст: PRD §3.2; план docs/plan/T-104.md - [ ] OpenAPI: docs/api/T-104.yaml - Описание эндпоинта, коды ошибок, примеры. - [ ] Controller: InvoiceController.getById - Обработка ошибок, маппинг DTO. - [ ] Service: InvoiceService.findByIdWithPermissions - Проверка прав + доступ к репозиторию. - [ ] IT-тесты - Позитивные и негативные сценарии.
Gate TASKLIST_READY:
задачи достаточно мелкие;
у каждой есть acceptance-критерии;
Status: TASKLIST_READY.
Теперь можно приступать к самой реализации, малыми шагами, а не "сделай всё сразу".
/implement T-104
Агент implementer:
Находит первую задачу с - [ ] в docs/tasklist/T-104.md.
Формулирует план изменений (файлы, сущности, тесты).
Ждет вашего явного подтверждения. (опционально, можно полностью автоматизировать)
После "ОК":
вносит минимально необходимые изменения в код;
добавляет/обновляет тесты (здесь можно поменять пункты местами и пойти по TDD, вначале тесты, потом реализация);
обновляет docs/tasklist/T-104.md (- [x] у выполненного пункта);
показывает diff и кратко объясняет, что сделано.
Останавливается. К следующей задаче не переходит без команды.
--- name: implementer description: "Реализует задачи из tasklist небольшими, согласованными шагами." tools: Read, Write, Glob, Grep, Bash model: inherit --- ## Роль Ты - разработчик по тикету. Работаешь маленькими шагами по tasklist. ## Вход - docs/.active_ticket - docs/tasklist/<ticket>.md - conventions.md - кодовая база ## Выход - Изменения в коде согласно очередной задаче. - Обновленный docs/tasklist/<ticket>.md (чекбокс задачи отмечен как выполненный). Правила: - Перед изменениями всегда формируй план (что меняем, какие тесты). - Без явного подтверждения пользователя не вноси правки. - Соблюдай conventions.md и существующую архитектуру. - Всегда добавляй или обновляй тесты для реализуемой задачи. - После изменений показывай diff и краткое описание того, что сделал.
--- description: "Реализовать следующую задачу из tasklist по согласованному плану" argument-hint: "[ticket-id]" allowed-tools: Read, Write, Glob, Grep, Bash model: inherit --- Используй subagent `implementer`. 1. Прочитай `docs/tasklist/$1.md` и найди первую задачу с `- [ ]`. 2. Сформулируй план изменений: - какие файлы будут затронуты, - какие сущности/методы добавятся или изменятся, - какие тесты нужно добавить/обновить. 3. Остановись и спроси явное подтверждение пользователя. 4. После подтверждения: - внеси минимально необходимые изменения в код, - добавь/обнови тесты, - пометь выполненные пункты в `docs/tasklist/$1.md` как `- [x]`. 5. Покажи diff и кратко опиши, что было сделано и почему. 6. Не переходи к следующей задаче, пока пользователь явно не попросит продолжить.
Gate IMPLEMENT_STEP_OK:
по текущей задаче:
код написан;
тесты обновлены;
локальные проверки зелёные;
tasklist обновлен.
Ревью можно делать как после каждой итерации имплементации, так и одним большим прогоном в конце.
/review T-104
Агент reviewer:
смотрит PRD, план, tasklist и diff по тикету;
проверяет соответствие конвенциям и ADR;
подсвечивает потенциальные баги и странные решения;
формирует замечания (blocking / important / etc);
может добавить follow-up задачи в docs/tasklist/T-104.md.
--- name: reviewer description: "Проводит code review изменений по тикету с учетом PRD, плана и конвенций." tools: Read, Glob, Grep model: inherit --- ## Роль Ты - ревьюер по тикету. Твоя задача - проверить изменения на соответствие PRD, плану, conventions.md и здравому смыслу. ## Вход - docs/prd/<ticket>.prd.md - docs/plan/<ticket>.md - docs/tasklist/<ticket>.md - conventions.md - diff по изменениям, относящимся к тикету ## Выход - Список замечаний: - blocking, - important, - etc. - Предложения по улучшению. Правила: - Не придирайся к стилю, если он не противоречит conventions.md. - Сосредоточься на архитектуре, инвариантах, безопасности и читаемости.
--- description: "Сделать review изменений по тикету" argument-hint: "[ticket-id]" allowed-tools: Read, Glob, Grep model: inherit --- Используй subagent `reviewer`. 1. Прочитай: - `docs/prd/$1.prd.md`, - `docs/plan/$1.md`, - `docs/tasklist/$1.md`, - `conventions.md`. 2. Проанализируй diff по изменениям, связанным с тикетом `$1`. 3. Сформируй review: - blocking-замечания (что нужно исправить до мержа), - important (желательно поправить), - etc (косметика). 4. Если видишь незакрытые сценарии или долги - предложи добавить задачи в `docs/tasklist/$1.md` (но сам файл не правь без отдельной команды).
Gate REVIEW_OK:
CI зелёный;
acceptance-критерии задач выполнены;
нет blocking-замечаний.
Когда набор задач по фиче/релизу закрыт, нужен отдельный QA-взгляд.
/qa T-104
Агент qa:
собирает список сценариев;
делит их на автотесты / ручные проверки;
оформляет отчет в reports/qa/<id>.md;
дает рекомендацию: выпускать / с оговорками / не выпускать.
--- name: qa description: "Формирует QA-план и отчет по тикету или релизу." tools: Read, Glob, Grep, Write model: inherit --- ## Роль Ты - QA-инженер. Твоя задача - на основе артефактов тикета или релиза сформировать сценарии тестирования и зафиксировать результат. ## Вход - docs/releases/<release>.md (для релиза) - docs/prd/<ticket>.prd.md - docs/plan/<ticket>.md - docs/tasklist/<ticket>.md - reports/qa/* (предыдущие отчеты, если есть) ## Выход - reports/qa/<ticket-or-release>.md: - позитивные сценарии, - негативные и edge-case'ы, - что покрыто автотестами, - что нужно проверить вручную, - вывод по готовности (выпускать / с оговорками / не выпускать).
--- description: "Подготовить QA-план и отчет по тикету или релизу" argument-hint: "[ticket]" allowed-tools: Read, Write, Glob, Grep model: inherit --- Используй subagent `qa`. 1. Если идентификатор начинается с `R-` - считаем, что это релиз: - прочитай `docs/releases/$1.md` и вытащи список тикетов. 2. Для тикета или каждого тикета релиза прочитай: - `docs/prd/<ticket>.prd.md`, - `docs/plan/<ticket>.md`, - `docs/tasklist/<ticket>.md`. 3. Сформируй `reports/qa/$1.md`: - позитивные сценарии, - негативные и edge-case'ы, - разделение на автотесты и ручные проверки, - зону риска, - финальный вердикт (выпускать / с оговорками / не выпускать).
Gate RELEASE_READY:
по задачам релиза выполнены PRD_READY, PLAN_APPROVED, TASKLIST_READY, REVIEW_OK;
QA-чек-лист отработан;
критических багов нет или они явно приняты.
Финальный шаг - синхронизация кода и знаний. На данном этапе после всех реализаций чтобы не плодить множество файлов мы можем сделать сумаризацию по всем текущим артефактам:
/docs-update T-104
Агент tech-writer:
читает PRD, план, ресерч, tasklist, QA-отчеты, ключевые PR;
помогает обновить или создать сумаризированые документы:
<ticket>-summary.md;
CHANGELOG.md.
--- name: tech-writer description: "Обновляет архитектурную и эксплуатационную документацию по результатам работы над тикетом." tools: Read, Write, Glob, Grep model: inherit --- ## Роль Ты - техписатель команды. ## Вход - docs/prd/<ticket>.prd.md - docs/plan/<ticket>.md - docs/tasklist/<ticket>.md - reports/qa/<ticket>.md (если есть) - ключевые изменения в коде (через Read/Glob/Grep) - текущие CHANGELOG.md ## Выход - Обновленные: - <ticket>-summary.md - CHANGELOG.md. Правила: - Пиши так, чтобы новому разработчику и дежурному по инцидентам было понятно без чтения кода. - Не ломай существующую структуру документов без явного сигнала от пользователя.
--- description: "Обновить документацию по результатам работы над тикетом" argument-hint: "[ticket-id]" allowed-tools: Read, Write, Glob, Grep model: inherit --- Используй subagent `tech-writer`. 1. Прочитай артефакты по тикету `$1`: - `docs/prd/$1.prd.md`, - `docs/plan/$1.md`, - `docs/tasklist/$1.md`, - `reports/qa/$1.md` (если есть). 2. На основе этих артефактов и diff'a в коде: - создай <ticket>-summary.md (краткое сделанных работ и принятых решений по тикету), - добавь запись в `CHANGELOG.md` (краткое описание изменений). 3. Покажи diff по документации пользователю.
Gate DOCS_UPDATED:
документация соответствует коду;
по ней можно онбордить нового человека и разбираться в инцидентах.
Опциональный этап.
Чтобы не гадать "а что у нас по гейтам?", заводим отдельную команду и агента валидатор, которых можно вызвать на любом шаге флоу и собрать галлюцинации или неточности при работе любого из шагов.
/validate T-104
Команда:
ищет связанные артефакты (PRD, план, tasklist, QA);
оценивает гейты: PRD_READY, PLAN_APPROVED, TASKLIST_READY, IMPLEMENT_STEP_OK, REVIEW_OK, RELEASE_READY, DOCS_UPDATED;
возвращает сводку: что OK, что missing, что сыро.
--- description: "Проверить, какие quality-gates пройдены по тикету или релизу" argument-hint: "[ticket-or-release-id]" allowed-tools: Read, Glob, Grep model: inherit --- Используй subagent `validator`. 1. Если `$1` начинается с `R-` - считаем, что это релиз: - прочитай `docs/releases/$1.md` и вытащи связанные тикеты. 2. Для тикета или каждого тикета релиза найди артефакты: - PRD: `docs/prd/<ticket>.prd.md`, - план: `docs/plan/<ticket>.md`, - tasklist: `docs/tasklist/<ticket>.md`, - QA: `reports/qa/<ticket>.*` (если есть). 3. По этим файлам оцени гейты: - PRD_READY, - PLAN_APPROVED, - TASKLIST_READY, - IMPLEMENT_STEP_OK (по текущим задачам), - REVIEW_OK, - RELEASE_READY (для релиза), - DOCS_UPDATED. 4. Верни сводку в текстовом виде: - статус каждого гейта, - что нужно доделать, если гейт не пройден. 5. Ничего не меняй в файлах - только анализируй.
--- name: validator description: "Проверяет, выполнены ли условия для перехода к следующему этапу по тикету или релизу." tools: Read, Glob, Grep model: inherit --- ## Роль Ты - валидатор процесса. ## Вход - docs/prd/*.prd.md - docs/plan/*.md - docs/tasklist/*.md - docs/releases/*.md - reports/qa/*.md - docs/process-status.md (для AGREEMENTS_ON) ## Выход - Краткий отчет о том, какие quality-gates пройдены и что мешает пройти остальные. Правила: - Не изменяй артефакты, только читай. - Будь консервативен: если не уверен, что гейт пройден, помечай его как требующий внимания.
После того как отдельные команды и агенты будут "обкатаны", следующий логичный шаг это создать одну команду что правит всеми, которая знает про весь pipeline и может относительно самостоятельно пройти весь флоу.
/feature-development T-104 "GET /invoices/{id} в billing-api"
Оркестратор:
вызывает /validate T-104;
показывает, какие гейты пройдены;
предлагает следующие шаги:
нет PRD -> /idea, /review-prd;
нет плана -> /researcher, /plan;
нет tasklist -> /tasks;
реализация в процессе -> /implement, /review;
нет QA -> /qa;
нет обновленных док -> подключить tech-writer.
Фактически, если хочется "кнопку сделать хорошо", вы можете максимально автоматизировать и запускать процесс одной командой. Дальше оркестратор будет вести вас по шагам, не давая перескакивать важные этапы.
Пример .claude/commands/feature-development.md--- description: "End-to-end AI-driven feature workflow: PRD -> план -> задачи -> реализация -> ревью -> QA -> docs" argument-hint: "[ticket-id] [short-title]" allowed-tools: Read, Glob, SlashCommand model: inherit --- Ты - оркестратор фичи `$1` ("$ARGUMENTS"). 1. Вызови `/validate $1` и кратко опиши статус гейтов. 2. Если нет PRD_READY - предложи запустить `/idea $1` и `/review-prd $1`. 3. Если нет PLAN_APPROVED - предложи `/researcher $1` и `/plan $1`. 4. Если нет TASKLIST_READY - предложи `/tasks $1`. 5. Если реализация не завершена - напомни про `/implement $1` и `/review $1`. 6. Если релиз еще не RELEASE_READY - напомни про `/qa $1` или `/qa <release-id>`. 7. Если DOCS_UPDATED не достигнут - предложи запустить `/docs-update $1`. Ничего не изменяй в коде и файлах - только описывай состояние и next steps.
Этот уровень опционален: он нужен, когда вы хотите, чтобы LLM не уходила от заранее заготовленного flow и не обходила этапы "просто потому что так быстрее". Hooks и headless-режим позволяют превратить ваш AIDD-процесс в часть инфраструктуры, а не только в набор договоренностей.
Если хочется физически запретить обход этапов, используем hooks.
Фрагмент .claude/settings.json с hook-ами{ "hooks": { "PreToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/gate-workflow.sh" } ] } ], "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/after-edit.sh" } ] } ] } }
gate-workflow.sh проверяет, что для активного тикета выполнены PRD_READY, PLAN_APPROVED, TASKLIST_READY. Если нет - блокирует любой Edit/Write.
#!/usr/bin/env bash set -euo pipefail TICKET=$(cat docs/.active_ticket 2>/dev/null || true) if [ -z "$TICKET" ]; then echo "Workflow gate failed: нет активного тикета (docs/.active_ticket)." >&2 exit 2 fi PRD_STATUS=$(grep -m1 '^Status:' "docs/prd/$TICKET.prd.md" 2>/dev/null || true) PLAN_STATUS=$(grep -m1 '^Status:' "docs/plan/$TICKET.md" 2>/dev/null || true) TASK_STATUS=$(grep -m1 '^Status:' "docs/tasklist/$TICKET.md" 2>/dev/null || true) if [[ "$PRD_STATUS" != *"PRD_READY"* ]] || \ [[ "$PLAN_STATUS" != *"PLAN_APPROVED"* ]] || \ [[ "$TASK_STATUS" != *"TASKLIST_READY"* ]] ; then echo "Workflow gate failed: PRD_READY/PLAN_APPROVED/TASKLIST_READY не выполнены для $TICKET." >&2 echo "Сначала пройди /idea, /plan и /tasks." >&2 exit 2 fi exit 0
Код возврата 2 воспринимается Claude как блокирующий: IDE покажет ошибку, и правки просто не будут применены, пока гейты не пройдены.
Claude Code умеет работать в headless-режиме через CLI (claude -p, --permission-mode plan).
Что можно делать:
по cron или в CI прогонять /validate по всем тикетам релиза;
автоматически собирать сводки по гейтам;
готовить PRD/планы перед ревью;
сделать полную автоматизацию процесса.
#!/usr/bin/env bash set -euo pipefail if [ $# -lt 1 ]; then echo "Usage: $0 TICKET [TITLE]" >&2 exit 1 fi TICKET="$1" TITLE="${2:-}" claude --permission-mode plan -p " Ты запущен в headless-режиме в проекте с AIDD-процессом. Цель: проверить, на каком шаге pipeline находится тикет $TICKET ($TITLE) и что мешает довести его до RELEASE_READY и DOCS_UPDATED. 1. Вызови /validate $TICKET. 2. На основе результатов опиши: - какие гейты уже пройдены; - какие артефакты нужно доработать; - какие команды я должен запустить в IDE (например, /idea, /plan, /tasks, /implement, /qa). 3. Не вноси правок в код, работай только с анализом. "
Такой скрипт можно дергать из CI, из релизных пайплайнов или локально.
Чтобы съесть слона по частям давайте опишем чек лист для внедрения.
Цель - перестать вайб-кодить и ввести базовый AIDD без сложной автоматизации, чтобы не ломать текущий процесс, а аккуратно обогатить его.
Используйте чек-лист:
[ ] Сформулировать первые Agreements. Создайте conventions.md и CLAUDE.md в одном репозитории. Запишите туда ваш кодстайл, базовые архитектурные решения, требования к тестам и ожидания от AI-ассистента.
[ ] Добавить простой workflow. В workflow.md опишите цепочку хотя бы на уровне: idea -> plan -> tasks -> implement -> review -> QA -> docs. Это не финальная истина, а стартовая версия, которую проще улучшать, чем придумывать с нуля.
[ ] Оформить одну фичу как набор артефактов. Для одного реального тикета заведите:
docs/prd/<ticket>.prd.md,
docs/tasklist/<ticket>.md. Даже без .claude/, просто руками.
[ ] Подключить LLM как помощника по артефактам, а не "одного мозга". Попросите модель:
дописать PRD по вашим заметкам,
предложить tasklist по наброскам плана,
нагенерить тест-кейсы по PRD.
[ ] Реализовать одну фичу через Minimal AIDD. Пройти путь: PRD -> план (даже в свободной форме) -> tasklist -> реализация маленькими шагами -> ревью -> QA (хотя бы чек-листом) -> обновление docs.
[ ] После цикла - ретроспектива. Посмотреть, что реально помогло, где LLM выручила, а где мешала. На основе этого подкрутить conventions.md и CLAUDE.md.
Когда такой цикл перестанет ощущаться "поверх" процесса и станет "как мы обычно делаем фичи", можно идти дальше.
Цель - построить AIDD как полноценный SDLC и избавиться от части рутины.
[ ] Завести .claude/agents. Добавить analyst, researcher, planner, task-planner, implementer, reviewer, qa, validator, tech-writer.
[ ] Описать команды workflow. /idea, /researcher, /plan, /review-prd, /tasks, /implement, /review, /qa, /validate, /feature-development, /docs-update.
[ ] Стандартизировать артефакты тикетов. Для всех новых фич - шаблонный набор файлов в docs/ и reports/. Опционально:
[ ] Использовать /validate и оркестратор. Проверять гейты и состояние тикета не вручную, а через AI-валидатор и /feature-development.
На этом уровне процесс уже живет в репозитории как в инструмент, а не только в головах вайб кодеров.
Цель - чтобы процесс соблюдался и не зависел от хорошего настроения LLM.
[ ] Подключить hooks в .claude/settings.json. Блокировать изменения кода, если не выполнены базовые гейты. Автоматически запускать линтеры/тесты после правок.
[ ] Довести оркестратор до "одной команды". Настроить /feature-development так, чтобы разработчику достаточно было его вызвать и следовать шагам.
[ ] Добавить headless-скрипты в CI. Проверки гейтов перед релизом, ночные отчеты по состоянию тикетов, подсказки, где процесс "застрял".
На этом уровне AIDD становится частью инфраструктуры - такой же, как CI, миграции и мониторинг.
Если относиться к LLM как к одному большому "мозгу", получается вайб-коддинг: быстро, местами эффективно, но плохо управляемо в реальном продукте.
Если относиться к LLM как к команде ролей с договорами и гейтами, можно сохранить скорость и не потерять качество.
В статье мы прошли:
от боли вайб-коддинга до идеи AIDD - AI как команда ролей;
от минимального набора файлов (conventions.md, CLAUDE.md, PRD, tasklist) до Full AIDD;
от абстрактных ролей до конкретных агентов и команд в Claude Code;
от "LLM пишет код" до процесса: PRD -> план -> задачи -> реализация -> ревью -> QA -> доки;
от договоренностей "на словах" до quality-гейтов, валидатора и hooks.
Пару мыслей напоследок:
Онбордите AI-команду. Вносите практики в conventions.md, CLAUDE.md, workflow.md, .claude/agents/*, .claude/commands/*.
Планируйте и специфицируйте. PRD, архитектура, ADR, ресерч кодовой базы - это контекст, в котором LLM начинает работать "по-взрослому".
Дробите работу на задачи. Ведите docs/tasklist/<ticket>.md как источник истины по прогрессу.
Стройте итеративный цикл с AI-разработчиком. План -> согласование -> код -> diff -> остановка -> ревью/тесты.
Встраивайте ревью, QA и доку в каждую итерацию. Не только unit-тесты, но и финальный QA- и DOCS-слой.
Пусть LLM помогает фиксировать историю проекта. Описывать архитектуру, принимать и документировать решения, обновлять онбординг.
Автоматизируйте, когда процесс "приживется". Оркестратор, hooks, headless и CI - следующий шаг, а не обязательное требование с первого дня.
Если хочется не просто почитать, а попробовать:
Возьмите один живой сервис и один не слишком критичный тикет.
Добавьте в репо conventions.md и CLAUDE.md в том виде, в каком вы видите свою команду сейчас.
Оформите для этой фичи PRD и tasklist в docs/.
Попросите LLM не писать код сразу, а пройти с вами путь:
доформулировать PRD,
предложить архитектуру,
разбить работу на задачи,
реализовать 1-2 задачи маленькими шагами.
Посмотрите, как изменится скорость и качество, и что вам мешает:
не хватает конвенций,
неудобный шаблон PRD,
слишком крупные задачи и т.п.
После первой итерации уже можно думать про .claude/agents, /idea, /tasks, /implement и остальные элементы Full AIDD.
Дальше уже ваша команда решит, на каком уровне AIDD остановиться:
останетесь на Minimal, встроите Full AIDD в ваш процесс разработки с Claude Code или дойдете до строгого варианта с жесткими гейтами и CI. Главное - перестать воспринимать LLM как "один большой мозг" и начать относиться к ней как к части инженерного процесса.
Источник


