«Поставите слишком много навыков — они съедят контекст». Так говорят постоянно. Наполовину это верно, наполовину нет.

Согласно официальной документации, список навыков расходует фиксированный бюджет — 1% контекстного окна модели, и сколько навыков вы ни добавьте, дальше он не растёт. Он не раздувается. Вместо этого навыки перестают вызываться. Когда список выходит за бюджет, Claude Code убирает описания, начиная с самых редко вызываемых навыков, и оставляет только имена. Навык, потерявший описание, больше не связывается с тем, о чём вы просите.

Ошибки не будет. Медленнее тоже не станет. Навык просто тихо перестанет использоваться. Эта статья о том, как увидеть, что на самом деле занимает ваш контекст, цифрами, а не догадками, и что урезать первым, когда вы это увидели.

Что происходит, когда навыков становится больше

Бюджет списка зафиксирован на 1% контекстного окна. То, что не влезло, стоит вам описаний, а не токенов

В ПРЕДЕЛАХ БЮДЖЕТА
У каждого навыка есть описание

Имя и описание загружаются целиком. Даже если формулировка запроса немного не та, навык всё равно находится по ключевым словам

СРАЗУ ЗА ПРЕДЕЛОМ
Описания уходят по частоте использования

Частые навыки сохраняют полный текст. Те, к которым вы обращаетесь редко, теряют описание первыми

ТОЛЬКО ИМЯ
Есть в списке, но не выбирается

Навык остаётся в списке. Но ничто не говорит, для чего он, поэтому он не связывается с запросом

Источник: официальная документация Claude Code, раздел Skills

1. Навыки не растут бесконечно — список упирается в бюджет 1%

Чтобы Claude знал, какие навыки доступны, Claude Code загружает в контекст список имён и описаний навыков. Вот здесь и начинает работать бюджет. Документация говорит, что список всегда содержит имена всех навыков, но если навыков много, Claude Code сокращает описания, чтобы уложиться в символьный бюджет списка, и задаёт этот бюджет как 1% контекстного окна модели.

С цифрами понятнее. У модели с контекстным окном в миллион токенов списку навыков достаётся 1% от этого. Остальные 99% отведены под диалог, файлы и результаты инструментов. Поставьте 50 навыков или 100 — эти 1% не сдвинутся.

Куда же уходит добавленное? В сокращённые описания. Документация прописывает и порядок урезания: когда список переполняется, Claude Code убирает описания начиная с самых редко вызываемых навыков, чтобы у самых частых остался полный текст.

Вот это на практике и пугает больше всего. Под удар попадают навыки, которыми пользуются лишь изредка, а это обычно те же самые навыки, что нужны ровно тогда, когда вы про них уже забыли. Квартальная процедура миграции, релизный процесс, который запускают пару раз в год, — именно они теряют описание первыми.

Бюджет настраивается. Впишите в skillListingBudgetFraction долю контекстного окна (например, 0.02 — это 2%), и списку достанется больше места. Есть и предел на текст одного навыка: 1 536 символов на описание вместе с условиями срабатывания по умолчанию (меняется через skillListingMaxDescChars). Документация советует писать основные сценарии использования в начале именно потому, что этот предел обрезает конец.

2. Три инструмента измерения, и у каждого своя роль

Заменить догадки цифрами помогают три инструмента. /context есть уже давно, а строка кэша промпта в /usage появилась в v2.1.251 (28 августа 2026 года), /skill-doctor — в v2.1.252 (31 августа). Роли у них разные, поэтому держать в голове стоит все три.

/context
Что загружено прямо сейчас

Разбирает, что занимает окно. Строка Skills показывает размер после применения бюджета, поэтому совпадает с тем, что модель получает на самом деле

/usage
Во что это обошлось

Токены и стоимость сессии, а также состояние кэша промпта и разбивка расхода по навыкам, субагентам и серверам MCP

/skill-doctor
Кто отбивает вложения

Показывает стоимость и частоту вызова каждого навыка и помечает те, что не вызывались ни разу. Подсказывает, где резать

Здесь есть порядок. Посмотрите разбивку через /context, убедитесь через /usage, во сколько это реально обошлось, и определите кандидатов на урезание через /skill-doctor. Если зайти с другого конца, удалять придётся без оснований.

Про строку Skills в /context документация фиксирует и прошлое поведение: до v2.1.196 команда считала длину всех описаний в символах и могла показывать величину в разы больше настроенного бюджета. Если ощущение «навыки съедают контекст» осталось у вас с тех времён, сама эта цифра могла быть больше реальности.

3. Заставьте Claude Code назвать навыки, которыми никто не пользуется

/skill-doctor доступен в Claude Code начиная с v2.1.252 (31 августа 2026 года). Официальное описание: вы видите стоимость и частоту вызова каждого навыка и решаете, что убрать. В поведении есть четыре момента, которые стоит знать.

Что предполагает /skill-doctor

  • В интерактивной сессии открывается вкладка Stats менеджера /plugin. В неинтерактивном режиме с флагом -p вывод идёт текстом
  • Встроенные навыки и навыки, распространяемые организацией, не учитываются. В списке только то, что вы добавили сами
  • Навыки, которые ни разу не вызывались, помечаются, и показывается, где именно их убрать
  • При удалённом управлении со смартфона или из браузера команда не выполняется и возвращает ошибку

При чтении результата держите в голове одну вещь — и не ошибётесь. «Ни разу не вызывался» не значит «не нужен». Как показал предыдущий раздел, одна из причин, по которой навык не вызывается, — у него срезали описание, и найти его не по чему.

Перед тем как резать, надёжнее всего позвать навык по имени. Если по имени он работает, а автоматически не выбирается, дело не в ненужности: его описание проигрывает бюджету. Лечится это не удалением, а переписыванием описания (основные сценарии в начало) или увеличением бюджета.

4. Промахи кэша бьют больнее, чем объём

Дальше речь пойдёт не о размере контекста, а о другой оси. Два диалога одинакового размера могут стоить совершенно по-разному в зависимости от того, работает ли кэш.

Начиная с Claude Code v2.1.251 (28 августа 2026 года) в разделе сессии у /usage появилась строка кэша промпта. Вот пример, который приводит документация.

Prompt cache (main):   14 requests · 91% of input tokens from cache ·
2 misses (last 6m 10s ago, 310.2k tokens re-cached) ·
1 expected rebuild (compaction or tool-result clearing) ·
warm (1h TTL, last activity 40s ago)

При чтении важны три вещи.

MISSES
5% и 2 000 токенов

Запрос считается промахом, когда перечитывает больше этого объёма содержимого, которое мог бы отдать кэш. Мелкая замена промахом не становится

EXPECTED REBUILD
То, что вы сломали сами

Когда Claude Code сам переписывает диалог при компактировании или очистке старых результатов инструментов, это считается отдельно как ожидаемая перестройка, а не промах

WARM / COLD
В пределах жизни кэша или за ними

Жив ли ещё закэшированный префикс. Если он остыл, показывается, как долго его не трогали

Начиная с v2.1.260 строка называет и вероятную причину недавнего промаха, когда она есть (например, likely cause: tool definitions changed). Добавили сервер MCP, поменяли навык — такие изменения переписывают то, что стоит близко к началу диалога, и обнуляют кэш для всего, что идёт дальше. Вот почему менять конфигурацию до начала работы дёшево.

Одна оговорка. Эта строка смотрит только на основной диалог и не включает субагентов. Если вы отдаёте тяжёлую обработку субагентам, здешние цифры — не вся картина.

5. Кэш живёт не всегда час

Это напрямую влияет на счёт, но известно мало кому. Время жизни кэша промпта зависит от формы подписки и от ситуации.

Подписка
1 час

Ушли на обед, вернулись — а кэш ещё жив

После перехода на дополнительные кредиты, а также через API-ключ и облачных провайдеров
5 минут

Отошли ненадолго — и он остыл. Следующее одно сообщение перечитывает весь контекст

Источник: официальная документация Claude Code, «Manage costs effectively» (правила времени жизни кэша)

Документация пишет, что время жизни составляет один час на подписке и падает до пяти минут, как только начинают расходоваться дополнительные кредиты (usage credits), а через API-ключ или облачного провайдера по умолчанию равно пяти минутам. В момент, когда вы упираетесь в лимит и переходите на дополнительный объём, время жизни кэша сокращается в 12 раз. То есть «после достижения лимита» меняется не только цена за единицу — меняется и то, как работает кэш. Способ сохранить часовое время жизни, работая на дополнительных кредитах, документация тоже подсказывает: задать TTL самостоятельно.

6. MCP грузится лениво по умолчанию, и всё же CLI легче

Утверждение «серверы MCP съедают контекст» тоже опирается на изменившиеся предпосылки. Согласно документации, определения инструментов MCP по умолчанию загружаются лениво, и пока Claude не воспользуется конкретным инструментом, в контекст попадают только имена инструментов и описание сервера.

И всё же документация пишет, что инструменты командной строки вроде gh, aws, gcloud и sentry-cli по-прежнему экономнее по контексту. Причина проста: CLI не добавляет списка инструментов вообще. Claude выполняет команду напрямую, поэтому даже имена загружать не нужно.

Отсюда практический вывод. Если то же самое умеет CLI, причина выбрать MCP должна лежать за пределами бюджета контекста (единая аутентификация, структурированные результаты, контроль прав). Сервер, поставленный «на всякий случай, вдруг пригодится», — кандидат на отключение, а список показывает /mcp.

7. Что грузится каждый ход: CLAUDE.md и сам диалог

Навыки и MCP грузятся по условию, но две вещи грузятся безусловно, каждый раз.

Первое — CLAUDE.md. Он читается в контекст при старте сессии, поэтому описанные там процедуры занимают окно всё время, пока вы заняты совсем другой задачей. В качестве лечения документация советует переносить подробные инструкции для конкретных сценариев в навыки и доходит до конкретной цели: держать CLAUDE.md в пределах 200 строк и только по существу. Логика такая: навык загружается лишь тогда, когда его вызвали, поэтому то же самое содержимое перестаёт быть постоянной нагрузкой.

Второе — сам диалог. Документация формулирует точно: Claude Code отправляет весь диалог с каждым запросом, и каждый раз, когда Claude пользуется инструментом, уходит ещё один запрос с результатом этого инструмента. Поэтому вопрос в одну строку в сессии, открытой с самого утра, всё равно расходует объём всего диалога. Кэш снижает цену за единицу, но не до нуля.

Ровно здесь и появляется выбор между /clear и /compact. Документация пишет: /compact читает диалог, который сводит в резюме, поэтому компактирование большого контекста само по себе оказывается большим запросом; а если нужно не продолжение, а чистый старт, /clear не стоит ничего. «Скомпактить на всякий случай» — не бесплатно. Как выбрать момент нажатия, подробно разобрано в статье Стоит ли запускать /compact в Claude Code по расписанию.

8. Расход растёт, пока вы ничего не делаете

«Я всего лишь отошёл, а расход вырос» — у этого есть конкретные причины, и документация их перечисляет. У всех них одна форма: даже в простое начинается новый ход, который отправляет весь контекст.

Что двигает расход, пока вы бездействуете

  • Задачи по расписанию — срабатывают по своему интервалу, даже когда сессия ничем не занята, и каждое срабатывание отправляет весь контекст
  • Сообщения из других сессий — доставляются как новый ход, пока вы бездействуете. Поставьте crossSessionInbound в hold, и они встанут в очередь
  • Проверки продвижения к цели — пока фоновая работа не завершена, поднимается проверочный ход, до трёх раз между запросами
  • Каждый участник команды агентов — расходует токены, пока не завершит работу
  • Истечение кэша — первое сообщение после перерыва перечитывает весь контекст

Для команд агентов приводится и конкретный множитель. Документация пишет, что команда агентов расходует примерно в 7 раз больше токенов, чем обычная сессия, когда её участники работают в режиме планирования. Каждый участник держит собственное контекстное окно, поэтому расход растёт почти пропорционально числу участников. Официальный совет столь же прост: брать для участников Sonnet, держать команду небольшой и распускать её по окончании работы.

В качестве ориентира документация приводит средние значения для корпоративных внедрений: около $13 на человека за рабочий день и от $150 до $250 в месяц, и отмечает, что 90% пользователей остаются ниже $30 за рабочий день. Если ваши цифры сильно выходят за этот коридор, скорее всего, работает что-то из перечисленного выше.

9. Измерили — что урезать первым

Когда цифры на руках, начинайте оттуда, где эффект больше. Если переставить перечисленные в документации меры по скорости отдачи, получится вот что.

БЕСПЛАТНО, ПРЯМО СЕЙЧАС
/clear при переходе к несвязанной задаче

Старый контекст оплачивается в каждом следующем сообщении. Сделайте /rename перед очисткой — и позже вернётесь через /resume

ОДИН РАЗ ПОЧИНИТЬ КОНФИГУРАЦИЮ
Уложить CLAUDE.md в 200 строк

Процедуры конкретных задач переносятся в навыки. Постоянно грузится меньше, и это работает во всех сессиях

СУЗИТЬ ВЫВОД
Хуки и субагенты

Вместо того чтобы скармливать лог на 10 000 строк, пусть хук вернёт только нужные строки. Многословную обработку держите внутри субагента

СНИЗИТЬ ЦЕНУ ЗА ЕДИНИЦУ
Подобрать модель и объём размышлений под задачу

Для большей части кодинга хватает Sonnet. На простой работе снижайте размышления через /effort

Порядок несёт смысл. Первый пункт работает уже сегодня и при этом бесплатен. Второй чинится один раз и действует во всех сессиях. Третий и четвёртый — про настройки и привычки, поэтому отдача приходит не сразу. Удаление навыков стоит не на верхних строчках потому, что, как показали предыдущие разделы, главным фактором оно оказывается редко.

Что не меняется — так это правило измерять до того, как что-то трогать. Официальная команда /usage помечает любое поведение, на которое приходится 10% и больше недавнего расхода (слишком длинный контекст, промахи кэша и так далее). Если урезать то, на чём пометки нет, ощущения не изменятся.

FAQ

Q1. Сколько навыков держать безопасно?
Ограничения на количество нет. Важно, укладываются ли они в символьный бюджет списка, то есть в 1% контекстного окна. Одни и те же десять навыков с длинными описаниями его переполнят, а с короткими уместятся. Смотреть строку Skills в /context и запускать /skill-doctor точнее, чем считать штуки.

Q2. Можно ли удалить навык, который ни разу не вызывался?
Перед удалением позовите его по имени. Если по имени он работает, а автоматически не выбирается, дело не в ненужности: его описание проигрывает бюджету. Лечится это не удалением, а переписыванием описания (основные сценарии в начало) или увеличением бюджета.

Q3. Если чаще нажимать /compact, станет дешевле?
Нет. Компактирование читает диалог, который сводит в резюме, поэтому на большом контексте оно само превращается в большой запрос. Когда продолжение не нужно, /clear дешевле (стоит ноль) и надёжнее.

Q4. Какой процент попаданий в кэш считать хорошим?
Проходного балла документация не задаёт, поэтому следите за изменением, а не за абсолютным значением. Если при том же стиле работы доля упала, скорее всего, перед этим вы поменяли конфигурацию: MCP, навыки, определения инструментов. Начиная с v2.1.260 строка показывает своё предположение о причине.

Q5. Стоит ли сокращать число серверов MCP?
Определения инструментов по умолчанию грузятся лениво, поэтому сама по себе установка обходится дешевле, чем раньше. Но если то же самое умеет CLI вроде gh, он легче, потому что не добавляет списка инструментов совсем. Неиспользуемые серверы отключаются через /mcp.

Q6. Экономят ли субагенты контекст?
Экономят. Документация тоже советует передавать многословную обработку (прогон тестов, получение документации, разбор логов) субагенту, оставляя подробности в его контексте и возвращая только резюме. Но учтите: строка кэша в /usage смотрит только на основной диалог, поэтому при работе преимущественно через субагентов эти цифры не дают полной картины.

Q7. У меня не запускается /skill-doctor.
Нужен Claude Code версии v2.1.252 или новее. Кроме того, при удалённом управлении со смартфона или из браузера команда не выполняется и возвращает ошибку. В интерактивной сессии она открывает вкладку Stats менеджера /plugin, поэтому, если нужен текстовый вывод, запускайте её в неинтерактивном режиме с флагом -p.

Источники

  • Claude Code Docs — Skills (бюджет списка в 1% контекстного окна, предел описания в 1 536 символов, порядок урезания при переполнении, строка Skills в /context)
  • Claude Code Docs — Manage costs effectively (разбивка /usage, строка кэша промпта, определение промаха, время жизни кэша, цель в 200 строк для CLAUDE.md, примерно 7-кратный расход команды агентов, средние корпоративные затраты)
  • Claude Code Docs — Slash commands (поведение и предпосылки /skill-doctor)
  • Claude Code Changelog (v2.1.251 строка кэша, v2.1.252 /skill-doctor, v2.1.260 определение причины, v2.1.261 настройка предела вывода)