はじめに
Claude Codeには標準で多くのスラッシュコマンドが用意されていますが、プロジェクト固有のワークフローや繰り返し行うタスクには、カスタムスラッシュコマンドが効果的です。カスタムコマンドを活用することで、複雑なプロンプトを1行で呼び出せるようになり、チーム全体の開発効率を大幅に向上させることができます。
本記事では、カスタムスラッシュコマンドの作成方法から実践的な活用パターンまで解説します。この記事を読むことで、以下のことができるようになります。
.claude/commandsディレクトリの構成と仕組みを理解する- プロジェクト固有のカスタムコマンドを作成する
$ARGUMENTSプレースホルダーで動的なコマンドを実装する- 個人用コマンドとチーム共有コマンドを適切に使い分ける
実行環境
- オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
- ハードウェア: 4GB以上のRAM
- Node.js 18以上(npmインストールの場合のみ必要)
- インターネット接続(認証およびAI処理に必要)
- シェル環境: Bash、Zsh、またはFish推奨
前提条件
- Claude Codeがインストール済みであること
- コマンドライン操作の基礎知識
- プログラミングの基礎知識(言語は問わない)
カスタムスラッシュコマンドとは
カスタムスラッシュコマンドは、Markdownファイルとして定義されたプロンプトテンプレートです。定義したコマンドは/で始まるスラッシュコマンドとしてClaude Codeから呼び出せます。
カスタムコマンドのメリット
カスタムコマンドを導入することで、以下のメリットが得られます。
| メリット | 説明 |
|---|---|
| 再利用性 | 一度定義すれば何度でも使用可能 |
| 一貫性 | チーム全体で同じワークフローを適用 |
| 効率化 | 複雑なプロンプトを1行で実行 |
| 共有 | Gitで管理してチームに展開 |
コマンドの種類と配置場所
カスタムコマンドは配置場所によって3つのスコープに分かれます。
graph TB
A[カスタムコマンド] --> B[プロジェクトコマンド]
A --> C[個人コマンド]
A --> D[プラグインコマンド]
B --> E[".claude/commands/<br>チームで共有"]
C --> F["~/.claude/commands/<br>全プロジェクトで利用"]
D --> G["plugin-name/commands/<br>プラグイン機能"]プロジェクトコマンド(チーム共有)
.claude/commands/
├── review.md # /review コマンド
├── test.md # /test コマンド
└── deploy.md # /deploy コマンド
- 配置場所:
.claude/commands/ - スコープ:特定のプロジェクトで利用可能
- 表示:
/helpで「(project)」と表示 - 用途:チームワークフロー、プロジェクト固有タスク
- Git管理:リポジトリにコミットしてチームで共有可能
個人コマンド(全プロジェクト共通)
~/.claude/commands/
├── my-workflow.md # 個人用ワークフロー
└── quick-fix.md # 素早い修正用
- 配置場所:
~/.claude/commands/ - スコープ:すべてのプロジェクトで利用可能
- 表示:
/helpで「(user)」と表示 - 用途:個人ワークフロー、クロスプロジェクトユーティリティ
基本的なコマンドの作成
最もシンプルなコマンド
最もシンプルな形式では、Markdownファイルにプロンプトを記述するだけです。
|
|
このファイルを.claude/commands/security-review.mdとして保存すると、/security-reviewコマンドとして呼び出せます。
YAMLフロントマター付きコマンド
より高度なコマンドでは、YAMLフロントマターで設定を追加できます。
|
|
利用可能なフロントマターフィールド
| フィールド | 説明 | デフォルト |
|---|---|---|
description |
/helpに表示される説明文 |
なし |
allowed-tools |
コマンド実行時に許可するツール | 継承 |
model |
使用するモデル(sonnet/opus/haiku) | 継承 |
argument-hint |
引数のヒント(補完時に表示) | なし |
disable-model-invocation |
プログラムからの呼び出しを禁止 | false |
動的引数の活用
$ARGUMENTSプレースホルダー
$ARGUMENTSを使用すると、コマンド呼び出し時に渡された引数をプロンプトに埋め込めます。
|
|
使用例:
|
|
上記のコマンドを実行すると、$ARGUMENTSが1234に置き換えられます。
位置引数($1, $2, $3…)
複数の引数を個別に受け取る場合は、位置引数を使用します。
|
|
使用例:
|
|
この場合、$1はstaging、$2はv1.2.3に置き換えられます。
ファイル参照(@構文)
@構文を使用すると、指定したファイルの内容をコンテキストとして含めることができます。
|
|
使用例:
|
|
この例では、src/api/users.tsの内容が読み込まれ、Claudeがその内容を分析してドキュメントを生成します。
Bashコマンドの埋め込み
コマンド内でBashコマンドを実行し、その結果をコンテキストとして含めることができます。
|
|
! バッククォート構文(!command)で囲まれたコマンドは、プロンプトがClaudeに送信される前に実行され、その出力がプロンプトに埋め込まれます。
実践的なコマンド例
コードレビューコマンド
|
|
テスト生成コマンド
|
|
Issue対応コマンド
このコマンドは、Anthropicのベストプラクティスで紹介されている典型的なワークフローです。
|
|
使用例:
|
|
2ファイル比較コマンド
|
|
使用例:
|
|
コマンドの整理と命名規則
フラット構造
コマンド数が少ない場合(5〜15個程度)は、フラット構造がシンプルで管理しやすいです。
.claude/commands/
├── build.md
├── test.md
├── deploy.md
├── review.md
└── docs.md
名前空間構造
コマンドが多くなる場合は、サブディレクトリで整理できます。
.claude/commands/
├── ci/
│ ├── build.md # /build (project:ci)
│ ├── test.md # /test (project:ci)
│ └── lint.md # /lint (project:ci)
├── git/
│ ├── commit.md # /commit (project:git)
│ └── pr.md # /pr (project:git)
└── docs/
├── generate.md # /generate (project:docs)
└── publish.md # /publish (project:docs)
サブディレクトリを使用すると、/helpでカテゴリ別にコマンドが表示され、見つけやすくなります。
命名規則のベストプラクティス
コマンド名は動詞-名詞パターンを使用すると、意図が明確になります。
| 良い例 | 悪い例 |
|---|---|
review-pr.md |
pr.md |
fix-issue.md |
issue.md |
generate-docs.md |
docs.md |
run-tests.md |
tests.md |
チーム開発での活用
プロジェクトコマンドのGit管理
.claude/commands/ディレクトリをGitで管理することで、チーム全体でコマンドを共有できます。
|
|
個人コマンドとプロジェクトコマンドの使い分け
flowchart TD
A[新しいコマンドを作成] --> B{このプロジェクト<br>固有か?}
B -->|Yes| C{チームで<br>共有したいか?}
B -->|No| D[個人コマンド<br>~/.claude/commands/]
C -->|Yes| E[プロジェクトコマンド<br>.claude/commands/]
C -->|No| F[ローカルコマンド<br>.claude/commands/*.local.md]
E --> G[Gitにコミット]
F --> H[.gitignoreに追加]
D --> I[全プロジェクトで利用可能]使い分けの基準
| 種類 | 配置場所 | Git管理 | 用途 |
|---|---|---|---|
| チーム共有 | .claude/commands/ |
する | プロジェクト標準ワークフロー |
| 個人ローカル | .claude/commands/*.local.md |
しない | 個人的な実験・カスタマイズ |
| 全プロジェクト共通 | ~/.claude/commands/ |
しない | 個人の汎用ワークフロー |
.gitignoreの設定
ローカル専用のコマンドをGit管理から除外する場合は、.gitignoreに追加します。
# ローカル専用のClaude Codeコマンド
.claude/commands/*.local.md
ベストプラクティス
コマンド設計の原則
- 単一責任: 1つのコマンドは1つの明確なタスクに集中
- 明確な説明:
/helpで見つけやすい説明文を記述 - 引数のドキュメント化:
argument-hintで必ず引数を説明 - 最小限のツール許可:
allowed-toolsは必要最小限に - 一貫した命名: 動詞-名詞パターンを採用
エラーハンドリング
引数が不足した場合のガイダンスを含めることで、ユーザー体験が向上します。
|
|
コメントの活用
複雑なコマンドには、意図を説明するコメントを含めます。
|
|
トラブルシューティング
コマンドが/helpに表示されない
|
|
引数が展開されない
|
|
Bashコマンドが実行されない
|
|
まとめ
カスタムスラッシュコマンドは、Claude Codeの柔軟性を最大限に活用するための強力な機能です。本記事で解説した内容を活用することで、以下のことが実現できます。
- 繰り返しタスクの自動化: 複雑なプロンプトを1行のコマンドに集約
- チーム開発の効率化: Git管理でコマンドをチーム全体に展開
- 一貫性の確保: 標準化されたワークフローでコード品質を維持
- オンボーディングの迅速化: 新メンバーもすぐにベストプラクティスを適用可能
まずはシンプルなコマンドから始めて、徐々に複雑なワークフローを構築していくことをおすすめします。チームで効果的なコマンドが見つかったら、積極的に共有して開発効率の向上に活かしてください。