Skip to content
Back to skills

Setup Agent Team

ASecurity

Assemble an AI agent team in the current project - pick the roles, copy the templates into .claude/agents/, adapt them to the project stack and verify the result. Use when asked to set up an agent team, add a role to an existing team, or deploy the agents-best-teams methodology in a project.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 21, 2026
ai-agentspythongobashsqlreactnodedockercode-reviewapidatabase

Works with

  • claude code
  • api
  • mcp

Security analysis

A100/100

Scanned October 21, 2026

npx -y skills add sergvss/agents-best-teams --skill setup-agent-team --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Setup Agent Team?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Setup Agent Team
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sergvss-setup-agent-team/badge)](https://www.skillsdirectory.com/skills/sergvss-setup-agent-team)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: setup-agent-team
description: Assemble an AI agent team in the current project - pick the roles, copy the templates into .claude/agents/, adapt them to the project stack and verify the result. Use when asked to set up an agent team, add a role to an existing team, or deploy the agents-best-teams methodology in a project.
---

# Сборка команды агентов под проект

Твоя задача — довести проект от «шаблонов в репозитории методологии» до «рабочих ролей в `.claude/agents/`, адаптированных под этот стек».

Шаблоны лежат в `${CLAUDE_PLUGIN_ROOT}/templates/`. Если методология установлена копированием, а не плагином, — в `templates/` репозитория.

---

## Шаг 1. Пойми проект

Прежде чем что-то предлагать, прочитай проект и определи:

- язык и фреймворк бэкенда, фронтенда;
- ORM и базу данных;
- как запускаются тесты;
- порты dev-серверов;
- есть ли мультиязычность, есть ли E2E-тесты.

Источники: `package.json`, `pyproject.toml`, `go.mod`, `composer.json`, `docker-compose.yml`, `Makefile`, README проекта.

### Если проект новый и читать нечего

В пустом проекте стек не из чего вывести — его нужно **решить и записать**, а не угадать. Спроси у пользователя недостающее и зафиксируй ответы в README, прежде чем идти дальше:

- язык и рантайм бэкенда, фронтенда;
- база данных и способ работы с ней;
- чем запускаются тесты;
- нужны ли локали и E2E;
- порты.

Не подставляй значения по умолчанию молча. Состав команды выводится из стека: решив за пользователя, что тут React и PostgreSQL, ты поставишь роли, которые проекту не нужны, и не поставишь те, что нужны.

### Заодно определи язык

Методология написана по-русски, но человеку она может быть нужна на другом языке. От этого зависят две вещи: на каком языке говорят защитные хуки и на каком будут написаны роли.

Определи язык по тому, как пользователь пишет тебе. Не угадывай молча — назови, что выбрал, и дай поправить одной фразой.

Запиши выбор в `.claude/.abt-lang` одним словом (`ru` или `en`) — этот файл читают хуки:

```bash
mkdir -p .claude && printf 'ru\n' > .claude/.abt-lang
```

Без файла хуки говорят по-английски: это умолчание, а не поломка. Переменная окружения `ABT_LANG` перекрывает файл, если она задана.

**Проверка шага:** ты можешь назвать стек проекта конкретно, а не «веб-приложение», в проекте есть файл, где этот стек записан, и создан `.claude/.abt-lang`.

---

## Шаг 2. Предложи состав команды

Не ставь все роли по умолчанию — это тот самый оверхед, против которого методология и написана.

Минимальный работающий состав: **один dev-агент под основной стек, `qa-tester`, `code-reviewer`**. Остальное добавляется, когда появляется нужда.

Соотнеси роли со стеком:

| Роль | Ставить, если |
|---|---|
| `dev-backend`, `dev-frontend` | есть соответствующая часть проекта |
| `dev-database` | есть миграции и нетривиальная схема |
| `qa-tester` | есть тесты или их надо завести |
| `code-reviewer` | всегда |
| `security-reviewer` | есть аутентификация, приём внешних данных или работа с деньгами |
| `investigator` | проект больше двух зон — баги начнут попадать между ними |
| `design-reviewer` | есть пользовательский интерфейс |
| `scope-challenger` | задачи приходят крупными и формулируются решением, а не проблемой |
| `pm-orchestrator` | ролей больше трёх |
| `browser-tester` | есть UI и настроен Playwright MCP |
| `devops` | есть релизный процесс |
| `docs-writer` | документация поддерживается всерьёз |
| `i18n-keeper` | есть локали |
| `local-sysops` | несколько локальных сервисов и портов |
| `finops-engineer` | есть облако, платные API или заметный счёт за инфраструктуру |
| `unit-economics-analyst` | продукт зарабатывает: есть тарифы, лимиты, платные планы |
| `investment-analyst` | есть внешняя отчётность — инвесторам или совету |
| `vendor-auditor` | много зависимостей и подписок, или продукт распространяется наружу |

Четыре последние роли — финансовые, и по умолчанию они не нужны. Ставь их, когда деньги в проекте кто-то реально считает: роль, чьи расчёты никто не читает, — это оверхед в чистом виде.

Покажи предложенный состав пользователю и дождись подтверждения. Состав команды — его решение, не твоё.

**Проверка шага:** пользователь подтвердил список ролей.

---

## Шаг 3. Скопируй и адаптируй

Скопируй выбранные шаблоны в `.claude/agents/` проекта. Затем открой каждый и адаптируй.

> **Не можешь прочитать шаблоны — остановись.** Каталог `templates/` лежит вне проекта, и доступ к нему может быть не выдан. Тогда единственный правильный ход — сказать об этом и назвать, что нужно: доступ на чтение к репозиторию методологии.
>
> **Роли по памяти не пишутся.** Написанное по памяти выглядит канонической ролью, ею не являясь, и разойдётся с оригиналом в тех местах, которые никто не станет перепроверять, — ровно то, ради чего вся конструкция с одной канонической копией и затевалась.
>
> Отдельно: запись в `.claude/` Claude Code подтверждает отдельно от обычных правок. Нет разрешения — не считай это провалом: покажи готовые файлы и команду, которой пользователь положит их сам.

**Если язык из шага 1 не русский — переведи роль при копировании.** В шапке переведённой роли поставь строку вида `<!-- переведено с templates/dev-backend.md; канон там -->`: если формулировка вызовет сомнение, будет куда посмотреть.

Что переводится, а что нет:

| Переводить | Оставить как есть |
|---|---|
| Текст роли целиком | `name`, `tools`, `model`, `permissionMode`, `maxTurns`, `effort`, `memory`, `color` |
| `description` во frontmatter | Пути, команды, имена файлов и полей |

`description` — проза, а не машинное поле: по нему роль находят и маршрутизируют. Русское описание в английской роли работает хуже, чем переведённое.

Перевод делается здесь, а не в репозитории, намеренно. В репозитории лежит одна каноническая копия, второй копии не существует — значит, ей нечему расходиться с оригиналом. Цена этого решения: перевод может исказить формулировку инварианта, поэтому раздел «Неприкосновенные инварианты» после перевода перечитай отдельно и сверь с кодом.

**Заменять нужно установочные плейсхолдеры:**

| Плейсхолдер | Чем заменить |
|---|---|
| `<your-project>` | название проекта |
| `<backend-framework>`, `<frontend-framework>` | реальные фреймворки |
| `<порт>`, `<ваш-бэк-порт>`, `<ваш-фронт-порт>` | реальные порты |
| `<пути бэкенда>`, `<пути фронтенда>`, `<пути тестов>` и прочие `<пути ...>` | реальные каталоги проекта. Это колонка «владеет файлами» в маршрутизации оркестратора, то есть сама граница зон: незаполненная, она обнуляет изоляцию, но выглядит настроенной |
| `<каталог-e2e>` | где в проекте лежат браузерные тесты: `e2e/` в корне или `tests/e2e/`. Это же значение определяет зону записи роли в хуке: если каталог называется не `e2e`, добавь его в `.claude/agents-best-teams.json` ключом `browser_tester_write_segments` |
| `<ваш>`, `<ваша>`, `<ваши>` | выбор из списка рядом |
| `<reasoning-LLM>`, `<мощный reasoning-LLM>`, `<мощный LLM>`, `<быстрый LLM>` | значение поля `model` |
| `<your-agent-dir>` | каталог агентов платформы |

В строках вида `Python 3.10+ / Node.js / Go / <ваш>` нужно **оставить один вариант** и удалить остальные вместе с плейсхолдером, а не дописывать значение рядом.

**Не трогать то, что заполняется по ходу работы.** В шаблонах есть разметка отчётов и рецептов — `<что сделать>`, `<step>`, `<вердикт>`, `<описание>`, `<PORT>` в командах вида `lsof -ti :<PORT>`. Это не плейсхолдеры установки, а места, которые агент заполняет во время задачи. Замена их сломает шаблон.

Различай по правилу: если значение одинаково для всех задач проекта — заменяй; если меняется от задачи к задаче — оставь.

**Есть плейсхолдеры без угловых скобок, и они опаснее.** Раздел «Неприкосновенные инварианты» в dev-ролях — это текст «Опиши здесь инварианты своего проекта. Примеры типичных:» и список примеров из типового стека: Alembic, централизованные guards, версионный префикс. Ни один grep по скобкам их не поймает.

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

Что делать:

1. **Выясни настоящие инварианты** — из кода, а не из головы: формат тела запроса и общий префикс у существующих эндпоинтов, единый формат ошибки, способ менять схему БД, где лежит проверка прав. Это то, что уже соблюдается в проекте; ты записываешь наблюдение, а не вводишь правило.
2. **Удали примеры, которых в проекте нет.** Нет миграций — нет подраздела про миграции.
3. **Если инвариант неочевиден из кода — спроси**, не угадывай. Инвариант, придуманный при установке, роль будет защищать наравне с настоящими.

**Файл настроек защиты — если проект не укладывается в умолчания.** Хук знает роли методологии и обычные раскладки тестов. Если E2E лежат не в `e2e/`, юнит-тесты называются иначе (`integration/`, `*.it.ts`) или ты добавил свою роль с полем `memory`, запиши это в `.claude/agents-best-teams.json`. Ключи и пример — `${CLAUDE_PLUGIN_ROOT}/hooks/README.md`, раздел «Файл настроек проекта». Запись в этот файл Claude Code покажет окном подтверждения, и это ожидаемо: файл расширяет зоны, решать должен человек. Для своей роли с памятью запись обязательна — без неё поле `memory` выдаст роли Write и Edit в обход её списка инструментов.

**Проверка шага:**

```bash
grep -rEn '<your-[a-z-]+>|<ваш[а-и]?>|<ваш-[а-яa-z-]+>|<backend-framework>|<frontend-framework>|<порт>|<reasoning-LLM[^>]*>|<быстрый[^>]*>|<мощный[^>]*>|<каталог-e2e>|<пути [^>]*>|<[^>]*reasoning[^>]*>|<[^>]*LLM[^>]*>' .claude/agents/
grep -rn 'Опиши здесь\|Примеры типичных\|Укажи здесь' .claude/agents/
```

Обе команды должны вернуть пусто. Вторая нужна ровно потому, что первая на этом разделе молчит: она проверяет форму плейсхолдера, а не его наличие.

---

## Шаг 4. Сведи роли друг с другом

Шаблоны написаны как самостоятельные, но команда работает только если роли согласованы:

1. В `pm-orchestrator` приведи таблицу маршрутизации к тем ролям, которые реально поставлены. Ссылки на отсутствующие роли — источник тупиков, а отсутствие поставленной роли означает, что её не позовут никогда.
2. Заполни в этой таблице колонку «владеет файлами» реальными путями проекта. Это и есть граница зон: пока у части проекта нет ровно одного хозяина, роли будут наступать друг на друга, сколько бы ни было написано в их промптах.
3. Проверь, что зоны не пересекаются и не оставляют дыр: каждый каталог с кодом упомянут ровно один раз.
4. Проговори, что **владение файлом не делится по содержимому**. Проза внутри чужого файла — `description` в `package.json`, комментарии в коде, тексты в конфигурации — остаётся зоной владельца файла. Иначе у файла появляется второй хозяин, и правило про «ровно один раз» превращается в «кроме прозы». Найденное несоответствие передаётся владельцу, а не правится на месте.
5. Сверь набор инструментов каждой роли с матрицей разрешений — скилл `permission-checklist`.

**Проверка шага** — глазами этот шаг не проверяется, поэтому командой (bash). Она предполагает установленного `pm-orchestrator`: на минимальном составе из трёх ролей его нет, и весь шаг 4 к такой команде не относится — маршрутизировать некому. Запустишь всё равно — `grep` пожалуется на отсутствующий файл, а `comm` перечислит все роли, и это будет выглядеть как «их не позовут никогда»:

```bash
comm -3 \
  <(ls .claude/agents/*.md | xargs -n1 basename | sed 's/\.md$//' | grep -v '^pm-orchestrator$' | sort) \
  <(grep -o '^| `[a-z0-9-]*`' .claude/agents/pm-orchestrator.md | tr -d '|` ' | sort)
```

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

**Этот шаг забывают чаще всех остальных**, и особенно когда роль добавляют к уже собранной команде: скопировать файл в `.claude/agents/` быстро и выглядит законченным действием. Роль после этого существует, отвечает на прямой вызов и при этом невидима для оркестратора — то есть в обычной работе не участвует вовсе.

---

## Шаг 5. Расскажи, что осталось

Сообщи пользователю, что сделано, и назови оставшиеся шаги, не выполняя их без спроса:

- **Защитные хуки.** Если методология поставлена плагином — уже работают. Если копированием — нужно скопировать `hooks/*.py` целиком и подключить конфигурацию. Именно все файлы: конфигурация ссылается на шесть хуков, а `messages.py` нужен каждому из них.
- **Шлюз ревью включился сам**, потому что в команде есть `code-reviewer`: коммит кода без его одобрения откроет окно подтверждения. Предупреди об этом, чтобы первое окно не стало сюрпризом. Как одобрение попадает в шлюз — шаблон `code-reviewer`, раздел «Одобрение для шлюза коммитов».
- **Stop-хук `verify.py`** не даёт закончить работу с падающими тестами. Подключён всегда, а включается записью с командой тестов в файле пользователя `~/.claude/agents-best-teams/verify.json`, ключ — путь к проекту (`hooks/README.md`, раздел «Stop-хук»). Тесты уже есть — предложи включить сейчас. Тестов ещё нет — скажи, что хук понадобится, когда они появятся: напоминание об этом придёт само в начале сессии.
- **`agents.config`** — нужен для триангулированного ревью внешними моделями. Для Tier 1 не требуется; для Tier 2 требуется в подклассе security, RBAC, API-контракт и миграции — там второе независимое мнение обязательно, см. `principles/05-triangulated-review.md`.
- **Персональная память ролей** появится сама при первой работе агентов.

Финальный отчёт — короткий: какие роли поставлены, что адаптировано, что осталось за пользователем.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.