Чек-лист
кодовое словоКонтекст

Файл памяти Claude что оставить, а что выкинуть

В конце июля Anthropic срезали новым моделям больше 80% системного промпта Claude Code и признались прямым текстом: перестарались с инструкциями, и в промпте, и в файлах памяти. В чек-листе описано, что оставить в файле памяти, что вынести в правила и как за минуту проверить, что файл вообще загрузился.

Содержание9 глав
  1. 011. Убедиться, что файл вообще загрузился
  2. 022. Замерить длину и признать проблему
  3. 033. Пересобрать вместо того, чтобы дописывать
  4. 044. Что вырезать, а что оставить
  5. 055. Разнести остальное по местам
  6. 066. Четыре ловушки, на которых горят чаще всего
  7. 077. Не писать руками то, что пишется само
  8. 088. Проверка результата
  9. 099. Первоисточники

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

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

1. Убедиться, что файл вообще загрузился

Половина жалоб «он меня не слушается» - это файл, которого Claude не видит. Проверяется за минуту.

  • Запустил /context и нашёл свой файл в списке Memory files
  • Если файла в списке нет - открыл /memory и проверил, в той ли папке он лежит
  • Помню порядок загрузки: файлы выше по дереву грузятся целиком при старте, файлы во вложенных папках подхватываются только когда Claude читает файлы оттуда
  • Знаю, что CLAUDE.local.md - личный файл рядом с проектным, его место в .gitignore

2. Замерить длину и признать проблему

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

wc -l CLAUDE.md ~/.claude/CLAUDE.md .claude/CLAUDE.md 2>/dev/null
  • Посчитал строки во всех своих файлах: проектном, пользовательском, локальном
  • Каждый уложился меньше чем в 200 строк
  • Проверил, что правила не противоречат друг другу: при конфликте Claude выберет одно произвольно
  • В монорепозитории отсёк чужие файлы через claudeMdExcludes в .claude/settings.local.json

3. Пересобрать вместо того, чтобы дописывать

Собирать файл вручную по анкете из десятков вопросов не нужно. Есть две штатные команды.

Промт 12 строки · 123 знака
/init      # читает проект и собирает стартовый CLAUDE.md
/doctor    # проверяет конфигурацию и предлагает вычистить лишнее
  • Прогнал /init: если файл уже есть, команда не перезатирает его, а предлагает улучшения
  • Прогнал /doctor и прочитал предложения до того, как согласился (он сначала показывает находки и спрашивает подтверждение)
  • Обновил Claude Code до свежей версии - разбор и обрезка файла появились не в первых релизах

4. Что вырезать, а что оставить

Критерий один: Claude сам это увидит в коде? Если да - строка не нужна.

ВЫКИНУТЬ
Раскладку папок и дерево каталогов. Списки зависимостей и версий. Обзор архитектуры «как всё устроено». Пересказ README и содержимого package.json. Вежливые общие пожелания без проверяемого критерия.
ОСТАВИТЬ
Грабли: что в этом проекте ломается неочевидно. Договорённости команды, которых нет в коде. Причины решений: почему сделано так, а не иначе. Конвенции, расходящиеся с дефолтами инструментов. Жёсткие «всегда делай X» и «никогда не делай Y».
  • Каждую оставшуюся строку можно проверить: «отступ в 2 пробела» вместо «форматируй красиво», «запускай npm test перед коммитом» вместо «тестируй изменения»
  • Убрал устаревшие и дублирующие правила
  • Заметки для людей спрятал в HTML-комментарии - они вырезаются до попадания в контекст и не тратят токены

5. Разнести остальное по местам

Вычищенное не удаляется навсегда - оно переезжает туда, где грузится по требованию.

01
Факт, нужный в каждой сессии
CLAUDE.md
Грузится всегда, при старте
02
Правило для конкретных файлов
.claude/rules/*.md с полем paths
Грузится только при работе с подходящими файлами
03
Многошаговая процедура
скилл, SKILL.md
Грузится только когда вызван или уместен
04
Инструкция, которая обязана выполниться
хук
Срабатывает на событии, независимо от решения модели
Промт 18 строк · 123 знака
---
paths:
  - "src/api/**/*.ts"
---

# Правила для API
- каждая ручка валидирует вход
- ошибки возвращаем в едином формате
  • Разложил правила по .claude/rules/, по одной теме на файл
  • Всё, что стало процедурой, а не фактом, вынес в скилл: тело скилла грузится только когда он реально нужен
  • То, что обязано выполняться всегда (линтер перед коммитом, запрет на пуш в main), сделал хуком, а не строкой в файле
  • Личные предпочтения для всех проектов положил в ~/.claude/rules/, а не в проектный файл

6. Четыре ловушки, на которых горят чаще всего

  • Импорты не экономят контекст. Разбить файл на части через @путь - это про порядок, а не про экономию: импортированное всё равно грузится при старте.
  • Claude Code не читает AGENTS.md. Если в репозитории лежит только он, инструкций загрузится ноль, и никакой ошибки не будет. Лечится строкой @AGENTS.md внутри CLAUDE.md или симлинком ln -s AGENTS.md CLAUDE.md.
  • Вложенные файлы не возвращаются после сжатия контекста. Корневой CLAUDE.md перечитывается с диска, файлы из подпапок - только когда Claude снова тронет файл оттуда.
  • Инструкции из чата не переживают сессию. Если правило важное, ему место в файле, а не в переписке.

7. Не писать руками то, что пишется само

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

  • Открыл /memory и посмотрел, что уже записано в автопамяти
  • Знаю про её потолок: в каждую сессию грузятся первые 200 строк или 25 КБ индекса, остальное лежит в тематических файлах и читается по требованию
  • Удалил из своего файла то, что автопамять и так знает
  • Помню, что автопамять живёт на конкретной машине и между компьютерами не переезжает

8. Проверка результата

  • /context показывает нужные файлы в Memory files и не ругается на раздутую память
  • Каждый файл меньше 200 строк
  • Ни одного правила, которое нельзя проверить глазами по результату
  • Ни одного правила, которое противоречит другому
  • Взял задачу, на которой раньше Claude стабильно косячил, и прогнал заново
Что проверять
Проверять стоит не «стало ли короче», а «стало ли послушнее». Короткий файл - средство, а цель в том, чтобы важное правило срабатывало каждый раз, а не через раз.

9. Первоисточники

  • code.claude.com/docs/en/memory - как устроена память: иерархия файлов, порядок загрузки, лимит в 200 строк, импорты, правила по путям, автопамять
  • code.claude.com/docs/en/commands - что именно делают /init, /doctor, /context и /memory
  • code.claude.com/docs/en/skills - когда раздел файла пора превращать в скилл и почему это дешевле по контексту
  • claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models - разбор Anthropic: как срезали больше 80% системного промпта Claude Code без потерь на тестах кодинга
  • trychroma.com/research/context-rot - независимое исследование на 18 моделях: качество падает по мере роста длины входа