Skip to content

Руководство по CLAUDE.md: как записать правила проекта в его память

📚 Навигация по серии: Предыдущая статья 17 Изображения и мультимодальность научила вас отправлять скриншоты и изображения с ошибками напрямую в Claude. Эта статья меняет направление — мы запишем «правила» проекта в его память раз и навсегда, чтобы он автоматически соблюдал их при каждом запуске, и вам не приходилось повторять их каждый день.

Все говорят, что CLAUDE.md должен быть как можно более подробным. Но, честно говоря, самый бесполезный CLAUDE.md — это тот, в котором 300 строк, и Claude ни одну из них не выполнил.

Представьте себе CLAUDE.md, оставленный предыдущим разработчиком в проекте, который вы приняли. В нём красноречиво описываются: предыстория компании, видение продукта, представление команды, история выбора технологий... И только прокрутив до второго экрана, вы видите полезную фразу: «используйте pnpm, а не npm». И каков результат? Claude всё равно то и дело выполняет для вас npm install.

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

CLAUDE.md (файл памяти проекта Claude) — это мощный инструмент, если он написан хорошо, и обуза, если написан плохо. При каждом сеансе он занимает ваше контекстное окно. Чем он более раздут, тем меньше места остаётся для реальной работы. Сегодня мы разберём это по полочкам: на какие уровни он делится, что следует писать, чего писать не следует, как ссылаться на другие файлы и как поддерживать его кратким.

Прочитав эту статью, вы получите:

  • Понимание того, за что отвечают три уровня CLAUDE.md (пользовательский / проектный / уровень подкаталога) и как организован порядок их загрузки.
  • Список того, что «следует писать, а что нет», чтобы избежать 90% ошибок новичков, которые заполняют его чепухой.
  • Правильный способ использования синтаксиса @ для ссылки на другие файлы, а также его реальную цену для контекста.
  • Официальный способ временного добавления памяти в сеансе, плюс таблицу сравнения «хорошо vs плохо» в качестве шаблона.

ℹ️ В этой статье рассматривается только то, как правильно написать и поддерживать файл CLAUDE.md. Использование /init для генерации в один клик обсуждалось в 12 «Инициализация проекта», а более широкая автоматическая память (auto-memory) будет подробно рассмотрена в статье 25 «Система памяти».


01 Сначала поймите: что же такое CLAUDE.md на самом деле

Дадим сразу вывод: CLAUDE.md — это «постоянная инструкция», которую вы пишете для Claude. При каждом открытии сеанса он сначала читает её, загружая в свою память в качестве контекста проекта.

Зачем это нужно? Потому что каждый сеанс Claude Code начинается с чистого листа. То, что вы настойчиво объясняли в прошлый раз — «использовать pnpm, не трогать каталог legacy, тесты запускать вот так», — в этот раз он совершенно не помнит. Без CLAUDE.md вам пришлось бы объяснять всё заново каждый раз. Разве это не раздражает?

Аналогия: справочник для нового сотрудника. В первый день работы новичка вы не будете стоять рядом с ним весь день, устно диктуя правила. Вы даёте ему руководство: для чего нужен проект, как отправлять код, какие минные поля следует обходить. Он сам прочитает это и приступит к работе. CLAUDE.md — это справочник для адаптации Claude, причём такой, который он будет перечитывать каждое утро перед началом работы.

Но здесь есть ключевое понимание, о котором в официальной документации сказано очень прямо:

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

Перевод на человеческий язык: CLAUDE.md — это «настоятельная рекомендация», а не «железное правило». Он формирует поведение Claude, но не является уровнем жёсткого принуждения. Поэтому, чем конкретнее и лаконичнее вы пишете, тем стабильнее он соблюдается. Ожидаете, что это на 100% заблокирует какое-то опасное действие? Это работа для хуков (Hook), а не для CLAUDE.md — разделение их ролей мы обсудим в последующих главах.

Когда следует добавлять в него содержимое? Официальные источники дают несколько очень практичных сигналов:

  • Claude во второй раз совершает одну и ту же ошибку — это значит, что правило нужно записать и закрепить.
  • Вы снова вводите в этом сеансе то же исправление, которое вводили в прошлом сеансе.
  • Во время проверки кода (code review) вы обнаружили, что он уже должен был знать определённое соглашение для этой кодовой базы.
  • Новым членам команды нужен тот же контекст для быстрого старта.

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


02 Три уровня: кто управляет глобально, а кто — одним проектом

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

Согласно официальной документации, обычно используются эти три уровня (плюс один локальный вариант):

УровеньГде находитсяОбласть действияПопадает ли в git
Пользовательский~/.claude/CLAUDE.mdВсе проекты на вашей машинеНет, чисто личные предпочтения
Проектный./CLAUDE.md или ./.claude/CLAUDE.mdТолько текущий проект✅ Да, для всей команды
Уровень подкаталогаЛюбой подкаталог/CLAUDE.mdЗагружается только когда Claude читает файлы в этом каталоге✅ Да, подходит для многомодульных репозиториев
Локальный (вариант)./CLAUDE.local.mdТекущий проект, только для вас❌ Добавьте в .gitignore

Существует также «уровень управляемой политики», который развёртывается ИТ-администраторами в системном каталоге (в macOS это /Library/Application Support/ClaudeCode/CLAUDE.md). Он загружается перед пользовательским уровнем и не может быть исключён отдельным пользователем. Обычные пользователи с этим обычно не сталкиваются, поэтому здесь мы это опускаем; корпоративные сценарии можно найти в официальной документации.

Как разделить обязанности? Запомните одно предложение: личные привычки помещайте на пользовательский уровень, а правила команды — на проектный.

  • Пользовательский уровень (~/.claude/CLAUDE.md): здесь хранятся ваши личные предпочтения, общие для всех проектов. Например: «отвечай на русском», «расскажи о своих мыслях перед тем, как менять код, а не приступай к делу сразу», «сообщения коммитов пиши на английском». Они не связаны с конкретным проектом, это привычки «вас как человека», поэтому они действуют для всех проектов и не попадают в git ни одного из них.
  • Проектный уровень (./CLAUDE.md): здесь хранятся правила, специфичные для этого проекта, которые должна соблюдать вся команда. Технологический стек, команды сборки, соглашения о каталогах, списки запретов на редактирование. Он отправляется в систему контроля версий вместе с кодом, и когда новые коллеги клонируют его, они получают этот набор стандартов.
  • Уровень подкаталога: используется только в больших репозиториях. Например, в каталоге фронтенда лежит специфичный для фронтенда файл, а в бэкенде — для бэкенда. Обычно он не загружается, но когда Claude действительно собирается прочитать файлы в этом каталоге, он заодно подхватывает и этот CLAUDE.md — это экономит контекст.

Аналогия со справочником сотрудника: Пользовательский уровень = ваш личный блокнот с рабочими привычками (вы берёте его с собой при смене компании); Проектный уровень = справочник сотрудника, выданный этой компанией (вы возвращаете его при увольнении); Уровень подкаталога = дополнительные правила конкретного отдела (выдаются только при переводе в этот отдел).

Пример типичной пользовательской настройки: добавьте в ~/.claude/CLAUDE.md фразу «Когда есть несколько вариантов реализации, перечисли варианты, чтобы я мог выбрать, а не принимай решение за меня молча». Это правило справедливо для каждого вашего проекта, поэтому проще всего разместить его на пользовательском уровне — один раз настроив, вам больше не придётся повторять это в каждом новом проекте.

💡 Краткий итог: Личные привычки пишите на пользовательском уровне (~/.claude/CLAUDE.md), правила команды — на проектном уровне (./CLAUDE.md идёт в git), а для больших репозиториев используйте уровень подкаталога для разделения по модулям.


03 Порядок загрузки: почему правила проектного уровня «имеют большее значение, если сказаны позже»

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

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

Как именно они располагаются? Claude Code начинает с вашего текущего каталога и идёт вверх. На каждом уровне он собирает встреченные CLAUDE.md и в итоге объединяет их в единый контекст. Порядок примерно такой:

text
Пользовательский уровень ~/.claude/CLAUDE.md
        ↓ (читается первым)
(Выше в дереве каталогов) Родительский каталог CLAUDE.md

Корень проекта ./CLAUDE.md
        ↓ (читается позже, ближе к вам)
Подкаталог CLAUDE.md (загружается, только если Claude читает файлы в этом каталоге)

Обратите внимание на два ключевых момента, оба взяты из официальной документации:

Во-первых, все найденные файлы «объединяются», а не «перезаписывают» друг друга. Все они попадают в контекст, последующие не вытесняют предыдущие. Поэтому пользовательский и проектный уровни действуют одновременно, не бывает такого, чтобы «при установке проектного уровня пользовательский аннулировался».

Во-вторых, инструкции, находящиеся ближе к рабочему каталогу, «читаются последними». Когда два правила конфликтуют — например, пользовательский уровень говорит «используй одинарные кавычки для строк», а проектный — «используй двойные кавычки» — проектный уровень, находящийся ближе, обычно преобладает, потому что был прочитан позже. Проще говоря, правила проекта могут переопределить ваши личные привычки, и именно такого эффекта мы добиваемся при командной работе.

Три уровня CLAUDE.md: объединение, а не перезапись

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

Здесь нужно исправить одно часто встречающееся заблуждение. Во многих руководствах в интернете приоритет указывается как «Локальный проект → Корень проекта → Подкаталог → Глобальный». Это прямо противоречит порядку загрузки, описанному официально. Легко поддаться этому утверждению, но если вы посмотрите официальную документацию, всё станет ясно: там прямо сказано, что загрузка идёт «от самой широкой к самой конкретной области», и инструкции проекта появляются после инструкций пользователя. Опирайтесь на официальную информацию, не запоминайте наоборот.

Ещё одна приятная деталь: CLAUDE.md в корне проекта автоматически перечитывается с диска после выполнения /compact (сжатия диалога), он не теряется. А вот вложенные CLAUDE.md в подкаталогах не внедряются заново автоматически; нужно дождаться, пока Claude в следующий раз не прочитает файлы в этом каталоге, чтобы они вернулись. Поэтому важные правила старайтесь размещать в корне проекта, не закапывайте их слишком глубоко.

💡 Краткий итог: Несколько CLAUDE.md объединяются, а не перезаписываются. Чем ближе к рабочему каталогу, тем позже они читаются и тем больший вес имеют при конфликте. Таким образом, правила проекта могут перекрыть личные привычки — не путайте официальное направление загрузки.


04 Что следует писать, а что не следует

Этот раздел — суть всей статьи. Если CLAUDE.md написан плохо, в 90% случаев это потому, что «то, что должно быть написано, не ясно, а то, чего не должно быть, свалено в кучу».

Сначала о том, что следует писать. Официальная документация предельно ясна: Пишите «факты, которые Claude должен помнить в каждом сеансе». В виде списка это пять категорий:

КатегорияЧто именно писатьПример
Обзор проектаОдним предложением объясните, что это за проект«Бэкенд управления заказами на базе FastAPI»
Технологический стекЯзыки, фреймворки, базы данных, ключевые инструменты«Python 3.11 / PostgreSQL / pytest»
Часто используемые командыКак запускать тесты, сборку, проверкиuv run pytest, uv run ruff check .
Соглашения по кодуСтиль, именование, обязательные правила написания«Функции должны иметь аннотации типов», «Для строк используются двойные кавычки»
Чёткие «Что нельзя делать»Минные поля, файлы, которые нельзя изменять, действия, требующие предварительного запроса«Запрещено изменять существующие файлы в migrations/»

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

Теперь о том, что писать не следует, это главная ловушка для новичков:

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

Официальная позиция по этому поводу очень чёткая, и специально указана красная линия размера:

Целевой размер каждого файла CLAUDE.md — менее 200 строк. Более длинные файлы потребляют больше контекста и снижают уровень соблюдения правил.

Почему так важно ограничение в 200 строк? Потому что CLAUDE.md использует то же контекстное окно, что и ваш диалог. Если вы впихнёте туда триста строк чепухи, это равносильно тому, что вы сразу займёте огромный кусок рабочего стола, и места для реальных задач останется меньше. Более того, важные правила утонут в чепухе, внимание рассеется, и уровень соблюдения упадёт, а не вырастет. Это и есть корень проблемы «триста строк, которые никто не слушает», упомянутой в начале.

Есть хороший проверенный метод: перед тем как записать каждое правило, спросите себя: «Сможет ли Claude сам вывести это, посмотрев на код? Если да, удаляйте». Только благодаря этому одному правилу можно сократить CLAUDE.md унаследованного проекта с более чем 300 строк до 80, оставив только строгие ограничения, которые он не сможет вывести сам. После такой чистки количество раз, когда он использует неправильный менеджер пакетов, заметно снизится.

💡 Краткий итог: Пишите «факты, которые следует помнить при каждом сеансе» (обзор / тех. стек / команды / соглашения / запретные зоны). Удаляйте всё, что Claude может сам понять из кода, и уложитесь в 200 строк.


05 Ссылки на другие файлы: синтаксис @ и его цена

Иногда в вашем проекте уже есть готовые нормативные документы — руководство по проектированию API, соглашения о базе данных. Нет необходимости копировать это содержимое в CLAUDE.md, просто используйте синтаксис @ для ссылки на них.

Синтаксис очень прост: в любом месте CLAUDE.md напишите @ и путь:

text
Обзор проекта см. в @README, доступные команды см. в @package.json.

# Другие инструкции
- Рабочий процесс git @docs/git-instructions.md

Когда Claude читает CLAUDE.md, он раскрывает содержимое этих файлов и загружает их все в контекст. Вот несколько официально подтверждённых деталей, запомните их, чтобы избежать проблем:

  • Относительные пути разрешаются относительно «файла, содержащего ссылку», а не вашего рабочего каталога. В этом легко запутаться.
  • Абсолютные пути тоже работают; ссылаемые файлы могут ссылаться на другие файлы, максимум на четыре прыжка рекурсивно.
  • Когда впервые встречается ссылка за пределами проекта, Claude Code покажет диалоговое окно утверждения со списком этих файлов; если вы отклоните, эта ссылка будет навсегда отключена, и окно больше не появится.

Но здесь есть одно самое важное понимание, которое официально подчёркивается снова и снова и которое является самой распространённой ловушкой:

Импортированные файлы разворачиваются и загружаются в контекст при запуске. Разделение на импорты @path помогает в организации, но не уменьшает размер контекста, поскольку импортированные файлы загружаются при запуске.

Проще говоря: ссылка @ — это «организация», а не «экономия». Многие думают, что если вынести содержимое во внешние файлы, то сам CLAUDE.md станет короче, и контекст сэкономится. ОШИБКА. Содержимое файлов по ссылкам всё равно будет полностью загружено в окно при запуске, и весь положенный объём контекста будет израсходован. Представьте, что вы разделили документ со спецификациями на пятьсот строк с помощью @, думая, что сэкономили место, но при проверке через /context (посмотреть потребление контекста) вы увидите, что ни один токен не был сэкономлен.

Поэтому принцип таков: Ссылки @ используются для того, чтобы сделать структуру более понятной и удобной для человека, но для экономии контекста нужно «сокращать содержимое» или использовать «правила области путей», а не разделять файлы. Размер отдельных файлов, на которые даются ссылки, тоже не должен быть слишком большим, иначе они также будут тормозить работу.

Кстати, о смежном: если у вас есть некоторые чисто личные предпочтения проекта, которые вы не хотите добавлять в git (например, ваш локальный URL-адрес песочницы, ваши любимые тестовые данные), не пишите их в ./CLAUDE.md, запишите их в ./CLAUDE.local.md, а затем добавьте его в .gitignore. Он загружается и обрабатывается абсолютно так же, как CLAUDE.md, просто не будет зафиксирован и не повлияет на коллег.

💡 Краткий итог: @путь втягивает внешние документы для «чистоты структуры», но содержимое по ссылкам всё равно полностью загружается в контекст и не экономит токены. Хотите сэкономить — удаляйте текст; личные предпочтения помещайте в CLAUDE.local.md и добавляйте в gitignore.


06 Поддержка: добавление на лету в сеансе и периодическая чистка

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

Что делать, если во время сеанса захотелось временно добавить правило

Часто бывает так: в процессе общения вы поправили Claude и подумали: «Это нужно соблюдать каждый раз в будущем, надо бы записать». Самый простой официальный способ — прямо сказать ему в диалоге:

text
Добавь правило «Операции с базой данных должны проходить через сервисный слой (Service), не пиши SQL напрямую в маршрутах» в CLAUDE.md

Claude сам запишет это правило в файл CLAUDE.md. Вы также можете в любой момент ввести команду /memory, и она выведет список всех файлов CLAUDE.md, CLAUDE.local.md и файлов правил, загруженных в текущем сеансе. Кликните по нему, и он откроется в редакторе, где вы сможете отредактировать его вручную. Если хотите, чтобы Claude сам определил формулировку, используйте первый способ; если хотите точно контролировать формулировку, используйте /memory и редактируйте сами.

ℹ️ Заметка о разнице версий: в ранних версиях Claude Code можно было быстро добавить память, набрав предложение, начинающееся с # в поле ввода. В новых версиях этот тип взаимодействия изменился. Ориентируйтесь на текущий официальный подход: либо прямо скажите Claude «добавь в CLAUDE.md», либо используйте /memory для самостоятельного редактирования. Если вы просто напишете «запомни xxx», Claude, скорее всего, по умолчанию сохранит это в свою собственную автоматическую память (auto-memory, тема статьи 25 «Система памяти»); чтобы правило точно попало в CLAUDE.md, так и напишите: «добавь в CLAUDE.md».

Регулярная чистка: удаление устаревшего и противоречивого

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

  • Изменён пакетный менеджер / инструмент сборки (старые команды обязательно нужно удалить, их наличие вводит в заблуждение).
  • Добавлена или удалена важная зависимость.
  • Установлены новые соглашения по программированию (заодно проверьте, не конфликтуют ли они со старыми правилами).
  • Вы обнаружили, что CLAUDE.md незаметно перевалил за 200 строк.

Хорошее ли правило, зависит от того, выглядит ли оно как «правило» или как «проза». Официальное сравнение очень практично, я свёл его в таблицу:

❌ Размытая проза (бесполезно)✅ Конкретное правило (работает)
Код должен быть достаточно чистымФункция не более 50 строк, если больше — обязательно разбить
Старайся писать тестыКаждая новая функция должна иметь соответствующий юнит-тест
Обрати внимание на безопасностьПользовательский ввод должен обязательно пройти через sanitize() перед SQL-запросом
Каталог legacy не очень важенЗапрещено изменять любые файлы в каталоге legacy/
Лучше использовать pnpmДля управления зависимостями использовать только pnpm, npm и yarn запрещены

То, что слева, равносильно пустому звуку — «чистый», «старайся», «обрати внимание» — всё это субъективные слова, Claude не может их проверить и, естественно, не может стабильно выполнять. Каждое правило справа конкретизировано до возможности проверки: 50 строк, обязательно наличие тестов, обязательно прохождение определённой функции. Официальные слова звучат так: «Пишите инструкции, которые достаточно конкретны, чтобы их можно было проверить».

При написании CLAUDE.md полезно выработать жёсткую привычку: написав каждое правило, будьте сами себе судьёй и решите: «Можно ли с первого взгляда определить, было ли нарушено это правило?». Если нельзя, значит, написано туманно, возвращайтесь и делайте конкретнее.

💡 Краткий итог: Чтобы быстро добавить правило, попросите Claude «добавить в CLAUDE.md» или используйте редактирование через /memory; регулярно удаляйте устаревшие и конфликтующие правила; хорошее правило похоже на «правило, которое можно проверить с первого взгляда», а не на прозу вроде «чисто, старайся».


07 Практика: настройка правильного CLAUDE.md для игрушечного проекта

Одной теории мало. Ниже мы используем минимальный проект, чтобы пройти весь процесс: «Создание файла → Написание правил → Проверка загрузки». Повторяйте за мной, это займёт пять минут.

Шаг первый: создайте игрушечный проект и инициализируйте git (Mac / Linux)

bash
mkdir claude-md-demo
cd claude-md-demo
git init
echo 'def add(a, b):
    return a + b' > main.py

Ожидание: В каталоге claude-md-demo есть main.py и каталог .git. Инициализация git нужна для того, чтобы этот CLAUDE.md мог попасть в систему контроля версий (обязательное условие для совместного использования в команде).

Шаг второй: напишите краткий проектный CLAUDE.md вручную

Используйте удобный для вас редактор, создайте CLAUDE.md в корневой директории проекта и вставьте следующее (обратите внимание, что в нём всего несколько строк — так и должен выглядеть хороший CLAUDE.md):

markdown
# add-demo — минимальный проект на Python для демонстрации

Здесь есть только функция `add`, она используется для демонстрации того, как писать CLAUDE.md.

## Часто используемые команды
- `python -m pytest` — запуск тестов

## Соглашения по программированию
- Все функции должны иметь аннотации типов
- Для строк используются только двойные кавычки

## Примечания
- Не изменяйте сигнатуру функции `add` в `main.py`, можно добавлять логику только внутри неё

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

Шаг третий: запустите Claude, проверьте, действительно ли он его прочитал

Запустите в каталоге проекта:

bash
claude

После запуска введите эту команду, чтобы проверить статус загрузки:

text
/memory

Ожидание: В списке вы увидите только что написанный ./CLAUDE.md. Пока он находится в списке, это означает, что Claude действительно загрузил его в контекст в текущем сеансе. Этот шаг является официально рекомендованным методом устранения неполадок — если какое-то правило не соблюдается, первое, что нужно сделать, это использовать /memory, чтобы проверить, загружен ли файл вообще.

Шаг четвёртый: поручите ему задачу, «нарушающую соглашения», и посмотрите, будет ли он соблюдать правила

Выйдите из /memory, вернитесь в поле ввода и введите:

text
Добавь аннотации типов к функции add

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

⚠️ Если вдруг обнаружите, что он не последовал CLAUDE.md: сначала используйте /memory, чтобы подтвердить, что файл загружен; затем проверьте, не слишком ли размыто написано это правило (как слово «чисто»); и наконец, посмотрите, не конфликтуют ли два правила. Эти три шага — стандартный порядок устранения неполадок от разработчиков, следуя им, вы почти всегда найдёте причину.

💡 Краткий итог: Пройдите полный процесс «Создание файла → Написание кратких правил (менее 15 строк) → Проверка загрузки с помощью /memory → Запуск задачи для проверки соблюдения правил». Если не сработало, устраняйте неполадки в официальном порядке: /memory → проверка на размытость → проверка на конфликты.


08 Заключение

В этой статье вы изучили CLAUDE.md — «память проекта для Claude» от начала и до конца:

АспектКлючевой вывод
Что это такоеСправочник для адаптации, который необходимо читать в каждом сеансе. Уровень «настоятельной рекомендации», не железное правило
Сколько уровнейПользовательский (личный) / Проектный (командный, идёт в git) / Уровень подкаталога (по необходимости)
Порядок загрузкиОбъединение, не перезапись. Чем ближе, тем позже читается, преобладает при конфликтах
Что писатьОбзор / тех. стек / команды / соглашения / запретные зоны. Удаляйте всё, что код может доказать сам
Ссылка @Используется для организации структуры, не экономит контекст (всё равно загружается полностью)
ПоддержкаПопросите Claude «добавить в CLAUDE.md» или редактируйте через /memory; регулярно удаляйте устаревшее и конфликтующее; правило должно выглядеть как правило, а не как проза

Теперь вы должны уметь: Определять, следует ли помещать информацию в CLAUDE.md и на каком уровне; писать конкретные, проверяемые правила вместо пустых слов; использовать ссылки @ на внешние документы, понимая при этом их цену для контекста; знать, как быстро добавлять правила на лету и периодически проводить чистку по мере развития проекта. Одним словом, вы можете написать CLAUDE.md, который Claude действительно будет слушать, а не тот 300-строчный файл, который все игнорируют.


Следующая статья: 19 «Управление контекстом». В этой статье неоднократно упоминалось, что «CLAUDE.md занимает контекстное окно» и что «ссылки @ по-прежнему загружаются полностью». Так что же такое это контекстное окно, что будет, когда оно заполнится, и как использовать /context и /compact? В следующей статье мы подробно разберём этот рабочий стол. Небольшой вопрос для размышлений: как вы думаете, что расходует больше токенов: один файл CLAUDE.md или весь ваш диалог целиком?


Рекомендуемое чтение