Открытый гайд · ИИ-офис

Кастомныеslash-команды Claude Code

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

@kir.player
~12 минут
июнь 2026

Если ты пишешь Claude один и тот же длинный промт в каждом проекте — «сделай ревью по нашему чек-листу», «собери коммит по конвенции», — самое время превратить его в команду. Кастомная slash-команда (своя команда через слеш) — это просто markdown-файл с готовым промтом, к которому ты обращаешься коротким /имя. Никакого кода, никаких плагинов: создал файл, и команда работает.

Что узнаешь из гайда

  • Что такое кастомная slash-команда и чем она лучше копипаста промтов
  • Как создать первую команду за минуту — на реальном примере
  • Как передавать аргументы через $ARGUMENTS и подтягивать вывод bash
  • Что писать в заголовке: описание, разрешённые инструменты, модель
  • Когда команда не нужна — честная граница

Часть 1 · Понятие

Что такое своя slash-команда

Главное

Кастомная команда — это markdown-файл с промтом, который Claude выполняет, когда ты зовёшь его через /имя. Имя файла = имя команды. Кода нет, есть только текст инструкции.

Расшифруем. Slash-команда — это всё, что ты вводишь в чате Claude Code через слеш: /clear, /compact, /init. Встроенные команды идут «из коробки». А кастомные ты добавляешь сам: кладёшь файл в специальную папку, и его имя становится новой командой. Внутри файла — обычный текст, тот самый промт, что ты раньше копировал вручную.

Зачем это нужно. Промт, который ты повторяешь, перестаёт жить в голове и буфере обмена. Он лежит в файле, его видит вся команда (если файл в гите), его можно улучшать как код. Разовое поручение остаётся промтом, а вот повторяемый сценарий заслуживает своей команды.

Команда, скил, промт — в чём разница

ИнструментКак запускаетсяГде живёт
ПромтПишешь руками в чатеВ голове и буфере
Slash-командаЯвный вызов: /имяФайл в .claude/commands
СкилClaude подключает сам по описаниюФайл SKILL.md, фоном

Полный разбор встроенных команд — в гайде про все команды Claude Code. А чем команда отличается от навыка, который подключается сам, — подробно в гайде про скилы Claude Code.


Часть 2 · Старт

Первая команда за минуту

Главное

Создаёшь файл .claude/commands/имя.md, пишешь внутрь промт — всё. Команда /имя появляется сразу, без перезапуска.

Сделаем команду /review, которая запускает ревью кода по твоему чек-листу. Создаём папку и файл внутри проекта:

терминал · создаём команду
# Папка для проектных команд (поедет в гит вместе с кодом)
mkdir -p .claude/commands

# Дальше кладём review.md — имя файла станет именем команды /review

Содержимое review.md — обычный markdown. Это и есть промт, который выполнится по команде /review:

.claude/commands/review.md
Сделай ревью изменений в текущей ветке. Проверь по чек-листу:

1. Логика и крайние случаи (пустой ввод, ошибки, гонки)
2. Обработка ошибок — нет проглоченных исключений
3. Нет утечек секретов и небезопасных мест
4. Тесты покрывают новое поведение

Выдай список замечаний по приоритету, без воды.

Теперь в чате Claude Code набираешь /review, и модель выполняет ровно этот сценарий. Не нужно каждый раз вспоминать формулировку: она зафиксирована в файле. Хочешь поправить чек-лист — правишь файл, как обычный код.

Личные против проектных

Папка .claude/commands/ в репозитории — команда едет в гит, вся команда получает её при git pull. Папка ~/.claude/commands/ в домашней директории — личная команда, работает во всех проектах, но в гит не попадает. Общий сценарий команды держи в проекте, личные привычки — дома.


Часть 3 · Динамика

Аргументы и вывод терминала

Главное

Плейсхолдер $ARGUMENTS подставляет в команду весь текст после имени, а $0, $1 — отдельные аргументы по порядку. Так одна команда работает с любыми входными данными.

Команда без аргументов делает всегда одно и то же. Но часто хочется параметра: «протестируй вот этот паттерн», «почини вот эту задачу». Тут и нужен $ARGUMENTS — на его место встанет всё, что ты напишешь после имени команды.

.claude/commands/test.md · с аргументом
---
argument-hint: [паттерн-теста]
description: Прогнать тесты по паттерну и починить упавшие
---

Прогони тесты по паттерну: $ARGUMENTS

1. Определи фреймворк тестов (Jest, pytest и т.п.)
2. Запусти тесты с этим паттерном
3. Если упали — найди причину и почини
4. Перезапусти, чтобы убедиться, что зелено

Вызов /test auth подставит auth на место $ARGUMENTS. Если аргументов несколько и они разные по смыслу — разбирай их позиционно через $0 и $1. Например, для команды /fix-issue 123 high в теле $0 будет 123, а $1high.

Подтянуть вывод bash в промт

Команда может сама собрать контекст из терминала ещё до того, как Claude начнёт работу. Префикс ! перед строкой в обратных кавычках выполняет bash-команду, и её вывод попадает прямо в промт. Это мощно для команд вокруг git:

.claude/commands/commit.md · вывод bash в контекст
---
# Перечисляем, какие именно bash-вызовы команде разрешены
allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)
description: Собрать git-коммит по изменениям
---

## Контекст

- Текущий статус: !`git status`
- Текущий дифф: !`git diff HEAD`

## Задача

Собери коммит с осмысленным сообщением по этим изменениям.

К моменту, когда Claude читает задачу, статус и дифф уже подставлены в текст. Модель не тратит ход на отдельный вызов git status — контекст готов. Безопасный git-воркфлоу с командами и ветками разбираем отдельно в гайде про Claude Code и Git.


Часть 4 · Заголовок

Что писать в заголовке команды

Главное

Между --- в начале файла живёт YAML-заголовок: description (что команда делает), argument-hint (подсказка по аргументам), allowed-tools (что разрешено) и model (какая модель). Все поля необязательны.

Заголовок — это настройки команды. Без него файл всё равно работает, но с ним команда становится аккуратнее: в списке команд видно описание, а Claude понимает границы. Разбор по полям:

ПолеЗачем
descriptionКороткое пояснение, показывается в списке команд
argument-hintПодсказка, какие аргументы команда ждёт
allowed-toolsКакие инструменты команда вправе использовать
modelКонкретная модель под эту команду (если нужна не дефолтная)
.claude/commands/security-check.md · полный заголовок
---
allowed-tools: Read, Grep, Glob
description: Скан кода на уязвимости
model: claude-opus-4-7
---

Проанализируй код на уязвимости:
- SQL-инъекции
- XSS
- утёкшие секреты и ключи
- небезопасные конфигурации

Здесь команда ограничена чтением (Read, Grep, Glob) — она не сможет ничего изменить, только проанализировать. Это разумно для проверяющих команд: меньше прав, меньше шанс что-то сломать.

Коротко

  • Файл в .claude/commands/ (проект) или ~/.claude/commands/ (везде). Имя файла = имя команды.
  • Тело — это промт. Аргументы — $ARGUMENTS или $0/$1. Вывод bash — через !`...`.
  • Заголовок между ---: описание, подсказка, инструменты, модель. Все поля опциональны.

Часть 5 · Порядок

Как разложить команды по папкам

Главное

Когда команд много, раскидывай их по подпапкам внутри commands/. Папка становится пространством имён: frontend/component.md попадёт в группу frontend. Имя самой команды при этом остаётся коротким.

Десяток команд в одной папке быстро превращается в кашу. Подпапки наводят порядок: команды по фронту в frontend/, по бэку в backend/. Имя команды от этого не удлиняется, но в списке видно, к какой области она относится.

структура .claude/commands/
.claude/commands/
├── frontend/
│   ├── component.md      # /component (группа frontend)
│   └── style-check.md    # /style-check (группа frontend)
├── backend/
│   ├── api-test.md       # /api-test (группа backend)
│   └── db-migrate.md     # /db-migrate (группа backend)
└── review.md             # /review (без группы)

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

  1. Собери повторы. Выпиши промты, которые копируешь из проекта в проект: ревью, коммиты, прогон тестов, генерация бойлера.
  2. Заведи по команде на каждый. Файл в .claude/commands/, внутри — тот самый промт.
  3. Добавь аргументы, где нужно. Если сценарий меняется от входа — вставь $ARGUMENTS вместо жёсткого значения.
  4. Разложи по подпапкам. Когда команд больше пяти — группируй, иначе список перестанет читаться.
  5. Чисти. Команда, которой не пользовался месяц, удаляется. Лишние команды только засоряют список.

Повторяемый промт — кандидат в команду. Разовый — остаётся промтом.

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

Если инструкция одноразовая или специфична для одного чата — это просто промт, не команда. Общие правила всего проекта (стиль кода, конвенции) лучше держать в CLAUDE.md — он читается всегда. А если хочешь, чтобы инструкция подключалась сама без явного вызова, — это уже скил, а не команда.

Пример набора

У вайбкодера обычно живут 4-6 команд: /review, /commit, /test, /fix-issue и пара под свой стек. Этого хватает на рутину. Всё остальное — разовые промты или скилы.

Коротко

  • Своя команда — это markdown-файл с промтом, имя файла = имя команды.
  • Аргументы через $ARGUMENTS, вывод bash через !`...`, настройки в YAML-заголовке.
  • Много команд — раскладывай по подпапкам, заводи только под повторяющиеся сценарии.

Вопросы

Частые вопросы

Как создать свою slash-команду в Claude Code?

Создай markdown-файл в папке .claude/commands/ внутри проекта или в ~/.claude/commands/ для личных команд. Имя файла становится именем команды: review.md даёт /review. В теле файла — обычный текст промта, который Claude выполнит при вызове команды. Перезапуск не нужен, команда появляется сразу.

Чем своя slash-команда отличается от скила?

Slash-команду ты вызываешь руками через /имя, а скил Claude подключает сам по описанию, когда задача подходит. Команда — это кнопка на пульте: нажал и получил готовый сценарий. Скил — фоновая способность, которую модель достаёт автоматически. Команды удобны для действий, что ты запускаешь осознанно: «сделай ревью», «собери коммит».

Как передать аргумент в свою команду?

Используй плейсхолдер $ARGUMENTS в теле команды — туда подставится весь текст после имени команды. Для нескольких аргументов по отдельности бери $0, $1 и так далее. Например, /fix-issue 123 high подставит $0 = 123 и $1 = high. Так одна команда работает с разными входными данными.

Где хранятся кастомные команды и попадают ли они в гит?

Проектные команды лежат в .claude/commands/ внутри репозитория и едут в гит вместе с кодом — вся команда получает их при git pull. Личные команды лежат в ~/.claude/commands/ и работают во всех проектах, но в гит не попадают. Выбор зависит от того, нужна команда всей команде или только тебе.

Читать дальше

Соседние гайды

Telegram про вайбкодинг и ИИ

Прикладной материал, разборы и рабочие приёмы — то, чем пользуюсь сам, без воды. Залетай, там самое полезное.

Зайти в Telegram