Свой slash-command в Claude Code
Превратить повторяющуюся задачу в `/команду`: триггер, аргументы, тело, тесты, переиспользование.
Заверни задачу {{task}} в slash-команду уровня {{scope}}. Это часовой проект, который потом экономит часы.
0. Проверь актуальный формат
Открой документацию своей версии Claude Code (node_modules/...docs/ или docs.claude.com). Расположение папки, frontmatter и поддержка аргументов менялись. Не пиши по памяти.
1. Когда стоит делать команду
| Делай команду | Не делай |
|---|---|
| Запускается 3+ раз в неделю | Один раз и забыл |
| Длинный промт с 5+ шагами | Один вопрос на одно сообщение |
| Команда + контекст из репо | Чистый общий вопрос |
| Чёткий формат на выходе | Свободный разговор |
2. Расположение файла
- Project:
.claude/commands/<name>.md— версионируется с репо - User:
~/.claude/commands/<name>.md— личное, на всех проектах
Имя файла = имя команды. pr-review.md → /pr-review.
3. Структура файла
---
description: Короткое (≤ 80 симв) описание для списка команд
argument-hint: <pr-number> [--scope=full|diff]
allowed-tools: Read, Grep, Bash(git diff:*)
---
# Роль и цель
Ты — [роль]. Задача: [одно предложение].
# Контекст
{{задача от пользователя или $ARGUMENTS}}
# Алгоритм
1. ...
2. ...
3. ...
# Формат вывода
[структура]
# Чего НЕ делать
- ...
Frontmatter поля могут отличаться в твоей версии — сверься с docs.
4. Аргументы
Если команде нужен ввод:
- В описании покажи через
argument-hint - В теле используй placeholder из своей версии (
$ARGUMENTS,{{1}}, или подобный) - Валидируй: если аргумент пустой / некорректный — попроси уточнить, не угадывай
5. Минимум прав
В allowed-tools укажи только то что нужно:
- Анализ →
Read, Grep - Дифф →
Bash(git diff:*), Bash(git log:*) - Запись → добавь
Edit, Writeявно
Не давай Bash(*) "на всякий случай" — это дыра.
6. Тестирование
Прогони команду на 3 сценариях:
- Типичный: ожидаемые аргументы, чистый репо
- Граничный: нет аргументов, пустой результат, гигантский ввод
- Adversarial: невалидный аргумент, prompt injection в коммитах
Каждый раз отметь:
- Сделала ли команда то, что обещала?
- Уложилась ли в формат?
- Не вышла ли за allowed-tools?
7. Документация
В description укажи когда вызывать. Не "Reviews things", а "Review a PR diff against the base branch and produce a checklist". Тогда команда найдётся через автокомплит и понятно когда жать.
8. Совместное использование
Если команда полезна команде — переноси из user в project, коммить в .claude/commands/. PR-review станет частью workflow проекта.
Анти-паттерны
- Команда на одну задачу, которую сделаешь один раз
- Frontmatter с allowed-tools: Bash(*)
- Тело длиной 3000 строк без структуры
- Description "Helpful command"
- Нет argument-hint при том что без аргумента команда не работает
На выходе
- Файл
<scope>/commands/<name>.md - 3 прогона на разных сценариях
- Запись в README репо: "Available commands: /<name> — ..."
Как начать работать с Claude Code — мой первый раз
Пошаговая инструкция первого запуска: открыть, дать первое задание, что увидеть на экране, куда нажать.
Скрипт для рутины: переименовать все файлы в папке
Самая частая первая автоматизация: «переименуй мне 200 фото в photo-01.jpg, photo-02.jpg…». Понимаешь силу скриптов.
Установи Claude Code пошагово — Mac / Windows / Linux
От «вообще ничего не понимаю» до «первая команда сработала». С скрин-описаниями и проверками что всё ок.