Коротко
- Восемь популярных репозиториев для Claude Code установили на уровне проекта в одну реальную кодовую базу и измерили: токены на старте сессии, выходные токены на трёх задачах по коду и то, что каждый из них записал за пределами проекта.
- Исход изменил только один из восьми: anti-slop, запущенный как линтер, поймал один и тот же небезопасный каст во всех 3 прогонах T3 ценой +95 токенов на старте сессии и нуля на каждый ход.
- Наборы правил для краткого вывода не выдержали проверку на работе с инструментами: заявленные Chisle 52% от базовой линии превратились в 94% базовых выходных токенов, а его вариант с учётом входных токенов стоил дороже базовой линии в двух задачах из трёх.
- Три MCP-сервера не были вызваны ни разу за 63 прогона. Установлено не значит используется.
- Стек аддитивен: все восемь вместе добавили +6,804 токена на старте сессии, на 63 токена меньше суммы частей.
- Две установки вышли за пределы проекта. Один кодмод зарегистрировал себя в глобальных конфигах 8 других агентов; другой инструмент жёстко прописывает
--dangerously-skip-permissionsи копирует файл с учётными данными, поэтому его не запускали.
Что показывают измерения
Токены на старте сессии воспроизводимы, а стоимость в долларах нет: каждое условие вернуло одинаковую сумму входных токенов в обоих прогонах, тогда как стоимость того же условия колебалась от $0.0183 до $0.0035 в зависимости от состояния кэша промптов, поэтому везде метрика это число токенов. Базовый проект стартует с 17,378 токенов s4.
Схемы MCP-инструментов в этой версии Claude Code отложены, и теперь стоимость зависит от числа имён инструментов, которые объявляет сервер, а не от размера схем. 39 инструментов ouroboros стоят +1,642 токена, 19 инструментов reticle стоят +895, 2 инструмента ui-skills стоят +37: примерно 42-47 токенов на имя инструмента. По умолчанию все MCP-инструменты отложены и подгружаются по требованию, а режим auto переменной ENABLE_TOOL_SEARCH откладывает их, когда их определения достигают 10% контекстного окна s4.
img2threejs поставляет SKILL.md на 32,902 байта и 352 файла, а стоит +107 токенов на старте сессии, потому что загружается только описание из frontmatter. Документация по скиллам ограничивает каждое описание в списке 1,536 символами и сокращает описания под бюджет списка, когда скиллов много; после компактации вызванные скиллы прикрепляются заново по 5,000 токенов каждый в общем бюджете 25,000 токенов s5. Из-за этого бюджета списка 40 скиллов могут стоить 3,060 токенов за ход в конфигурации, где ни один из них не вызывается s10, и поэтому обрезаются описания, а не отбрасываются скиллы s11.
Хук UserPromptSubmit у Chisle добавляет 287 байт additionalContext на каждом ходу; за 22 хода задачи именно поэтому его вариант стоил на +41,539 входных токенов больше на T3 по сравнению с базовой линией. caveman, измеренный как эталон, ничего не внедряет, пока промпт не начинается с /caveman. Когда несколько хуков на одном событии возвращают additionalContext, Claude получает все их склеенными, с лимитом 10,000 символов на хук s15. Когда Chisle, caveman и ouroboros подключены вместе, получилось 3 регистрации на SessionStart, 3 на UserPromptSubmit и 2 на PostToolUse, то есть +4,269 токена на старте s15.
README Chisle заявляет счёт за 20 задач на уровне 52% от базовой линии, и сам же README относит эту цифру к одноходовым промптам без инструментов s3. На трёх задачах в реальном репозитории, по 3 прогона каждая, суммарные средние выходные токены Chisle составили 9,007 против 9,615 у базовой линии, то есть 94%; у caveman 10,820, то есть 113%, на выборке, где разброс T3 был 2,014 токенов, так что ни в одну сторону это не выходит за пределы шума s3. Компрессор вывода Chisle не записал ни одной записи об экономии за 63 прогона.
anti-slop, вендоренный в tools/oxlint/ со всеми 18 общими правилами плюс oxc/no-accumulating-spread, нашёл 109 проблем в нетронутом проекте на 4,775 строк, 83% из них от двух правил домашнего стиля (require-readable-spacing 50, require-safety-comment-for-type-assertion 41) s8. В коде, написанном Claude, он поймал maxLength={field.maxLength as number} во всех 3 прогонах T3: Claude копирует собственный небезопасный каст кодовой базы s8. Плагин это ESM, поэтому в хост-проекте нужен "type": "module", иначе oxlint падает с Cannot use import statement outside a module.
Кодмод init у Reticle, запущенный с заданным RETICLE_STATE_DIR и выключенной телеметрией, сообщил, что зарегистрировал MCP-сервер ещё у 8 агентов (пользовательский уровень VS Code, GitHub Copilot CLI, Warp, Factory Droid, Kiro, Amazon Q Developer CLI, Cline CLI, Amp) и заранее одобрил его инструменты в Gemini CLI; сопряжение затем упало с ERR_OSSL_EVP_UNSUPPORTED s6. Caliper отклонили: claude_code.py:106 жёстко прописывает --dangerously-skip-permissions, а seed_files() копирует ~/.claude/.credentials.json с запасным вариантом через Keychain s2. Хук UserPromptSubmit у ouroboros отвечает на обычный промпт вроде write prd for reading time строкой REQUIRED SKILL: /ouroboros:setup, шагом, который установка на уровне проекта выполнить не может s7.
Статья по 2,545 траекториям на библиотеках из 52, 102 и 202 скиллов сообщает об объединённых падениях доли успешных прогонов на .08, .14 и до 21%, причём похожие описания перекрывают друг друга, и это всё больше вклада в потери s20.
Измерения
Протокол: один реальный TypeScript-проект, каждый репозиторий установлен только на уровне проекта. Старт сессии: промпт Reply with OK в JSON-режиме -p с одинаковыми флагами, 2 прогона на условие, показатель = input_tokens + cache_creation_input_tokens + cache_read_input_tokens первого хода. Абляция: три задачи по коду (T1 короткая, T2 средняя, T3 длинная задача по UI) с проверками прохождения и барьером проверки типов, 3 прогона на ячейку, условия = базовая линия, каждый постоянно включённый репозиторий отдельно, все восемь вместе. anti-slop: oxlint 1.78.0 с вендоренным набором правил на нетронутом проекте и на коде, написанном в 9 базовых прогонах.
| репозиторий | что установлено на уровне проекта | токенов добавлено на старте сессии | стоимость на ход |
|---|---|---|---|
| базовая линия | ничего | 17,378 | нет |
| Chisle | 4 скилла, 4 команды, 3 хука | +3,496 | +287 байт additionalContext на каждом ходу |
| ouroboros | MCP-сервер, 39 имён инструментов | +1,642 | условное внедрение |
| reticle | MCP-сервер, 19 имён инструментов | +895 / +903 | не замечена |
| fwc-swiftui-skills | 2 скилла | +304 | нет |
| caliper | 2 скилла | +172 | нет |
| img2threejs | 1 скилл, 352 файла, SKILL.md = 32,902 Б |
+107 | нет |
| anti-slop | 1 скилл + вендоренный набор правил | +95 | нет |
| ui-skills | удалённый MCP, 2 инструмента | +37 | нет |
| все восемь вместе | всё перечисленное выше | +6,804 | только на ход у Chisle |
| caveman (эталон) | 4 скилла, 2 хука | +744 | 0 |
| задача | условие | прошло | новых ошибок типов | выходных токенов, среднее | выходных токенов, от и до | входных токенов всего, среднее | стоимость, среднее | ходов | вызовов MCP |
|---|---|---|---|---|---|---|---|---|---|
| T1 | базовая линия | 3/3 | 0 | 1,668 | 1,619 до 1,739 | 95,462 | $0.0519 | 7.0 | 0 |
| T1 | Chisle | 3/3 | 0 | 1,434 | 1,341 до 1,502 | 106,001 | $0.0576 | 7.7 | 0 |
| T1 | ui-skills | 3/3 | 0 | 1,756 | 1,644 до 1,885 | 96,279 | $0.0535 | 7.3 | 0 |
| T1 | reticle | 3/3 | 0 | 1,899 | 1,653 до 2,177 | 107,263 | $0.0594 | 8.0 | 0 |
| T1 | ouroboros | 3/3 | 0 | 1,729 | 1,655 до 1,787 | 97,166 | $0.0549 | 7.0 | 0 |
| T1 | стек | 3/3 | 0 | 1,462 | 1,460 до 1,465 | 128,221 | $0.0646 | 7.7 | 0 |
| T2 | базовая линия | 3/3 | 0 | 2,128 | 2,105 до 2,164 | 74,286 | $0.0540 | 9.0 | 0 |
| T2 | Chisle | 3/3 | 0 | 2,184 | 2,150 до 2,230 | 87,462 | $0.0624 | 10.0 | 0 |
| T2 | ui-skills | 3/3 | 0 | 2,348 | 2,224 до 2,504 | 74,869 | $0.0604 | 10.0 | 0 |
| T2 | reticle | 3/3 | 0 | 2,614 | 2,312 до 2,824 | 78,664 | $0.0635 | 10.7 | 0 |
| T2 | ouroboros | 3/3 | 0 | 2,441 | 2,152 до 2,815 | 80,819 | $0.0622 | 10.0 | 0 |
| T2 | стек | 3/3 | 0 | 2,136 | 2,015 до 2,216 | 89,378 | $0.0661 | 9.7 | 0 |
| T3 | базовая линия | 3/3 | 0 | 5,819 | 5,423 до 6,063 | 198,217 | $0.1551 | 22.0 | 0 |
| T3 | Chisle | 3/3 | 0 | 5,389 | 5,206 до 5,500 | 239,756 | $0.1565 | 20.3 | 0 |
| T3 | ui-skills | 3/3 | 0 | 5,279 | 4,860 до 5,567 | 214,691 | $0.1477 | 21.0 | 0 |
| T3 | reticle | 3/3 | 0 | 4,664 | 4,008 до 5,776 | 198,740 | $0.1293 | 19.0 | 0 |
| T3 | ouroboros | 3/3 | 0 | 5,456 | 4,324 до 7,093 | 232,763 | $0.1544 | 21.0 | 0 |
| T3 | стек | 3/3 | 0 | 5,331 | 4,787 до 5,843 | 241,576 | $0.1591 | 19.7 | 0 |
63/63 прогонов прошли и 0/63 внесли новую ошибку типов. Только две ячейки выходят за собственный разброс между прогонами: Chisle на T1 (−234, −14.0%) и стек на T1 (−206, −12.3%). На T2 и T3 все дельты лежат внутри разброса; прогоны ouroboros на T3 дали от 4,324 до 7,093 выходных токенов на одинаковом промпте, разница 64%.
| репозиторий | вердикт | доказательства |
|---|---|---|
| anti-slop | изменил результат, как проверка | поймал один и тот же небезопасный каст в 3/3 прогонах T3, +95 токенов, 0 на ход |
| Chisle | ничего измеримого, стоил дороже | 94% базового вывода против заявленных 52%; +3,496 на старте, +287 байт на ход |
| ui-skills | ничего не изменил | 0 вызовов инструментов в 9 прогонах, +37 токенов |
| reticle | конфликтует | init записал в ~/.claude/settings.json и в конфиги 8 других агентов; сопряжение так и не завершилось |
| ouroboros | конфликтует | требует /ouroboros:setup на обычных промптах; 39 имён инструментов, 0 вызовов |
| caliper | не запускали | жёстко прописанный --dangerously-skip-permissions, копирует файл с учётными данными |
| img2threejs | вне стека | +107 токенов, ни с чем не конфликтует |
| fwc-swiftui-skills | вне стека | +304 токена, статичный Markdown |
Сделайте в понедельник
- Запустите
/context allв свежей сессии основного проекта и запишите стартовое число. - Выполните
claude plugin details <name>для каждого установленного плагина; строка always-on это единственная цифра, которая списывается на каждом ходу. - Выпишите свои хуки по событиям. Любой хук, возвращающий
additionalContextнаUserPromptSubmitдля каждого промпта, это налог на каждый ход; оставьте только те, что срабатывают по ключевому слову или matcher. - Посчитайте имена инструментов, которые объявляет каждый MCP-сервер, заложите примерно 42-47 токенов на имя, затем проверьте по своим транскриптам, сколько из них вообще вызывалось.
- Перед установкой чего-либо со скриптом
initили setup прочитайте его на предмет записи за пределы репозитория:~/.claude/settings.json, каталоги конфигов других агентов, файлы с учётными данными,--dangerously-skip-permissions. - Подключайте проверки качества сгенерированного кода как линтер на шаге верификации, а не как скилл в контексте: правило линтера ничего не стоит на ходу.
- Прежде чем верить любому заявлению об экономии токенов, прогоните одну задачу 3 раза с инструментом и без него и сравните дельту с собственным разбросом от минимума до максимума.
- Архивируйте то, что убираете, а не удаляйте, чтобы рабочий процесс, который за этим потянется, мог это вернуть.
Читать дальше
- Бюджет списка скиллов и лимит описания в 1,536 символов объясняют, почему перегруженная конфигурация деградирует, хотя ни один скилл не перестаёт загружаться. Прочитайте разделы "Skill descriptions are cut short" и "Skill content lifecycle" s5.
- Разбор
/skill-doctorпоказывает 40 скиллов по 3,060 токенов за ход и какие резать первыми; его слепое пятно, дорогие скиллы внутри используемого плагина, оставлено для продолжения s10. - Статья, на которой держится правило "больше 30 скиллов": 2,545 траекторий на библиотеках из 52, 102 и 202 скиллов, с выделенным эффектом перекрытия s20, и доступный пересказ, который сделал её известной s12.
- Склейка хуков и лимит
additionalContextв 10,000 символов, а также синтаксис matcher, позволяющий хуку срабатывать только наWrite|Edits15. - Ветка об удалении 63%, включая жёстко прописанный bearer-токен, найденный в удалённом MCP-конфиге, побочная тема о безопасности, которую видео опустило s13.
- Собственный README Chisle, строки 229 и 262, относит цифру 52% к одноходовым промптам без инструментов и уступает короткую ячейку по коду caveman. Читайте мелкий шрифт, прежде чем цитировать заголовок s3.
- Два репозитория вне стека не оценивались, потому что вызываются вручную и ничего не стоят на старте: img2threejs для сцен Three.js s21 и fwc-swiftui-skills для поверхностей Liquid Glass s22.
Источники
- Plugins reference, документация Claude Code. Зачем читать:
plugin details, области установки и отложенная загрузка MCP-инструментов, из-за которой реальной ценой становится число имён инструментов. - Extend Claude with skills, документация Claude Code. Зачем читать: лимит описания, бюджет списка и бюджет повторного прикрепления после компактации на одной странице.
- Hooks reference, документация Claude Code. Зачем читать: что происходит, когда два хука внедряют контекст на одном событии, и как matcher не пускает хук на большинство ходов.
- dmmulroy/anti-slop, GitHub. Зачем читать: единственный из восьми репозиториев, изменивший результат; берите правила, пропускайте скилл.
- JayPokale/Chisle, GitHub. Зачем читать: README, который честно ограничивает собственное заявление о 52%, если дочитать дальше заголовка.
- edonadei/caliper, GitHub. Зачем читать: оценщик скиллов, о котором стоит знать, и урок о том, что
claude_code.pyнужно прочитать до запуска чего-либо. - reticlehq/reticle, GitHub. Зачем читать: кодмод
initэто самый наглядный пример установщика, пишущего далеко за пределами вашего проекта. - Q00/ouroboros, GitHub. Зачем читать: рабочий процесс на хуках, имеющий смысл только при глобальной установке, с шагом настройки, который установка на уровне проекта выполнить не может.
- ibelick/ui-skills, GitHub. Зачем читать: самая дешёвая установка здесь, +37 токенов, и ни одного вызова.
- /skill-doctor: 40 skills, 3,060 tokens a turn, dev.to. Зачем читать: разбивка стоимости по скиллам на реальной конфигурации.
- Too many Claude Code skills? How the listing budget decides, dev.to. Зачем читать: механизм, по которому описания обрезаются.
- Why More Than 30 Skills Kill Your AI Agent, dev.to. Зачем читать: читаемая версия статьи о перекрытии скиллов.
- Skill shadowing paper, arXiv. Зачем читать: объединённые падения доли успешных прогонов по размеру библиотеки, с доверительными интервалами.
- I removed 63% of my Claude Code setup, Reddit r/ClaudeCode. Зачем читать: от ~235 компонентов до ~87, архивировано, а не удалено.
- My fresh Claude Code sessions were starting at ~35K tokens, Reddit r/ClaudeCode. Зачем читать: аудит
/context allиз семи шагов, который можно скопировать уже сегодня. - img2threejs/img2threejs, GitHub. Зачем читать: доказательство того, что
SKILL.mdна 32,902 байта стоит 107 токенов, пока вы его не вызовете. - FloWritesCode/fwc-swiftui-skills, GitHub. Зачем читать: скиллы в виде статичного Markdown, форма установки, которая ни с чем не может конфликтовать.
FAQ
Стоит ли MCP-сервер по-прежнему тысячи токенов на схему при запуске?
Не на измеренной версии. Схемы отложены, и стоимость зависит от числа объявленных имён инструментов, около 42-47 токенов на каждое. Сервер с 39 инструментами стоил +1,642 токена; сервер с 2 инструментами стоил +37.
Почему Chisle стоил дороже базовой линии, хотя давал меньше выходных токенов?
Его набор правил загружается на старте сессии (+3,496 токенов), а хук внедряет 287 байт на каждом ходу. На T2 и T3 эти входные накладные расходы перевесили экономию на выходе, которая так и не вышла за пределы шума между прогонами.
AIDive