Лучшие практики работы с Claude Code: практическое руководство
-
Добавлено пользователем weblaby - 24.01.2026 - 12:36
Claude Code — это CLI-ассистент для программирования на базе LLM, созданный Anthropic для ускорения процесса разработки как для индивидуальных программистов, так и для команд. Он может читать вашу кодовую базу, запускать команды терминала, редактировать файлы и автономно итерировать до полного выполнения задачи.
Он намеренно сделан гибким (unopinionated) и настраиваемым. Он не станет мешать вам принимать неверные решения. При правильном использовании он значительно ускоряет разработку. При неверном — может впустую тратить токены, вносить ошибки или вносить изменения, которые вы не планировали.
А как же Claude Desktop?
Claude Code чрезвычайно полезен как универсальный агент и помощник, и для многих он является основным способом взаимодействия с моделями Claude даже за пределами кодинга.
Однако Claude Code подходит не для всех сценариев использования. Если вы проводите исследование или даже простой поиск, требующий большого количества специфического контекста из разных источников и/или информации, появившейся после даты завершения обучения модели, идеальным инструментом будет исследовательский режим (research mode) в Claude Desktop. В таблице ниже кратко описано, какой инструмент и когда использовать.
Что и когда использовать
| Инструмент | Лучше всего для | Ключевое преимущество |
|---|---|---|
| Claude Code CLI | Задач по программированию, манипуляций с файлами, автоматизации | Прямой доступ к файловой системе и терминалу |
| Claude Desktop | Исследований, написания текстов, форматированного вывода | Режим глубокого исследования, экспорт артефактов |
| Расширение VS Code | Claude 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) для длительных задач.
- Используйте Docker или VS Code Dev Containers.
- В условиях песочницы использование флага
--dangerously-skip-permissionsстановится безопасным. - Пример реализации: https://github.com/anthropics/claude-code/tree/main/.devcontainer
- Полное руководство: https://code.claude.com/docs/en/sandboxing
Рекомендуемые инструменты
- 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). Ваша работа заключается в том, чтобы:
- Предоставлять контекст перед тем, как просить выполнить работу.
- Разбивать неоднозначные задачи на проверяемые этапы.
- Проверять результат перед одобрением изменений.
- Корректировать курс на ранних этапах, не позволяя 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 (Разработка через тестирование)
Для изменений с четкими критериями корректности позвольте тестам управлять процессом итерации.
- Сначала пишем тесты: «Напиши тесты для нового ограничителя запросов (rate limiter). Учти стандартный сценарий (happy path) и пограничный случай, когда пользователь превышает лимит. Саму функцию пока не реализовывай».
- Убеждаемся, что тесты падают: «Запусти тесты и подтверди, что они не проходят».
- Реализация: «Теперь реализуй rate limiter так, чтобы тесты прошли. Сами тесты не меняй».
- Итерация: Claude запускает тесты, исправляет ошибки и повторяет цикл, пока все тесты не станут «зелеными».
- Коммит: «Закоммить реализацию».
Этот метод эффективен, потому что у Claude есть четкая цель для проверки своей работы. Тесты здесь выступают в роли спецификации.
Вариант: Визуальная итерация (Фронтенд)
Для работы с интерфейсом (UI) дайте Claude визуальную цель.
- Предоставьте макет: Вставьте скриншот, перетащите изображение в чат или укажите путь к файлу.
- Реализация: «Собери этот компонент в соответствии с макетом».
- Скриншот результата: Используйте MCP-сервер Puppeteer или вставьте скриншот вручную.
- Сравнение и итерация: «Вот как это выглядит сейчас. Доработай код, чтобы он максимально точно соответствовал оригиналу».
- Повторяйте, пока не будете удовлетворены результатом.
Первая попытка 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 фиксировать состояние во внешнем файле:
- «Запусти линтер и запиши все ошибки в
TODO.mdв виде списка с чек-боксами». - «Исправляй каждый пункт по одному. Отмечай выполненное после исправления».
- «После каждого исправления снова запускай линтер, чтобы подтвердить, что проблема решена».
Это предотвращает отклонение от цели (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 для личных настроек | Не загрязняйте общую конфигурацию индивидуальными предпочтениями. |
| Документируйте «почему», а не только «что» | Будущим коллегам по команде нужен контекст решений. |
Рекомендуемый рабочий процесс:
- Начните с команды
/init, чтобы создать базовую версию. - Проверьте её всей командой и влейте (merge) в основную ветку (
main). - Добавляйте правила постепенно через команду
#в чате или через Pull Requests. - Периодически проводите аудит: соблюдаются ли правила? Не появились ли устаревшие?
Пример анти-паттерна:
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: Создание вручную
- Создайте директорию:
mkdir -p .claude/skills/db-migrations - Создайте
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` — Показать статус миграций- (Опционально) Добавьте вспомогательные файлы для подробных справочных материалов.
Совет: Старайтесь, чтобы объем 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 | Нет | sonnet | opus, 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 может выступать в двух ролях:
- MCP-клиент: Подключается к внешним MCP-серверам (Playwright, GitHub, Linear и т.д.).
- 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 в непрерывном цикле до тех пор, пока задача не будет выполнена или не закончится лимит итераций.
Как это работает
- Вы определяете задачу и критерии её завершения.
- Claude приступает к выполнению.
- Когда Claude пытается завершить сессию, хук
Stopперехватывает это действие. - Изначальный промпт вводится повторно.
- Claude видит измененные файлы после предыдущих попыток и продолжает работу.
- Цикл повторяется до успеха или достижения лимита итераций.
Установка
/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.