CLAUDE.md для Claude Code: короткие правила, которые можно проверить
Соберите короткий CLAUDE.md с границами, командами проверки и правилами для секретов, затем проверьте его на маленькой обратимой задаче.
Большой файл с пожеланиями не делает работу Claude Code предсказуемой. Рабочее правило должно отвечать на три вопроса: что агент делает, чего не делает и какой командой человек проверит результат. Всё остальное лучше оставить в документации или в тестах.
Ниже — минимальный CLAUDE.md для проекта, где агент меняет TypeScript-код, но не должен трогать секреты и запускать публикацию:
Project rules
Goal
- Keep changes limited to the requested feature.
Before editing
- Read package.json and the files named in the task.
- Do not read or print .env files.
Checks
- Run
npm testafter code changes. - Run
npm run lintwhen TypeScript files change. - Report each command, its exit code, and every changed file path.
Scope and conflicts
- Rules in
packages/payments/CLAUDE.mdapply only underpackages/payments/. - Inside that directory, the local rule wins when it directly conflicts with this root file.
- Security and secret-handling rules in this root file always apply.
Forbidden
- Do not run deploy, publish, or destructive Git commands.
- Do not add API keys or personal data to the repository.
Разделите цель, границы и стиль
Сначала выпишите четыре разных типа строк:
Фраза «пиши качественный код» не имеет наблюдаемого результата. Замените её на конкретный запрет или команду. Если правило нельзя проверить по diff, команде или файлу, перенесите его в раздел с пояснениями, а не выдавайте за обязательный контракт.
Не храните секреты в инструкциях
CLAUDE.md попадает в историю Git и читается агентом вместе с проектом. Поэтому в него нельзя помещать API Key, токены CI, реальные email-адреса, содержимое .env или скопированные ответы API. Напишите только границу:
Если для теста нужен ключ, передайте его через окружение или секретное хранилище CI. Не просите Claude Code вставлять его в prompt или handoff.
Что делать при конфликте правил
Правило должно быть локальным настолько, насколько локальна его причина. Общие ограничения проекта держите в корневом CLAUDE.md, а требования конкретного пакета — рядом с этим пакетом. При конфликте сначала найдите все инструкции, которые видит Claude Code, и уберите дубликат; не пытайтесь решить конфликт ещё одним абзацем в корневом файле.
Практический порядок такой:
- Откройте ближайший к изменяемому файлу
CLAUDE.mdи корневые инструкции. - Сверьте, нет ли двух разных команд для одной проверки.
- Оставьте одно правило с более узкой областью действия.
- Зафиксируйте приоритет в одной строке, если его нельзя выразить расположением файлов.
Например, в корневом файле можно написать: Rules in packages/payments/CLAUDE.md apply only under packages/payments/ and win there, except for root security rules. Это даёт локальному пакету конкретную область действия, но не позволяет отменить общий запрет на чтение секретов.
Подробное объяснение архитектуры, список исключений и справочные ссылки вынесите в docs/. В CLAUDE.md оставьте ссылку и команду, которой можно проверить актуальность.
Проверьте правило на маленькой задаче
Не начинайте с большого рефакторинга. Дайте Claude Code обратимую задачу, например переименовать локальную переменную в одном тестовом файле:
- Запишите ожидаемый файл и запрет на остальные изменения.
- Попросите агент изменить только этот файл.
- Запустите
git diff --checkиgit diff --stat. - Выполните тест, указанный в
CLAUDE.md. - Отклоните результат, если изменился другой файл или не был показан код выхода команды.
Так вы проверяете именно правило, а не способность модели выполнить большой проектный план. После успешного малого теста можно расширять область, сохраняя те же наблюдаемые проверки.
Свяжите правила с вашим API workflow
Claude Code может работать через Anthropic-compatible API. Для отдельного workflow используйте собственный API Key и сверяйте текущие Base URL и модель с документацией BetterToken для Claude Code. BetterToken предоставляет API-доступ и Dashboard с данными использования; он не превращает CLAUDE.md в хранилище секретов и не заменяет настройки самого Claude Code.