CLAUDE.md, которому Claude следует

Урок 2 из 10 курса «Claude Code в действии (новая версия 2026)»: официальный курс Anthropic Academy (Антропик) на русском языке. Этот урок бесплатный.

Видео: «CLAUDE.md, которому Claude следует»

Вот ловушка, в которую попадают почти все: ваш файл CLAUDE.md постоянно растёт. Столкнулись с проблемой, добавили правило. Столкнулись с другой, добавили ещё одно. Вскоре у вас один огромный файл, и Claude начинает игнорировать его части. Это не ошибка Claude. Так устроен сам файл.

Главное, что нужно понять: CLAUDE.md не является принудительной конфигурацией. Это рекомендации. Каждая строка конкурирует со всеми остальными за внимание Claude. Чем длиннее файл, тем сильнее он конкурирует сам с собой и тем менее надёжно Claude соблюдает любое отдельное правило. Поэтому цель не в том, чтобы записать всё подряд. Цель в том, чтобы файл оставался компактным. Чем он короче, тем большей его части Claude действительно следует.

Сначала спросите себя, подходит ли вообще CLAUDE.md

Прежде чем писать правило, спросите себя, место ли ему в CLAUDE.md. Одни правила служат рекомендациями, а другие представляют собой жёсткие границы, которые нельзя пересекать ни при каких условиях. Это две разные задачи.

Возьмём правило «никогда не пушить в main». Если поместить его в CLAUDE.md, вы надеетесь, что Claude его прочитает и будет соблюдать. В большинстве случаев так и будет. Но «в большинстве случаев» недостаточно для чего-то настолько опасного. Такому жёсткому правилу место в pre-tool-use hook (хуке, срабатывающем перед вызовом инструмента).

Разница существенная. Hook представляет собой код, который выполняется до того, как Claude совершит действие, и может действительно его заблокировать. Даже если Claude попытается запушить в main, hook его остановит. Это настоящее принуждение, а не вежливая просьба. Перенесите жёсткие правила в hooks, а CLAUDE.md оставьте для более мягких соглашений.

Четыре расположения

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

Вот для чего нужно каждое из них:

  • Managed policy: файл уровня организации, которым управляет ваша платформенная команда. Исключить его нельзя, поэтому политика организации действует всегда.
  • User: ваши личные предпочтения, которые применяются во всех проектах на вашем компьютере.
  • Project: файл, общий для всей команды и хранящийся в репозитории.
  • Local: игнорируется git. Ваши личные заметки только для этого репозитория.

Последний, local, легко упустить из виду, но он очень удобен. Допустим, вы делаете рефакторинг в своей ветке и хотите, чтобы Claude держал в голове некоторые архитектурные решения, пока вы работаете. Это не стоит класть в общий файл проекта, где оно повлияет на всю команду. Это место для local: там оно только ваше и только для этого репозитория.

Разбивайте большой файл с помощью импортов

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

@.claude/conventions/code-style.md
@.claude/conventions/testing.md
@.claude/conventions/workflow.md

Это отличный способ навести порядок. Но точно понимайте, что он вам даёт, потому что здесь легко ошибиться. При запуске Claude разворачивает импортированные файлы прямо в том месте, где вы на них сослались. Импорты помогают поддерживать порядок, но всё по-прежнему загружается сразу. Они не уменьшают объём контекста, который Claude должен прочитать. Используйте импорты для организации, а не для сокращения нагрузки.

Формулировка определяет, будет ли правило соблюдаться

Когда вы решили, что правило должно быть в CLAUDE.md, то, будет ли Claude ему следовать, зависит от формулировки. Большинство правил не работают из-за расплывчатости. Вот как это исправить.

Будьте конкретны и проверяемы

Не пишите «следовать лучшим практикам». Вы сами точно знаете, что это значит? Если вы не можете проверить, выполнено ли правило, Claude тоже не сможет. Сравните два варианта:

  • Расплывчато: «Следовать лучшим практикам для API-маршрутов».
  • Конкретно: «Размещать новые API-маршруты в src/api/handlers, по одному на файл».

Второй вариант однозначен. Вы смотрите на результат и сразу видите, сделано ли всё правильно. Это планка, которую должно преодолевать каждое правило.

Называйте замену, а не просто запрещайте

Когда вы говорите Claude чего-то не делать, укажите, что делать вместо этого. Иначе вы оставляете лазейку.

  • Оставляет лазейку: «Не использовать экспорт по умолчанию». Хорошо, а что тогда?
  • Закрывает её: «Использовать именованные экспорты, а не экспорт по умолчанию».

Второй вариант называет замену, и неверно истолковать его уже нельзя.

Акцент как бюджет

Слова вроде «IMPORTANT» и «YOU MUST» действительно повышают приоритет правила. Но только относительно всего более «тихого» вокруг. Если кричит каждое правило, ничто не выделяется, и акцент теряет смысл. Поэтому относитесь к акцентам как к бюджету. Тратьте его на два-три правила, нарушение которых действительно болезненно, а остальные пусть звучат в обычном тоне.

Постоянно пересматривайте файл

Ваш файл CLAUDE.md никогда не бывает завершён. Относитесь к нему как к живому коду, который постоянно редактируется.

Когда Claude делает что-то не так, не вздыхайте и не исправляйте вручную. Считайте это баг-репортом к вашему CLAUDE.md. Можно даже прямо сказать Claude: «добавьте это в файл CLAUDE.md», и он сам напишет правило. Так файл становится лучше каждый раз, когда что-то идёт не так.

Главное

Относитесь к CLAUDE.md как к продакшен-коду. Если строку нельзя обосновать, удалите её. Чтобы файл оставался компактным и выполнимым:

  1. Переносите жёсткие правила в hooks, где они действительно принудительно соблюдаются.
  2. Организуйте длинные файлы с помощью импортов (только помните, что они не уменьшают контекст).
  3. Делайте каждое правило конкретным и проверяемым и называйте замену.
  4. Тратьте бюджет акцентов на несколько самых важных правил.
  5. Пересматривайте файл каждый раз, когда Claude делает что-то не так.

Идея простая. Чем компактнее файл, тем большей его части Claude следует.

Полезные гиды