ITUZOV LAB
← Все статьи
Разбор

Моды Claude Code: что это и как сделать свой

Моды как в играх, только для Claude Code: индикатор контекста, страж над rm -rf, свои команды. Как собрать мод одной фразой и не впустить чужой вслепую.

12 минНачальный5 октября 2026 г.

Что такое моды

Знаешь моды в играх? Скачал файл, и в Майнкрафте появились новые блоки, а карта в Скайриме вдруг показывает то, чего не показывала раньше.

Теперь так можно делать и с Claude Code, и называется это так же: моды, в оригинале mods. Мод это маленькая программа, которая встраивается прямо в него и меняет, как он выглядит и что умеет. Индикатор контекста, который убывает, как бензин на приборке, страж, который ловит агента перед rm -rf и сначала спрашивает тебя, своя команда, которая за секунду делает то, о чём ты каждый день просишь словами: всё это моды.

Самое приятное: писать код не обязательно. Описываешь словами, чего хочешь, и Claude собирает мод сам, прямо в той же сессии.

Технически мод это разновидность плагина, поэтому дальше в командах будет мелькать слово plugin. Это не опечатка: моды ставятся, включаются и выключаются там же, где и остальные плагины Claude Code.

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

Разобранная портативная игровая консоль, лаймовый картридж вынут из корпуса
Мод вставляется в Claude Code так же просто, как картридж в приставку, и так же просто вынимается

Зачем это нужно

Обычный день: ты даёшь агенту задачу минут на двадцать и идёшь за чаем. Возвращаешься, а перед тобой стена текста. Сколько он успел, сколько осталось контекста, не собирается ли он прямо сейчас удалить что-то важное, из этой стены не вычитать. Всё нужное где-то там есть, но пролистывается мимо.

Моды вытаскивают нужное на видное место. Над полем ввода может висеть полоска с тем, что тебе важно: заполненность контекста, ветка git, сколько уже стоила сессия. Рядом с перепиской может открываться отдельная панель, например со списком файлов, которые агент поменял. Опасная команда может останавливаться на полпути и ждать твоего «да». А свою команду вроде /отчёт мод выполняет мгновенно, без обращения к модели, так что она не тратит ни время, ни лимиты.

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

Мод умеет и переделывать то, что Claude Code рисует сам. Скажем, дописать к строчке «Thinking…» счётчик, сколько раз агент уже брался за инструменты.

Бывают моды и совсем без пользы, зато весёлые. intermission решает те самые двадцать минут ожидания по-своему: стоит Claude поработать пару секунд, рядом с перепиской открывается панель с Doom, и ты попадаешь в общий дезматч со всеми, кто сейчас тоже ждёт своего агента. Claude закончил, три секунды обратного отсчёта, и ты снова в переписке. Если агенту нужно твоё разрешение, игра отпускает тебя сразу. Работает пока на macOS и только в терминалах Ghostty и kitty: остальные не умеют показывать картинку игры.

Скорее всего, ты уже пользуешься модом и не знаешь об этом. Команда /diff, которая показывает изменения в отдельной панели, сделана модом, и загрузку файла AGENTS.md с правилами проекта тоже делает мод. Их список лежит в /plugin: вкладка Installed, раздел Built-in.

Моды работают начиная с версии 2.1.287 и включены сразу. Свою версию можно узнать командой claude --version. Если она старше, обнови Claude Code, иначе моды просто не загрузятся и нигде не появятся.

Когда мод не нужен

Если ты хочешь, чтобы агент просто знал твои правила и привычки, мод не нужен: хватит CLAUDE.md или навыка. Если нужно поделить большую работу между несколькими агентами, это субагенты. Мод берут, когда хочется поменять сам Claude Code: что он показывает и как реагирует.

Готовые моды, которые можно потрогать

Anthropic выложила примеры в открытом репозитории claude-code-playground. Два самых наглядных:

  • token-weather рисует над полем ввода «прогноз погоды» для контекста: от «ясно», пока окно почти пустое, до «скоро сжатие», плюс сколько съел последний ход
  • blast-radius работает стражем: ловит rm -rf, принудительный push и другие команды, после которых не откатишься, показывает, что они изменят, и ждёт, пока ты нажмёшь Proceed или Cancel
Попробовать на одну сессию

Скачай репозиторий с примерами, это одна команда в терминале, и запусти Claude Code с модом на одну сессию:

git clone https://github.com/anthropics/claude-code-playground
claude --plugin-dir ./claude-code-playground/claude-code/mods/blast-radius

Закроешь сессию, и мода как не было. Убедиться, что он подхватился, можно через /plugin: под вкладками появится строчка 1 mod active · blast-radius. Чтобы увидеть стража в деле, создай тестовую папку с парой файлов и попроси агента удалить её через rm -rf: страж покажет, что именно пропадёт, и спросит, продолжать ли.

Насовсем моды ставятся так же, как любые плагины: из маркетплейса, командой /plugin install имя@маркетплейс прямо в сессии. После этого мод появляется в /plugin на вкладке Installed, там же его потом и отключают. Примеры Anthropic тоже можно поставить насовсем: подключи их папку как маркетплейс и установи нужный мод, обе команды набираются прямо в сессии.

/plugin marketplace add ./claude-code-playground/claude-code/mods
/plugin install blast-radius@claude-code-playground-mods

Остальное про установку и доверие к модам есть в официальной документации.

Как сделать свой мод, не написав ни строчки

Делается в той же сессии, где ты работаешь:

  1. Опиши словами, чего хочешь. Например: «сделай мод, который показывает текущую ветку git над полем ввода». Как устроены моды, Claude знает сам: у него для этого есть встроенная инструкция, подогнанная под твою версию Claude Code.
  2. В обычном режиме Claude будет спрашивать разрешение на каждый файл мода. Так и задумано: моды лежат в служебной папке ~/.claude, а туда он без спроса не пишет.
  3. Когда появится первый файл, Claude Code один раз спросит «Enable hot reloading for this session?». Это и есть выключатель. Выбираешь «Enable for this session», и мод заработает, как только Claude закончит ответ.
  4. Не понравилось, просто скажи, что поменять. Каждая правка подхватывается сразу после ответа, ничего не нужно перезапускать.
Сохрани мод, если он прижился

Мод, который собрал Claude, живёт только в той сессии, где родился, и через какое-то время Claude Code чистит его папку. Понравился, попроси Claude скопировать его к тебе, например в ~/mods/git-branch, и запускай так: claude --plugin-dir ~/mods/git-branch. Иначе однажды он просто исчезнет.

Что сделал себе я: квиз на каждую правку

Ради интереса я собрал себе мод-квиз, просто чтобы проверить, на что моды способны.

Перед каждой правкой файла мод останавливает агента и показывает объяснение: что именно меняется и зачем. Потом задаёт вопрос, как я это понял. Ответил верно, и правка принимается. Ответил неверно, и мод объясняет ещё раз, пока не пойму.

Объяснения и вопросы пишет не основная модель, а Хайку, которую мод вызывает сам. Так что квиз тратит лимиты: каждая правка стоит одного вызова маленькой и дешёвой модели.

Под капотом мод держит событие у себя, пока я не отвечу, и только потом решает, отдать его дальше или нет. А со стороны это выглядит как репетитор внутри Claude Code. Для того, кто учится программировать вместе с агентом и не хочет принимать правки вслепую, идея рабочая.

Чем ты за это платишь

Мод работает внутри Claude Code с твоими правами, и это значит, что он может:

  • читать и менять файлы, запускать программы и ходить в интернет
  • видеть твои ключи доступа, если они лежат в настройках или переменных окружения
  • видеть всё, что ты пишешь агенту, и всё, что агент делает
  • переписать твою просьбу или отправить сообщение от твоего имени
  • нажать «разрешить» за тебя там, где Claude Code обычно спросил бы, а на личном аккаунте даже там, где ты сам поставил запрет в настройках
  • тратить твои лимиты, обращаясь к модели
Связка ключей веером вокруг кольца, один ключ лаймовый
Чужой мод это ещё один ключ на связке, которой открывается вся твоя сессия

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

Хороших новостей две. Окно с запросом разрешения мод подделать не может. Он может сделать так, чтобы окно не появилось вовсе, одобрив действие за тебя, но если окно всё-таки появилось, ему можно верить: выглядит оно всегда так, как его рисует сам Claude Code. И всё, что мод делает за своими пределами, он делает через одну-единственную дверь: просит Claude Code. Прочитать файл, сходить в сеть, запустить программу, всё только через эту просьбу. Значит, список его просьб можно увидеть заранее, даже не запуская мод.

Проверь мод до установки

Скачай мод и выполни в терминале:

claude plugin validate ./папка-мода

Строка hooks: покажет, на какие события мод подписан, то есть на что он реагирует, а строка calls: о чём он просит Claude Code: читать файлы, ходить в сеть, лезть в переменные окружения. Если мод обещает «рисовать часики», а просит интернет и твои ключи, дальше можно не смотреть.

Обратное не работает: чистый список ещё не значит, что мод безопасен. Он показывает, о чём мод просит, но не зачем.

Отдельно смотри на $.process: так мод запускает программы, а что делает запущенная программа, validate уже не видит. Doom-мод intermission устроен именно так. В его calls: нет ни одного сетевого вызова, хотя он качает игру и играет по сети: всё это делают программы, которые он запускает. Для игры это нормально, но правило отсюда простое: если в списке есть $.process, дальше ты доверяешь не списку, а автору.

Мод, который Claude собрал по твоей просьбе, ставь спокойно: ты знаешь, о чём просил, и всегда можешь попросить Claude показать, что мод делает. Чужие только после validate и только от тех, кому доверяешь. А на рабочем проекте, где в настройках лежат чужие ключи, подумай дважды, прежде чем ставить что-то из интернета.

Если мод начал вести себя странно, его легко выключить: /plugin, вкладка Installed, и отключаешь нужный. А чтобы запустить Claude Code вообще без установленных модов, есть claude --safe-mode, только учти, что на эту сессию он выключит и остальную твою настройку: CLAUDE.md, навыки, MCP-серверы, строку состояния и память.

Где мод ничего не покажет

Работать мод будет везде, где Claude Code загружает плагины. А вот видно его панели и полоски только в терминале, включая терминал внутри редактора, и на вкладке Code в приложении Claude Desktop.

В чате расширения для VS Code, в запуске claude -p (это когда Claude Code работает из скрипта, без окна) и в облачных сессиях на сайте Claude мод отработает, но ничего не нарисует. Так что если ты живёшь в панели VS Code и поставил мод с полоской над полем ввода, не удивляйся пустому месту: открой Claude Code во встроенном терминале редактора, и всё появится. В сессиях WSL в приложении Desktop плагинов нет вовсе, а значит, и модов.

Как это устроено внутри

Этот раздел для тех, кому интересно заглянуть под капот. Чтобы пользоваться модами, его можно пропустить.

Всё, что происходит в Claude Code, это события. Агент собирается запустить команду, ты отправил сообщение, на экране рисуется спиннер. Мод подписывается на нужные ему события, и прежде чем сделать своё дело, Claude Code передаёт событие моду. У мода на руках три варианта:

  • пропустить: отметить, что произошло, и отдать событие дальше как есть
  • переписать: отдать дальше, но уже изменённым
  • ответить: обработать событие самому и не отдавать дальше, тогда Claude Code своё обычное действие не выполнит. Так страж и останавливает опасную команду
путь события
next(e): мод отмечает событие и пропускает его как есть. Движок делает своё дело, результат возвращается обратно.

Вот как выглядит код маленького мода, который считает, сколько раз агент брался за инструменты, и дописывает это число к строчке «Thinking…»:

let calls = 0
 
// Claude Code вызывает это один раз, когда мод загружается
export function register(on) {
  // Агент собирается взять инструмент: считаем и пропускаем дальше
  on('tool.call', async ($, e, next) => {
    calls += 1
    $.ui.invalidate('ui.render')
    return next(e)
  })
 
  // Claude Code рисует спиннер: переписываем, дописав счётчик
  on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
    return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
  })
}

on подписывает мод на событие, next(e) отдаёт событие дальше, а $ и есть та самая единственная дверь наружу: через неё мод рисует, читает файлы и обращается к модели. В сессии это выглядит как Thinking · tool calls: 3… над полем ввода.

Кроме этого файла, в моде ещё два коротких: описание и указатель на код. Собирать ничего не надо, Claude Code читает .js и .ts как есть. А если пишешь мод руками, держи под рукой две команды: claude plugin validate ловит опечатку в имени события, из-за которой мод молча ничего не делает, а claude plugin test гоняет тесты мода без запуска сессии.

Коротко

Моды это первый способ встроить в интерфейс Claude Code свои панели, кнопки, приборы и стражей. Собирается всё это одной фразой в сессии, а цена в том, что мод работает с твоими правами: чужие проверяй, свои собирай спокойно.

Начать можно прямо сейчас, например с того самого квиза. Скопируй это в сессию Claude Code:

Промпт для Claude Code
Сделай мод-квиз. Перед каждой правкой файла останавливай агента и через Haiku объясняй мне простыми словами, что именно меняется и зачем. Потом задай один вопрос, проверяющий, понял ли я. Ответил верно, пропускай правку. Ответил неверно, объясни ещё раз другими словами и спроси снова.
Что дальше

Такие разборы выходят регулярно

Короткие мысли и находки я публикую в телеграм-канале, а глубокие разборы, курсы и сообщество, где растут инженеры, живут здесь, в Lab.

Заведи аккаунт в ITUZOV LAB

Зарегистрироваться