Чек-лист
кодовое словоРежь

Как урезать файл инструкций для Claude

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

Содержание10 глав
  1. 011. Понять, почему длинный файл стал мешать
  2. 022. Замерить, что у тебя сейчас
  3. 033. Разделить содержимое на «режем» и «оставляем»
  4. 044. Поменять запреты на принципы
  5. 055. Вынести процедуры в скиллы и правила по путям
  6. 066. Отдать память самому Claude
  7. 077. Три чистки, которые не дают ничего
  8. 088. Прогнать файл одной командой
  9. 099. Проверить себя через неделю
  10. 10Ссылки одним списком

Что вырезать, что оставить обязательно, какая чистка не даёт ничего и как разобрать файл одной командой вместо вечера ручной работы.

1. Понять, почему длинный файл стал мешать

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

Полезно держать в голове все шесть сдвигов, а не только те, что на слуху:

БЫЛО
СТАЛО
  • Прочитал первоисточник целиком: новые правила работы с контекстом
  • Принял мысль: объём инструкций перестал быть плюсом сам по себе
  • Понял, что чистка - это не «убрать лишнее», а «убрать спорящее»

2. Замерить, что у тебя сейчас

Сначала цифры, потом ножницы. Ориентир из документации: меньше 200 строк на один CLAUDE.md. Файлы длиннее съедают контекст и хуже соблюдаются.

wc -l CLAUDE.md .claude/CLAUDE.md
wc -l .claude/rules/*.md

Дальше внутри сессии посмотри, что реально грузится на старте: команда /context показывает раздел Memory files и строку Skills - размер списка скиллов после применения бюджета, то есть ровно столько, сколько получает модель.

  • Посчитал строки во всех файлах инструкций, включая вложенные и .claude/rules/
  • Запустил /context и выписал, что грузится на старте: разбор стартового контекста
  • Проверил, что файл вообще подхватился: если его нет в Memory files, модель его не видит
  • Записал стартовые цифры, чтобы через неделю сравнить

3. Разделить содержимое на «режем» и «оставляем»

Главный критерий один: вырезаем всё, что модель выведет из проекта сама. Оставляем только то, чего в файлах не написано.

РЕЖЕМ
Структура папок и дерево каталогов. Список зависимостей и версий. Обзор архитектуры пересказом. Запреты, повторяющие поведение по умолчанию. Одно правило, повторённое в трёх местах. Пошаговые процедуры на пол-экрана.
ОСТАВЛЯЕМ
Подводные камни: где всё ломается и почему. Причины решений: почему сделано так, а не иначе. Договорённости команды, которых нет в файлах. Отличия от поведения инструментов по умолчанию. Команды сборки, тестов и проверок. Одна-две строки о том, что вообще делает проект.
Из документации
Формулировка из документации, которую стоит повесить перед глазами: держи файл лёгким, коротко опиши, для чего репозиторий, а основной объём потрать на подводные камни внутри проекта.
  • Прошёл файл сверху вниз и напротив каждого блока поставил «выведет сам» или «не выведет»
  • Всё «выведет сам» вынес в отдельный черновик и удалил из файла
  • Оставшееся переписал конкретно: «отступ 2 пробела» вместо «форматируй аккуратно»
  • Проверил вложенные файлы в подпапках - там обычно копится то же самое

4. Поменять запреты на принципы

Список «нельзя» заставляет модель угадывать границы. Одна строка про принцип работает лучше и занимает меньше. Живой пример - как это переписали у себя:

Промт 15 строк · 194 знака
было:  По умолчанию не пиши комментариев.
       Никогда не пиши многоабзацных описаний.

стало: Пиши код так, как написан код вокруг:
       та же плотность комментариев, те же имена и обороты.
  • Нашёл в файле все формулировки «никогда», «ни в коем случае», «запрещено»
  • Для каждой ответил на вопрос: какой принцип за этим стоит на самом деле
  • Заменил список запретов одной строкой про принцип
  • Оставил жёсткий запрет только там, где цена ошибки высокая и принцип не спасает

5. Вынести процедуры в скиллы и правила по путям

Файл инструкций грузится в начале каждой сессии целиком. Тело скилла - только когда скилл используется, поэтому длинный справочный материал в скилле почти ничего не стоит, пока он не понадобился. Признак того, что кусок пора выносить: это не факт, а многошаговая процедура, либо это касается только одной части проекта.

Правила, привязанные к путям. В .claude/rules/ лежат тематические файлы. С фронтматтером paths правило подгружается, только когда идёт работа с подходящими файлами:

Промт 28 строк · 117 знаков
---
paths:
  - "src/api/**/*.ts"
---

# Правила для API
- Любая ручка валидирует вход
- Ошибки отдаём в одном формате
Бюджет списка скиллов
Список скиллов сам по себе тоже стоит контекста. Его бюджет - 1% от контекстного окна модели; при переполнении описания урезаются, начиная с тех скиллов, которые ты вызываешь реже всего. Описание и условия вызова каждого скилла обрезаются на 1536 символах, поэтому главный сценарий пиши первым. Бюджет поднимается настройкой skillListingBudgetFraction.
  • Выписал из файла все многошаговые процедуры и завёл под каждую скилл: как устроены скиллы
  • Инструкции, касающиеся одной части проекта, унёс в .claude/rules/ с полем paths
  • Сократил описания скиллов: ключевой сценарий в первом предложении
  • Удалил скиллы, которыми не пользовался ни разу - они занимают место в списке

6. Отдать память самому Claude

Автоматическая память включена по умолчанию: модель сама записывает то, что пригодится в следующий раз - команды сборки, найденные закономерности, твои поправки. Хранится по проекту, в ~/.claude/projects/<project>/memory/. В начале каждой сессии подгружаются первые 200 строк или 25 КБ файла MEMORY.md, что наступит раньше; остальные заметки лежат отдельными файлами и читаются по необходимости.

  • Открыл /memory, посмотрел, что уже накопилось, и убрал устаревшее: как устроена память
  • Перенёс из файла инструкций всё, что относится к «выученному», а не к «договорённостям»
  • Держу MEMORY.md как оглавление: одна строка на пункт, подробности - в отдельных файлах
  • Проверил, что автопамять не выключена настройкой autoMemoryEnabled

7. Три чистки, которые не дают ничего

01
Разбивают файл на импорты @path
Порядок наводит, контекст не уменьшает: импортированные файлы всё равно грузятся на старте
02
Ждут, что длинный файл «обрежется сам»
Лимит в 200 строк и 25 КБ - только про MEMORY.md. Файл инструкций грузится целиком, какой бы длины ни был
03
Дописывают «обязательно», «всегда», «критически важно»
Файл приходит как обычное сообщение после системного промпта. Это контекст, а не запрет на уровне инструмента
Хуки
Если действие обязано происходить всегда - перед коммитом, после каждой правки, - это не строка в файле, а хук. Хуки выполняются как shell-команды в фиксированных точках и срабатывают независимо от того, что решила модель.
  • Проверил, не разложил ли я файл на импорты, думая, что этим экономлю контекст
  • Нашёл противоречащие друг другу правила в разных файлах и снял конфликт - иначе модель выберет одно произвольно
  • Обязательные к исполнению вещи перевёл в хуки: как их ставить
  • В монорепозитории отключил чужие файлы через claudeMdExcludes

8. Прогнать файл одной командой

Разбирать вручную не обязательно. Проверка /doctor (второе имя - /checkup) предлагает урезать файл сама: режет то, что модель выведет из проекта - структуру папок, списки зависимостей, обзоры архитектуры, - и сохраняет подводные камни, причины решений и договорённости, отличающиеся от поведения по умолчанию.

/doctor

Она же показывает неиспользуемые скиллы, серверы и расширения вместе с их ценой в контексте, медленные хуки, дубли между локальным и общим файлом инструкций и оценку стоимости списка скиллов. Ничего не меняется молча: сначала отчёт, потом вопрос про подтверждение. Разбор файла требует Claude Code версии 2.1.206 или новее.

  • Обновил Claude Code и запустил /doctor: описание всех команд
  • Прочитал отчёт целиком и подтвердил только то, с чем согласен
  • Отдельно посмотрел раздел про неиспользуемые скиллы и расширения
  • Сравнил длину файла до и после - записал новую цифру

9. Проверить себя через неделю

  • Файл уложился в 200 строк - или я честно понимаю, почему у меня исключение
  • Какие поправки я повторял вслух больше двух раз - их место в файле, а не в чате
  • Что из вырезанного пришлось вернуть: значит, модель это не выводила сама
  • Стало ли меньше ответов «не по инструкции» - это и есть главный замер
  • Раз в месяц перечитываю файл и убираю то, что уже неправда

Ссылки одним списком

  • Новые правила работы с контекстом - первоисточник, все шесть сдвигов
  • Память проекта - ориентир 200 строк, автопамять, импорты
  • Команды - что именно делает /doctor
  • Скиллы - загрузка по требованию и бюджет списка
  • Контекстное окно - что грузится на старте сессии
  • Хуки - когда правило обязано выполняться всегда