ESPNThe only MLB playoff preview you need: World Series odds, likely MVPs and how far all 12 teams will goThe Jerusalem PostHezbollah's Nasrallah commemoration exposes its lost standing in Lebanon, expert saysPunchAI should complement, not replace, judicial officers – A’Ibom CJESPN DeportesAl Rojas Vivo: Álvarez, Sánchez, Durán, Stewart y Espada, los latinos de 2026Inquirer‘Most unique’ birds documented in Apayao biosphereColliderNew James Bond Release Officially Adds a 'Game of Thrones' StarAnime News NetworkStalled Despera Anime Project Gets MangaPopular ScienceBald eagles Shadow and Kaydee share a peaceful morning, Jackie’s memorial service approachesVariety‘Stillwater’: Amazon Series Based on Graphic Novel Casts Ben Hardy in Lead RoleBBC عربي"محادثات مرتقبة غير مباشرة" بين واشنطن وطهران في نيويورك، وخامئني يقول إن "القوات الأمريكية ستُجبر على مغادرة بحر العرب"20 Minuten«Bin 100 Meter reingelaufen»: Bodensee-Pegel so tief wie noch nieBBC NewsBest thing we can offer young people is a job, not benefits, says chancellor
The Daily Newsstand · Free, Always
Monday, September 28, 2026

Команда агентов в Claude Code: от задачи до релиза

Translate

Полгода назад я начал делать сервис для себя, без команды. Код пишут агенты в Claude Code, я ставлю задачи и принимаю результат. За это время эксперимент превратился в рабочую схему: двенадцать ролей, обязательный порядок этапов, максимальная автономия агентов от постановки задачи до выпуска релиза. Расскажу, кто чем занимается, как задача проходит путь от строки в бэклоге до релиза и с чего начать, если хочется так же у себя.

С чего всё началось

Меня зовут Сергей Ладыгин, я разработчик.

В Claude Code анонсировали функцию Agent Teams. Одна сессия становится лидом команды: раздаёт задачи и собирает результат. Остальные агенты - тиммейты, отдельные сессии Claude Code, у каждого свой контекст. Они берут задачи из общего списка, где у задач есть зависимости, и переписываются друг с другом напрямую.

Функция включается переменной окружения CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.

А ещё у меня была своя боль: ретроспективы в моих командах проходили неоптимально. Я решил попробовать сделать свой сервис и заодно построить схему, при которой агенты смогут работать как целая команда разработчиков. Так в марте 2026 года я начал делать сервис для командных ретроспектив - Scruma, дальше буду называть его просто «проект». Стек обычный: Go, Next.js, PostgreSQL, Docker.

Сначала мы с Claude собрали объёмное ТЗ: как я вижу такой сервис, что он умеет, какие в нём экраны. Потом разбили ТЗ на задачи, и я запускал по одной задаче в одной сессии. На этом этапе мы зафиксировали стек, архитектуру и правила.

Claude выдавал результат так быстро, что я не успевал его проверять и принимать. В итоге я понял, что узкое место в этом процессе - я сам.

Тогда мы подумали, как сделать так, чтобы он сам проверял результат и писал на это тесты. Так появился QA: он проверял задачи в браузере, описывал тест-кейсы и писал по ним тесты. Для тестов у Playwright есть готовые агенты - Playwright Test Agents: планировщик, генератор и хилер. Вместе с QA появился DevOps - вносить изменения в контур и пересобирать его. А ещё качественный локальный контур, на котором можно проверить весь функционал.

Так я выстроил автономный процесс от постановки задачи до работающей реализации.

Результат: во что это выросло

Вот что лежит в репозитории проекта на сентябрь 2026 года.

Что

Сколько

Ролевых команд для агентов

14 (12 ролей) плюс 3 субагента для тестов

Архитектурных решений (ADR)

73

Файлов с «граблями» - диагнозами отказов

37

Тест-кейсов / файлов интеграционных тестов

331 / 146

Разобранных багов

110

Недельных отчётов по бизнес-циклу

6

Коммитов / PR / релизных тегов

409 / 70 / 44

Коммитов только с документацией, без кода

64 из 325

Версий моделей за полгода

8

Медиана от первого коммита в ветке до мержа (61 PR)

3,9 часа

Главная строка в таблице - про восемь версий моделей. Модели менялись примерно раз в месяц, и ни одну роль не пришлось переписывать под новую модель. Роли - это обычные markdown-файлы, поэтому основные из них я продублировал в форматах для Codex: skills и конфиги агентов, плюс общий AGENTS.md. Процесс держится на файлах в репозитории, а не на конкретной модели.

/weekly - раз в неделю. Запускаю в понедельник. Роль аналитика читает стратегию, бэклог гипотез и прошлый отчёт. Собирает метрики: посещаемость, витрины в базе, ошибки за неделю. Сверяет обещанное неделю назад с фактом и пишет отчёт. Потом показывает мне сводку с предложениями и останавливается: без моего ответа ничего не запускает и ничего не тратит. Я утверждаю, откладываю или вычёркиваю задачи, на это уходит 20–30 минут. Причину отказа аналитик записывает и учитывает в следующих предложениях. После ответа он обновляет бэклог и предлагает запустить исполнителей по утверждённым задачам. Через неделю следующий /weekly проверит, дала ли задача обещанный эффект.

/implement - на каждую задачу. Запускается на утверждённую продуктовую задачу. Сессия начинается в роли техлида: он разбивает задачу на подзадачи и ведёт её по ролям - архитектор, backend и frontend, DevOps, QA, документация. В конце техлид коммитит, дальше PR и CI. Мне остаётся принять результат и выпустить релиз. Подробно этот путь разобран ниже.

Это и есть две точки, где решаю я: в /weekly утверждаю план, после /implement принимаю результат. Всё между ними делают роли.

После нескольких итераций я пошёл ещё дальше: теперь /weekly после утверждения плана сам запускает /implement на каждую задачу. Значит, над проектом одновременно работают несколько команд разработки, у каждой своя задача и свой набор ролей. На выходе от каждой команды я получаю по PR.

Для частных случаев есть ещё команды. /bugfix - короткий конвейер для дефекта: техлид, разработчик, DevOps, проверка QA. /triage - дежурный по проду: разбирает ошибки из Sentry и логов и предлагает, что чинить. /marketing - тексты для продвижения и замер их эффекта.

Роли: кто чем занимается

Технически роль - это markdown-файл с промптом в папке .claude/commands. Техлид создаёт команду и запускает остальных как тиммейтов через Agent Teams, с задачами и зависимостями между ними.

Роль

Делает

Не делает

Аналитик недели

Метрики, сверка гипотез, отчёт, бэклог

Не решает про деньги и приоритеты, не правит стратегию, не выдумывает числа

Дежурный по проду

Собирает и классифицирует ошибки, предлагает, что чинить

Не чинит, не трогает среду

Маркетолог и писатель

Материалы для лендинга и посевов, замеры эффекта

Не публикуют от моего имени

Техлид

Декомпозиция, команда, задачи с зависимостями, контроль

Не пишет код, не пропускает этапы

Архитектор

Решение: API, миграции, сообщения, компоненты

Не пишет код

Backend / Frontend

Реализация, тесты, отчёт о влиянии на тесты

Не сдают работу без этого отчёта; frontend не хардкодит цвета и отступы

DevOps

Пересборка среды, здоровье сервисов

Не трогает код продукта, его зона - compose и конфиги

QA

Сверка с ТЗ и решением, статические проверки, браузер, тесты, тест-кейсы

Не чинит баги, не гоняет весь регресс на каждой задаче

Документация

README, карта проекта, docs

Не пишет код

Планировщик, генератор, хилер тестов

План сценариев, spec-файлы, починка упавших

Хилер не задаёт вопросов и не ждёт networkidle

Я

Утверждение плана, приёмка, деньги, публикации, стратегия, вкус

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

Но и запрет текстом срабатывает не всегда. В промпте техлида прямо написано: «Ты не должен сам реализовывать задачи и писать код, ты должен декомпозировать задачи для teammates и контролировать их выполнение». В конце марта я дал ему маленькую задачу, и он решил, что быстрее сделает её сам. Сделал - хуже, чем сделал бы фронтендер.

Скелет промпта роли выглядит примерно так (сильно упрощённый):

Ты - QA-инженер проекта <название>.

Задача: $ARGUMENTS

## Контекст (читать первым)
- Решение задачи: docs/decisions/ - что должно получиться
- ТЗ: docs/spec.md - замысел
- Что есть в продукте на самом деле: docs/features.md и код
- Тест-кейсы: testing/test-cases/

## Что делать
1. Сверить изменённые файлы с ТЗ и решением.
2. Статические проверки: go vet, go test, tsc, lint.
3. Браузер: ТОЛЬКО изменённый функционал, скриншоты в testing/screenshots/.
4. Интеграционные тесты затронутых модулей.

## Что запрещено
- Чинить баги самому. Нашёл - опиши в testing/bugs/, один файл на баг.
- Тестировать весь сервис: для этого есть отдельная команда.

## Отчёт
Что прошло, что требует исправления (файл и строка), статистика тест-кейсов.

Реальный файл - 119 строк, но структура та же: контекст, порядок, запреты, формат отчёта. Порядок и запреты - самые важные части.

Путь одной задачи

Техлид декомпозирует. Читает ТЗ, задаёт мне вопросы, разбивает задачу на подзадачи, создаёт команду и список задач с зависимостями blocked_by. Сам не пишет ни строчки.

Архитектор пишет решение. Файл ADR в docs/decisions/: какие эндпоинты, какие миграции, какие сообщения по WebSocket, какие компоненты. Потом рассылает спецификацию backend и frontend. Для тривиальной задачи без новых API архитектора можно пропустить. Backend или frontend можно пропустить, если задача не трогает этот слой. DevOps, QA и документацию - никогда.

Backend и frontend работают параллельно. Каждый в своей зоне файлов. Каждый в конце прикладывает блок «Test impact»: какие тест-планы изменил, какие модули тестов нужно прогнать, какие сценарии под подозрением.

Точка контроля. Без блока Test impact техлид не передаёт задачу дальше, а возвращает разработчику. Это дешёвое правило сэкономило больше всего времени: QA гоняет тесты только по затронутым модулям, а не весь регресс.

DevOps пересобирает среду. docker compose up -d --build, проверка логов и здоровья сервисов, сообщение QA «среда готова».

QA проверяет. Сверяет результат с ТЗ и решением, запускает статические проверки, смотрит в браузере через Playwright MCP только изменённое, гоняет интеграционные тесты затронутых модулей. Если тесты упали из-за изменившегося поведения, субагент-хилер их чинит. Если появился новый функционал, планировщик дописывает план, а генератор пишет новые тесты. В конце QA обновляет тест-кейсы и карту покрытия.

Документация. README, карта проекта, статусы API.

Техлид собирает результат и коммитит. Дальше PR, CI (vet, тесты, типы, линтер, пробная сборка образов), тег, релиз.

Через неделю. Дежурный смотрит прод, аналитик сверяет гипотезу с фактом.

Всё это записано в промпте техлида - команде /implement. Скелет выглядит так (сильно упрощённый):

Ты - техлид проекта <название>.
Ты не должен сам реализовывать задачи и писать код, ты должен
декомпозировать задачи для teammates и контролировать их выполнение.

Задача: $ARGUMENTS

## Инструкции
1. Декомпозируй задачу на подзадачи с зависимостями.
2. Создай agent team и task list с зависимостями (blocked_by).
3. Спавни teammates с учётом зависимостей.

## КРИТИЧЕСКИ ВАЖНО: обязательный пайплайн
НИКОГДА не пропускай этапы пайплайна... (целиком - ниже)

## Роли teammates
- architect: ADR в docs/decisions/ - API, миграции, WebSocket,
  компоненты. Рассылает спецификацию backend и frontend.
- backend: ждёт спецификацию. Миграции, handlers, services, тесты,
  блок Test impact.
- frontend: ждёт спецификацию. Компоненты по дизайн-системе, без
  хардкод-цветов, блок Test impact.
- devops: ждёт backend и frontend. docker compose up -d --build,
  логи, здоровье сервисов, сообщение QA «среда готова».
- qa: ждёт devops. Проверка по ТЗ, браузер только по изменённому,
  тесты затронутых модулей, хилер и генератор тестов.
- docs: README, CLAUDE.md, docs/, статусы API.

## Точка контроля перед QA
Без блока Test impact от разработчика задачу в QA не передавай -
верни разработчику.

## В конце
Собери результат, сделай итоговый коммит, останови тиммейтов.

Реальный файл - 100 строк. Главное в нём - блок про обязательный пайплайн: три этапа нельзя пропустить никогда - DevOps, QA и документацию. Блок написан капсом, привожу его дословно, перенёс только строки:

НИКОГДА не пропускай этапы пайплайна. Даже если задача затрагивает
только frontend или только backend — полный цикл обязателен:

**Разработка → DevOps (пересборка) → QA (браузерное тестирование) → Docs**

- DevOps ВСЕГДА запускается после завершения разработки (backend и/или
  frontend) — без пересборки QA не может тестировать в браузере
- QA ВСЕГДА делает браузерное тестирование через Playwright MCP — это
  не опционально
- Docs ВСЕГДА проверяет и актуализирует документацию

Капс появился после ошибки. В марте техлид после реализации забыл передать задачу DevOps. QA открыл браузер, увидел старую версию и вернул задачу со словами «ничего не сделано». Я провёл с техлидом one-to-one, и он сам поправил свой промпт.

Код-ревью: встроено в процесс

Отдельного этапа код-ревью в этом конвейере нет, и это осознанное решение. Я считаю, что ревью нужно встраивать в сам процесс разработки: заранее описывать, какой архитектуре следовать, и обозначать ограничения. Тогда удаётся избежать петли «написали код → ревью → исправили → снова ревью», которая иначе повторяется по нескольку раз на задачу.

Классическое код-ревью придумано для кода людей, и у него две задачи. Первая - контроль: не все в команде одинаково опытны. Вторая - распространение знаний: через ревью команда узнаёт, как принято писать и почему здесь сделано так, а не иначе. С агентами обе задачи решаются по-другому.

Контроль - до кода. Архитектор определяет интерфейсы и контракты до того, как остальные начнут работу. В промпте каждой роли записаны запреты. У фронтенда, например, так: «Никаких хардкод-цветов, отступов, радиусов, теней, размеров шрифтов. Любой HEX/rgba в коде компонента = ошибка». На обычном ревью это замечание пришлось бы писать снова и снова.

Проверка - автоматически. Часть правил охраняют тесты: нарушил - сборка красная. CI на PR гоняет go vet, тесты, проверку типов, линтер и пробную сборку образов. QA сверяет результат с ТЗ и решением, а не спорит о стиле.

Знания - в файлах. Замечание в ревью агенту бесполезно: к следующей задаче он его не вспомнит. Поэтому то, что в команде людей передаётся через ревью, у меня записывается в ADR и в «граблях». Агент читает их перед правкой.

Мой способ проверять тоже изменился. Диффы я читаю всё реже, а ADR перед мержем - всегда. Проверить решение мне важнее, чем проверить каждую строку.

Слой знаний: что лежит рядом с кодом

Агент не помнит прошлых задач, поэтому память команды лежит в файлах. Я держусь подхода GitOps: всё, что можно описать кодом, описано кодом и лежит в git. Кроме приложения, это инфраструктура, мониторинг, алерты и дашборды. С агентами это даёт кратное усиление. Агенту видна вся система, от кода до алертов. Любую настройку он меняет тем же путём, что и код: правка в ветке, PR, CI, релиз по тегу. Всё, что изменилось, остаётся в истории git, и следующий агент может это прочитать.

Вот что есть в репозитории кроме кода приложения.

  • ТЗ - замысел. Читают техлид и архитектор. Источником фактов о продукте не является.

  • ADR - память решений: что решили, какие варианты отвергли и почему. Пишет архитектор, любой агент читает перед правкой, я читаю перед мержем.

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

  • Карта фич и покрытия - таблица: экран, функционал, каким тестом закрыт, какое решение. У каждой строки написано, какая роль её обновляет.

  • Тест-кейсы и тест-планы - один файл на кейс, сквозная нумерация. Планы по модулям - вход для генератора тестов.

  • Стратегия, бэклог гипотез, недельные отчёты - основа недельного цикла. В стратегии прямо написано: «Стратегия живёт в файлах, а не в памяти агентов: решения, не записанные сюда или в backlog.md, для следующего цикла не существуют».

  • Настройка инфраструктуры - compose-файлы для локального стека и прода, конфиги шлюза и прокси. При релизе по тегу CI копирует их на сервер вместе с новой версией кода.

  • Настройка мониторинга - конфиги сборщика телеметрии, логов, трейсов и правила алертов. Алерт - это файл в репозитории, а не галочка в интерфейсе.

  • Отчёты в Grafana - дашборды описаны в JSON: техническое состояние сервисов и бизнес-метрики. По бизнес-витринам аналитик собирает недельный отчёт.

С чего начать у себя

Самый частый вопрос после моих постов про агентов - «с чего начать». Отвечу структурой репозитория, потому что процесс живёт в ней, а не в головах и не в промптах.

Всё лежит в одном репозитории. Агент видит только то, что лежит рядом с кодом. Вики, таск-трекер, дашборд в браузере, схема в Miro - для него этого не существует. Поэтому в репозитории у меня лежит всё: код, тесты, документация, задачи и гипотезы, схема базы в виде миграций, конфиги деплоя и сервисов, дашборды и правила алертов как файлы, подключения MCP к браузеру, трекеру ошибок и метрикам, и всё, что нужно, чтобы поднять проект локально одной командой. Секретов в репозитории нет: примеры переменных лежат в .env.example, реальные значения подставляются в CI/CD.

Как это разложено. Упрощённо, без деталей:

CLAUDE.md / AGENTS.md    карта проекта: стек, структура, конвенции, карта граблей
.claude/commands/        роли как slash-команды, по файлу на роль
.claude/agents/          субагенты тестов: планировщик, генератор, хилер
.mcp.json                подключения агентов: браузер, ошибки, метрики (токены из env)
backend/                 сервис, миграции = схема базы, unit-тесты
frontend/                приложение
configs/                 шлюз, почтовые шаблоны, Grafana (дашборды, алерты), телеметрия
docs/spec.md             ТЗ - замысел
docs/decisions/          ADR, по файлу на решение
docs/dev/                грабли, по файлу на фичу
docs/features.md         карта фич и покрытия тестами
docs/api/                контракты эндпоинтов и их статусы
docs/runbook/            как поднять сервер, восстановить бэкап, настроить почту
docs/business/           стратегия, бэклог гипотез, недельные отчёты
specs/                   тест-планы по модулям, вход для генератора тестов
testing/                 интеграционные тесты по модулям, test-cases/, bugs/, screenshots/
.github/workflows/       CI на PR, релиз по тегу, деплой лендинга
docker-compose*.yml      локальный стек, прод, корпоративная редакция
Taskfile.yml             task up / build / test-integration-<module> / check
.env.example             все переменные с комментариями, без значений

Как выглядят документы. Форматы простые, и агенты держат их аккуратнее, чем люди.

Карта фич - таблица по экранам:

| Функционал            | Тест                          | Документ              |
|-----------------------|-------------------------------|-----------------------|
| Регистрация по email  | ✅ auth/registration.spec.ts  | ADR про авторизацию   |
| Смена пароля          | ❌                            | ADR про смену пароля  |

ADR - одно решение, один файл, обязательно с отвергнутыми вариантами:

# NNN. Название решения
## Статус: принято / заменено решением NNN
## Контекст: какую проблему решаем, что снято с живой системы
## Решение: что делаем - контракты API, миграции, сообщения
## Альтернативы: что рассматривали и почему отвергли
## Последствия: что меняется, чем проверяется
## Test impact: какие тест-планы и модули затронуты

Задача в бэклоге - гипотеза с ожидаемым эффектом и статусом, который не закрывается на «сделано», пока эффект не сверен с фактом:

| ID    | Гипотеза                 | Ожидаемый эффект     | Уверенность | Статус               |
|-------|--------------------------|----------------------|-------------|----------------------|
| B-001 | Гайд по частому запросу  | +N поисковых входов  | средняя     | сделано, ждёт замера |

Тест-кейс - один файл, сквозная нумерация, статус меняет QA:

# TC-001: Регистрация по email
Модуль: auth · Приоритет: critical · Статус: pass
## Предусловия
## Шаги
## Ожидаемый результат
## Фактический результат

Один репозиторий или несколько. Для проекта моего размера подходит монорепозиторий: бэкенд, фронт, лендинг, конфиги и документы в одном месте, агент видит всё из одного корня. Если проект большой и сервисы живут в своих репозиториях, работает мета-репозиторий: в нём правила, роли, документы и карта, а репозитории сервисов выгружены рядом. Смысл тот же: у агента один корень, из которого видно всё.

Локальный запуск обязателен. task up поднимает весь стек: база, почтовый мок, шлюз, мониторинг. На нём работают QA-роль и интеграционные тесты. Если проект нельзя поднять локально одной командой, роль QA проверить ничего не сможет, и весь конвейер сведётся к «код написан».

В каком порядке заводить. Если начинать с нуля, я бы шёл так:

  1. Карта проекта и ТЗ - до первого коммита.

  2. Две-три роли файлами-командами и обязательный порядок этапов.

  3. QA в браузере и интеграционные тесты как условие перехода, отчёт о влиянии на тесты от разработчика.

  4. ADR и грабли как обязательный выход каждой задачи.

  5. Недельный цикл с утверждением плана и дежурный по проду.

Ни один из шагов не требует конкретной модели или инструмента. Роли у меня переезжали между Claude Code и Codex с минимальными правками, потому что живут в обычных markdown-файлах.

Вывод

Если выжимать один вывод: процесс для агентов - это роли с запретами, две точки, где решает человек, и память в файлах. Всё остальное - детали.

  • Запреты работают лучше обязанностей: «не пиши код», «не чини», «не трогай среду».

  • Проверка встроена в конвейер как условие перехода. Разработчик не отдаёт задачу без отчёта о влиянии на тесты, QA не берёт задачу без пересобранной среды.

  • Код-ревью встроено в процесс: архитектура и ограничения задаются до кода, поэтому нет петли «написали - получили замечания - исправили».

  • Память лежит в файлах: решения, грабли, карта покрытия. Без неё агенты повторяют старые ошибки.

Если вы делаете проект с агентами и через пару месяцев в нём начали повторяться старые ошибки - начните с запретов и обязательных этапов, это дешевле всего. Если вы тимлид команды людей и думаете, как встроить агентов, - начните с карты проекта и ADR: людям они пригодятся не меньше.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.