Claude Codeには豊富な組み込みコマンドが用意されていますが、プロジェクト固有の作業や繰り返し発生するタスクには、カスタムスラッシュコマンドを作成することで大幅な効率化が可能です。「毎回同じプロンプトを打つのが面倒」「チームメンバー全員に同じ操作をしてほしい」という課題を解決する、カスタムスラッシュコマンドの作り方と活用テクニックを詳しく解説します。
カスタムスラッシュコマンドとは何か
組み込みコマンドとの違い
Claude Codeには/help、/compact、/clearなどの組み込みスラッシュコマンドが存在します。これらはClaude Codeの基本機能として提供されており、すべてのプロジェクトで共通に使えます。
一方、カスタムスラッシュコマンドは、ユーザー自身がプロジェクトの要件に合わせて定義するコマンドです。たとえば「/review」でコードレビューを実行する、「/create-component」で新しいコンポーネントの雛形を生成する、「/deploy-check」でデプロイ前のチェックリストを実行するなど、プロジェクト固有のワークフローをコマンド一つで呼び出せるようになります。
カスタムコマンドが解決する問題
開発現場では、以下のような非効率が頻繁に発生します。
- 同じプロンプトの繰り返し入力:「このファイルのテストを書いて。フレームワークはVitest、カバレッジは80%以上で...」という指示を毎回打ち込む
- メンバー間の品質のばらつき:同じタスクでも、メンバーによってClaude Codeへの指示が異なり、出力品質が変わる
- 複雑なワークフローの実行漏れ:デプロイ前の確認手順など、多段階の作業の一部をうっかり忘れてしまう
- 新メンバーの学習コスト:プロジェクト固有の作業手順を覚えるまでに時間がかかる
カスタムスラッシュコマンドは、これらの問題を一挙に解決する強力な仕組みです。一度定義すれば、誰でもコマンド一つで同じ品質の作業を再現できます。
カスタムスラッシュコマンドの基本構造
ファイル配置のルール
カスタムスラッシュコマンドは、マークダウンファイルとして特定のディレクトリに配置します。配置場所によって、コマンドのスコープが変わります。
| 配置場所 | スコープ | 用途 |
|---|---|---|
| .claude/commands/ | プロジェクト全体(チーム共有) | チーム全員が使うプロジェクト固有のコマンド |
| ~/.claude/commands/ | 個人(全プロジェクト共通) | 個人の好みや汎用的なワークフロー |
プロジェクトの.claude/commands/ディレクトリに配置したファイルはGitリポジトリにコミットできるため、チーム全体で共有するコマンドはこちらに配置します。個人的に使うコマンドはホームディレクトリ配下に配置します。
コマンドファイルの書き方
カスタムコマンドのファイル名がそのままコマンド名になります。たとえば、.claude/commands/review.mdというファイルを作成すると、Claude Code上で/reviewと入力して実行できるようになります。
ファイルの中身は、Claude Codeに対するプロンプト(指示文)をマークダウン形式で記述します。最もシンプルな例は以下のとおりです。
# .claude/commands/review.md
現在のgit diffの変更内容をレビューしてください。
以下の観点でチェックしてください:
1. コーディング規約への準拠
2. 潜在的なバグやエッジケース
3. パフォーマンスへの影響
4. セキュリティ上の懸念
5. テストの十分性
問題がある場合は、具体的な修正案も提示してください。
このファイルを保存するだけで、/reviewコマンドが使えるようになります。Claude Codeの中で/reviewと入力すると、上記のプロンプトが自動的に送信され、コードレビューが実行されます。
パラメータ付きコマンドの作成
$ARGUMENTSによる動的入力
カスタムコマンドでは、$ARGUMENTSというプレースホルダーを使って、実行時に動的な引数を受け取ることができます。これにより、汎用的なコマンドを作成できます。
# .claude/commands/create-component.md
以下の名前でReactコンポーネントを作成してください: $ARGUMENTS
## 作成ルール
- src/components/ディレクトリに配置
- TypeScriptで記述(.tsxファイル)
- functional componentとして実装
- Propsの型定義を含める
- JSDocコメントを付与
- 対応するテストファイルも作成(src/__tests__/配下)
- Storybookのストーリーファイルも作成
このコマンドは以下のように使います。
/create-component UserProfileCard
すると、$ARGUMENTSの部分が「UserProfileCard」に置き換えられ、指定された名前のコンポーネント、テスト、Storybookファイルが一度に生成されます。
複数の引数を受け取るパターン
$ARGUMENTSはコマンド名の後ろに入力された文字列全体を受け取ります。複数の情報を渡したい場合は、プロンプト内でパース方法を指示します。
# .claude/commands/create-api.md
以下の仕様でAPIエンドポイントを作成してください: $ARGUMENTS
入力形式: [HTTPメソッド] [パス] [説明]
例: POST /api/users ユーザーを新規作成する
## 作成内容
- ルートハンドラー(src/routes/配下)
- バリデーションスキーマ(zodを使用)
- エラーハンドリング
- 対応するテスト
- OpenAPI仕様のコメント
実行例は次のようになります。
/create-api POST /api/articles 記事を新規作成する
実践的なカスタムコマンド集
テスト作成コマンド
テスト作成は最も活用頻度の高いカスタムコマンドの一つです。プロジェクトのテスト規約をコマンドに埋め込むことで、一貫したテストコードを生成できます。
# .claude/commands/test.md
$ARGUMENTS に対するユニットテストを作成してください。
## テスト規約
- テストフレームワーク: Vitest
- テストファイル: 対象ファイルと同じディレクトリに .test.ts で作成
- describe/it パターンを使用
- 日本語でテスト名を記述(例: it('正常系: ユーザーが作成される'))
- 正常系と異常系の両方をカバー
- エッジケースを最低2つ含める
- モックは vi.mock() を使用
- カバレッジ80%以上を目標
デプロイ前チェックコマンド
デプロイ前の確認作業をコマンド化しておくと、確認漏れを防げます。
# .claude/commands/deploy-check.md
デプロイ前の最終チェックを実行してください。
## チェック項目
1. `npm run lint` でリントエラーがないことを確認
2. `npm run type-check` で型エラーがないことを確認
3. `npm run test` で全テストがパスすることを確認
4. `npm run build` でビルドが成功することを確認
5. git statusで未コミットの変更がないことを確認
6. .envファイルに本番環境の値が設定されていないことを確認
すべてのチェックが通った場合は「デプロイ準備完了」と表示してください。
問題がある場合は、各項目の結果と修正方法を表示してください。
データベースマイグレーション作成コマンド
# .claude/commands/migration.md
以下の要件でデータベースマイグレーションを作成してください: $ARGUMENTS
## マイグレーション規約
- Prismaを使用
- マイグレーション名は日付_説明の形式
- 既存データへの影響を必ず考慮
- ロールバック手順もコメントで記載
- インデックスの追加が必要な場合は含める
- 本番環境でのダウンタイムを最小化する方法を提案
コミットメッセージ生成コマンド
# .claude/commands/commit.md
現在のステージされた変更を分析し、Conventional Commitsに従ったコミットメッセージを提案してください。
## ルール
- プレフィックス: feat, fix, docs, refactor, test, chore, style, perf
- スコープは任意(例: feat(auth): )
- 本文は日本語で記述
- 1行目は50文字以内
- 必要に応じて本文に詳細を記載
- Breakingchangeがある場合は明記
3つの候補を提示してください。
チーム共有コマンドの運用方法
ディレクトリ構成のベストプラクティス
チームで運用する場合、コマンドファイルをカテゴリ別に整理すると管理しやすくなります。サブディレクトリを使ってコマンドを分類できます。
.claude/
commands/
review.md → /review
commit.md → /commit
deploy-check.md → /deploy-check
create-component.md → /create-component
create-api.md → /create-api
test.md → /test
migration.md → /migration
refactor.md → /refactor
コマンドファイルはリポジトリにコミットするため、コマンドの追加や修正もプルリクエストを通じてレビューできます。これにより、チームメンバー全員がコマンドの品質向上に貢献できる仕組みが作れます。
CLAUDE.mdとの連携
カスタムスラッシュコマンドはCLAUDE.mdと組み合わせることで、さらに強力になります。CLAUDE.mdにプロジェクトの基本ルールを記載し、カスタムコマンドではタスク固有の指示を記述するという役割分担が理想的です。
たとえば、CLAUDE.mdに「TypeScriptを使用」「Vitestでテスト」「Conventional Commitsに従う」といった基本ルールを記載しておけば、カスタムコマンド内でこれらの情報を繰り返す必要がなくなります。Claude Codeは両方のファイルを読み込むため、基本ルール+タスク固有の指示が自動的に組み合わされます。
高度なカスタムコマンドテクニック
複数ステップのワークフローコマンド
カスタムコマンドは、複数のステップを順に実行する複雑なワークフローも定義できます。
# .claude/commands/feature.md
以下の機能を実装するための一連の作業を実行してください: $ARGUMENTS
## 手順
1. まず、機能の要件を整理し、実装計画を提示してください
2. 計画に基づいて必要なファイルを作成・修正してください
3. 各関数・メソッドにJSDocコメントを追加してください
4. ユニットテストを作成してください
5. `npm run lint` と `npm run type-check` を実行し、エラーがあれば修正してください
6. 実装内容のサマリーを表示してください
各ステップの完了時に進捗を報告してください。
条件分岐を含むコマンド
プロンプト内で条件分岐を指示することもできます。Claude Codeは自然言語の指示を理解するため、柔軟な条件処理が可能です。
# .claude/commands/fix.md
$ARGUMENTS の問題を修正してください。
## 修正手順
- エラーメッセージが提供された場合:そのエラーの原因を分析し、修正してください
- ファイルパスが提供された場合:そのファイルの問題を検出し、修正してください
- 機能名が提供された場合:その機能に関連するバグを調査し、修正してください
## 修正後の確認
- 修正箇所のテストを実行
- 関連するテストも実行して影響範囲を確認
- lint/type-checkの実行
Hooksとの組み合わせ
カスタムコマンドをHooks機能と組み合わせると、コマンド実行前後に自動的なバリデーションやフォーマットを挟むことができます。たとえば、/create-componentコマンドの実行後に自動でリンターを走らせるといった連携が可能です。
カスタムコマンド作成時の注意点とベストプラクティス
効果的なコマンド設計のポイント
カスタムコマンドを設計する際は、以下のポイントを意識しましょう。
- 単一責任の原則:1つのコマンドは1つの目的に絞る。あれもこれもやるコマンドは使いにくくなる
- 命名規則の統一:動詞から始める(create-、update-、check-など)か名詞で終わる(review、testなど)か、チームで統一する
- 具体的な指示を書く:「良いコードを書いて」ではなく、「TypeScriptでfunctional componentとして、Props型定義を含めて作成して」と具体的に記述する
- 出力形式を明示する:結果の表示形式を指定しておくと、毎回同じフォーマットで出力が得られる
コマンドのメンテナンス
カスタムコマンドもコードと同様にメンテナンスが必要です。プロジェクトの技術スタックが変わったり、新しいルールが追加されたりした場合は、コマンドファイルも更新しましょう。定期的にチーム内でコマンドの棚卸しを行い、使われていないコマンドの削除や、改善提案を行う場を設けることをお勧めします。
コマンドのテスト方法
新しいコマンドを作成したら、実際にいくつかのパターンで実行してみて、意図した結果が得られることを確認しましょう。特に$ARGUMENTSを使用するコマンドは、さまざまな入力パターンでテストすることが重要です。空の引数、長い引数、特殊文字を含む引数など、エッジケースも確認しておくと安心です。
まとめ:カスタムコマンドでチームの開発効率を最大化する
カスタムスラッシュコマンドは、Claude Codeの活用を個人レベルからチームレベルへと引き上げる重要な機能です。ここまで紹介した内容を整理します。
- .claude/commands/ディレクトリにマークダウンファイルを配置するだけでコマンドが作成できる
- $ARGUMENTSを使えばパラメータ付きの動的なコマンドが実現できる
- チーム共有コマンドはリポジトリにコミットしてプルリクエストで管理する
- CLAUDE.mdとの役割分担で基本ルールとタスク固有の指示を整理する
- 複数ステップのワークフローや条件分岐も自然言語で記述可能
まずは日々の業務で繰り返し行っている作業を1つ選び、カスタムコマンド化するところから始めてみてください。「毎回同じことを打ち込んでいるな」と感じたら、それはカスタムコマンドの絶好の候補です。小さなコマンドの積み重ねが、チーム全体の開発効率を大きく向上させていくでしょう。チーム開発への導入方法もあわせて参考にしてください。
関連記事
Claude CodeでREST API開発|設計からテストまでAI駆動で高速構築
Claude Codeでコードレビュー|AIを活用した品質チェックとレビュー効率化
Claude Codeのコンテキスト管理術|大規模プロジェクトで精度を維持する方法
Claude Codeでデータベース移行・マイグレーション|安全なスキーマ変更の実践
Claude Codeでデバッグを効率化|バグ修正・エラー解析の実践テクニック
Claude Codeでドキュメント自動生成|README・API仕様書・技術文書の効率的な作り方
Claude Codeでエラーハンドリング実装|堅牢なアプリケーションを構築するパターン集
Claude Codeでフロントエンド開発|React・Next.jsのコンポーネント実装を高速化