Перейти к основному содержанию
Slash commands предоставляют способ управления сеансами Claude Code с помощью специальных команд, которые начинаются с /. Эти команды можно отправлять через SDK для выполнения действий, таких как компактирование контекста, список использования контекста или вызов пользовательских команд. Только команды, которые работают без интерактивного терминала, могут быть отправлены через SDK; сообщение system/init содержит список доступных в вашем сеансе.

Обнаружение доступных Slash Commands

Claude Agent SDK предоставляет информацию о доступных slash commands в сообщении инициализации системы. Получите доступ к этой информации при запуске вашего сеанса:
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Hello Claude",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Available slash commands:", message.slash_commands);
    // Example output: ["clear", "compact", "context", "usage"]
  }
}

Отправка Slash Commands

Отправляйте slash commands, включая их в строку подсказки, как обычный текст:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Send a slash command
for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log("Command executed:", message.result);
  }
}

Распространённые Slash Commands

/compact - Компактирование истории разговора

Команда /compact уменьшает размер истории вашего разговора путём суммирования старых сообщений при сохранении важного контекста:
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "compact_boundary") {
    console.log("Compaction completed");
    console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);
    console.log("Trigger:", message.compact_metadata.trigger);
  }
}

/clear - Сброс контекста разговора

Команда /clear сбрасывает разговор в пустой контекст, поэтому последующие запросы начинаются без предыдущей истории разговора. Предыдущий разговор остаётся на диске и может быть восстановлен путём передачи его ID сеанса в опцию resume. Это полезно в режиме потоковой передачи входных данных, где вы отправляете несколько запросов через одно соединение. Для одноразовых вызовов query() каждый вызов уже начинает с пустого контекста, поэтому отправка /clear не имеет практического эффекта; вместо этого начните новый query().
/clear в SDK требует Claude Code v2.1.117 или более поздней версии. В более ранних версиях он опущен из slash_commands.

Создание пользовательских Slash Commands

Помимо использования встроенных slash commands, вы можете создавать свои собственные пользовательские команды, доступные через SDK. Пользовательские команды определяются как файлы markdown в определённых каталогах, аналогично тому, как настраиваются подагенты.
Каталог .claude/commands/ — это устаревший формат. Рекомендуемый формат — .claude/skills/<name>/SKILL.md, который поддерживает то же самое вызывание slash-команды (/name) плюс автономный вызов Claude. Смотрите Skills для текущего формата. CLI продолжает поддерживать оба формата, и приведённые ниже примеры остаются точными для .claude/commands/.

Расположение файлов

Пользовательские slash commands хранятся в назначенных каталогах в зависимости от их области действия:
  • Команды проекта: .claude/commands/ - Доступны только в текущем проекте (устаревший; предпочитайте .claude/skills/)
  • Личные команды: ~/.claude/commands/ - Доступны во всех ваших проектах (устаревший; предпочитайте ~/.claude/skills/)

Формат файла

Каждая пользовательская команда — это файл markdown, где:
  • Имя файла (без расширения .md) становится именем команды
  • Содержимое файла определяет, что делает команда
  • Опциональный YAML frontmatter предоставляет конфигурацию

Базовый пример

Создайте .claude/commands/refactor.md:
Refactor the selected code to improve readability and maintainability.
Focus on clean code principles and best practices.
Это создаёт команду /refactor, которую вы можете использовать через SDK.

С Frontmatter

Создайте .claude/commands/security-check.md:
---
allowed-tools: Read, Grep, Glob
description: Run security vulnerability scan
model: claude-opus-4-7
---

Analyze the codebase for security vulnerabilities including:
- SQL injection risks
- XSS vulnerabilities
- Exposed credentials
- Insecure configurations

Использование пользовательских команд в SDK

После определения в файловой системе пользовательские команды автоматически доступны через SDK:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Use a custom command
for await (const message of query({
  prompt: "/refactor src/auth/login.ts",
  options: { maxTurns: 3 }
})) {
  if (message.type === "assistant") {
    console.log("Refactoring suggestions:", message.message);
  }
}

// Custom commands appear in the slash_commands list
for await (const message of query({
  prompt: "Hello",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    // Will include both built-in and custom commands
    console.log("Available commands:", message.slash_commands);
    // Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]
  }
}

Расширенные возможности

Аргументы и заполнители

Пользовательские команды поддерживают динамические аргументы с использованием заполнителей: Создайте .claude/commands/fix-issue.md:
---
argument-hint: [issue-number] [priority]
description: Fix a GitHub issue
---

Fix issue #$0 with priority $1.
Check the issue description and implement the necessary changes.
Используйте в SDK:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Pass arguments to custom command
for await (const message of query({
  prompt: "/fix-issue 123 high",
  options: { maxTurns: 5 }
})) {
  // Command will process with $0="123" and $1="high"
  if (message.type === "result" && message.subtype === "success") {
    console.log("Issue fixed:", message.result);
  }
}

Выполнение команд Bash

Пользовательские команды могут выполнять команды bash и включать их вывод: Создайте .claude/commands/git-commit.md:
---
allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)
description: Create a git commit
---

## Context

- Current status: !`git status`
- Current diff: !`git diff HEAD`

## Task

Create a git commit with appropriate message based on the changes.

Ссылки на файлы

Включайте содержимое файлов с использованием префикса @: Создайте .claude/commands/review-config.md:
---
description: Review configuration files
---

Review the following configuration files for issues:
- Package config: @package.json
- TypeScript config: @tsconfig.json
- Environment config: @.env

Check for security issues, outdated dependencies, and misconfigurations.

Организация с использованием пространств имён

Организуйте команды в подкаталогах для лучшей структуры:
.claude/commands/
├── frontend/
   ├── component.md      # Creates /component (project:frontend)
   └── style-check.md     # Creates /style-check (project:frontend)
├── backend/
   ├── api-test.md        # Creates /api-test (project:backend)
   └── db-migrate.md      # Creates /db-migrate (project:backend)
└── review.md              # Creates /review (project)
Подкаталог появляется в описании команды, но не влияет на само имя команды.

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

Команда проверки кода

Создайте .claude/commands/code-review.md:
---
allowed-tools: Read, Grep, Glob, Bash(git diff *)
description: Comprehensive code review
---

## Changed Files
!`git diff --name-only HEAD~1`

## Detailed Changes
!`git diff HEAD~1`

## Review Checklist

Review the above changes for:
1. Code quality and readability
2. Security vulnerabilities
3. Performance implications
4. Test coverage
5. Documentation completeness

Provide specific, actionable feedback organized by priority.

Команда запуска тестов

Создайте .claude/commands/test.md:
---
allowed-tools: Bash, Read, Edit
argument-hint: [test-pattern]
description: Run tests with optional pattern
---

Run tests matching pattern: $ARGUMENTS

1. Detect the test framework (Jest, pytest, etc.)
2. Run tests with the provided pattern
3. If tests fail, analyze and fix them
4. Re-run to verify fixes
Используйте эти команды через SDK:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Run code review
for await (const message of query({
  prompt: "/code-review",
  options: { maxTurns: 3 }
})) {
  // Process review feedback
}

// Run specific tests
for await (const message of query({
  prompt: "/test auth",
  options: { maxTurns: 5 }
})) {
  // Handle test results
}

Смотрите также