CLAUDE.md. Claude читає його на початку кожної сесії, але це не жорстка заборона
Claude Code читає файл CLAUDE.md на початку кожної сесії. Де його покласти, як писати правила, яких Claude дотримується, і чого цей файл не заблокує.
Утретє за тиждень розробник пише Claude те саме. Тести запускаємо через npm test, а нові таблиці в базі додаємо тільки міграцією. Claude вибачається, виправляє, а в наступній сесії робить так само. Такі речі один раз записують у файл CLAUDE.md.
Кожна сесія Claude Code починається зі свіжого контексту. Того, що прозвучало вчора в розмові, сьогодні в ньому немає, якщо ніхто цього не записав. Anthropic радить дописувати в CLAUDE.md саме тоді, коли Claude вдруге робить ту саму помилку або коли ви пишете виправлення, яке вже писали в минулій сесії.
Де лежить файл CLAUDE.md
CLAUDE.md є звичайним файлом Markdown, який Claude Code читає на початку кожної сесії. Він може лежати в кількох місцях, і в кожного своя сфера дії.
Файл проєкту лежить у кореневій теці як CLAUDE.md або .claude/CLAUDE.md. Він потрапляє в репозиторій, тож його бачить уся команда. Сюди пишуть команди збирання й тестів, домовленості щодо коду й важливі архітектурні рішення.
Файл користувача, ~/.claude/CLAUDE.md, діє в усіх ваших проєктах. Це місце для особистих звичок. Приватні нотатки для одного проєкту йдуть у CLAUDE.local.md у кореневій теці, і його додають у .gitignore. Фірма може ще й через ІТ-відділ роздати один спільний файл на всі комп'ютери.
Файли з теки, у якій ви запускаєте Claude Code, і з тек над нею завантажуються на старті. Файли в підтеках підтягуються лише тоді, коли Claude починає працювати з файлами в цій підтеці. Вони не перезаписують одне одного, а склеюються в один контекст. Чи файл завантажився, можна перевірити командою /context у списку Memory files.
Це контекст, а не налаштування
Це речення з документації Anthropic добре запам'ятати. Claude сприймає CLAUDE.md як контекст, а не як примусову конфігурацію. Вміст файлу потрапляє до моделі як повідомлення після системних інструкцій. Claude його читає й намагається дотримуватись, але гарантії, що так буде завжди, немає, особливо коли інструкції розмиті або суперечать одна одній.
Звідси просте правило. Якщо щось має бути заблоковане незалежно від того, що вирішить Claude, це не задача для CLAUDE.md. Заборону змінювати файл чи запускати команду ставлять у правилах дозволів у файлах налаштувань. Те, що має відбуватися в певний момент, наприклад форматування після кожного редагування, записують як hook, тобто команду, яку Claude Code сам запускає на певну подію.
CLAUDE.md потрібен для знань і правил роботи. Для заборон є налаштування й hooks.
Як написати CLAUDE.md, якого Claude дотримується
Anthropic наводить приклади. «Відступ 2 пробіли» замість «форматуй код акуратно». «Запусти npm test перед комітом» замість «тестуй зміни». «Обробники API лежать у src/api/handlers/» замість «тримай файли в порядку».
Інструкція має бути настільки конкретною, щоб можна було перевірити, чи її виконано. Той самий принцип працює і у звичайних промптах.
Друга порада стосується довжини. Документація радить менше 200 рядків на файл, бо довший файл займає більше контексту, і Claude гірше його дотримується. Коли дві інструкції суперечать одна одній, Claude може вибрати одну з них навмання. Тому правила краще групувати під заголовками й час від часу викидати застаріле.
Короткий файл для вигаданого проєкту може виглядати так.
# Панель замовлень
## Команди
- `npm install` встановлює залежності
- `npm test` запускає тести, запускай перед кожним комітом
- `npm run dev` запускає локальний сервер
## Правила
- TypeScript, відступ 2 пробіли
- Обробники API лежать у `src/api/handlers/`
- Нова таблиця в базі тільки через міграцію
- Тексти для користувача тільки через файли перекладів у `src/i18n/`
## Без питання не змінюй
- файли в `src/legacy/`
- список залежностей у `package.json`
Тут немає опису фірми й прохань про «гарний чистий код». Claude сам бачить код. Файл каже йому лише те, чого з коду не вичитати.
/init, /memory та імпорти
Починати з чистого аркуша не обов'язково. Команда /init переглядає проєкт і створює першу версію CLAUDE.md з командами збирання, тестами й домовленостями, які знайшла. Якщо файл уже є, /init пропонує покращення, а не перезаписує його.
Результат треба прочитати й скоротити, як і будь-яку інструкцію, написану AI. Про це ми писали в статті про інструкції для ChatGPT і Claude.
/memory відкриває файли CLAUDE.md для редагування і вмикає чи вимикає автоматичну пам'ять. Це окремий механізм, у якому Claude сам записує нотатки з ваших виправлень.
Довшу документацію можна підключити імпортом, тобто шляхом після знака @, наприклад @docs/git.md. Імпорт упорядковує файл, але не економить контекст, бо імпортований файл теж завантажується на старті. Правила для однієї частини проєкту краще винести в теку .claude/rules/ з полем paths. Таке правило завантажується лише тоді, коли Claude працює з відповідними файлами.
Почніть з /init і викресліть з результату все, що Claude і так побачить у коді. Потім дописуйте по одному реченню щоразу, коли та сама помилка повертається вдруге.
У вас те саме?
Почніть із безкоштовного скану — він покаже, чи те, про що йшлося вище, стосується вашого сайту. Або оберіть час розмови, і пройдемо це разом.