Почему это важно именно вам
Вы уже неделю работаете с CLAUDE.md и умеете раскладывать правила по модулям. Это хорошая база. Но CLAUDE.md решает одну задачу: он говорит Claude, кто он такой и как себя вести. Он не решает другую задачу — распределение специализаций. Когда вы в одном сеансе просите Claude сначала проверить договор, потом написать письмо партнёру, потом разобрать таблицу расходов — он переключается между задачами, и каждый раз немного теряет фокус. Инструкции из CLAUDE.md применяются ко всему сразу. Нет разницы между «режимом юриста» и «режимом аналитика».
Кастомные агенты решают именно это. Агент — это специализированная роль с конкретным набором инструментов, отдельным системным промтом и именем, по которому его можно вызвать в любой момент. Агент «редактор писем» знает только про письма и работает только с тем, что нужно для писем. Агент «аналитик данных» умеет читать файлы и считать, но ничего не знает про тон деловой переписки. Каждый занимается своим делом и делает его точнее.
Для директора по развитию это особенно ценно, потому что задачи разнородные: сегодня аналитика по воронке, завтра подготовка к совету директоров, послезавтра реакция на письмо от подрядчика. Один универсальный Claude-с-CLAUDE.md тянет всё, но тянет средне. Три специализированных агента тянут каждый своё и делают это заметно лучше. Сегодня создадим первого — и поймём механику, которая лежит в основе всей Фазы 3.
Что это такое
Агент в Claude Code — это обычный текстовый файл с расширением .md, который лежит в папке .claude/agents/ внутри вашего проекта. Файл начинается с frontmatter (блок между ---), где описаны параметры агента: имя, назначение, доступные инструменты, модель. Ниже frontmatter идёт системный промт — инструкции, которые Claude получает при вызове этого агента.
Аналогия из жизни: должностная инструкция. В компании есть юрисконсульт, финансовый директор, PR-менеджер. У каждого — своя роль, своя область ответственности и свой набор инструментов. Юрисконсульт работает с договорами и законами, финансовый директор — с цифрами и бюджетами. Когда вам нужен совет по контракту, вы идёте к юрисконсульту, а не к PR-менеджеру. Агенты работают точно так же: вы вызываете нужного специалиста под нужную задачу.
Второй момент, который важно понять сразу: агент — это не отдельный процесс и не программа. Это набор инструкций, который Claude Code загружает вместо или дополнительно к стандартному контексту. Когда вы вызываете агента по имени, Claude читает его файл, берёт системный промт оттуда и начинает работать в этой роли. Никакой магии, никакой сложной инфраструктуры. Просто файл с правильной структурой в правильном месте.
Агент и CLAUDE.md — разные слои
CLAUDE.md задаёт базовый контекст для всего проекта. Агент — это специализация поверх него или вместо него при конкретной задаче. Они не конкурируют. Если хотите, чтобы все агенты соблюдали общий стиль — держите его в CLAUDE.md. Специфику каждой роли — в файле агента.
Как работает на практике
Шаг 1. Структура папки
Агенты живут в .claude/agents/ — это скрытая папка внутри вашего рабочего каталога. Если её нет, создайте:
~/Документы/Работа/
├── CLAUDE.md
├── .claude/
│ └── agents/
│ └── letter-editor.md ← ваш первый агент
└── claude_modules/
Имя файла — латиницей, без пробелов, с расширением .md; совпадать с именем агента оно не обязано. Идентификатор задаёт поле name внутри файла: только строчные латинские буквы и дефисы.
Почему папка скрытая
Папка .claude/ начинается с точки — по соглашению Unix-систем это означает «системная/служебная папка, не для ручного просмотра». В Finder она не видна по умолчанию. Открыть её: Cmd+Shift+. в Finder или напрямую через терминал. В Claude Code она обрабатывается автоматически.
Шаг 2. Минимальный рабочий файл агента
Создайте файл .claude/agents/letter-editor.md со следующим содержимым:
---
name: letter-editor
description: "Редактирует деловые письма и email: тон, структура, чёткость. Вызывай когда нужно доработать или написать деловое письмо."
tools: Read
---
Ты опытный редактор деловой переписки. Твоя задача — делать письма чёткими, вежливыми и профессиональными.
Правила работы:
- Обращение к партнёрам — «Уважаемый [Имя Отчество]»
- Заканчивай каждое письмо конкретным следующим шагом или предложением
- Убирай слова-паразиты: «в принципе», «по большому счёту», «как бы»
- Запрещённые слова: «уникальный», «эффективный», «инновационный»
- Структура: приветствие → суть → детали → следующий шаг → подпись
- Если письмо больше 5 абзацев — предложи сократить
При получении текста письма: сначала коротко скажи что исправишь, потом дай исправленную версию.
Разберём frontmatter по полям:
name — идентификатор агента: строчная латиница и дефисы (letter-editor, data-analyst). По нему агент вызывается (@agent-letter-editor) и по нему же его видят хуки. Кириллица и пробелы недопустимы — файл с таким name Claude Code пропустит.
description — описание назначения агента. Важное поле: Claude Code использует его, чтобы понять, когда предложить этого агента. Пишите конкретно: что агент делает и когда его вызывать.
tools — список инструментов, которые агент может использовать. Если поле не указать, агент унаследует весь набор, доступный субагентам. Пустой список задавать нельзя: агент с нулём инструментов не запустится. Подробнее об инструментах — в следующем шаге.
Шаг 3. Поле tools — что давать агенту
Инструменты — это то, что агент может делать помимо генерации текста. Основные варианты:
tools: Read # может читать файлы
tools: Read, Write # читать и писать
tools: [Read, Write] # может читать и писать файлы
tools: [Read, Write, Bash] # может читать, писать и выполнять команды
tools: [Read, WebSearch] # может читать файлы и искать в интернете
Для агента-редактора писем инструменты не нужны — он работает с текстом, который вы ему передаёте. Но если создаёте агента-аналитика, который должен читать таблицы из файлов — нужно добавить Read.
Принцип минимальных прав
Давайте агенту только те инструменты, которые реально нужны для его задачи. Агент с Bash может выполнять команды в терминале — это мощно, но и рискованно. Агент, который только читает и пишет текст, не нуждается в доступе к файловой системе. Чем меньше прав — тем предсказуемее поведение.
Шаг 4. Поле model — когда менять
По умолчанию агент использует ту же модель, что настроена в Claude Code. Вы можете явно указать другую:
model: opus
или
model: haiku
Когда это полезно: если у вас много простых агентов для рутинных задач (форматирование, краткое резюме, исправление орфографии) — им хватит более лёгкой и быстрой модели. Сложные задачи (анализ договоров, стратегические рекомендации) — оставляйте на Opus или Sonnet. Это и быстрее, и дешевле, если у вас API-доступ.
Если не указывать поле model вообще — агент наследует текущую модель по умолчанию. Для начала это нормально.
Шаг 5. Как вызвать агента
Есть два способа:
Способ 1. @-mention по имени агента:
В диалоге наберите @ и выберите агента из подсказки. Вручную то же самое пишется как @agent-letter-editor — префикс agent- плюс значение поля name, а не имя файла. Claude Code поймёт, что вы обращаетесь к агенту из .claude/agents/letter-editor.md, загрузит его промт и начнёт работать в этой роли.
Пример:
@letter-editor вот черновик письма партнёру, посмотри:
«Привет, мы хотели бы обсудить условия нового контракта.
Давайте встретимся когда-нибудь на следующей неделе.
С уважением»
Способ 2. Natural language — описание задачи:
Claude Code умеет сам определять, какой агент подходит под задачу, на основе поля description в frontmatter. Если вы напишете «отредактируй это письмо» — Claude Code может предложить агента-редактора, потому что его description содержит «редактирует деловые письма».
Когда работает автоопределение
Автоматическое определение агента работает лучше, когда description написан конкретно и с глаголами действия. «Помогает с текстами» — плохое description. «Редактирует деловые письма и email: тон, структура, чёткость» — хорошее. Чем точнее описание, тем надёжнее автовыбор.
Шаг 6. Команда /agents
В диалоге Claude Code есть встроенная команда для управления агентами:
/agents
С версии 2.1.198 команда /agents списка не выводит — она печатает напоминание создавать и править агентов через чат или прямым редактированием файлов. Проверить, что Claude Code видит агента, можно иначе: наберите @ в чате и посмотрите, появился ли он в подсказке; а файлы с испорченным frontmatter найдёт claude plugin validate .claude/agents. Полезно, когда агентов уже несколько и вы хотите вспомнить, кто что умеет. Если агент появился в подсказке после @ — файл структурирован правильно.
Шаг 7. Второй агент — для разнообразия
Чтобы почувствовать разницу между агентами, создайте второй — с другим профилем. Например, аналитик:
---
name: data-analyst
description: Анализирует таблицы, сводки, цифры. Вызывай когда нужно разобрать данные, найти закономерности или подготовить выводы.
tools: [Read]
model: opus
---
Ты аналитик данных с опытом работы с бизнес-метриками. Твоя задача — находить смысл в цифрах и объяснять его простым языком.
Правила работы:
- Начинай с ключевого вывода, потом детали
- Указывай конкретные числа, не «значительно выросло» а «выросло на 23%»
- Выделяй аномалии и выбросы — они важнее средних значений
- Если данных недостаточно для вывода — прямо скажи об этом
- Не высказывай оценочных суждений о причинах, если причины не видны в данных
Формат вывода: Ключевой вывод → Что видим в данных → Аномалии → Вопросы для дополнительного анализа.
Сохраните в .claude/agents/data-analyst.md. Теперь наберите @ в чате — оба агента появятся в подсказке.
Частые ошибки
Ошибка 1. Агент создан, но не появляется в подсказке по @
Самая частая причина — ошибка в frontmatter. YAML строгий к синтаксису. Лишний пробел перед ---, кавычки не там где нужно, неправильное имя поля — и Claude Code не распознаёт файл как агента.
Как исправить: проверьте, что frontmatter начинается ровно с --- на первой строке, заканчивается --- без лишних символов. Обязательных полей два: name и description. Если tools не указать, агент унаследует весь набор инструментов, доступный субагентам; пустой список задавать нельзя — агент с нулём инструментов не запустится . Если файл всё равно не виден, скопируйте frontmatter из примера выше и замените только значения.
Ошибка 2. Слишком широкое описание в поле description
Вы написали description: помогает с задачами. Агент работает, но Claude Code не знает, когда его предлагать автоматически. Вы сами забудете через неделю, зачем этот агент.
Как исправить: description должен отвечать на два вопроса — «что конкретно делает» и «когда вызывать». Формула: «[Что делает]: [конкретика]. Вызывай когда [ситуация].»
Ошибка 3. Системный промт слишком общий
Агент создан, называется «Редактор», но в системном промте написано: «Помогай редактировать тексты». Результат — агент ведёт себя как обычный Claude, только с другим именем. Смысла в агенте нет.
Как исправить: системный промт должен содержать конкретные правила поведения, которые отличают этого агента от общего Claude. Запрещённые слова, обязательные элементы структуры, формат вывода, приоритеты при конфликте требований — вот что делает агента специализированным. Чем конкретнее правила, тем предсказуемее агент.
Ошибка 4. Давать всем агентам полный набор инструментов
Рефлекторно добавляете tools: [Read, Write, Bash] «на всякий случай, вдруг понадобится». Агент-редактор с доступом к Bash — это агент, который теоретически может изменить что-то в файловой системе, пока редактирует письмо.
Как исправить: определите для каждого агента минимальный набор. Агент, работающий только с текстом в диалоге — tools: Read. Агент, которому нужно читать документы — tools: [Read]. Добавляйте инструменты только когда без них конкретная задача невыполнима.
Когда нужно / когда нет
Кастомные агенты нужны, когда у вас есть повторяющаяся специализированная задача с устойчивыми правилами. Вы раз в неделю редактируете письма партнёрам — агент-редактор сэкономит вам объяснения каждый раз. Вы регулярно разбираете аналитику — агент-аналитик будет выдавать вывод в нужном формате без напоминаний.
Агенты нужны, когда задачи разнородные и смешивать их вредно. Правила делового письма и правила анализа данных — разные, иногда противоречащие. Лучше держать их в разных ролях.
Агенты не нужны для разовых задач. Если вам один раз нужно перевести документ — нет смысла создавать агента-переводчика. Дайте инструкции прямо в запросе. Агент — это инвестиция, которая окупается на повторении.
Агенты не нужны, если задача хорошо решается через CLAUDE.md. Если у вас один тип работы и один стиль — добавьте правила в CLAUDE.md. Агенты добавляют ценность именно через переключение между режимами.
Не создавайте агентов наперёд
Соблазн велик: сразу создать десять агентов «под все задачи». В реальности половина из них будет вызываться раз в полгода, а правила в них устареют и начнут мешать. Создавайте агента тогда, когда почувствовали потребность в переключении режима — и поняли, что объясняете одно и то же повторно. Не раньше.
Связь с другими уроками
-
День 11 (CLAUDE.md — структура и уровни) — агенты и CLAUDE.md работают в паре. CLAUDE.md задаёт базовый контекст проекта, агент добавляет специализацию для конкретной роли. Понимание CLAUDE.md — обязательная база перед работой с агентами.
-
День 21 (субагенты — концепция) — там разобрана идея разделения труда в Claude Code: почему один «универсальный» Claude хуже нескольких специализированных. День 22 — это практическое воплощение той концепции в виде конкретных файлов.
-
День 23 (frontmatter агентов — продвинутые параметры) — подробнее про поле
tools: какие инструменты существуют, как они взаимодействуют, и как настроить агента на работу с конкретными форматами файлов. Если сегодня вы создали базового агента — завтра узнаете, как его расширить.
Задание на сегодня
Создайте одного агента под задачу, которую вы решаете регулярно.
Конкретные шаги:
- Определите задачу — ту, которую вы объясняете Claude повторно каждый раз. Это хороший кандидат.
- Создайте папку
.claude/agents/в вашем рабочем каталоге, если её ещё нет. - Создайте файл агента по шаблону из урока: frontmatter с
name,description,tools, и системный промт с конкретными правилами — не менее трёх конкретных инструкций. - Наберите
@в Claude Code — убедитесь, что агент появился в подсказке. - Вызовите его через подсказку по
@или вручную:@agent-<значение поля name>и дайте реальную задачу из вашей работы.
Критерий выполнено: агент появляется в подсказке по @ и выполнил задачу с учётом правил из системного промта — без того, чтобы вы их повторяли в запросе.
Резюме
- Агент — это файл
.mdв.claude/agents/с frontmatter (name,description,tools) и системным промтом ниже - Вызов через подсказку по
@(вручную —@agent-<name>) или описание задачи — Claude Code выбирает агента сам по полюdescription tools: Read— только текст;tools: [Read]— может читать файлы; давайте минимум необходимого- Проверить, что файл структурирован правильно, можно набрав
@в чате: агент появится в подсказке (/agentsсписка не выводит) - Создавайте агента не наперёд, а когда поймали себя на повторном объяснении одних и тех же правил