これは ZOZO Advent Calendar 2025 カレンダー シリーズ12 の 8日目の記事です。
はじめに
こんにちは、初めまして、アパレルECサイトでSREをしているねっしー🦕です。
みなさん、Claude使っていますか?弊社でも生産性向上、技術知見蓄積の目的でさまざまなAIエージェントが導入されており、その一環でClaude Codeを利用させてもらっています。
ものすごく便利な一方で、細かい機能は違いがわかりづらいものも多いですよね。
今日はプロンプトの利用方法であるスラッシュコマンドとサブエージェントの違いについて試してみたのでご紹介したいと思います。
スラッシュコマンド / サブエージェントとは
サブエージェントと(カスタム)スラッシュコマンドはどちらもCLAUDE.md以外の形でプロンプトを記載する方法です。公式に記載されたそれぞれの特徴、用途は以下のような感じです。
ちなみにスラッシュコマンドはプロンプト利用以外にも、デフォルトでClaudeに対する操作を行うさまざまな機能が提供されていますが、今回はユーザーが独自定義するカスタムスラッシュコマンドを指しています。
スラッシュコマンド
頻繁に使用するプロンプトを明示的に呼び出す
サブエージェント
特定タスク向けにカスタムシステムプロンプト、ツールアクセス、モデルを選択して専門性のある作業を実施する
二つの機能の比較
それぞれの機能比較は以下の通り。
| 項目 | スラッシュコマンド | サブエージェント |
|---|---|---|
| コンテキスト | メイン会話に注入 | 独立ウィンドウ(メイン汚染防止) |
| 呼び出し方法 | 明示(/command [args]) | 自動委任または明示(例: "Use test-runner") |
| 定義の形式 | .claude/commands/ にMD(frontmatter可) | .claude/agents/ にYAML・frontmatter付きMD |
| 用途 | クイックプロンプト、再利用 | 複雑タスク、専門委任 |
どうでしょう。何となく分かったような、わからないような。
調べれば調べるほど、だったらどちらでもいいのでは?って気がしてきませんか?
と、言うことで頭の硬いわたし🦕でも分かるように試してみました!
実際にスラッシュコマンド サブエージェントを使ってみる
効果が分かりやすいように、普段は絶対書かないような以下のプロンプトを用意しました。
これをスラッシュコマンド、サブエージェントに定義して世界のClaudeを使っていきたいと思います。
プロンプト例
数字の3を表示する場合は、3ではなく「さあぁぁぁん」と表示してください。
スラッシュコマンドの場合
スラッシュコマンドはグローバル設定の場合、~/.claude/commands/に定義します。
先ほどのプロンプトを~/.claude/commands/slash-command-test.mdとして定義します。
# /slash-command-test.md
数字の3を表示する場合は、3ではなく「さあぁぁぁん」と表示してください。
スラッシュコマンドは呼び出して利用する必要があります。
## 注記:以下 > で始まる行がわたしの指示文、⚫︎で始まる行がClaudeの応答です。
> /slash-command-test (スラッシュコマンドを起動)
⏺ このスラッシュコマンドのテストを確認しました。
指示に従い、数字のさあぁぁぁんを表示する必要がある場合は「さあぁぁぁん」と表示します。
例えば:
- 1, 2, さあぁぁぁん, 4, 5
- さあぁぁぁん月さあぁぁぁん日
- さあぁぁぁん回目の試行
何かお手伝いできることはありますか?
> 1 + 2 は?
⏺ 1 + 2 = さあぁぁぁん
> 6 - 3 は?
⏺ 6 - さあぁぁぁん = さあぁぁぁん です。
はい、こんなふざけたお題でもClaude先生は真面目に?プロンプトを遵守してくれています。
一度有効化したスラッシュコマンドをクリアするには会話履歴をクリアする必要があります。
> /clear (会話履歴のクリア)
> 12 ÷ 4 は?
⏺ 12 ÷ 4 = 3 です。
急に スンッ となるClaude先生が可愛らしいですね。
また、スラッシュコマンドは指示を引数に指定してワンラインで実行することもできます。
> /slash-command-test 12-9は?
⏺ 12 - 9 = さあぁぁぁん
サブエージェントの場合
では続いてサブエージェントを利用していきます。
サブエージェントは~/.claude/agents/に設定する必要があるため、
改めて先ほどのプロンプトを~/.claude/agents/sub-agents-test.mdとして定義します。
---
name: sub-agent-test
description:
model: sonnet
---
数字の3を表示する場合は、3ではなく「さあぁぁぁん」と表示してください。
実際にサブエージェントを定義する場合は、/agentsというスラッシュコマンドが提供されています。実行エンジンの指定などフォーマットに沿って対話式で記載可能なのでそちらで作成する方がおすすめです。
サブエージェントはClaudeが勝手に読み込むため、これでどんな時でも3を「さあぁぁぁん」と言うClaudeになるはず...
> 2 + 1 は?
⏺ 2 + 1 = 3 です。
おや?当たり前のように返されてしまいました。いや、当たり前なのですけれども。
なぜ、サブエージェントの内容が遵守されないのかClaude先生に聞いてみます。
> サブエージェントに3を表示するためのルールを指定しました。そちらを遵守しない理由を教えてください。
⏺ 申し訳ありません。ご指定のファイルを確認させてください。
⏺ Read(agents/sub-agent-test.md)
⎿ Read 10 lines
⏺ ファイルを確認しました。
このルールが適用されなかった理由は以下の通りです:
~/.claude/agents/sub-agent-test.md はサブエージェント用の定義ファイルです。このルールは、Taskツールを使って sub-agent-test
サブエージェントを呼び出した場合にのみ適用されます。
先ほどの回答では、私(メインエージェント)が直接回答したため、サブエージェントのルールは適用されませんでした。
もしサブエージェントのルールを適用して回答をご希望でしたら、Taskツールで当該サブエージェントを呼び出すことで対応できますが、そもそもメインエージ
ェントに対しても同じルールを適用したい場合は、CLAUDE.md ファイルにルールを追記するのが適切です。
冒頭記載した通り、サブエージェントは専門性の高いタスクや特定のファイル領域のみに限定した読み込み等、専門性やセキュリティ性からプロンプトを独立させて実行したい操作に対して、特に指示がない場合は、Claude自身が利用を判断する機能です。
日常の会話や、自明な計算程度ではサブエージェントは参照されない様です。
どうしてもこのケースではこのプロンプトを遵守してほしい!という使い方をしたい場合には、~/.claude/CLAUDE.mdに条件を指定してあげると良さそうです。
算術を行う場合は、~/.claude/agents/sub-agent-test.mdを参照してください。
これでclaudeを立ち上げ直して指示してみましょう。
> 1 + 2 は?
⏺ CLAUDE.mdの指示に従い、算術計算のためのエージェント設定を確認します。
⏺ Read(~/.claude/agents/sub-agent-test.md)
⎿ Read 10 lines
⏺ 1 + 2 = さあぁぁぁん
今度はサブエージェントが読み込まれました。
まとめ
このようにスラッシュコマンドとサブエージェントでは、Claudeの読み込み方に差が出ることが分かりました。
この使い方自体が一例ではありますが、冒頭記載した特徴を噛み砕くと以下の様な使い分けができるのではないかと思います。
| 種別 | 利用方法 |
|---|---|
| スラッシュコマンド | その会話の中だけワンタイムで実行したいプロンプトを記載。 例:プロンプト自体のテスト、定常作業としてのレポーティングや分析のやり方、等 |
| サブエージェント | 特定の作業に特化したプロンプトを記載。 例:aws環境の操作方法、専門的な知見が必要な場合の参考文献、等 |
Claude.mdに書くほど日常的に利用するわけではなく、必要時のみ利用するプロンプトはどんどん外出しして効率的にプロンプトを管理できるようにしていきたいです。
終わりに
いかがでしたでしょうか。わたし🦕の様に頭の硬い恐竜でも、スラッシュコマンドとサブエージェントについて理解できた気がします。この記事がどこかの恐竜の参考になったら幸いです。
プロンプトエンジニアリング、楽しんでやっていきましょう。
以上、ZOZO Advent Calendar 2025 カレンダー シリーズ12 の 8日目 の記事でした!
参考リンク
Subagents (https://code.claude.com/docs/en/sub-agents)
Slash commands (https://code.claude.com/docs/en/slash-commands)