Самый дешёвый способ поднять качество вывода — не лучший промпт, а хорошо написанный CLAUDE.md. Разберём, как он грузится (особенно в монорепо), чем от него отличаются правила по путям, и какие вообще бывают виды памяти у Claude Code.
CLAUDE.md — это файл проектных инструкций, который харнесс подмешивает в контекст автоматически. Конвенции кода, формат коммитов, что делать и чего не делать. Один хорошо написанный файл влияет на каждый ответ сильнее, чем любой разовый промпт, потому что он попадает в тот самый «эффективный контекст» из Главы 00.
Главное правило по объёму простое: держи каждый файл короче 200 строк. Длинный CLAUDE.md модель соблюдает хуже, чем короткий и резкий. Лучшее, что с ним можно сделать, — относиться как к общему документу команды, а не к личной шпаргалке.
“Держите один CLAUDE.md на репозиторий. Закоммитьте в git, и пусть вся команда дополняет его несколько раз в неделю. Как только Claude делает что-то не так, добавьте это в CLAUDE.md, чтобы в следующий раз он так не делал.
Отсюда вырастает «компаундная инженерия»: при ревью можно тегнуть @claude на чужом PR и попросить занести правило в CLAUDE.md прямо в составе пул-реквеста. Файл становится живой памятью команды, а не мёртвой документацией.

./CLAUDE.md — проектный, в git. ~/.claude/CLAUDE.md — глобальный, для всех сессий. CLAUDE.local.md — личные правки, в .gitignore, не шарятся с командой.
В монорепо CLAUDE.md можно положить в каждый компонент. Чтобы это не раздувало контекст, Claude Code грузит их по двум разным механизмам.
Практический вывод: общие конвенции — в корневой CLAUDE.md (они доедут вниз ко всем), специфику компонента — в его CLAUDE.md (она не будет мусорить в чужих сессиях). Оригинальная схема, с которой Борис это пояснял:

CLAUDE.md из корня сидит в контексте всегда. Иногда это лишнее: инструкция про SQL-миграции не нужна, пока ты не трогаешь миграции. Для этого есть .claude/rules/*.md с полем paths: во frontmatter. Такое правило подгружается только когда Claude касается подходящих файлов.
--- paths: - "**/migrations/**" - "**/*.sql" --- # Правила миграций Каждая миграция обратима. Никаких DROP без бэкапа. Имя файла: YYYYMMDD_описание.sql
CLAUDE.md — то, что нужно почти всегда (стиль, сборка, общие табу). rules с paths: — узкие инструкции под конкретные зоны кода. rules без paths: — то же, что CLAUDE.md, грузится всегда. Бюджет контекста не бесконечен: чем больше лениво, тем чище окно.
«Память» в Claude Code — это не одна штука, а четыре разных механизма. Путаница между ними — частый источник вопросов «почему он это забыл». Они дополняют друг друга.
| Система | Кто пишет | Кто читает | Охват |
|---|---|---|---|
| CLAUDE.md | ты, вручную | главный Claude + все агенты | проект |
| Авто-память | главный Claude, сам | только главный Claude | проект × пользователь |
| /memory | ты, через редактор | только главный Claude | проект × пользователь |
| Память агента | сам агент | только этот агент | настраивается |
Ключевое различие: CLAUDE.md ты ведёшь руками для всей команды, а память агента агент ведёт сам для себя. Агент при этом читает и то, и другое: проектный CLAUDE.md как общий контекст и свою память как личные накопления.
До версии v2.1.33 (февраль 2026) каждый вызов агента начинался с чистого листа. Поле memory во frontmatter дало каждому субагенту свой markdown-склад знаний. Мы уже видели его в Главе 01 у weather-agent (memory: project для истории замеров).
| Скоуп | Где лежит | В git | Для чего |
|---|---|---|---|
| user | ~/.claude/agent-memory/<name>/ | нет | Знание между проектами (дефолт по рекомендации). |
| project | .claude/agent-memory/<name>/ | да | Проектное знание, которое команда шарит. |
| local | .claude/agent-memory-local/<name>/ | нет (gitignore) | Проектное, но личное. |
Механика простая: на старте первые 200 строк файла MEMORY.md вшиваются в системный промпт агента, инструменты Read/Write/Edit включаются автоматически, и агент сам ведёт свой каталог. Перерастёт 200 строк — выносит детали в тематические файлы.
--- name: api-developer model: sonnet memory: project skills: [api-conventions, error-handling-patterns] --- Реализуй эндпоинты. Перед стартом просмотри свою память, после завершения запиши архитектурные решения и паттерны. # на диске: .claude/agent-memory/api-developer/ ├── MEMORY.md # первые 200 строк грузятся на старте ├── auth-patterns.md # тематический файл └── pagination.md # тематический файл
user — кросс-проектное знание (рекомендованный дефолт). project — то, что команда должна видеть в git. local — личное и непушимое. Те же три уровня, что и у настроек.