メインコンテンツへスキップ
スラッシュコマンドは、/ で始まる特別なコマンドを使用して Claude Code セッションを制御する方法を提供します。これらのコマンドは SDK を通じて送信でき、コンテキストのコンパクト化、コンテキスト使用状況の一覧表示、またはカスタムコマンドの呼び出しなどのアクションを実行できます。インタラクティブなターミナルなしで機能するコマンドのみが SDK を通じてディスパッチ可能です。system/init メッセージにはセッションで利用可能なコマンドが一覧表示されます。

利用可能なスラッシュコマンドの検出

Claude Agent SDK は、システム初期化メッセージで利用可能なスラッシュコマンドに関する情報を提供します。セッション開始時にこの情報にアクセスします。

スラッシュコマンドの送信

スラッシュコマンドをプロンプト文字列に含めて送信します。通常のテキストと同じように使用します。会話履歴に作用するコマンド(/compact など)は、動作するために事前のメッセージが必要です。そのため、以下の例では最初に質問を送信してから、同じ会話へのフォローアップとしてコマンドを送信しています。
クエリはエラー結果で終了する場合があります。例えば、maxTurns / max_turns の制限に達してから作業が完了する前に終了する場合です。最終的な結果メッセージは is_error: true を持ち、success の代わりに error_max_turns などのエラーサブタイプを持ちます。その最終的な結果メッセージを生成した後、SDK はエラーを発生させます。これは CLI プロセスがゼロ以外のコードで終了するためです。コマンドが制限に達する可能性がある場合は、Single Message Input に示されているように、TypeScript では try/catch でループをラップするか、Python では try/except でラップしてください。または、作業が完了するのに十分な高さに maxTurns を設定してください。Python では、Exception をキャッチしてください。SDK はエラー結果をプレーンな Exception として表示します。

一般的なスラッシュコマンド

/compact - 会話履歴のコンパクト化

/compact コマンドは、古いメッセージを要約しながら重要なコンテキストを保持することで、会話履歴のサイズを削減します。コンパクト化には、要約するための少なくとも 2 つの以前のやり取りがある既存の会話が必要です。この例では、まず会話を行い、その後コンパクト化して、結果を報告する compact_boundary システムメッセージを読み取ります。
compact_boundary メッセージは、コンパクト化が実行された場合にのみ到着します。要約するものがない場合、/compact は例外を発生させる代わりに理由を報告します。実行は success 結果で終了し、compact_boundary メッセージは発行されず、結果テキストにメッセージが含まれます。例えば、単一の短いやり取りの後に Not enough messages to compact. のようなメッセージが表示されます。新しいワンショット query() 呼び出しは空のコンテキストで開始されるため、このパターンは以前のターンがあるセッションで使用してください。例えば、ストリーミング入力モードまたはセッションを再開する場合です。

/clear - 会話コンテキストのリセット

/clear コマンドは、会話を空のコンテキストにリセットするため、その後のプロンプトは以前の会話履歴なしで開始されます。前の会話はディスクに保存され、セッション ID を resume オプション に渡すことで復帰できます。 これはストリーミング入力モードで便利です。ここでは、単一の接続を介して複数のプロンプトを送信します。ワンショット query() 呼び出しの場合、各呼び出しは既に空のコンテキストで開始されるため、/clear を送信しても実際の効果はありません。代わりに新しい query() を開始してください。
SDK の /clear には Claude Code v2.1.117 以降が必要です。以前のバージョンでは slash_commands から省略されています。

カスタムスラッシュコマンドの作成

組み込みスラッシュコマンドを使用するだけでなく、SDK を通じて利用可能な独自のカスタムコマンドを作成できます。カスタムコマンドは、サブエージェントの設定方法と同様に、特定のディレクトリ内のマークダウンファイルとして定義されます。
.claude/commands/ ディレクトリはレガシー形式です。推奨される形式は .claude/skills/<name>/SKILL.md で、同じスラッシュコマンド呼び出し(/name)とともに Claude による自律的な呼び出しをサポートします。現在の形式については Skills を参照してください。CLI は両方の形式をサポートし続けており、以下の例は .claude/commands/ に対して正確なままです。

ファイルの場所

カスタムスラッシュコマンドは、スコープに基づいて指定されたディレクトリに保存されます。
  • プロジェクトコマンド: .claude/commands/ - 現在のプロジェクトでのみ利用可能(レガシー;.claude/skills/ を推奨)
  • 個人用コマンド: ~/.claude/commands/ - すべてのプロジェクト全体で利用可能(レガシー;~/.claude/skills/ を推奨)

ファイル形式

各カスタムコマンドはマークダウンファイルで、以下の特性があります。
  • ファイル名(.md 拡張子なし)がコマンド名になります
  • ファイルコンテンツはコマンドが何をするかを定義します
  • オプションの YAML frontmatter は設定を提供します

基本的な例

プロジェクトに .claude/commands ディレクトリが存在しない場合は作成し、その後 .claude/commands/refactor.md を作成します。
これにより、SDK を通じて使用できる /refactor コマンドが作成されます。

Frontmatter 付き

.claude/commands/security-check.md を作成します。

SDK でカスタムコマンドを使用する

ファイルシステムで定義されたカスタムコマンドは、SDK を通じて自動的に利用可能になります。

高度な機能

引数とプレースホルダー

カスタムコマンドはプレースホルダーを使用した動的引数をサポートします。 .claude/commands/fix-issue.md を作成します。
SDK で使用します。

Bash コマンド実行

カスタムコマンドは bash コマンドを実行し、その出力を含めることができます。 .claude/commands/git-commit.md を作成します。

ファイル参照

@ プレフィックスを使用してファイルコンテンツを含めます。 .claude/commands/review-config.md を作成します。

名前空間を使用した組織化

より良い構造のためにサブディレクトリ内でコマンドを整理します。
サブディレクトリはコマンドの説明に表示されますが、コマンド名自体には影響しません。

実践的な例

プルリクエストレビューコマンド

.claude/commands/review-pr.md を作成します。
Claude Code には、バンドルされた code-reviewverify スキルが含まれています。カスタムコマンドをそれらの 1 つの後に名前を付けた場合(例えば .claude/commands/code-review.md)、カスタムコマンドはバンドルされたスキルをシャドウし、slash_commands はその名前を 1 回だけリストします。

テストランナーコマンド

.claude/commands/test.md を作成します。
SDK を通じてこれらのコマンドを使用します。

関連項目