Команды, скиллы, built-in и bundled — полная карта всего, что начинается с / в Claude Code
Команды, скиллы, built-in и bundled — полная карта всего, что начинается с / в Claude Code
Набираешь / в Claude Code — и вываливается список. /compact, /simplify, /commit, какой-нибудь кастомный /deploy. Всё вызывается одинаково, всё начинается со слэша. Но за этим единым интерфейсом скрываются четыре принципиально разных механизма. И если не понимать разницу, можно потратить часы на скилл, который проще было бы сделать командой — или наоборот.
TL;DR: В Claude Code есть четыре типа «слэшей»: built-in команды (жёсткая логика), bundled скиллы (промпты из коробки), кастомные команды (legacy
.claude/commands/) и кастомные скиллы (.claude/skills/). С версии 2.1.3 команды и скиллы объединены — файлы изcommands/продолжают работать, но скиллы дают больше возможностей. Главное отличие: скиллы могут автоматически подгружаться по контексту, а команды — только по явному вызову.
Четыре типа «слэшей»
1. Built-in команды
/help, /compact, /clear, /init, /permissions, /context — это встроенные команды, зашитые в код Claude Code. Они выполняют фиксированную логику: /compact сжимает контекст, /clear очищает сессию. Никакого промпта, никакой «умности» — чистый детерминизм.
Их нельзя переопределить, нельзя изменить, нельзя вызвать через Skill tool. Они просто есть.
2. Bundled скиллы
/simplify, /batch, /debug, /claude-api — скиллы, которые идут в комплекте с Claude Code. В отличие от built-in команд, это промпт-ориентированные скиллы: они дают Claude подробный playbook и позволяют ему оркестрировать работу с помощью инструментов. /simplify запускает три параллельных агента (code reuse, quality, efficiency), /batch декомпозирует работу на 5-30 независимых юнитов и создаёт по PR на каждый.
Технически это обычные скиллы, но встроенные в дистрибутив — их не нужно устанавливать.
3. Кастомные команды (legacy)
Старый формат: один .md файл в .claude/commands/:
.claude/commands/review.md
Файл содержит промпт, опционально — YAML frontmatter. Набираешь /review — Claude получает содержимое файла как инструкцию. Этот формат работает с ранних версий Claude Code и продолжает работать после объединения в v2.1.3.
4. Кастомные скиллы (рекомендуемый формат)
Новый формат: директория с SKILL.md внутри:
.claude/skills/review/
├── SKILL.md # основные инструкции (обязательно)
├── template.md # шаблон для Claude
├── examples/
│ └── sample.md # пример ожидаемого результата
└── scripts/
└── validate.sh # скрипт, который Claude может запустить
Ключевая разница: скилл — это директория, а не файл. Кроме SKILL.md можно положить шаблоны, примеры, скрипты на любом языке. Claude загружает их по необходимости, а не всё сразу — это называется progressive disclosure.
Что произошло в v2.1.3
В январе 2026 Anthropic объединила команды и скиллы в единую систему. Оба формата создают одинаковый /-вызов:
.claude/commands/review.mdсоздаёт/review.claude/skills/review/SKILL.mdтоже создаёт/review
Файлы из commands/ никуда не делись и поддерживают тот же YAML frontmatter, что и скиллы. Но скиллы добавляют три вещи, которых у команд нет:
- Директория с файлами — шаблоны, скрипты, примеры, документация
- Автоматический вызов — Claude сам подгружает скилл, когда видит подходящий контекст
- Инъекция динамического контекста — синтаксис
!`command`подставляет вывод shell-команд прямо в промпт
Главное отличие: кто нажимает «пуск»
Вот что реально отделяет старые команды от новых скиллов — контроль вызова.
Кастомная команда работает только когда ты набираешь /review. Claude не может вызвать её сам. Это детерминированный триггер — ты нажал, она запустилась.
Скилл по умолчанию работает в обе стороны: ты можешь вызвать /review, но и Claude может сам решить подгрузить скилл, если его description совпадает с контекстом разговора. Написал «проверь этот PR» — и Claude автоматически подтянет скилл с описанием «Review pull requests for code quality».
Управляется это двумя полями в frontmatter:
disable-model-invocation: true— только ты можешь вызвать. Claude не видит этот скилл в контексте и не может его подгрузить. Используй для/deploy,/commit,/send-slack— всего, где важен контроль момента запускаuser-invocable: false— только Claude может вызвать. Скилл не показывается в меню/. Используй для фоновых знаний: контекст legacy-системы, архитектурные решения, domain knowledge
--- name: deploy description: Deploy the application to production disable-model-invocation: true --- Deploy $ARGUMENTS to production: 1. Run the test suite 2. Build the application 3. Push to the deployment target
Этот скилл никогда не сработает сам — только по явному /deploy staging.
Чем скиллы реально мощнее
Аргументы с позиционным доступом
Обе системы поддерживают $ARGUMENTS. Но скиллы дают позиционный доступ — $ARGUMENTS[0], $ARGUMENTS[1] или сокращённо $0, $1:
--- name: migrate-component description: Migrate a component from one framework to another --- Migrate the $0 component from $1 to $2. Preserve all existing behavior and tests.
/migrate-component SearchBar React Vue — и Claude знает, что мигрировать, откуда и куда.
Динамический контекст
Синтаксис !`command` запускает shell-команду до того, как Claude увидит промпт, и подставляет вывод:
--- name: pr-summary description: Summarize changes in a pull request context: fork agent: Explore --- ## Pull request context - PR diff: !`gh pr diff` - PR comments: !`gh pr view --comments` ## Your task Summarize this pull request...
Claude получает готовый diff и комментарии, а не команды для выполнения. Это препроцессинг, не аналог Bash tool.
Запуск в субагенте
Добавляешь context: fork — и скилл выполняется в изолированном контексте. Основной разговор не засоряется. Результат возвращается как саммари:
--- name: deep-research description: Research a topic thoroughly context: fork agent: Explore --- Research $ARGUMENTS thoroughly: 1. Find relevant files using Glob and Grep 2. Read and analyze the code 3. Summarize findings with specific file references
У команд из .claude/commands/ ни динамического контекста, ни субагентов нет.
Переменные окружения
Скиллы поддерживают ${CLAUDE_SESSION_ID} и ${CLAUDE_SKILL_DIR} — для логирования, привязки к сессии, ссылок на файлы внутри директории скилла.
Когда использовать commands, а когда skills
Используй .claude/commands/, если:
- Простой одноразовый промпт без вспомогательных файлов
- Не нужна автоматическая подгрузка — только ручной вызов
- Лень создавать директорию (серьёзно, это валидная причина для прототипа)
Переходи на .claude/skills/, если:
- Нужны шаблоны, скрипты или примеры — всё, что не влезает в один файл
- Хочешь, чтобы Claude подгружал скилл автоматически по контексту
- Нужен динамический контекст через
!`command` - Скилл должен работать в субагенте (
context: fork) - Планируешь шарить скилл через плагин или npm
По данным официальной документации, Anthropic рекомендует скиллы как основной формат. Команды — это backward compatibility, а не рекомендуемый путь.
Как расходуются токены
Тут важный нюанс, который легко пропустить.
- Команды — потребляют токены только при вызове. Пока ты не набрал
/review, файл не загружается - Скиллы с
disable-model-invocation: true— аналогично, загружаются только при ручном вызове - Скиллы с auto-invocation (по умолчанию) — описание (
description) из frontmatter всегда загружается в контекст, чтобы Claude мог решить, когда скилл нужен. Полное содержимое — только при активации
Бюджет на описания скиллов — 2% от контекстного окна, с фолбэком в 16 000 символов. Если скиллов много, часть может быть исключена. Проверить можно командой /context.
Если расход описаний критичен, переменная окружения SLASH_COMMAND_TOOL_CHAR_BUDGET позволяет расширить или сузить бюджет.
Подводные камни
1. Конфликт имён: скилл побеждает команду. Если у тебя есть и .claude/commands/review.md, и .claude/skills/review/SKILL.md, при вызове /review сработает скилл, а не команда. Причём если скилл настроен как user-invocable: false, ты получишь сообщение «This slash command can only be invoked by Claude» — и до команды не доберёшься. Решение: не дублируй имена. При миграции удаляй старый файл из commands/.
2. Prettier ломает frontmatter. Prettier автоматически переформатирует YAML-описание в многострочный формат — и Claude Code перестаёт распознавать скилл. Исправление — добавить # prettier-ignore перед description:
--- name: my-skill # prettier-ignore description: Design and create Claude Skills using progressive disclosure principles. ---
3. Файл MUST быть SKILL.md. Не instructions.md, не skill.json, не README.md. Claude Code ищет строго SKILL.md в директории скилла. Назовёшь иначе — скилл просто не загрузится, без ошибок. На момент написания (март 2026) баг с отсутствием warning-сообщения всё ещё открыт.
4. Слишком много скиллов — и часть пропадёт. Описания всех auto-invocable скиллов загружаются в контекст. При 30+ скиллах с длинными описаниями они могут превысить бюджет в 16K символов, и Claude просто не увидит часть из них. /context покажет предупреждение, но только если ты его запросишь.
5. user-invocable: false не блокирует Skill tool. Это поле только убирает скилл из меню /. Claude всё ещё может вызвать его программно через Skill tool. Для полной блокировки нужен disable-model-invocation: true.
Вердикт
Если ты уже пишешь новые автоматизации — пиши скиллами. Формат commands/ жив только ради backward compatibility, и для простых промптов разница в усилиях минимальна: создать директорию и назвать файл SKILL.md вместо review.md — дело десяти секунд. Зато получаешь auto-invocation, поддержку файлов и динамический контекст.
Реальный выигрыш от скиллов начинается, когда промпт разрастается: нужен шаблон, скрипт валидации, примеры. В командах это невозможно — всё в одном файле. В скиллах — progressive disclosure, где Claude загружает только то, что нужно прямо сейчас.
Как попробовать
-
Проверь, что у тебя Claude Code >= 2.1.3:
claude --version -
Мигрируй существующую команду за 30 секунд:
# Было: .claude/commands/review.md # Стало: mkdir -p .claude/skills/review mv .claude/commands/review.md .claude/skills/review/SKILL.md
- Добавь frontmatter, если ещё нет:
--- name: review description: Review code changes for quality and consistency ---
-
Проверь, что Claude видит скилл: спроси
What skills are available?или набери/и посмотри список -
Прочитай документацию: официальная страница скиллов — самый полный и актуальный источник