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

· 2 мин чтения
claude best-practices ai-agents workflow context-management
Лучшие практики работы с Claude Code

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

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

Главный ресурс, которым нужно управлять — контекстное окно. Производительность LLM деградирует по мере его заполнения: модель начинает «забывать» ранние инструкции и допускать больше ошибок. Все практики ниже так или иначе об этом.

Дайте Claude способ проверить результат

Claude останавливается, когда работа «выглядит готовой». Без проверки единственный сигнал — внешний вид кода, и вы превращаетесь в верификатор: каждая ошибка ждёт, пока вы её заметите.

Дайте Claude что-то, что выдаёт pass или fail: тесты, exit-код сборки, линтер, скрипт с diff против фикстуры или сравнение скриншота с макетом.

Стратегия Было Стало
Критерии верификации «реализуй функцию валидации email» «напиши функцию validateEmail. Тесты: user@example.com — true, invalid — false, user@.com — false. Запусти тесты после реализации»
Визуальная проверка UI «сделай дашборд красивее» «[вставлен скриншот] реализуй этот дизайн. Сделай скриншот результата, сравни с оригиналом, перечисли отличия и исправь их»
Устранение корневой причины «билд падает» «билд падает с ошибкой: [вставлена ошибка]. Исправь и убедись, что билд проходит. Устрани причину, а не подавляй ошибку»

Способ, которым проверка блокирует остановку:

  • В одном промпте — попросите Claude запустить проверку и итерировать в этом же сообщении.
  • Через сессию — задайте проверку как условие /goal: отдельный evaluator перепроверяет её после каждого хода.
  • Как детерминированный гейтStop hook запускает скрипт-проверку и блокирует завершение хода, пока она не пройдёт.
  • Второе мнениеsubagent для верификации или динамический workflow с независимой проверкой свежей моделью.

Требуйте от Claude доказательства, а не утверждения об успехе: вывод тестов, команду и её exit-код, скриншот результата. Это быстрее, чем перепроверять вручную.

Сначала исследуй, потом планируй, потом пиши код

Прыжок сразу в код часто решает не ту задачу. Используйте plan mode, чтобы разделить исследование и исполнение.

Рекомендуемый поток из четырёх шагов:

  1. Исследование — войдите в plan mode (Shift+Tab до статуса ⏸ plan mode on) или запустите сессию с claude --permission-mode plan. Claude читает файлы и отвечает на вопросы без изменений.

     прочитай /src/auth и разберись, как мы обрабатываем сессии и логин.
     посмотри также, как управляем переменными окружения для секретов.
  2. Планирование — попросите Claude составить детальный план.

     хочу добавить Google OAuth. Какие файлы нужно менять?
     Какой поток сессии? Составь план.

    Нажмите Ctrl+G, чтобы открыть план в редакторе для правок до продолжения.

  3. Реализация — выйдите из plan mode (Shift+Tab) и пусть Claude пишет код, сверяясь с планом.

     реализуй OAuth-флоу из плана. Напиши тесты для callback-обработчика,
     запусти тесты и исправь падения.
  4. Коммит — попросите Claude закоммитить с описательным сообщением и открыть PR.

     закоммить с описательным сообщением и открой PR

Plan mode полезен, но добавляет оверхед. Для мелких правок (опечатка, лог-строка, переименование переменной) просите Claude делать сразу. Планирование оправдано, когда вы не уверены в подходе, изменение затрагивает несколько файлов или вы незнакомы с модифицируемым кодом. Если дифф описывается одним предложением — план не нужен.

Давайте конкретный контекст в промптах

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

Стратегия Было Стало
Задайте рамку задачи «добавь тесты для foo.py» «напиши тест для foo.py, покрывающий кейс, когда пользователь разлогинен. Без моков»
Укажите источник «почему у ExecutionFactory такой странный API?» «посмотри git-историю ExecutionFactory и расскажи, как этот API получился»
Ссылайтесь на паттерны «добавь календарный виджет» «посмотри, как реализованы существующие виджеты на главной. HotDogWidget.php — хороший пример. Следуй паттерну и реализуй новый календарный виджет, который позволяет выбрать месяц и перелистывать годы. Без сторонних библиотек, только те, что уже используются в коде»
Опишите симптом «почини баг логина» «пользователи сообщают, что логин падает после таймаута сессии. Проверь auth-флоу в src/auth/, особенно refresh токена. Напиши падающий тест, воспроизводящий проблему, потом исправь»

Богатый контент передаётся несколькими способами:

  • @ для файлов — ссылка на файл, Claude прочитает его до ответа.
  • Изображения — copy/paste или drag-and-drop в промпт.
  • URL — документация и API-референсы. Часто используемые домены добавьте в allowlist через /permissions.
  • Пайп данныхcat error.log | claude отправляет содержимое файла напрямую.
  • Пусть Claude сам возьмёт — попросите его подтянуть контекст через Bash, MCP или чтение файлов.

Настройте окружение

Несколько шагов делают Claude Code заметно эффективнее во всех сессиях.

Эффективный CLAUDE.md

CLAUDE.md — это файл, который Claude читает в начале каждой беседы. Включите bash-команды, стиль кода, правила workflow. /init генерирует стартовый CLAUDE.md на основе структуры проекта.

Держите его коротким и человекочитаемым:

# Code style
- Use ES modules (import/export) syntax, not CommonJS (require)
- Destructure imports when possible (eg. import { foo } from 'bar')

# Workflow
- Be sure to typecheck when you're done making a series of code changes
- Prefer running single tests, and not the whole test suite, for performance

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

Включать Исключать
Bash-команды, которые Claude не угадает То, что Claude выведет из кода
Правила стиля, отличающиеся от дефолтных Стандартные языковые конвенции
Инструкции по тестированию Детальная API-документация
Этикет репозитория (нейминг веток, PR-конвенции) Часто меняющуюся информацию
Архитектурные решения проекта Длинные объяснения и туториалы
Особенности dev-окружения (env-переменные) Описания файлов по одному
Типичные грабли и неочевидное поведение Очевидные практики вроде «пиши чистый код»

CLAUDE.md можно импортировать другие файлы через @path/to/import. Расположения: ~/.claude/CLAUDE.md (для всех сессий), ./CLAUDE.md (общий для команды), ./CLAUDE.local.md (личное, в .gitignore), родительские директории для монорепо, дочерние — подтягиваются по запросу.

Права, CLI, MCP, hooks, skills, subagents, плагины

  • Auto mode — отдельная модель-классификатор одобряет команды, блокируя только рискованные.
  • Allowlist прав/permissions разрешает конкретные безопасные команды вроде npm run lint.
  • Sandboxing — OS-уровневая изоляция файловой системы и сети.
  • CLI-тулыgh, aws, gcloud, sentry-cli — самый контекст-эффективный способ работать с внешними сервисами.
  • MCP-серверыclaude mcp add --transport http notion https://mcp.notion.com/mcp подключает Notion, Figma, базы данных.
  • Hooks — детерминированные скрипты на конкретных точках workflow. Claude умеет писать их сам.
  • SkillsSKILL.md в .claude/skills/ для доменного знания и переиспользуемых workflow.
  • Subagents — изолированные контексты для специализированных задач (security review, ресёрч).
  • Плагины/plugin для маркетплейса: бандлы skills, hooks, subagents, MCP.

Общайтесь эффективно

При онбординге в новый кодовой базе задавайте Claude те же вопросы, что задали бы старшему инженеру: «как работает логирование?», «как добавить новый API-эндпоинт?», «что делает async move { ... } на строке 134 foo.rs

Для больших фич используйте интервью — попросите Claude опросить вас через AskUserQuestion про техническую реализацию, UI/UX, граничные случаи, трейдоффы. Затем зафиксируйте спецификацию в SPEC.md и стартуйте свежую сессию для исполнения.

Управляйте сессией

  • Esc — остановить Claude посреди действия, контекст сохраняется.
  • Esc + Esc или /rewind — откатить код и/или беседу к чекпоинту.
  • /clear — сброс контекста между несвязанными задачами.
  • Subagents для расследований — исследуют в отдельном контексте, не загрязняя основной.
  • Чекпоинты — каждый промпт создаёт снимок файлов; Esc+Esc открывает меню восстановления.
  • Именованные сессии/rename плюс --continue/--resume для долгих задач через несколько дней.

Автоматизация и масштабирование

  • Headless режимclaude -p "промпт" для CI, pre-commit хуков, скриптов. Форматы: --output-format json или --output-format stream-json --verbose.
  • Несколько сессий параллельноworktrees, desktop app, Claude Code on the web, agent teams.
  • Writer/Reviewer паттерн — один Claude пишет, второй в свежем контексте ревьюит (без предвзятости к только что написанному коду).
  • Fan-out по файлам — цикл по списку файлов с claude -p и --allowedTools для ограничения прав.
  • Auto mode для автономных прогоновclaude --permission-mode auto -p "fix all lint errors".
  • Adversarial review — subagent проверяет diff против плана в свежем контексте и возвращает только gap'ы, влияющие на корректность.

Типичные ошибки

  • «Кухонная мойка» — смешивание несвязанных задач в одной сессии. Фикс: /clear между задачами.
  • Бесконечные правки — две неудачные правки подряд = /clear и более точный стартовый промпт.
  • Раздутый CLAUDE.md — режьте без жалости, конвертируйте часто используемые правила в hooks.
  • Trust-then-verify gap — без верификации не отгружайте.
  • Бесконечное исследование — скоупируйте расследования или выносите в subagent.

Развивайте интуицию

Паттерны — стартовые точки, не догмы. Иногда стоит позволить контексту накапливаться ради глубокой задачи. Иногда стоит пропустить планирование и пусть Claude сам разберётся в исследовательской задаче. Замечайте, что сработало, и почему: структура промпта, режим, объём контекста.

Источник: https://code.claude.com/docs/en/best-practices