Лучшие практики работы с 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, чтобы разделить исследование и исполнение.
Рекомендуемый поток из четырёх шагов:
-
Исследование — войдите в plan mode (Shift+Tab до статуса
⏸ plan mode on) или запустите сессию сclaude --permission-mode plan. Claude читает файлы и отвечает на вопросы без изменений.прочитай /src/auth и разберись, как мы обрабатываем сессии и логин. посмотри также, как управляем переменными окружения для секретов. -
Планирование — попросите Claude составить детальный план.
хочу добавить Google OAuth. Какие файлы нужно менять? Какой поток сессии? Составь план.Нажмите
Ctrl+G, чтобы открыть план в редакторе для правок до продолжения. -
Реализация — выйдите из plan mode (Shift+Tab) и пусть Claude пишет код, сверяясь с планом.
реализуй OAuth-флоу из плана. Напиши тесты для callback-обработчика, запусти тесты и исправь падения. -
Коммит — попросите 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 умеет писать их сам.
- Skills —
SKILL.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 сам разберётся в исследовательской задаче. Замечайте, что сработало, и почему: структура промпта, режим, объём контекста.