Слэш-команды: встроенные и кастомные

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

По природе команды делятся на два типа: встроенные — жёстко закодированы в CLI и выполняют фиксированную логику — и кастомные (они же скиллы) — это просто markdown-файл с инструкцией, которую Claude читает и исполняет. Разница принципиальная: встроенная команда /clear немедленно очищает контекст без участия модели; кастомная /deploy заставляет Claude прочитать ваш markdown и выполнить его инструкции как обычный промпт.


Встроенные команды: полный обзор

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

Автодополнение слэш-команд в терминале Claude Code

Управление сессией и контекстом

КомандаЧто делает
/clear [name]Новый диалог, сохраняя проектную память. Алиасы: /reset, /new
/compact [instructions]Компактизирует историю в краткое резюме, освобождая контекст
/context [all]Показывает, как расходуется контекстное окно — цветная сетка по источникам
/rewindОткат разговора и кода к чекпоинту. Алиасы: /checkpoint, /undo
/resume [session]Продолжить сохранённую сессию
/branch [name]Создать ответвление разговора для эксперимента
/btw <вопрос>Задать быстрый уточняющий вопрос, не добавляя его в историю

Модель и режимы

КомандаЧто делает
/model [model]Сменить модель (сохраняется как дефолтная)
/effort [level]Уровень «думания»: low, medium, high, xhigh, max
/plan [description]Перейти в план-режим (без выполнения действий)
`/advisor [model\off]`
`/fast [on\off]`

Качество кода

КомандаЧто делает
/code-review [level] [--fix]Code review текущего диффа. --fix — применяет найденные правки
/simplify [target]Ищет упрощения и применяет их (без охоты на баги)
/security-reviewАнализ незакоммиченных изменений на уязвимости
/review [PR]Локальный review PR
/diffИнтерактивный просмотр диффа — uncommitted + диффы по каждому ходу

Параллельная работа и фон

КомандаЧто делает
/batch <instruction>Декомпозирует большое изменение на независимые единицы и запускает параллельно в git worktrees
/background [prompt]Отправить текущую сессию в фон, освободив терминал
/fork <directive>Порождает фоновый субагент с копией контекста для параллельной задачи
/tasksСписок всего, что работает в фоне

Инфраструктура и настройки

КомандаЧто делает
/mcp [reconnect/enable/disable]Управление MCP-серверами
/permissionsПравила allow/ask/deny для инструментов
/memoryРедактировать CLAUDE.md, управлять auto-memory
/hooksПросмотр конфигурации хуков
/agentsУправление конфигурациями субагентов
/configОткрыть настройки (тема, модель, output style)
/initСгенерировать стартовый CLAUDE.md для проекта

Отдельная категория — встроенные скиллы, помеченные в доках как Skill: /debug, /loop, /run, /verify, /code-review, /batch, /claude-api. Технически это не жёсткий код, а промпт-файлы, которые Anthropic поставляет «в коробке» — они работают точно так же, как кастомные скиллы, только их нельзя посмотреть в вашем .claude/.


Кастомные команды: два синтаксиса, одна логика

Любой markdown-файл в нужном месте автоматически становится слэш-командой. Есть два пути:

Классический — файл в .claude/commands/:

.claude/commands/deploy.md  →  /deploy

Новый — директория в .claude/skills/:

.claude/skills/deploy/SKILL.md  →  /deploy

Оба работают одинаково. Разница: скилл-директория может содержать вспомогательные файлы, шаблоны, скрипты. Файл в commands/ — это всегда один файл. Официальная рекомендация: для новых команд использовать .claude/skills/, для существующих .claude/commands/ — оставить как есть, они никуда не делись.

Место хранения определяет область видимости:

РасположениеПрименяется к
~/.claude/skills/<name>/SKILL.mdВсе ваши проекты
.claude/skills/<name>/SKILL.mdТолько этот проект
.claude/commands/<name>.mdТолько этот проект
Check yourself
Вы хотите создать команду /fix-types, которая будет доступна во ВСЕХ ваших проектах, но не у коллег. В каком пути её нужно создать?

Структура файла: frontmatter и тело

Файл состоит из YAML-блока между --- и markdown-инструкции:

---
name: Deploy to staging
description: Deploy the application to the staging environment. Use when the user asks to deploy, push to staging, or release a build.
disable-model-invocation: true
argument-hint: [branch]
arguments: branch
allowed-tools: Bash
---

Deploy the branch `$branch` to staging:

1. Run `npm test` — stop if tests fail
2. Build: `npm run build`
3. Deploy: `./scripts/deploy.sh staging $branch`
4. Report the deployment URL

Ключевые поля frontmatter:

description — главное поле. Claude читает его, чтобы решить, загружать ли скилл автоматически (без явного /). Пишите конкретно: «когда пользователь просит задеплоить, отправить в staging или выпустить билд». Без description Claude использует первый абзац body.

disable-model-invocation: true — запрещает Claude вызывать скилл автоматически. Только явный /deploy. Обязательно для деструктивных операций — деплой, публикация, git push.

argument-hint — строка-подсказка в автокомплите: [branch], [issue-number], [filename] [format].

arguments — имена позиционных аргументов. С arguments: [issue, branch] можно писать $issue и $branch вместо $0 и $1.

allowed-tools — инструменты, которые разрешены без запроса разрешения пока активен этот скилл: Read Grep Bash.

context: fork — запускает скилл в изолированном субагенте (отдельное контекстное окно).

model / effort — переопределяют модель и уровень мышления для этого скилла. После завершения возвращается сессионный дефолт.

paths — glob-паттерны. Скилл грузится автоматически только при работе с файлами, подходящими по паттерну: "src/api/**".


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

Когда вы пишете /review-pr 123, всё после имени команды попадает в переменную $ARGUMENTS. Эта строка подставляется в тело скилла до того, как Claude его читает:

---
description: Review a GitHub pull request by number
argument-hint: <pr-number>
---

Review PR #$ARGUMENTS:
1. Fetch it with `gh pr view $ARGUMENTS --json title,body,files`
2. Analyze the diff for bugs and style issues
3. Summarize: what changed, risks, suggested improvements

Для нескольких аргументов — именованные или по индексу:

---
arguments: [filename, format]
---

Convert `$filename` to `$format`.
# Или: $ARGUMENTS[0] и $ARGUMENTS[1]
# Или: $0 и $1

Многословный аргумент — в кавычках: /convert "src/api.ts" markdown.

Есть ещё системные подстановки:

  • ${CLAUDE_SESSION_ID} — ID текущей сессии (для логов, временных файлов)
  • ${CLAUDE_EFFORT} — текущий уровень мышления
  • ${CLAUDE_SKILL_DIR} — путь к директории скилла (для ссылок на вспомогательные файлы)
Check yourself
В скилле написано: `arguments: [filename, format]`. Пользователь вызывает `/convert src/api.ts json`. Чему равны $filename и $format?

Динамический контекст: !команда

Самая мощная фича скиллов — инлайн-выполнение shell-команд прямо в теле скилла. Claude Code выполняет команду до того, как модель читает промпт, и вставляет вывод на место строки:

---
description: Summarize uncommitted changes and flag risks
---


Quick recall
Чем `!git diff HEAD` в теле команды отличается от того, чтобы пользователь вставил диф вручную?
Quick recall
Куда попадает аргумент в команде `/deploy main`, если в frontmatter `arguments: branch`?
Quick recall
В чём фундаментальное отличие в выполнении встроенной команды от кастомной?

Current diff

!git diff HEAD

Instructions

Summarize the changes above in 2-3 bullets. Flag any risks: missing error

handling, hardcoded values, tests that need updating. If diff is empty, say so.


Теперь `$ARGUMENTS` не нужен — Claude получает живой git diff в контексте, а не просит вас вставить его вручную.

Практические примеры:

Вставить текущий branch

!git branch --show-current

Список открытых issues

!gh issue list --limit 10 --json number,title

Состояние тестов

!npm test -- --passWithNoTests 2>&1 | tail -20


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

Check yourself
В чём принципиальная разница между !`git diff HEAD` в теле скилла и просто написать 'посмотри git diff' в инструкции?

Реальные примеры кастомных команд

/fix-issue — взять задачу из трекера и поставить в контекст

---
description: Fetch a GitHub issue and start working on it
argument-hint: <issue-number>
arguments: issue
---

## Issue #$issue

!`gh issue view $issue --json title,body,comments`

Analyze the issue above. Understand what needs to be done, find the relevant
code, and make a plan. Ask for confirmation before making changes.

/commit — закоммитить по конвенции

---
description: Create a conventional commit for staged changes. Use when user asks to commit.
disable-model-invocation: true
allowed-tools: Bash
---

## Staged changes

!`git diff --cached`

Write a conventional commit message (feat/fix/docs/refactor/test/chore) for
these changes. Run `git commit -m "<message>"`. No confirmation needed.

/daily-standup — сформировать стэндап из истории git

---
description: Generate a standup update from recent git activity
---

## My activity (last 24h)

!`git log --since='24 hours ago' --author='$(git config user.email)' --oneline`

## Open PRs

!`gh pr list --author @me --json title,state,reviewDecision`

Based on the above, write a concise standup (3-5 bullets): what I did,
what I'll do today, any blockers.

Кастомная команда vs скилл vs субагент vs хук

Слэш-команда — это самый лёгкий механизм кастомизации. Выбор простой:

Слэш-команды не выполняют логику — они передают промпт модели. Если вам нужно ветвление, циклы, работа с несколькими инструментами параллельно — это уже скилл с context: fork или субагент. Матрица выбора подробно разбирается в Что выбрать: команда, навык, субагент, MCP или хук.


See also