За пять глав мы установили Claude Code, научились давать указания, выбираться из тупиков и проектировать разрешения. Эта глава — про то, как переделать сам инструмент. Расширениями нельзя пользоваться, просто запомнив названия. Полезна другая вещь: таблица соответствия «какое из них решает мою текущую боль».

Карта выбора: всё решают четыре вопроса

Расширений шесть, но думать надо всего о четырёх вещах. Хватит ли просьбы / нужно ли гарантированное срабатывание / нужно ли отделить контекст / нужно ли подключиться наружу. Спросив себя об этом по порядку, вы почти всегда получите единственный ответ.

Q1
Хватит ли просьбы

Если изредка пропустить не смертельно, хватит слов. → CLAUDE.md (общие предпосылки) / Skills (порядок действий для конкретной работы)

Q2
Нужно ли гарантированное срабатывание

Если пропуск хотя бы раз уже проблема, останавливайте механизмом. → hooks. Они выполняются обязательно, без участия суждения модели.

Q3
Нужно ли отделить контекст

Если не хотите забивать основную линию огромным выводом, пусть работа идёт снаружи, а вы получите только вывод. → subagents

Q4
Нужно ли подключиться наружу

Если нужны сведения, которых ИИ знать неоткуда (текущие значения в базе, содержимое трекера задач). → MCP

Пятый вопрос — «буду ли я раздавать это другим». Если да, то plugins. Легче всего спутать Q1 и Q2: CLAUDE.md, Skills и hooks. Выглядят они одинаково, а различаются тем, когда их читают и кто их исполняет.

CLAUDE.md: память, которая не исчезает. Но если её удлинить, она исчезает

CLAUDE.md, положенный в корень проекта, — файл, который читается автоматически при каждой сессии (для всех проектов сразу — ~/.claude/CLAUDE.md). Это файл, поэтому на него не действует «в длинном разговоре начало забывается» из главы 1. Здесь место тому, что вы объясняете каждый раз.

«Говорит, что прочитал, а не соблюдает» — не разгильдяйство, а вопрос устройства, и причин три.

  • Середина тонет: указания в середине длинного текста легко ускользают, и чем длиннее файл, тем сильнее правила из середины фактически перестают существовать
  • Сжатие превращает их в сводку: когда срабатывает сжатие, мелкие рабочие правила сминаются. Именно поэтому нарушений тем больше, чем дальше зашла сессия
  • Побеждает свежее указание: «да просто закоммить» проскакивает мимо порядка проверки, прочитанного несколько сотен ходов назад

Лечение — сокращать. По опыту надёжно работает объём примерно до 100-150 строк. Если больше, оставьте в начале только критические заповеди, а подробности вынесите в отдельный файл (дублирование порождает расхождения, поэтому оригинал должен быть в одном месте). Пометку «CRITICAL» ставьте только на то, чем нельзя поступиться, и формулируйте так, чтобы исполнение можно было оценить со стороны: не «пиши аккуратно», а «пиши не длиннее трёх строк».

«Прочитал» доказательством не является. Судить можно только по поведению после выполнения. Правило, которое не соблюдается, сколько его ни переписывай, — это уже не вопрос формулировки: это работа следующего раздела.

hooks: не просьба, а гарантированное срабатывание

«Не переписывай .env» — записанное в CLAUDE.md, это будет соблюдаться в девяти случаях из десяти. Если один пропуск из десяти вас не пугает, хватит текста. Если пугает, нужны hooks. Вот и вся развилка.

Hooks — это команды оболочки, выполняемые автоматически в заданных точках. Запускает их не модель, а сам Claude Code (обвязка), поэтому они срабатывают обязательно, не дожидаясь никакого суждения. Общая картина — в статье Что такое hooks в Claude Code. Стандартных точек срабатывания девять.

SessionStart при запуске или возобновлении UserPromptSubmit сразу после отправки [может блокировать] PreToolUse прямо перед инструментом = привратник [может блокировать] PostToolUse после успеха инструмента = форматирование [может блокировать] Notification ожидание ввода или разрешения Stop конец ответа [может блокировать] SubagentStop субагент завершился [может блокировать] SessionEnd сессия завершается PreCompact перед сжатием [может блокировать]

«Может блокировать» значит, что в этой точке действие можно остановить. Заворачивать опасные команды на PreToolUse и автоматически форматировать на PostToolUse — обычная точка входа. Настройка пишется под ключом "hooks" в settings.json, а место файла определяет область действия (~/.claude/ — вы, .claude/ — общая, settings.local.json — только вы).

{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "..." } ] } ] } }

Структура такая: имя события → массив из матчера и команды. matcher — имя целевого инструмента (через |, как в "Edit|Write"; если опустить, совпадает со всем). Хук принимает JSON на стандартном вводе и отвечает кодом возврата: 0 — успех, 2 — блокировка (стандартный поток ошибок передаётся Claude). Путь к целевому файлу тоже есть в этом входном JSON, так что можно написать «останавливать, если путь такой-то».

Хуки могут ужесточить ограничения, но не могут их ослабить. Даже вернув разрешение, они лишь пропускают запрос, а запрещающие правила всегда в приоритете. Отказ на PreToolUse действует даже в режиме, который пропускает все согласования, поэтому его можно держать как дно под тем, что вы ослабили в главе 5.

О плате тоже сразу. Hooks автоматически выполняют произвольные команды оболочки с вашими правами. В официальной документации прямо сказано, что ответственность целиком на вас. Настраивайте только то, чему доверяете, и проверяйте входные данные. Конфигурация фиксируется в момент начала сессии, так что при «исправил, а не действует» откройте новую сессию.

subagents: отдать работу, отделив контекст

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

  • Разделять выгодно: широкие изыскания / проверки с большим объёмом вывода / самодостаточные задачи, от которых нужен только вывод
  • Разделять в убыток: последовательная обработка / частые круги туда-обратно / параллельная работа над одним файлом / правка в один-два хода

Это штатная возможность, так что она доступна без настройки. Чтобы добавить своё определение, положите .claude/agents/<имя>.md (общие — в ~/.claude/agents/) и опишите в YAML-заголовке name, description, tools, model. Управление — через /agents, вызов — через @agent-<имя>. Для начала хватит штатных: для разведки, для планирования и универсального.

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

Легко спутать с этим Agent Teams — механизм, где несколько независимых сессий взаимодействуют через общий список задач. Экспериментальная возможность с явным включением, по умолчанию выключена (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1). Работают отдельные экземпляры, поэтому расход токенов велик, и вкладывать их друг в друга нельзя. Разницу разбирает статья Чем subagents отличаются от Agent Teams. При сомнениях берите одну сессию или subagents.

Skills: превратить порядок действий в актив

Для шаблонного «каждый раз в таком порядке» Skills хороши тем, что открываются только тогда, когда нужны. По сути это папка, построенная вокруг файла SKILL.md. В начале — name и description, ниже порядок действий в Markdown, а рядом можно положить reference/ и scripts/. Достаточно положить это в .claude/skills/ (проект) или ~/.claude/skills/ (общие), и это будет распознано.

Суть в постепенном раскрытии. При старте сессии читается только короткий description каждого навыка, а тело и материалы подгружаются, лишь когда просьба совпала. Поэтому даже десятки навыков почти не забивают повседневный контекст — принципиальное отличие от CLAUDE.md, который всегда лежит целиком. Обратная сторона: если совпадения нет, навык не откроется никогда. При расплывчатом description написанный порядок действий всё равно что не существует. Как их писать, разбирает статья Что такое Claude Agent Skills.

Одной строкой. CLAUDE.md — предпосылки, которые читаются всегда; Skills — инструкции, которые Claude открывает по собственному решению; hooks — обработка, которая срабатывает обязательно.

MCP: дотянуться до внешних систем

Три предыдущих расширения меняли способ работы. И только MCP (Model Context Protocol) расширяет то, до чего можно дотянуться: это стандарт, дающий доступ к вещам, о которых ИИ по своему устройству знать не может, вроде текущих значений в базе данных или тикетов в трекере задач. Форм подключения две, и заедает у них в разных местах.

  • Локально (stdio): сервер запускается на вашем компьютере как дочерний процесс. Заедает сам запуск (путь, переменные окружения, разрешение команды)
  • Удалённо (HTTP): подключение к серверу в облаке по URL. Заедает почти всегда аутентификация, то есть в ответ приходят 401 или 403

Поэтому не сваливайте всё в одно «не подключается», а сначала посмотрите статус через /mcp. failed — локальный запуск, needs authentication — удалённая аутентификация, pending approval — ожидание согласования. Статус и определяет ход. Способы устранения собраны в статье Как чинить ошибки подключения MCP-сервера.

Есть и свои ловушки. Общий конфиг .mcp.json лежит прямо в корне репозитория (не под .claude/ и не внутри settings.json), а API-ключи задаются в env каждого сервера. В Windows npx на самом деле является пакетным файлом, поэтому проходит вызов через cmd с передачей /c npx ....

Подключённые серверы расходуют контекст. Контекст поджимается уже от одного накопления определений инструментов. Разумнее отключать серверы, которыми вы не пользуетесь.

plugins: собрать комплект и раздать его

Когда навыки, определения субагентов, хуки и настройки MCP расползлись, plugins позволяют собрать всё в раздаваемый комплект. Проще всего ошибиться в правилах каталогов. Манифест — это .claude-plugin/plugin.json, и в .claude-plugin/ кладут только его. А skills/, agents/, hooks/hooks.json и .mcp.json лежат в корне.

/plugin marketplace add owner/repo ← зарегистрировать каталог /plugin install name@marketplace ← установить оттуда конкретный плагин /plugin list ← посмотреть, что установлено

Установка идёт в два шага: зарегистрировать каталог и уже потом поставить отдельный плагин. От одного добавления каталога ничего не устанавливается. Область действия бывает user (все проекты), project (все участники работы), local (только вы) и managed (раздаётся администратором, изменению не подлежит); чтобы выровнять команду, берут project. Как делать свои, разбирает статья Что такое plugins и marketplace.

Плагин может выполнить произвольный код с вашими правами — это прямо сказано в официальной документации. Anthropic не проверяет сторонние плагины и вложенные в них MCP-серверы. Ставьте только то, что выпущено источником, которому вы доверяете. Проектирование разрешений из главы 5 возвращается здесь в виде чужого кода.

С чего начинать: разговор о порядке

Мы перечислили шесть, но ставить всё не нужно. Поставленное до появления боли лишь усложняет конфигурацию. Порядок задаётся симптомом.

  • Объясняете одно и то же каждый раз → CLAUDE.md. Если это касается только одной работы, то Skills
  • Записали, а не соблюдается → сначала сокращайте. В hooks переводите только то, от чего бывает реальный ущерб
  • Контекст быстро забивается → тяжёлые изыскания в subagents, ненужные MCP отключить
  • ИИ не дотягивается до сведений → MCP. Подключайте по одному и переходите к следующему, увидев, что предыдущий заработал
  • Хотите раздать одинаковую настройку → plugins. Собирайте только то, чем сами уже пользуетесь
  • Ничего особенно не мешает → не ставьте ничего. Это и есть лучшее состояние

Последняя строка не шутка. Расширения увеличивают и число причин застрять: за «Claude Code ведёт себя странно» часто стоит слой, добавленный вами самими. Поэтому сначала локализация из главы 4.

Итоги

  • Критерий выбора — четыре вопроса: хватит ли просьбы (CLAUDE.md, Skills) / нужно ли гарантированное срабатывание (hooks) / нужно ли отделить контекст (subagents) / нужно ли подключиться наружу (MCP). Раздавать — plugins
  • CLAUDE.md — память, переживающая сессии. При удлинении середина тонет, сжатие её размывает, а свежие указания её перебивают. Сокращайте и явно расставляйте приоритеты
  • hooks исполняет обвязка, поэтому суждение в это не вмешивается. Ограничения они ужесточают, но не ослабляют
  • subagents работают в отдельном контексте и возвращают только сводку. Для последовательной обработки и частых кругов туда-обратно не годятся
  • Skills открываются, только когда совпал description: это постепенное раскрытие. Их можно копить без утяжеления, но при расплывчатом описании их не вызовут
  • MCP — стандарт, расширяющий то, до чего можно дотянуться. Статус из /mcp и определяет ваш следующий ход
  • plugins — коробка для раздачи. Чужой код исполняется с вашими правами, поэтому проверяйте издателя
  • Порядок установки задаётся симптомом. По одному и только после того, как боль появилась

Чем больше расширений, тем выше расход. Напоследок разберём эксплуатацию для долгой работы. Переходите к главе 7 «Стоимость и лимиты».