#Память проекта в CLAUDE.md
Начальный уровень · Урок 5 из 5 · около 20 минут · Нужно: Первое изменение: от запроса до коммита · Сверено с Claude Code v2.1.285 (stable) 05.10.2026
#Цель
К концу урока вы сможете создать CLAUDE.md проекта и показать, что новая сессия ему следует.
#Что понадобится
- Ваша копия шаблона для практики без незакоммиченных изменений и Node.js LTS (в Codespace на вашей копии он есть). Если хотите практиковаться в своём репозитории, всё равно оставьте копию шаблона: проверка запускается из неё. Подготовьте в репозитории папку
.practice/, как описано в уроке 1, если ещё не сделали этого. - Расход лимита: небольшой.
#Идея
Каждая сессия начинается со свежего окна контекста, так что вам приходится снова и снова объяснять привычки проекта. Это решает файл CLAUDE.md в корне проекта: Claude Code читает его в начале каждой сессии (How Claude remembers your project).
- Пишите в него то, что должна знать каждая сессия: команды сборки и тестов, соглашения, устройство проекта, правила «всегда делай X». Держите его коротким; документация советует укладываться в 200 строк.
- Закоммитьте его, чтобы все, кто работает над проектом, получали одни и те же инструкции.
/initпишет для вас первую версию по тому, что находит в коде.- Claude воспринимает CLAUDE.md как контекст, а не как конфигурацию, которой обязан подчиняться. Правилу, которое нельзя нарушать никогда, нужен хук, о котором рассказывает Средний уровень.
Сессия читает CLAUDE.md при старте, поэтому после изменения файла начните новую сессию, чтобы наверняка использовать изменение.
#Разбор примера
- Запустите
claudeв своей копии для практики и выполните:
/init
Claude прочитает код и напишет CLAUDE.md с найденными командами и соглашениями. Одобрите файл, если он спросит. Во втором терминале прочитайте его командой cat CLAUDE.md.
2. Откройте CLAUDE.md в редакторе или наберите /memory и выберите Project instructions — ./CLAUDE.md в этой папке. Не выбирайте пользовательский файл в ~/.claude/: он действует на все ваши проекты (View and edit with /memory). Терминальный редактор вроде Vim занимает терминал, пока вы не сохраните файл и не выйдете.
В копии для практики /init может описать и собственные файлы курса: checks/, capstone/ и .github/. Удалите то, что сказано о них и об npm run check, включая любое правило о том, чтобы не работать в main: оно относится к репозиторию шаблона, а не к вашей копии. Остальные команды оставьте, включая npm test, наличие которого проверяет итоговый проект.
Затем добавьте правило, которое проявляется в файлах, чтобы было видно, следует ли ему сессия. Поместите его под заголовок ## Conventions, а если /init его не написал, добавьте этот заголовок в конец файла:
- Every new source file starts with the line `// Part of linkcheck.`
Во втором терминале сохраните точную строку правила для проверки:
echo '// Part of linkcheck.' > .practice/b-5-rule.txt
Windows: '// Part of linkcheck.' | Set-Content .practice/b-5-rule.txt
3. Сохраните CLAUDE.md и закоммитьте его во втором терминале:
git add CLAUDE.md
git commit -m "Add project instructions for Claude Code"
- Наберите
/exit, затем начните новую сессию командойclaude, чтобы она загрузила CLAUDE.md с вашим правилом. Наберите/context allи найдитеCLAUDE.mdв разделе Memory files: сессия его загрузила. Обычный/contextможет свернуть этот список, аallего разворачивает (Commands). - Попросите изменение, создающее новый файл:
Add src/stats.js with a function countLinks(markdown) that returns how many links findLinks finds. Add a test in test/stats.test.js, run the tests and commit.
Одобряйте все запросы разрешений, которые покажет Claude. 6. Во втором терминале посмотрите на первую строку нового файла, сохраните коммит для проверки и убедитесь, что ничего не осталось:
head -1 src/stats.js
git rev-parse HEAD > .practice/b-5-commit.txt
git status
Windows: вместо head -1 используйте Get-Content src/stats.js -TotalCount 1.
Первая строка должна быть // Part of linkcheck., хотя в этой сессии вы об этом не просили. git status должен показать nothing to commit, working tree clean. Если он показывает src/stats.js, Claude ещё не закоммитил: попросите его закоммитить и снова сохраните коммит.
#Ваша очередь
Повторите пример в своей копии для практики или в своём репозитории с новым правилом и новым файлом. В вашей копии для практики CLAUDE.md уже есть, так что /init там пропустите:
- Откройте
CLAUDE.mdи замените правило из примера новым:
- Every new source file starts with the line `// linkcheck source.`
- Во втором терминале сохраните точную строку нового правила:
echo '// linkcheck source.' > .practice/b-5-rule.txt(Windows:'// linkcheck source.' | Set-Content .practice/b-5-rule.txt). - Закоммитьте там
CLAUDE.md. - Выйдите, начните новую сессию и проверьте, что
/context allперечисляетCLAUDE.mdв разделе Memory files. - Попросите новый файл с тестом и дайте Claude закоммитить:
Add src/external.js with a function countExternal(markdown) that returns how many of the links findLinks finds are external, according to isExternal. Add a test in test/external.test.js, run the tests and commit.
- Как на шаге 6 примера, проверьте первую строку
src/external.js, сохраните коммит в.practice/b-5-commit.txtи выполнитеgit status.
В своём репозитории начните с /init; если в нём уже есть CLAUDE.md, /init предложит улучшения, а не перезапишет его. Запишите правило в стиле комментариев своего языка, например # Part of my-project., сохраните эту точную строку в .practice/b-5-rule.txt на шаге 2 и попросите небольшой новый файл. Если в репозитории есть AGENTS.md, поставьте @AGENTS.md первой строкой CLAUDE.md: по умолчанию, как только CLAUDE.md существует, Claude читает его вместо AGENTS.md (AGENTS.md).
#Проверка
Урок пройден, когда выполнено всё это:
- Закоммиченный CLAUDE.md содержит правило, сохранённое в
.practice/b-5-rule.txt:git show HEAD:CLAUDE.mdего показывает. - Коммит, указанный в
.practice/b-5-commit.txt, добавляет хотя бы один файл, не являющийся тестом или Markdown, и каждый такой файл начинается с этого правила:git show --stat $(cat .practice/b-5-commit.txt)их перечисляет. Windows:git show --stat (Get-Content .practice/b-5-commit.txt). - Самопроверка (не тестируется): вы начали новую сессию после добавления правила в CLAUDE.md и можете сказать, почему это важно.
Запустите npm run check -- b-5 в своей копии для практики. Если работаете в своём репозитории, запустите вместо этого npm run check -- b-5 --dir <your repo> из копии для практики.
Если CLAUDE.md не закоммичен, выполните git add CLAUDE.md и закоммитьте его. Если новый файл не начинается с правила, начните новую сессию и выполните /context all. Если CLAUDE.md нет в разделе Memory files, сессия его не видит: запустите claude в папке, где лежит CLAUDE.md. Если он там есть, Claude прочитал правило, но не выполнил его. В обоих случаях попросите сессию создать другой новый файл, например src/summary.js с тестом, и закоммитить его. Затем сохраните этот коммит командой git rev-parse HEAD > .practice/b-5-commit.txt и снова запустите проверку. Исправление старого файла на месте не поможет, потому что проверка читает только файлы, которые добавляет коммит.
#Что дальше
- Write an effective CLAUDE.md: что в него писать и что оставлять за его пределами.
- Using CLAUDE.md files: руководство Anthropic с примерами.
Источники: How Claude remembers your project · Commands · Best practices · Automate actions with hooks
← Как удержать сессию в рамках · Оглавление Начального уровня · Итоговый проект Начального уровня → · Тема: Память и контекст · Застряли на уроке?