カスタムコマンド(Skills)
Claude Code では、よく使う操作を カスタムスラッシュコマンド として登録し、ワンコマンドで実行できます。
カスタムコマンドとは
カスタムコマンドは、Claude Code に定義済みの指示をまとめて送れる機能です。毎回同じ指示を入力する代わりに、/my-command のように短いコマンドで呼び出せます。
毎回入力する場合:
> このコードをレビューして、バグ、セキュリティ、
パフォーマンスの観点からチェックしてください。
問題があれば修正も行ってください。
カスタムコマンドを使う場合:
> /review時間の節約
よく使う定型的な指示をカスタムコマンドにしておくことで、毎回同じことを入力する手間が省けます。チーム全体で共有すれば、品質の統一にも役立ちます。
カスタムコマンドの種類
Claude Code には 2 種類のカスタムコマンドがあります。
1. プロジェクト固有のコマンド
プロジェクトの .claude/commands/ ディレクトリに配置します。Git でチームと共有できます。
my-project/
├── .claude/
│ └── commands/
│ ├── review.md → /project:review で呼び出し
│ ├── deploy.md → /project:deploy で呼び出し
│ └── create-test.md → /project:create-test で呼び出し
├── src/
└── ...2. 個人用のコマンド
~/.claude/commands/ ディレクトリに配置します。すべてのプロジェクトで使えます。
~/.claude/
└── commands/
├── my-review.md → /user:my-review で呼び出し
└── my-template.md → /user:my-template で呼び出しプロジェクト vs 個人
- プロジェクト固有(
.claude/commands/): チームで共有するコマンド - 個人用(
~/.claude/commands/): 自分だけが使うコマンド
カスタムコマンドの作り方
Step 1: ディレクトリを作成
# プロジェクト固有のコマンド用
mkdir -p .claude/commands
# 個人用のコマンド用
mkdir -p ~/.claude/commandsStep 2: コマンドファイルを作成
コマンドファイルはマークダウン形式で書きます。ファイル名がコマンド名になります。
例: コードレビューコマンド
.claude/commands/review.md:
以下の観点でコードレビューを行ってください:
1. **バグ**: ロジックエラー、null チェック漏れ、型エラー
2. **セキュリティ**: SQL インジェクション、XSS、認証漏れ
3. **パフォーマンス**: 不要なループ、N+1 問題、メモリリーク
4. **可読性**: 命名規則、コメント、関数の長さ
5. **テスト**: テストカバレッジ、エッジケース
問題が見つかった場合は、修正案も一緒に提示してください。
対象ファイル: $ARGUMENTS$ARGUMENTS 変数
$ARGUMENTS は、コマンド実行時に渡された引数に置き換えられます。
> /project:review src/utils/auth.ts
# → $ARGUMENTS が "src/utils/auth.ts" に置き換わる例: コンポーネント作成コマンド
.claude/commands/create-component.md:
以下の仕様で React コンポーネントを作成してください:
コンポーネント名: $ARGUMENTS
## 要件
- TypeScript で作成
- 関数コンポーネント + Hooks を使用
- Props の型定義を含める
- Storybook のストーリーファイルも作成
- ユニットテストも作成
## ファイル構造
- src/components/$ARGUMENTS/$ARGUMENTS.tsx
- src/components/$ARGUMENTS/$ARGUMENTS.stories.tsx
- src/components/$ARGUMENTS/$ARGUMENTS.test.tsx
- src/components/$ARGUMENTS/index.ts例: デプロイコマンド
.claude/commands/deploy.md:
以下の手順でデプロイを実行してください:
1. テストを実行して全てパスすることを確認
2. lint を実行してエラーがないことを確認
3. ビルドを実行
4. ビルド結果を確認
5. 問題がなければデプロイコマンドを実行
環境: $ARGUMENTS(指定がなければ staging)/agents コマンド
Claude Code には、カスタムサブエージェントを定義するための特別な仕組みもあります。.claude/agents/ ディレクトリにエージェント定義を配置します。
my-project/
├── .claude/
│ ├── commands/ ← カスタムコマンド
│ └── agents/ ← カスタムサブエージェント
│ └── reviewer.md → /agents:reviewer で呼び出し
├── src/
└── ...サブエージェントとの違い
カスタムコマンドは「定型的な指示を短縮する」もの、サブエージェントは「特定の役割を持った AI アシスタントを定義する」ものです。サブエージェントについては Step 7 で詳しく説明します。
カスタムコマンドの活用例
チーム開発での活用
| コマンド | 用途 |
|---|---|
/project:review | コードレビュー |
/project:create-pr | PR 作成 |
/project:create-test | テスト作成 |
/project:deploy | デプロイ手順の実行 |
/project:fix-lint | Lint エラーの一括修正 |
個人の効率化
| コマンド | 用途 |
|---|---|
/user:morning | 朝の開発準備(ブランチ確認、Issue 確認) |
/user:eod | 終業時の作業まとめ(コミット確認、メモ作成) |
/user:explain | 指定ファイルの説明を日本語で表示 |
コマンドファイルの注意点
- ファイル名に日本語は使わないでください(英数字とハイフンのみ推奨)
- ファイルの拡張子は
.mdにしてください - コマンドファイル内に機密情報を書かないでください
まとめ
| 項目 | 内容 |
|---|---|
| 配置場所 | .claude/commands/(プロジェクト)、~/.claude/commands/(個人) |
| ファイル形式 | マークダウン(.md) |
| 呼び出し方 | /project:ファイル名 または /user:ファイル名 |
| 引数 | $ARGUMENTS で受け取り可能 |
次は、ツール実行時に自動処理を追加する Hooks を学びましょう。