Перейти к основному содержанию
Лучшие практики работы с Claude Code: практическое руководство

Лучшие практики работы с Claude Code: практическое руководство

Лучшие практики работы с Claude Code: практическое руководство

Claude Code — это CLI-ассистент для программирования на базе LLM, созданный Anthropic для ускорения процесса разработки как для индивидуальных программистов, так и для команд. Он может читать вашу кодовую базу, запускать команды терминала, редактировать файлы и автономно итерировать до полного выполнения задачи.

Лучшие практики работы с Claude Code: практическое руководство

Он намеренно сделан гибким (unopinionated) и настраиваемым. Он не станет мешать вам принимать неверные решения. При правильном использовании он значительно ускоряет разработку. При неверном — может впустую тратить токены, вносить ошибки или вносить изменения, которые вы не планировали.

А как же Claude Desktop?

Claude Code чрезвычайно полезен как универсальный агент и помощник, и для многих он является основным способом взаимодействия с моделями Claude даже за пределами кодинга.

Однако Claude Code подходит не для всех сценариев использования. Если вы проводите исследование или даже простой поиск, требующий большого количества специфического контекста из разных источников и/или информации, появившейся после даты завершения обучения модели, идеальным инструментом будет исследовательский режим (research mode) в Claude Desktop. В таблице ниже кратко описано, какой инструмент и когда использовать.

Что и когда использовать

ИнструментЛучше всего дляКлючевое преимущество
Claude Code CLIЗадач по программированию, манипуляций с файлами, автоматизацииПрямой доступ к файловой системе и терминалу
Claude DesktopИсследований, написания текстов, форматированного выводаРежим глубокого исследования, экспорт артефактов
Расширение VS CodeClaude Code с более тесной интеграцией в IDEЧат в боковой панели, удобный обзор изменений (diff)
Claude MobileБыстрых вопросов на ходуУдобство использования

Примечание: Claude Code также может запускаться из Claude Desktop/Mobile через облачные контейнеры, что позволяет работать с репозиториями без локального клонирования.

Часть 2: Начало работы с Claude Code

Установка

  • Требования: Node 18+ и поддерживаемая ОС.
  • Команда установки: npm install -g @anthropic-ai/claude-code
  • Проверка: claude --version

Первый запуск

  • Запускайте claude из корня вашего проекта (Claude Code использует текущую рабочую директорию в качестве контекста).
  • Авторизация: Происходит через браузер (OAuth flow).
  • Выбор модели: Opus (мощная, дорогая) против Sonnet (быстрая, дешевая).
    • Поведение по умолчанию: Используется Opus до достижения 50% лимита, затем происходит переключение на Sonnet.
    • Принудительный выбор: Используйте флаги --model opus или --model sonnet.

Понимание разрешений

Claude запрашивает подтверждение перед изменением файлов или запуском потенциально опасных команд. Это сделано намеренно для обеспечения безопасности.

Способы уменьшить количество прерываний:

МетодОбласть действияКогда использовать
«Always allow» в запросеТекущая сессияРазовое доверие в рамках текущей работы
Команда /permissionsПостоянноИнтерактивное управление списками разрешений
.claude/settings.jsonПроектНастройки для всей команды в рамках проекта (рекомендуется закоммитить в git)
~/.claude.jsonПользовательЛичные предпочтения, действующие во всех проектах

Часть 2: Начало работы с Claude Code

Установка

  • Требования: Node 18+ и поддерживаемая ОС.
  • Команда установки: npm install -g @anthropic-ai/claude-code
  • Проверка: claude --version

Первый запуск

  • Запускайте claude из корня вашего проекта (Claude Code использует текущую рабочую директорию в качестве контекста).
  • Авторизация: Происходит через браузер (OAuth flow).
  • Выбор модели: Opus (мощная, дорогая) против Sonnet (быстрая, дешевая).
    • Поведение по умолчанию: Используется Opus до достижения 50% лимита, затем происходит переключение на Sonnet.
    • Принудительный выбор: Используйте флаги --model opus или --model sonnet.

Понимание разрешений

Claude запрашивает подтверждение перед изменением файлов или запуском потенциально опасных команд. Это сделано намеренно для обеспечения безопасности.

Способы уменьшить количество прерываний:

МетодОбласть действияКогда использовать
«Always allow» в запросеТекущая сессияРазовое доверие в рамках текущей работы
Команда /permissionsПостоянноИнтерактивное управление списками разрешений
.claude/settings.jsonПроектНастройки для всей команды в рамках проекта (рекомендуется закоммитить в git)
~/.claude.jsonПользовательЛичные предпочтения, действующие во всех проектах

Распространенные шаблоны разрешений:

  • Edit — разрешить любые изменения файлов.
  • Bash(git commit:*) — разрешить выполнение коммитов git.
  • Bash(npm test:*) — разрешить запуск тестов.
  • mcp__<server>__<tool> — разрешить использование конкретных инструментов MCP.

Важно: Избегайте использования флага --dangerously-skip-permissions за пределами изолированных сред (песочниц).

Настройки

Иерархия областей действия: пользовательская (~/.claude.json) → проектная (<КОРЕНЬ ПРОЕКТА>/.claude/settings.json).

Полный справочник по настройкам: https://code.claude.com/docs/en/settings

НастройкаРасположениеЧто делает
modelФлаг CLI или настройкиУстанавливает модель по умолчанию (opus, sonnet, haiku)
allowedTools.claude/settings.jsonСписок предварительно одобренных инструментов/команд
mcpServers.claude/settings.jsonКонфигурации серверов MCP
sandbox.claude/settings.jsonВключает изоляцию в контейнере

Совет для команд: Добавьте файл .claude/settings.json в систему контроля версий (git), чтобы синхронизировать разрешения и конфигурации MCP между всеми участниками команды.

Песочница (Рекомендуется для автономной работы)

Запуск Claude Code в контейнере позволяет безопасно включить режим автоматического одобрения (auto-approve) для длительных задач.

Рекомендуемые инструменты

  • gh CLI — позволяет Claude создавать PR (Pull Requests), управлять задачами (Issues) и искать в истории git.
    • Установка: brew install gh или apt install gh.
    • Авторизация: gh auth login.
    • Дополнительная настройка не требуется.
  • Дополнительно: Запустите команду /install-github-app, чтобы включить автоматические обзоры PR через упоминания @claude. Это установит приложение GitHub App в ваш репозиторий, которое будет вызывать Claude для проверки PR каждый раз, когда вы упоминаете @claude в комментариях.

Паттерны рабочего процесса

Мышление менеджера проекта (PM)

Самая большая ошибка новых пользователей — просто вписать задачу и ожидать идеального результата. Claude Code работает лучше всего, когда вы относитесь к нему как к способному, но не знающему контекста младшему разработчику (Junior). Вы — менеджер проекта (PM). Ваша работа заключается в том, чтобы:

  1. Предоставлять контекст перед тем, как просить выполнить работу.
  2. Разбивать неоднозначные задачи на проверяемые этапы.
  3. Проверять результат перед одобрением изменений.
  4. Корректировать курс на ранних этапах, не позволяя Claude уйти в неверном направлении.

Четко сформулированная задача с понятными критериями успеха сэкономит вам больше времени, чем расплывчатый промпт, требующий трех переделок.

Основной процесс: Исследование → План → Код → Коммит

Это канонический паттерн для большинства нетривиальных задач.

Фаза 1: Исследование и планирование (Режим планирования)

Войдите в режим планирования (Plan Mode), чтобы запретить Claude вносить какие-либо изменения во время проведения исследования.

ДействиеМетод
Переключить режим планированияShift+Tab или команда /plan
Визуальный индикаторВ интерфейсе появится надпись «Plan Mode»

В режиме планирования Claude:

  • Читает файлы и изучает кодовую базу.
  • Использует встроенного субагента Plan для глубокого исследования.
  • Предлагает подходы к решению и выявляет пограничные случаи (edge cases).
  • Не может редактировать файлы или запускать изменяющие что-либо команды.

Пример ПРОМТ

Вы: Мне нужно добавить поддержку OAuth в наш модуль авторизации. Изучи текущую реализацию и предложи план.

Claude: [Читает файлы аутентификации, проверяет зависимости, изучает паттерны] Вот что я нашел... Вот мой предлагаемый подход...

Вы: Подумай получше о пограничном случае (edge case) с обновлением токена.

Claude: [Расширенное рассуждение] Обновленный план с учетом обработки обновления токенов...

Вы: Запиши этот план в docs/OAUTH_PLAN.md

Claude: [Записывает файл плана — разрешено, так как это создание новой документации]

Зачем записывать план в файл? Если реализация пойдет не так, вы сможете выполнить команду /clear, заново загрузить файл плана и попробовать снова, не тратя время на повторную фазу исследования.

Фаза 2: Реализация (Выход из режима планирования)

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

[Shift+Tab для выхода из Plan Mode]

Вы: Реализуй план из docs/OAUTH_PLAN.md шаг за шагом. После каждого шага проверяй работоспособность, прежде чем продолжать. Пиши тесты по ходу дела.

Теперь Claude может редактировать файлы и запускать команды. Файл плана служит в данном случае техническим заданием (спецификацией).

Фаза 3: Коммит и завершение

Вы: Закоммить эти изменения с информативным сообщением. Затем создай PR, резюмирующий всё, что мы сделали.

Если у вас установлен gh CLI, Claude полностью берет на себя процесс создания Pull Request (PR).

Краткий справочник

ФазаРежимЧто делает ClaudeШаблон промпта
ИсследованиеPlan ModeЧитает, ищет, рассуждает«Изучи X. Код пока не пиши».
ПланированиеPlan ModeПредлагает, документирует«Подумай хорошенько. Запиши план в файл».
РеализацияNormalРедактирует, запускает, тестирует«Реализуй шаг за шагом. Проверяй каждый шаг».
КоммитNormalОперации с Git«Сделай коммит и создай PR».

Вариант: Цикл TDD (Разработка через тестирование)

Для изменений с четкими критериями корректности позвольте тестам управлять процессом итерации.

  1. Сначала пишем тесты: «Напиши тесты для нового ограничителя запросов (rate limiter). Учти стандартный сценарий (happy path) и пограничный случай, когда пользователь превышает лимит. Саму функцию пока не реализовывай».
  2. Убеждаемся, что тесты падают: «Запусти тесты и подтверди, что они не проходят».
  3. Реализация: «Теперь реализуй rate limiter так, чтобы тесты прошли. Сами тесты не меняй».
  4. Итерация: Claude запускает тесты, исправляет ошибки и повторяет цикл, пока все тесты не станут «зелеными».
  5. Коммит: «Закоммить реализацию».

Этот метод эффективен, потому что у Claude есть четкая цель для проверки своей работы. Тесты здесь выступают в роли спецификации.

Вариант: Визуальная итерация (Фронтенд)

Для работы с интерфейсом (UI) дайте Claude визуальную цель.

  1. Предоставьте макет: Вставьте скриншот, перетащите изображение в чат или укажите путь к файлу.
  2. Реализация: «Собери этот компонент в соответствии с макетом».
  3. Скриншот результата: Используйте MCP-сервер Puppeteer или вставьте скриншот вручную.
  4. Сравнение и итерация: «Вот как это выглядит сейчас. Доработай код, чтобы он максимально точно соответствовал оригиналу».
  5. Повторяйте, пока не будете удовлетворены результатом.

Первая попытка Claude обычно готова примерно на 70%. Две или три итерации позволяют довести результат до 95%.

Техника: Q&A по кодовой базе

Используйте Claude Code для изучения незнакомых проектов. Специальных промптов не требуется, просто задавайте вопросы:

  • «Как в этом проекте работает логирование?»
  • «Каков поток данных от API-запроса до записи в базу данных?»
  • «Почему CustomerService расширяет BaseService вместо реализации интерфейса?»
  • «Найди все места, где мы обрабатываем обновление токена авторизации».

Это заменяет часы работы с grep и погружения в документацию. Это особенно полезно при онбординге (введении в проект) новых членов команды.

Техника: Операции с Git и GitHub

Claude с установленным gh может справляться с большинством рабочих процессов git:

ЗадачаПример промпта
Поиск в истории«Кто последним менял модуль оплаты и почему?»
Написание коммитов«Закоммить эти изменения с информативным сообщением»
Создание PR«Создай PR для этой ветки с описанием изменений»
Разрешение конфликтов«Помоги мне разрешить этот конфликт слияния»
Обзор PR«Проверь открытый PR и резюмируй изменения»

Совет: Явно просите Claude проверить историю git, когда задаете вопросы «почему». «Просмотри историю git, чтобы понять, почему этот API был спроектирован именно так».

Лучшие практики составления промптов

Основной принцип: Формулируйте намерение заранее

Самая большая ошибка при составлении промптов — это не плохие формулировки, а исправление Claude после того, как он написал плохой код, вместо того чтобы предотвратить это в самом начале.

У Claude нет знаний о соглашениях вашей команды, архитектурных решениях или извлеченных уроках. По умолчанию он генерирует те паттерны, которые чаще всего встречались в обучающих данных. Решение: зафиксируйте ваши стандарты в CLAUDE.md или в «Навыках» (Skills), чтобы каждый промпт начинался с вашего контекста.

Пример: Команда Dagster зафиксировала свою философию Python в правилах, которые они загружают в каждую сессию Claude. Вместо того чтобы проверять и переписывать вывод LLM, они с первой попытки получают код, соответствующий их стандартам. См.: Dignified Python: 10 Rules to Improve Your LLM Agents.

Что должно входить в правила вашей команды (см. раздел CLAUDE.md для примера):

  • Идиомы языка (например, «предпочитай LBYL вместо EAFP», «никогда не проглатывай исключения»).
  • Архитектурные паттерны (например, «используй паттерн Repository для доступа к данным»).
  • Соглашения об именовании (например, «используй snake_case, добавляй префикс _ к приватным методам»).
  • Философия тестирования (например, «никаких моков для юнит-тестов», «интеграционные тесты работают с реальной БД»).
  • Обработка ошибок (например, «позволяй исключениям всплывать выше, если это не граница API»).

Специфичность: Размытые против точных промптов

Claude может догадаться о намерениях, но он не умеет читать мысли. Специфичные промпты сокращают количество итераций.

Размытый промптТочный промпт
«Добавь тесты для foo.py»«Напиши тест для foo.py, покрывающий пограничный случай, когда пользователь вышел из системы. Не используй моки».
«Почему этот API такой странный?»«Просмотри историю git, чтобы найти, когда был внедрен ExecutionFactory, и резюмируй, почему его API развивался именно так».
«Добавь виджет календаря»«Посмотри HotDogWidget.php, чтобы понять наши паттерны создания виджетов. Создай виджет календаря, который позволяет пользователям выбирать месяц и переключать годы. Не используй внешние библиотеки, кроме тех, что уже есть в проекте».

Паттерны, повышающие специфичность:

  • Указывайте конкретные файлы, функции или модули.
  • Четко говорите, чего не следует делать (не использовать моки, не менять тесты, не использовать библиотеку X).
  • Ссылайтесь на существующий код как на образец для подражания.
  • Явно определяйте критерии успеха.

Триггеры размышления (Thinking Triggers)

Используйте эти фразы, чтобы выделить больше времени на рассуждения во время планирования:

ФразаРесурс (бюджет)Когда использовать
thinkСтандартныйОбычное исследование (по умолчанию).
think hardРасширенныйКогда есть несколько допустимых подходов.
think harderСильно расширенныйСложные компромиссы, неочевидные пограничные случаи.
ultrathinkМаксимальныйАрхитектурные решения, трудноуловимые баги.

Эти фразы напрямую привязаны к выделению токенов на рассуждения (reasoning tokens) в Claude Code, это не просто пожелания, а команды для модели.

Пример

«Подумай получше о том, как должно работать обновление токена, когда у пользователя открыто несколько вкладок. Какие состояния гонки (race conditions) могут возникнуть?»

Предоставление контекста

Claude работает лучше, когда у него больше контекста. Используйте следующие методы:

МетодКакЛучше всего для
Ссылки на файлыАвтодополнение путей в промпте через TabУказания на конкретный код
ИзображенияВставка (Ctrl+V), перетаскивание или путь к файлуМакетов интерфейса, диаграмм, скриншотов ошибок
URL-адресаВключение URL прямо в промптДокументации, Stack Overflow, спецификаций
Конвейер данных (Pipe)cat log.txt | claudeЛогов, CSV-файлов, больших текстовых файлов
Упоминания через @@имя_файла.pyБыстрых ссылок на файлы

Совет: На macOS используйте Cmd+Ctrl+Shift+4, чтобы сделать скриншот в буфер обмена, а затем нажмите Ctrl+V (не Cmd+V), чтобы вставить его в Claude Code.

Корректировка курса

Не ждите, пока Claude закончит выполнение, если видите, что он движется в неверном направлении.

ДействиеСочетание клавишКогда использовать
ПрерватьEscapeЕсли Claude явно уходит «не туда»
Отмотать (Rewind)Escape дваждыЧтобы попробовать другой подход из предложенных ранее
Сброс/ОчисткаКоманда /clearПри начале новой задачи; старый контекст будет только мешать («шуметь»)
Контрольная точка«Запиши это в PLAN.md»Перед началом рискованной реализации

Привычка использовать /clear: Пользуйтесь этой командой часто между задачами. Накопленный контекст от предыдущей работы может запутать Claude и привести к неэффективному расходу токенов.

Чек-листы для сложных задач

Для масштабных задач (миграции, массовый рефакторинг) заставляйте Claude фиксировать состояние во внешнем файле:

  1. «Запусти линтер и запиши все ошибки в TODO.md в виде списка с чек-боксами».
  2. «Исправляй каждый пункт по одному. Отмечай выполненное после исправления».
  3. «После каждого исправления снова запускай линтер, чтобы подтвердить, что проблема решена».

Это предотвращает отклонение от цели (drift), делает процесс наглядным для вас и позволяет Claude отслеживать прогресс на протяжении длительной сессии.

Анти-паттерны, которых следует избегать

Анти-паттернПочему это не работаетЧто делать вместо этого
«Сделай лучше»Нет критериев успеха.«Уменьши задержку (latency), закешировав X».
Промпты из многих частейClaude теряет нить повествования.Одна задача на промпт, затем уточняющие вопросы.
Предположение о контекстеClaude не знает вашу кодовую базу (по умолчанию).Ссылайтесь на файлы явно.
Исправление «после»Это медленнее, чем предотвращение ошибок.Зафиксируйте стандарты в CLAUDE.md.
Отсутствие прерыванийЛишние токены и неверное направление работы.Нажимайте Escape раньше, перенаправляйте модель.

Память с помощью CLAUDE.md

CLAUDE.md — это специальный файл, который Claude автоматически загружает в контекст в начале каждой сессии. Думайте об этом как о документации для «онбординга» Claude: в нем содержатся вещи, которые необходимо знать новому члену команды, чтобы эффективно вносить вклад в проект.

В отличие от «Навыков» (Skills), которые вызываются по требованию, или субагентов, которые работают в изолированных контекстах, CLAUDE.md присутствует всегда. Это делает его идеальным для:

  • Соглашений масштаба всего проекта, применимых к любой задаче.
  • Команд, которые Claude должен уметь запускать.
  • Специфических для вашей кодовой базы «подводных камней» (gotchas) и предупреждений.
  • Руководств по стилю и архитектурных решений.

Где он располагается

Claude Code ищет файлы CLAUDE.md в нескольких местах, загружая их в порядке возрастания специфичности:

РасположениеОбласть действияДля чего использовать
~/.claude/CLAUDE.mdВсе сессииЛичные предпочтения, глобальные сокращения.
Корень проекта /CLAUDE.mdЭтот проектСоглашения команды, общие для всех (в git).
Родительские директорииМонорепозиторийОбщая конфигурация для нескольких подпроектов.
Дочерние директорииПодмодулиПереопределение правил для конкретных модулей.
CLAUDE.local.mdЛичное, не в gitВаши предпочтения для конкретного проекта.

Порядок приоритетности: Глобальный → родительский → корень проекта → дочерние директории. Более специфичные файлы дополняют (а не заменяют) общие.

Совет для монорепозиториев: Поместите общие соглашения в root/CLAUDE.md, а инструкции для конкретных модулей — в root/packages/foo/CLAUDE.md. Claude загрузит оба файла, если вы запустите его из root/packages/foo/.

С чего начать: /init

Самый быстрый способ создать CLAUDE.md — позволить Claude сгенерировать его: /init

Claude проанализирует структуру вашего проекта, определит фреймворки и инструменты, и создаст стартовый CLAUDE.md. Просмотрите и отредактируйте результат — это лишь отправная точка, а не истина в последней инстанции.

Что включить

Хороший CLAUDE.md должен быть лаконичным и применимым на практике. Стремитесь к инструкциям, которым Claude сможет следовать, а не к документации для людей.

Рекомендуемые разделы

# Проект: [Название]

## Команды
- `npm run build` — Сборка проекта
- `npm run test` — Запуск тестов (используйте `npm run test -- --watch` для TDD)
- `npm run lint` — Линтинг и авто-исправление

## Стиль кода
- Используйте ES-модули (import/export), а не CommonJS (require)
- Предпочитайте именованный экспорт (named exports) дефолтному
- Используйте строгий режим TypeScript; никакого `any` без обоснования

## Архитектура
- API-роуты находятся в `src/routes/`; следуйте существующим паттернам
- Доступ к БД осуществляется через репозитории в `src/repos/`
- Никогда не импортируйте из `src/internal/` вне этой директории

## Тестирование
- Юнит-тесты на Vitest; никаких моков, кроме внешних сервисов
- Интеграционные тесты работают с реальной тестовой БД
- Запуск отдельных файлов тестов: `npm run test -- path/to/file`

## Предупреждения
- Директория `legacy/` устарела; не добавляйте туда новый код
- В `CustomerService` есть известные состояния гонки (race conditions); см. issue #1234

Будьте кратки. Если ваш CLAUDE.md превышает ~100 строк, перенесите подробные справочные материалы в «Навыки» (Skills), чтобы использовать принцип прогрессивного раскрытия информации.

Настройка вашего CLAUDE.md

CLAUDE.md — это просто промпт. Относитесь к нему соответственно.

Техники, улучшающие соблюдение правил:

  • Используйте акценты для критических правил: «ВАЖНО:» или «ВЫ ДОЛЖНЫ».
  • Будьте конкретны: «Используй snake_case» вместо «Следуй правилам именования».
  • Включайте примеры правильных паттернов кода.
  • Периодически прогоняйте файл через улучшатель промптов от Anthropic.

Итерируйте на основе результатов. Если Claude постоянно совершает одну и ту же ошибку — добавьте правило. Если правило игнорируется — перефразируйте его, добавьте капса или примеров.

Добавление инструкций во время сессии

Нажмите # в любой момент сессии, чтобы добавить инструкцию в CLAUDE.md, не прерывая разговор: # Всегда запускай тесты после внесения изменений в src/auth/

Claude сам добавит это в соответствующий файл CLAUDE.md. Это очень удобно для фиксации извлеченных уроков прямо «в моменте».

Совместная работа и управление

  • Личный CLAUDE.md (~/.claude/CLAUDE.md): Настраивайте как хотите. Ваши сокращения, ваши предпочтения.

CLAUDE.md проекта: Относитесь к нему как к коду.

ПрактикаПочему
Добавьте в gitЧтобы все участники получали одинаковое поведение Claude.
Требуйте код-ревью для измененийСоглашения влияют на работу всей команды.
Используйте CLAUDE.local.md для личных настроекНе загрязняйте общую конфигурацию индивидуальными предпочтениями.
Документируйте «почему», а не только «что»Будущим коллегам по команде нужен контекст решений.

Рекомендуемый рабочий процесс:

  1. Начните с команды /init, чтобы создать базовую версию.
  2. Проверьте её всей командой и влейте (merge) в основную ветку (main).
  3. Добавляйте правила постепенно через команду # в чате или через Pull Requests.
  4. Периодически проводите аудит: соблюдаются ли правила? Не появились ли устаревшие?

Пример анти-паттерна:

CLAUDE.md на 500 строк, который никто не поддерживает — распространенная ошибка. Начинайте с малого и развивайте файл на основе реальных проблем, с которыми сталкиваетесь.

Стартовый шаблон (Starter Template)

Скопируйте это в качестве отправной точки для ваших новых проектов:

# Проект: [Название вашего проекта]

## Быстрый старт
- `[команда сборки]` — Собрать проект
- `[команда тестирования]` — Запустить тесты
- `[команда линтинга]` — Проверить код линтером

## Стиль кода
- [Ваш язык программирования] версия: [версия]
- [2-3 ключевых правила стиля]

## Архитектура
- [Где находится основной код]
- [Ключевые паттерны, которым нужно следовать]

## Тестирование  
- [Фреймворк и философия тестирования]
- [Как запускать отдельные файлы тестов]

## Предупреждения
- [Известные «подводные камни», устаревшие области, «острые углы»]

## Рабочий процесс (Workflow)
- [Именование веток, формат сообщений коммитов, процесс работы с PR]

CLAUDE.md vs. Skills vs. Subagents (Субагенты)

МеханизмКогда загружаетсяОбласть действияДля чего использовать
CLAUDE.mdВсегдаКаждая задачаУниверсальные соглашения проекта.
Skills (Навыки)По требованиюПодходящие задачиСпециализированные рабочие процессы (PDF, тесты и т.д.).
SubagentsПри вызовеИзолированный контекстДелегированные подзадачи (ревью, исследование).

Совет: Если вы ловите себя на том, что добавляете в CLAUDE.md инструкции, специфичные для конкретной задачи, лучше оформите их как «Навык» (Skill).

Импорт других файлов

Для крупных проектов вы можете разделить соглашения по разным файлам и импортировать их в основной CLAUDE.md:

# Проект: MyApp

## Основные соглашения
@docs/conventions/code-style.md
@docs/conventions/testing.md
@docs/conventions/api-patterns.md

## Специфика модулей
@src/payments/CONVENTIONS.md
@src/auth/CONVENTIONS.md

Как это работает:

  • Добавьте @путь/к/файлу.md отдельной строкой.
  • Claude загрузит указанный файл в контекст при старте сессии.
  • Пути указываются относительно расположения самого файла CLAUDE.md.
СценарийПодход
Малый проект (<100 строк правил)Один файл CLAUDE.md.
Большой монорепозиторийКорневой CLAUDE.md импортирует общие правила; модульные — специфичные для модулей.
Команда с готовыми гайдамиИмпортируйте существующую документацию вместо дублирования.
Часто меняющиеся правилаОтдельный файл = более чистые диффы в Pull Request.

Пример структуры для монорепозитория:

├── CLAUDE.md                 # Импортирует общие соглашения
├── docs/
│   └── conventions/
│       ├── typescript.md     # Правила для TS
│       ├── testing.md        # Философия тестирования  
│       └── api-design.md     # Паттерны API
├── packages/
│   ├── api/
│   │   └── CLAUDE.md         # Импортирует корень + специфику API
│   └── web/
│       └── CLAUDE.md         # Импортирует корень + специфику Web

Содержимое packages/api/CLAUDE.md:

# API Package
@../../docs/conventions/api-design.md
## Команды для API
- `npm run dev` — Запуск dev-сервера на порту :3000
- `npm run db:migrate` — Запуск миграций

Совет 

Импортируемые файлы не нуждаются в метаданных (YAML frontmatter) — это просто Markdown-текст, который добавляется в контекст. Старайтесь, чтобы их содержимое было сосредоточено на инструкциях, а не на документации для людей.

Кастомные слэш-команды (Custom Slash Commands)

Слэш-команды — это многоразовые шаблоны промптов, хранящиеся в виде markdown-файлов. Когда вы вводите / в Claude Code, ваши собственные команды появляются в списке наряду со встроенными.

Используйте слэш-команды для:

  • Повторяющихся рабочих процессов, которые вы запускаете часто (циклы отладки, создание PR, код-ревью).
  • Стандартизированных процессов команды (чтобы каждый следовал одному и тому же чек-листу развертывания).
  • Сложных промптов, которые не хочется вводить заново (многоэтапные задачи со специфическими инструкциями).

Думайте о них как о сохраненных промптах с необязательными параметрами.

Где они располагаются

РасположениеОбласть действияКак вызывается
.claude/commands/Проект (добавьте в git)/project:имя-команды
~/.claude/commands/Личное (все проекты)/user:имя-команды

Именование файлов: Имя файла становится именем команды. Файл fix-issue.md превратится в команду /project:fix-issue.

Базовая структура

Слэш-команда — это markdown-файл с необязательным блоком YAML (frontmatter) в начале:
---
description: Однострочное описание, отображаемое в меню /
---
Здесь располагается ваш шаблон промпта.
Это может быть несколько абзацев с полным форматированием markdown.

Поле description необязательно, но рекомендуется — оно помогает вам (и коллегам) понять, что делает команда, при просмотре меню /.

Параметризация с использованием $ARGUMENTS

Используйте переменную $ARGUMENTS, чтобы передавать значения из командной строки прямо в ваш шаблон:

Файл: .claude/commands/fix-issue.md

---
description: Анализирует и исправляет GitHub issue по его номеру
---

Проанализируй и исправь GitHub issue #$ARGUMENTS.

1. Используй `gh issue view $ARGUMENTS`, чтобы получить детали задачи.
2. Найди в кодовой базе соответствующие файлы.
3. Реализуй исправление.
4. Напиши тесты для проверки.
5. Сделай коммит с сообщением "fix: resolve #$ARGUMENTS".
6. Создай PR со ссылкой на эту задачу.

Вызов: /project:fix-issue 1234

Claude получит полностью сформированный промпт, в котором вместо $ARGUMENTS будет подставлено число 1234.

Пользовательские команды против Проектных

АспектПользовательские командыПроектные команды
Расположение~/.claude/commands/.claude/commands/
Доступ командНетДа (через git)
Префикс/user:/project:
ПрименениеЛичные сокращенияКомандные рабочие процессы

Рекомендация: Начинайте с проектных команд. Они проходят через систему контроля версий, ревью и доступны всем участникам. Используйте пользовательские команды только для личных предпочтений, которые не принесут пользы остальной команде.

Примеры команд

Исправитель GitHub-задач (GitHub Issue Fixer)

Файл: .claude/commands/fix-issue.md

---
description: Анализирует и исправляет задачу в GitHub
---
Проанализируй и исправь GitHub issue #$ARGUMENTS.

Следуй этим шагам:
1. Запусти `gh issue view $ARGUMENTS`, чтобы получить детали.
2. Изучи описанную проблему.
3. Найди в кодовой базе соответствующие файлы.
4. Реализуй исправление.
5. Напиши тесты для проверки исправления.
6. Убедись, что код проходит линтинг и проверку типов.
7. Сделай коммит с описательным сообщением и ссылкой на #$ARGUMENTS.
8. Сделай push и создай PR.
Используй `gh` для всех операций с GitHub.

Слэш-команды против Навыков (Slash Commands vs. Skills)

АспектСлэш-командыНавыки (Skills)
ВызовЯвный (/project:имя)Автоматический (Claude сопоставляет с задачей)
СтруктураОдин Markdown-файлДиректория с SKILL.md + файлы поддержки
ПараметрыПеременная $ARGUMENTSНет (контекст берется из самой задачи)
ПрименениеЧеткие, повторяемые процессыЭкспертиза, применяемая автоматически

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

Оркестрация субагентов из команд

Слэш-команды могут явно вызывать субагентов, объединяя повторяемые процессы со специализированной экспертизой:

Файл: .claude/commands/review-and-fix.md

---
description: Ревью кода специалистом с последующим исправлением ошибок
---

Проверь и исправь $ARGUMENTS:

1. Запусти субагента `code-reviewer` для анализа файла.
2. Собери его выводы.
3. Для каждой найденной ошибки:
  - Исправь её.
  - Убедись, что исправление не ломает тесты.
4. Резюмируй внесенные изменения.

Используй субагента `security-auditor`, если модифицируется любой код, связанный с авторизацией.

Этот паттерн позволяет:

  • Определить рабочий процесс (workflow) в слэш-команде.
  • Делегировать экспертизу специализированным субагентам.
  • Держать основной контекст чистым (субагенты работают в изолированных контекстах).

Советы

  • Фокусируйте команды. Одна команда — один процесс. При необходимости объединяйте их вручную.
  • Активно используйте $ARGUMENTS. Команды без параметров — это просто сохраненные промпты; параметры делают их гибкими.
  • Добавляйте «пути отхода». Добавляйте фразы вроде «Если X неясно, спроси меня перед продолжением», чтобы избежать бесконтрольной автоматизации.
  • Версионируйте проектные команды. Относитесь к ним как к коду: делайте ревью изменений, документируйте назначение.

Навыки агента (Agent Skills)

Что это такое

Навыки (Skills) — это папки, содержащие инструкции, скрипты и ресурсы, которые Claude загружает динамически, когда они подходят для вашей текущей задачи. В отличие от CLAUDE.md (загружается всегда) или слэш-команд (вызываются явно), Навыки активируются автоматически, когда Claude решает, что они полезны для задачи.

Думайте о Навыках как о руководствах по онбордингу для специализированных задач: всё, что нужно знать Claude, чтобы хорошо справиться с конкретной областью.

Где они располагаются

РасположениеОбласть действия
.claude/skills/Проект (добавляется в git)
~/.claude/skills/Личные (для всех проектов)

Каждый Навык — это директория, содержащая как минимум файл SKILL.md:

.claude/skills/
└── api-testing/
    ├── SKILL.md           # Обязательно: инструкции + метаданные
    ├── examples.md        # Опционально: загружается по запросу
    ├── patterns.md        # Опционально: загружается по запросу
    └── scripts/
        └── generate-mock.py  # Опционально: исполняемый файл для Claude

Как загружаются навыки (Принцип прогрессивного раскрытия)

Навыки используют трехходовую систему загрузки для экономии контекста:

УровеньЧто загружаетсяКогда
Метаданныеname и description из frontmatterПри старте сессии (все навыки)
ИнструкцииТело файла SKILL.mdКогда Claude понимает, что навык подходит задаче
Файлы поддержкиДругие .md файлы, скриптыКогда Claude решит, что они необходимы

Это означает, что вы можете установить множество навыков без ущерба для контекста — Claude просто «знает» об их существовании, пока не возникнет реальная необходимость.

Важно для автора: Основные инструкции пишите в SKILL.md. Подробные справочные материалы выносите в отдельные файлы, которые Claude прочитает только при необходимости.

Структура SKILL.md

---
name: api-testing
description: >
  Тестирование REST API с полным покрытием. Используйте при написании тестов API,
  тестировании эндпоинтов или отладке HTTP-проблем. Обрабатывает аутентификацию,
  пагинацию и сценарии ошибок.
allowed-tools: Read, Write, Edit, Bash, WebFetch
---

# API Testing

## Когда использовать этот навык
- Написание тестов для REST эндпоинтов
- Отладка упавших API-вызовов
- Генерация мок-ответов

## Подход
1. Начни с изучения реализации эндпоинта
2. Определи все коды ответов и пограничные случаи
3. Сначала пиши тесты для успешных сценариев (happy path), затем для ошибок
4. Используй реальные HTTP-вызовы в интеграционных тестах, а не моки

## Паттерны
См. [patterns.md](./patterns.md) для общих паттернов тестирования.

## Скрипты
Запусти `./scripts/generate-mock.py <endpoint>`, чтобы создать заготовку файла с мок-ответом.

Поля Frontmatter:

  • name (обязательно): Идентификатор навыка.
  • description (обязательно): То, как Claude решает использовать этот навык — будьте конкретны.
  • allowed-tools (опционально): Ограничение инструментов, которые может использовать навык.
  • context (опционально): Установите значение fork, чтобы запускать навык в изолированном контексте субагента.

Написание хороших описаний

Поле description определяет, активирует ли Claude ваш навык.

ПлохоХорошо
«Помогает с документами»«Извлечение текста и таблиц из PDF, заполнение форм, объединение документов. Используйте при работе с PDF или когда упоминаются формы».
«Утилиты для тестов»«Написание и отладка E2E тестов Playwright. Используйте при создании браузерных тестов, отладке селекторов или обработке флоу авторизации».

Встроенные навыки

Anthropic предоставляет навыки для работы с популярными форматами документов (доступны на платных тарифах):

  • PDF: Извлечение текста/таблиц, заполнение форм, разделение/слияние.
  • DOCX: Создание и редактирование файлов Word с форматированием.
  • PPTX: Создание презентаций с макетами и заметками докладчика.
  • XLSX: Создание таблиц с формулами, графиками и анализом данных.

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

Создание собственных навыков

Вариант 1: Использование навыка skill-creator

Вы можете просто попросить Claude помочь: «Помоги мне создать навык для проверки миграций базы данных (database migrations).»

Claude в интерактивном режиме расспросит вас о рабочем процессе, а затем сам сгенерирует структуру папок и файл SKILL.md.

Вариант 2: Создание вручную

  1. Создайте директорию: mkdir -p .claude/skills/db-migrations
  2. Создайте SKILL.md с метаданными (frontmatter):
---
name: db-migrations
description: >
  Проверка и создание миграций базы данных. Используйте при работе с 
  изменениями схемы, файлами миграций или версионированием БД.
---

# Database Migration Review

## Чек-лист
- [ ] Миграция обратима (есть метод down)
- [ ] Нет потери данных при откате (down migration)
- [ ] Добавлены индексы для новых внешних ключей (foreign keys)
- [ ] Для больших таблиц используются пакетные обновления (batched updates)

## Команды
- `npm run db:migrate` — Запустить ожидающие миграции
- `npm run db:rollback` — Откатить последнюю миграцию
- `npm run db:status` — Показать статус миграций
  1. (Опционально) Добавьте вспомогательные файлы для подробных справочных материалов.

Совет: Старайтесь, чтобы объем SKILL.md не превышал 500 строк. Если информации больше, разделите её на отдельные файлы и дайте на них ссылки.

Навыки с исполняемыми скриптами

Навыки могут включать скрипты, которые Claude запускает как инструменты:

.claude/skills/data-analysis/
├── SKILL.md
└── scripts/
    ├── profile-csv.py      # Claude может это запустить
    └── detect-outliers.py

В вашем SKILL.md:

## Доступные скрипты

- `./scripts/profile-csv.py <file>` — Генерация статистики по колонкам и определение типов.
- `./scripts/detect-outliers.py <file> <column>` — Поиск статистических аномалий (выбросов).

Запускай эти скрипты для анализа данных перед написанием кода трансформации.

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

Skills vs. CLAUDE.md vs. Слэш-команды

АспектCLAUDE.mdСлэш-командыНавыки (Skills)
ЗагрузкаВсегдаПри вызове (/command)Когда Claude видит соответствие задаче
ВызовАвтоматическийЯвныйАвтоматический
СтруктураОдин файлОдин файлДиректория с файлами
ПараметрыНет$ARGUMENTSНет (контекст из задачи)
Лучше для...Универсальных правил проектаЧетких, повторяемых процессовЭкспертизы, применяемой по ситуации
Пример«Везде используй snake_case»/fix-issue 1234«Заполнение форм в PDF»

Краткий гид по выбору:

  • Правила для каждой задачи → CLAUDE.md
  • Процессы, которые вы запускаете явноСлэш-команда
  • Знания, которые Claude должен применять по ситуацииНавык

Советы

  • Начните с готовых навыков. Посмотрите, как Anthropic структурирует их, прежде чем создавать свои.
  • Будьте точны в описаниях. Claude не сможет использовать навык, если не поймет, что он подходит под описание задачи.
  • Используйте принцип прогрессивного раскрытия. Не пишите всё в SKILL.md — давайте ссылки на вспомогательные файлы.
  • Тестируйте активацию. Спросите Claude: «какие навыки доступны?» и попробуйте дать задачу, которая должна активировать ваш навык.
  • Версионируйте навыки проекта. Это код: делайте ревью и итерации.

Субагенты (Subagents)

Субагенты — это специализированные экземпляры Claude, работающие в изолированных окнах контекста. Когда основной Claude делегирует задачу субагенту, тот работает независимо и возвращает только свои выводы (а не весь свой контекст) в основной диалог.

Почему это важно:

  • Изоляция контекста: Исследования субагента не раздувают вашу основную сессию.
  • Специализация: Каждый субагент имеет инструкции, адаптированные под его область.
  • Ограничение инструментов: Субагентов можно ограничить операциями «только для чтения» или конкретными инструментами.
  • Гибкость моделей: Можно использовать более дешевые модели (Haiku) для простых задач и мощные (Opus) для сложных.

Думайте о субагентах как о специалистах, которых вы вызываете для конкретной работы. «Универсал» (основной Claude) координирует процесс, пока специалисты выполняют свои задачи.

Где они располагаются

РасположениеОбласть действия
.claude/agents/Проект (добавляется в git)
~/.claude/agents/Личные (для всех проектов)

Каждый субагент представляет собой отдельный Markdown-файл:

.claude/agents/
├── code-reviewer.md
├── security-auditor.md
└── test-writer.md

Встроенные субагенты

В Claude Code уже включены два субагента, которых не нужно создавать вручную:

Plan Subagent (Планировщик)

Используется автоматически в режиме планирования (Shift+Tab или /plan).

  • Цель: Исследование и сбор контекста перед предложением плана действий.
  • Поведение: Изучает кодовую базу, читает файлы, анализирует паттерны.
  • Ограничения: Не может редактировать файлы или выполнять изменяющие состояние команды.
  • Зачем он нужен: Предотвращает бесконечную вложенность (субагенты не могут порождать других субагентов).

Когда вы находитесь в режиме планирования и просите Claude в чем-то разобраться, он делегирует исследование субагенту Plan, сохраняя чистоту вашего основного контекста.

Explore Subagent (Исследователь)

Быстрый и легковесный агент для поиска по кодовой базе.

  • Цель: Быстрое обнаружение файлов и анализ кода.
  • Инструменты: Только чтение (ls, cat, find, git log, git diff, grep).
  • Уровни тщательности: Claude сам выбирает уровень («быстрый», «стандартный» или «тщательный») в зависимости от задачи.

Claude использует Explore, когда ему нужно найти что-то или понять код, но не требуется вносить изменения.

Где они располагаются

РасположениеОбласть действия
.claude/agents/Проект (добавляется в git)
~/.claude/agents/Личные (для всех проектов)

Каждый субагент представляет собой отдельный Markdown-файл:

.claude/agents/
├── code-reviewer.md
├── security-auditor.md
└── test-writer.md

Встроенные субагенты

В Claude Code уже включены два субагента, которых не нужно создавать вручную:

Plan Subagent (Планировщик)

Используется автоматически в режиме планирования (Shift+Tab или /plan).

  • Цель: Исследование и сбор контекста перед предложением плана действий.
  • Поведение: Изучает кодовую базу, читает файлы, анализирует паттерны.
  • Ограничения: Не может редактировать файлы или выполнять изменяющие состояние команды.
  • Зачем он нужен: Предотвращает бесконечную вложенность (субагенты не могут порождать других субагентов).

Когда вы находитесь в режиме планирования и просите Claude в чем-то разобраться, он делегирует исследование субагенту Plan, сохраняя чистоту вашего основного контекста.

Explore Subagent (Исследователь)

Быстрый и легковесный агент для поиска по кодовой базе.

  • Цель: Быстрое обнаружение файлов и анализ кода.
  • Инструменты: Только чтение (ls, cat, find, git log, git diff, grep).
  • Уровни тщательности: Claude сам выбирает уровень («быстрый», «стандартный» или «тщательный») в зависимости от задачи.

Claude использует Explore, когда ему нужно найти что-то или понять код, но не требуется вносить изменения.

Создание собственных субагентов

Вариант 1: Интерактивное создание через /agents

Введите команду:

/agents

Это откроет интерфейс, где вы сможете:

  • Просмотреть список существующих субагентов.
  • Создать новых субагентов с помощью Claude.
  • Редактировать конфигурации.
  • Увидеть все доступные инструменты (включая инструменты MCP) для заполнения поля tools.

Вариант 2: Создание вручную

Создайте Markdown-файл в .claude/agents/ со следующей структурой:

---
name: code-reviewer
description: >
  Проверяет код на наличие багов, нарушений стиля и проблем с безопасностью.
  Используйте для ревью PR, проверок перед коммитом или по запросу.
tools: Read, Grep, Glob, Bash(git diff:*), Bash(git log:*)
model: sonnet
---

# Code Reviewer

Вы — старший инженер (Senior Engineer), проводящий ревью изменений кода.

## Чек-лист для проверки
- Логические ошибки и потенциальные баги.
- Пробелы в обработке ошибок.
- Проблемы безопасности (инъекции, авторизация, утечка данных).
- Проблемы производительности (N+1 запросы, лишние вычисления).
- Нарушения стиля согласно конвенциям проекта.
- Недостатки тестового покрытия.

## Формат вывода
Организуйте выводы по уровню критичности:
1. **Blocking:** Необходимо исправить перед слиянием.
2. **Should Fix:** Важно, но не блокирует процесс.
3. **Suggestions:** Пожелания и мелкие замечания.

Будьте конкретны. Ссылайтесь на номера строк. Предлагайте исправления.

Конфигурация во Frontmatter

ПолеОбязательноПо умолчаниюОписание
nameДаИдентификатор субагента.
descriptionДаОписание того, когда Claude должен использовать этого субагента.
toolsНетНаследует всеСписок разрешенных инструментов через запятую.
modelНетsonnetopus, sonnet, haiku или inherit.
permissionModeНетdefaultОбработка разрешений для субагента.
skillsНетНетСписок навыков (Skills) для автозагрузки.
hooksНетНетХуки жизненного цикла (PreToolUse, PostToolUse, Stop).

Выбор модели

ЗначениеКогда использовать
opusСложный анализ, архитектурные решения.
sonnetЗадачи общего назначения (по умолчанию).
haikuПростые и быстрые задачи (линтинг, проверка форматирования).
inheritИспользовать ту же модель, что и в основном диалоге.

Ограничения инструментов

Ограничивайте инструменты в зависимости от назначения субагента:

  • Ревьюеры и аудиторы: Read, Grep, Glob (только чтение).
  • Исследователи: Read, Grep, Glob, WebFetch, WebSearch.
  • Разработчики: Read, Write, Edit, Bash, Glob, Grep.
  • Документация: Read, Write, Edit, Glob, Grep, WebFetch.

Инструменты MCP: Субагенты могут обращаться к инструментам MCP с настроенных серверов. Используйте формат mcp__имясервера__имяинструмента. Если поле tools не заполнено, субагенты наследуют все инструменты, включая MCP.

Автоматическое делегирование vs Явный вызов

Авто-делегирование: Claude читает описания ваших субагентов и сам решает, когда их использовать:

Вы: Проверь мои последние изменения на наличие проблем с безопасностью.

Claude: [Внутренне делегирует задачу субагенту security-auditor] Субагент безопасности нашел три проблемы...

Явный вызов: Вы можете сами запросить конкретного субагента:

Вы: Используй субагента code-reviewer, чтобы проверить src/auth/*.py.

Claude: [Вызывает code-reviewer по вашему запросу]

Что триггерит авто-делегирование:

  • Задача соответствует полю description субагента.
  • Задаче будет полезен изолированный контекст.
  • Задача требует специализированной экспертизы субагента.

Совет: Пишите описания, используя «триггерные слова», которые вы реально используете в речи. Фраза «Используй для ревью PR» поможет Claude сопоставить вашу команду «проверь этот PR» с нужным субагентом.

Примеры субагентов

Аудитор безопасности (Только чтение)

Файл: .claude/agents/security-auditor.md

---
name: security-auditor
description: >
  Проводит аудит кода на наличие уязвимостей. Используйте для ревью безопасности,
  проверки кода авторизации или при вопросах о защищенности.
tools: Read, Grep, Glob
model: opus
---

# Security Auditor

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

## Что проверять:
- Уязвимости инъекций (SQL, командные, XSS).
- Ошибки аутентификации и авторизации.
- Утечки чувствительных данных.
- Небезопасные криптографические практики.
- Уязвимости в зависимостях.

## Формат вывода
Для каждой находки:
- **Severity (Критичность):** Critical / High / Medium / Low.
- **Location:** Файл и номер строки.
- **Issue:** Что именно не так.
- **Risk:** К чему это может привести.
- **Fix:** Как это исправить.

Будьте дотошны. Проблемы безопасности часто бывают неочевидными.

Автор тестов (Test Writer)

Файл: .claude/agents/test-writer.md

---
name: test-writer
description: >
  Пишет комплексные тесты. Используйте для расширения тестового покрытия,
  написания юнит-тестов или создания интеграционных тестов.
tools: Read, Write, Edit, Bash, Glob, Grep
model: sonnet
---

# Test Writer

Вы пишете подробные и поддерживаемые тесты.

## Подход
1. Изучите реализацию, чтобы понять логику.
2. Определите все пути выполнения и пограничные случаи.
3. Напишите тесты, покрывающие:
   - Основной успешный сценарий (Happy path).
   - Пограничные случаи.
   - Сценарии ошибок.
   - Граничные значения.

## Стиль
- Одно утверждение (assertion) на тест, где это возможно.
- Описательные названия тестов, объясняющие сценарий.
- Структура Arrange-Act-Assert.
- Никаких моков, кроме случаев тестирования внешних сервисов.

## Проверка
Запускайте тесты после написания, чтобы подтвердить, что они проходят.

Технический писатель (Documentation Writer)

Файл: .claude/agents/docs-writer.md

---
name: docs-writer
description: >
  Пишет и обновляет документацию. Используйте для обновления README, 
  документирования API или кода по запросу.
tools: Read, Write, Edit, Glob, Grep, WebFetch
model: sonnet
---

# Documentation Writer

Вы пишете ясную и полезную документацию.

## Принципы
- Начинайте с «зачем», а не с «что».
- Включайте рабочие примеры.
- Пишите кратко — давайте ссылки на детали вместо повторов.
- Обновляйте связанную документацию при изменении кода.

## Структура для README
1. Описание одним предложением.
2. Быстрый старт (скопировал-вставил-заработало).
3. Ключевые концепции (только если они неочевидны).
4. Справочник API (если применимо).
5. Ссылки на более глубокую документацию.

Хуки (Hooks)

Субагенты могут определять хуки жизненного цикла для настройки поведения:

---
name: careful-editor
description: Вносит аккуратные, проверенные правки
tools: Read, Write, Edit, Bash
hooks:
  PreToolUse:
    - path: ./hooks/confirm-edit.sh
      tools: [Write, Edit]
  PostToolUse:
    - path: ./hooks/verify-syntax.sh
      tools: [Write, Edit]
---
ХукКогда запускается
PreToolUseПеред тем как субагент использует инструмент.
PostToolUseПосле того как субагент использовал инструмент.
StopКогда субагент пытается завершить работу.

Совместное использование

  • Проектные субагенты (.claude/agents/):
    • Добавляйте в git для совместной работы команды.
    • Проводите код-ревью конфигураций субагентов, как и для любого другого кода.
    • Документируйте назначение прямо в файле субагента.
  • Пользовательские субагенты (~/.claude/agents/):
    • Личные инструменты, доступные вам во всех проектах.
    • Не видны вашим коллегам по команде.

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

Subagents vs. Skills vs. Slash Commands (Итоговое сравнение)

АспектСубагентыНавыки (Skills)Слэш-команды
КонтекстИзолированныйОбщий с основным чатомОбщий с основным чатом
ВызовАвто или явныйАвтоматическийЯвный (/команда)
СтруктураОдин .md файлДиректория с файламиОдин .md файл
Лучше для...Делегирования задачЭкспертизы в областиПовторяемых процессов
ПримерРевью кода, аудитРабота с PDF/fix-issue 1234

Краткий гид:

  • Задаче полезна изоляция контекста → Субагент.
  • Экспертиза должна применяться в основном контексте → Навык.
  • Четкий процесс, запускаемый вручную → Слэш-команда.

Советы

  • Начните с субагентов «только для чтения». Ревьюеры и аудиторы — самый безопасный способ начать эксперименты.
  • Используйте Haiku для простых задач. Линтинг, проверка форматирования и быстрый поиск не требуют мощностей Opus.
  • Пишите специфичные описания. Авто-делегирование напрямую зависит от того, сможет ли Claude сопоставить описание субагента с вашей задачей.
  • Один субагент — одна специализация. Лучше создать несколько узких специалистов, чем одного, который пытается делать всё сразу.

MCP и Плагины

MCP (Model Context Protocol) — это стандартизированный протокол, который соединяет Claude Code с внешними инструментами и источниками данных. Представьте это как универсальный адаптер для баз данных, API, браузеров и сторонних сервисов.

Плагины — это абстракция более высокого уровня. Они объединяют в себе MCP-серверы, команды, агентов, навыки и хуки в один устанавливаемый пакет.

Claude Code может выступать в двух ролях:

  1. MCP-клиент: Подключается к внешним MCP-серверам (Playwright, GitHub, Linear и т.д.).
  2. MCP-сервер: Предоставляет возможности Claude Code другим инструментам.

Плагины vs MCP-серверы:

  • MCP-сервер: Одиночное соединение с внешним сервисом (предоставляет инструменты этого сервиса).
  • Плагин: Дистрибутивный пакет, который может содержать в себе сразу всё: MCP-серверы, команды, агентов, навыки и хуки.

Большинство пользователей взаимодействуют именно с плагинами, так как они автоматически берут на себя всю настройку MCP.

Добавление MCP-серверов и плагинов

MCP-серверы (прямое добавление)

Вы можете добавить MCP-сервер напрямую через интерфейс командной строки (CLI):

# Добавить в текущий проект
claude mcp add playwright npx @playwright/mcp@latest

# Добавить глобально (для всех проектов)
claude mcp add playwright -s user npx @playwright/mcp@latest

# Посмотреть список настроенных серверов
claude mcp list

# Удалить сервер
claude mcp remove playwright

Примечание: Всегда сверяйтесь с инструкцией по установке конкретного сервера для уточнения команд.

Плагины (рекомендуемый способ)

Плагины объединяют в себе предварительно настроенные MCP-серверы и инструкции по установке:

# Добавить маркетплейс (выполняется один раз)
/plugin marketplace add anthropics/claude-plugins-official

# Просмотреть доступные плагины
/plugin  # Откроет интерактивный интерфейс

# Установить плагин
/plugin install playwright@claude-plugins-official

# Просмотреть установленные плагины
/plugin  # Перейдите на вкладку "Installed"

Официальный маркетплейс Anthropic (claude-plugins-official) доступен автоматически.

Расположение файлов конфигурации

ФайлОбласть действияДля чего использовать
.mcp.json в корне проектаПроект (в git)Общие для команды MCP-серверы.
.claude/settings.jsonПроектНастройки плагинов и разрешений.
~/.claude.jsonПользовательЛичные (глобальные) MCP-серверы.
~/.claude/settings.jsonПользовательГлобальные настройки плагинов.

Пример .mcp.json (общий для команды):

JSON

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

Добавляйте .mcp.json в git, чтобы у всех членов команды был одинаковый доступ к инструментам.

Внимание: конфликты инструментов и стоимость контекста

Конфликты инструментов (Tool Collision)

Несколько MCP-серверов могут предоставлять инструменты с похожими названиями, что сбивает Claude с толку:

  • GitHub MCP и CLI-утилита gh одновременно умеют работать с Issues/PR.
  • Несколько LSP-серверов для одного и того же языка. Решение: Отключите или удалите дублирующие серверы. Используйте /mcp, чтобы увидеть все активные инструменты.

Стоимость контекста (Context Cost)

Каждый MCP-сервер потребляет токены контекста. Слишком много серверов = лишние траты. /context — проверить использование контекста.

Лучшая практика: Устанавливайте только то, чем реально пользуетесь. Отключайте серверы в проектах, где они не нужны.

Безопасность

Плагины и MCP-серверы выполняют код на вашей машине.

  • Проверяйте перед установкой: Изучите исходный код репозитория.
  • Предпочитайте официальные маркетплейсы: Плагины от Anthropic проходят проверку.
  • Осторожнее с переменными окружения: Токены в .mcp.json могут быть случайно закоммичены в git.

Полезные плагины и MCP-серверы

Language Server Protocol (LSP)

Дает Claude «интеллект» IDE в реальном времени: проверку типов, переход к определению, поиск ссылок.

# Добавить маркетплейс LSP сообщества
/plugin marketplace add boostvolt/claude-code-lsps

# Установить для вашего языка
/plugin install pyright@claude-code-lsps      # Python
/plugin install vtsls@claude-code-lsps        # TypeScript
/plugin install rust-analyzer@claude-code-lsps # Rust
/plugin install gopls@claude-code-lsps        # Go

Требование: Бинарный файл соответствующего языкового сервера должен быть в вашем PATH.

Автоматизация браузера: Playwright

Автоматизация тестирования и визуальная проверка. Кейсы: Скриншот → сравнение → правка; генерация E2E тестов; отладка фронтенда в реальном браузере.

Управление проектами: Linear

Создание задач и отслеживание работы. /plugin install linear-tools@claude-settings

Работа с кодом: GitHub

Более глубокая интеграция, чем просто через CLI gh. /plugin install github@claude-plugins-official

Командная коммуникация: Slack

Поиск по сообщениям и истории каналов. /plugin install slack-tools@claude-settings

Упрощенные хуки: Hookify

Создание хуков через Markdown-файлы вместо правки JSON. /plugin install hookify@claude-plugins-official

Пример: «Создай правило hookify, которое предупреждает меня перед любой командой rm -rf».

Автономные циклы: Ralph Wiggum

Запускает Claude в непрерывном цикле до полного завершения задачи.

/plugin install ralph-wiggum@claude-plugins-official

Пример использования:

/ralph-wiggum:ralph-loop "Перенести все тесты с Jest на Vitest" --max-iterations 50 --completion-promise "Все тесты проходят успешно"

  • Как это работает: Хук Stop перехватывает попытку Claude завершить работу, повторно вводит промпт, и Claude продолжает. Каждая следующая итерация «видит» изменения файлов из предыдущих запусков.
  • Лучше всего подходит для: Пакетных операций с четкими критериями успеха (миграции, рефакторинг, покрытие тестами). Не рекомендуется для задач, требующих сложных субъективных суждений.

Агенты для код-ревью (Code Review Agents)

Многоагентное ревью кода со специализированными проверками:

/plugin install code-review-agents@claude-plugins-official

Развертывает нескольких агентов, которые анализируют код под разными углами: безопасность, производительность, читаемость, тестирование. Каждый агент выставляет свою оценку уверенности (confidence score).

Отладка проблем с MCP

Флаг --mcp-debug

Запустите Claude Code с выводом отладочной информации для MCP:

claude --mcp-debug

Это позволит увидеть логи запуска серверов MCP, ошибки подключения и процесс регистрации инструментов.

Распространенные проблемы

СимптомВероятная причинаРешение
“No tools available”Сервер не запустилсяПроверьте наличие бинарного файла в PATH.
Инструмент не появляетсяСервер не зарегистрированВыполните claude mcp list.
Ошибка аутентификацииНеверный или отсутствует токенПроверьте переменные окружения в конфиге.
“Connection refused”Сервер упал при стартеИзучите вывод claude --mcp-debug.

Плагин Ralph Wiggum

Ralph Wiggum — это плагин, который запускает Claude в непрерывном цикле до тех пор, пока задача не будет выполнена или не закончится лимит итераций.

Как это работает

  1. Вы определяете задачу и критерии её завершения.
  2. Claude приступает к выполнению.
  3. Когда Claude пытается завершить сессию, хук Stop перехватывает это действие.
  4. Изначальный промпт вводится повторно.
  5. Claude видит измененные файлы после предыдущих попыток и продолжает работу.
  6. Цикл повторяется до успеха или достижения лимита итераций.

Установка

/plugin install ralph-wiggum@claude-plugins-official

Использование

/ralph-wiggum:ralph-loop "Мигрируй все тесты с Jest на Vitest" \
  --max-iterations 50 \
  --completion-promise "Все тесты проходят успешно"

Ключевые параметры

  • --max-iterations: Лимит безопасности (количество попыток).
  • --completion-promise: Строка, которую Claude должен вывести, чтобы сигнализировать об успешном завершении.

Когда использовать Ralph Wiggum

Подходит для...Почему
Миграция тестовЧеткий успех: тесты проходят.
Исправление линтераЧеткий успех: нет ошибок линтинга.
Массовый рефакторингЧеткий успех: код компилируется, тесты проходят.
Генерация документацииЧеткий успех: все файлы задокументированы.
Аннотация типовЧеткий успех: проверка типов (type checker) проходит.

Когда НЕ использовать:

  • Архитектурные решения: Нет объективного критерия успеха.
  • UI-дизайн: Качество субъективно.
  • Код, требующий ревью: Цикл не остановится для получения вашего фидбека.
  • Исследовательская работа: Нет четкой конечной точки.

Контроль расходов: Автономные циклы постоянно потребляют токены. Устанавливайте разумный лимит --max-iterations и следите за затратами. Цикл из 50 итераций при крупном рефакторинге может стоить от $10 до $50+ в API-эквиваленте.

Выбор подходящего паттерна

СитуацияПаттерн
Несколько независимых фичGit worktrees
Нужен «свежий взгляд» на кодНаписание → Ревью → Интеграция
Автоматизация в CI/CDФоновый режим (Headless mode)
Обработка множества похожих элементовFan-out (Веерный запуск)
Критически важные изменения (безопасность)Состязательная валидация (Adversarial)
Пакетная работа с четким критерием успехаRalph Wiggum

Claude Agent SDK

Для тех, кто хочет создавать собственных агентов программно (вместо интерактивного использования Claude Code), Anthropic предоставляет Claude Agent SDK. Он содержит те же примитивы, на которых построен Claude Code — инструменты, управление контекстом, сжатие (compaction) — и доступен для TypeScript и Python.

Источник