Skip to content
PПромтбук
RUEN
03Инструменты

Свой 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> — ..."
К подразделу «Инструменты»
Похожие промты