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

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

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

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

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

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

- версус-карточки A/B: «БЫЛО» — подпись «», 1 «Давать правила» / 2 «Давать примеры» / 3 «Выкладывать всё сразу» / 4 «Повторять одно и то же» / 5 «Память руками в CLAUDE.md» / 6 «Короткие спецификации»
- «СТАЛО» — подпись «», 1 «Оставлять место суждению» / 2 «Проектировать интерфейсы» / 3 «Раскрывать постепенно, по требованию» / 4 «Простые описания инструментов» / 5 «Автоматическая память» / 6 «Богатые референсы»

- [ ] Прочитал первоисточник целиком: новые правила работы с контекстом
- [ ] Принял мысль: объём инструкций перестал быть плюсом сам по себе
- [ ] Понял, что чистка - это не «убрать лишнее», а «убрать спорящее»

## 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. Разделить содержимое на «режем» и «оставляем»

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

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

врезка `// Из документации`: текст «Формулировка из документации, которую стоит повесить перед глазами: держи файл лёгким, коротко опиши, для чего репозиторий, а основной объём потрать на подводные камни внутри проекта.»

- [ ] Прошёл файл сверху вниз и напротив каждого блока поставил «выведет сам» или «не выведет»
- [ ] Всё «выведет сам» вынес в отдельный черновик и удалил из файла
- [ ] Оставшееся переписал конкретно: «отступ 2 пробела» вместо «форматируй аккуратно»
- [ ] Проверил вложенные файлы в подпапках - там обычно копится то же самое

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

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

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

стало: Пиши код так, как написан код вокруг:
       та же плотность комментариев, те же имена и обороты.
```

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

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

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

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

```
---
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
- Скиллы - загрузка по требованию и бюджет списка
- Контекстное окно - что грузится на старте сессии
- Хуки - когда правило обязано выполняться всегда

---

Источник: https://localhost:3000/m/fayl-inctruktsiy-claude
