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

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

Пошаговая ревизия 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. Пересобрать вместо того, чтобы дописывать

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

```
/init      # читает проект и собирает стартовый CLAUDE.md
/doctor    # проверяет конфигурацию и предлагает вычистить лишнее
```

- [ ] Прогнал /init: если файл уже есть, команда не перезатирает его, а предлагает улучшения
- [ ] Прогнал /doctor и прочитал предложения до того, как согласился (он сначала показывает находки и спрашивает подтверждение)
- [ ] Обновил Claude Code до свежей версии - разбор и обрезка файла появились не в первых релизах

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

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

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

- [ ] Каждую оставшуюся строку можно проверить: «отступ в 2 пробела» вместо «форматируй красиво», «запускай npm test перед коммитом» вместо «тестируй изменения»
- [ ] Убрал устаревшие и дублирующие правила
- [ ] Заметки для людей спрятал в HTML-комментарии - они вырезаются до попадания в контекст и не тратят токены

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

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

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

```
---
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 моделях: качество падает по мере роста длины входа

---

Источник: https://localhost:3000/m/fall-pamyati-claude
