他力code
ブログ一覧に戻る

AIアシスタントをプロジェクト専属秘書に

Claude Code(claude.ai/code)は、Anthropic社が提供するAIアシスタントClaude Sonnet 4.5を使った開発支援ツールです。コード生成、デバッグ、リファクタリングなど、開発のあらゆる場面でAIがサポートしてくれます。

その中でも特に便利なのがカスタムスラッシュコマンド機能です。これを使うと、プロジェクト固有の定型作業を簡単に自動化できます。

スラッシュコマンドのメリット

カスタムスラッシュコマンドを作成することで、以下のようなメリットがあります:

定型作業の効率化

毎回同じような指示を出す作業(コードレビュー、リリースノート作成、テスト追加など)を、/review/release-notesのような短いコマンドで実行できます。

チーム全体での知識共有

.claude/commands/ディレクトリをGitリポジトリにコミットすることで、チームメンバー全員が同じコマンドを使えます。「どうやってAIに指示すればいいか」のベストプラクティスをチーム全体で共有できます。

品質の一貫性

レビュー観点やコーディング規約をコマンドに組み込むことで、誰が実行しても同じ品質のアウトプットが得られます。

オンボーディングの簡素化

新しいメンバーがプロジェクトに参加したとき、「どのようにAIを活用すればいいか」がコマンドを見ればわかります。

基本的な作り方

ディレクトリ構造

プロジェクトルートに.claude/commands/ディレクトリを作成します:

your-project/
├── .claude/
│   └── commands/
│       ├── review.md
│       ├── commit-message.md
│       └── test.md
├── src/
└── package.json

コマンドファイルの構造

各コマンドはMarkdownファイルとして作成します。ファイル名がそのままコマンド名になります(例:review.md/review)。

基本的な構造:

# コマンドのタイトル

コマンドの説明や目的を書きます。

## 実行内容

Claudeに実行してほしい具体的な指示をここに書きます。

ファイルの内容全体が、そのままClaudeへのプロンプトとして渡されます。

設定(Frontmatter)

ファイルの先頭にFrontmatterを追加することで、コマンドの説明や動作を細かく制御できます。

基本的な例:

---
description: Build and test the project
---

# Build and Test

...

高度な設定(config):

configセクションを使うことで、モデルの選択やパラメータを指定できます:

---
description: Complex code analysis with detailed explanations
config:
    model: claude-opus-4-5 # より高性能なモデルを使用
    max_tokens: 8000 # 長い出力が必要な場合
    temperature: 0.3 # より決定的な出力(0-1)
---

# Detailed Analysis

...

利用可能な設定:

  • model: 使用するClaudeモデル(claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4
  • max_tokens: 最大出力トークン数(デフォルトは4000)
  • temperature: 出力のランダム性(0=決定的、1=創造的)

複雑なタスクやコード生成にはopus、高速レスポンスが必要な場合はhaikuを指定するなど、用途に応じてモデルを使い分けられます。

高度な機能

より実践的なコマンドを作るための機能を紹介します。

引数の利用

コマンドに引数を渡すことができます。

引数の種類:

  • $ARGUMENTS: すべての引数を1つの文字列として取得
  • $1, $2, ...: 個別の引数を取得(スペース区切り)

ファイル名を渡す:

/review src/components/Button.svelte

複数行のコードスニペットを渡す(あまり知られていない強力な機能):

Claude Codeでは、ファイル名だけでなく、複数行のコードブロック全体を引数として渡すことができます。

/explain
function calculateTotal(items) {
  return items.reduce((sum, item) => {
    return sum + item.price * item.quantity;
  }, 0);
}

この場合、$ARGUMENTSには上記のコード全体が含まれます。

実用例:コードスニペット解説コマンド:

---
description: Explain code snippet in detail
---

# Explain Code

以下のコードを詳しく解説してください:

{$ARGUMENTS}

## 解説内容

1. **コードの目的**: 何をしているか
2. **ロジックの説明**: 各部分の動作
3. **改善点**: より良い書き方があれば提案

使い方:

/explain
const users = await db.query(
  'SELECT * FROM users WHERE status = ?',
  ['active']
);

このように、コードをコピー&ペーストして即座に解説を得られます。ファイルを開かなくても、気になるスニペットだけをピンポイントで分析できるため非常に便利です。

グローバルコマンド

プロジェクト固有ではなく、自分のすべてのプロジェクトで使いたいコマンドは、ホームディレクトリに配置します。

  • Mac/Linux: ~/.claude/commands/
  • Windows: %USERPROFILE%\.claude\commands\

ここに置いたコマンドは、どのディレクトリからでも呼び出せます。

実践例1:コードレビューコマンド

最もシンプルで実用的な例として、コードレビューコマンドを作ってみましょう。

.claude/commands/review.md:

# Code Review

このプロジェクトのコードレビューを実行してください。

引数が指定された場合はそのファイルを、指定がない場合は git diff の結果(コミット前の変更差分)をレビューしてください。

Target: {$ARGUMENTS}

## レビュー観点

以下の観点でコードをレビューしてください:

1. **バグや潜在的な問題**
    - 型エラー、null/undefined の扱い
    - エッジケースの考慮漏れ
    - 無限ループやメモリリーク

2. **コード品質**
    - 命名の明確さ(変数名、関数名)
    - 関数の責務は単一か
    - 重複コードはないか

3. **セキュリティ**
    - XSS、SQLインジェクションなどの脆弱性
    - 機密情報のハードコーディング
    - 入力値のバリデーション

4. **パフォーマンス**
    - 不要な再レンダリング
    - N+1クエリ問題
    - 最適化の余地

## アウトプット

レビュー結果を以下の形式で出力してください:

- ✅ Good: 良い点
- ⚠️ Warning: 改善推奨
- 🚨 Critical: 必ず修正すべき点

使い方:

# git diff の結果(コミット前の変更差分)をレビュー
/review

# 特定のファイルをレビュー
/review src/lib/utils.ts

重要な補足:

引数なしで /review を実行すると、Claude Codeは git diff を自動的に読み込み、コミット前の変更差分のみをレビューします。これは以下を意味します:

  • git add 済みの変更(ステージング済み)
  • ✅ まだ git add していない変更(作業ディレクトリの変更)
  • ❌ すでにコミット済みのコード(変更がないため対象外)
  • ❌ コミットしていない新規ファイル(git管理外のファイル)

つまり、「ワークスペース全体」ではなく「最後のコミットから何が変わったか」という差分が対象です。プロジェクト全体をレビューしたい場合は、具体的なファイルパスを指定するか、別のコマンドを作成する必要があります。

実践例2:コミットメッセージ生成コマンド

git commitの際に、Conventional Commits形式のメッセージを自動生成するコマンドです。

.claude/commands/commit-message.md:

# Generate Commit Message

変更内容を確認して、Conventional Commits形式のコミットメッセージを生成してください。

## 手順

1. `git diff` または `git diff --staged` を実行して変更内容を確認
2. 変更内容を分析
3. 適切なコミットメッセージを生成

## コミットメッセージ形式

<type>: <subject>

<body>

### Type

- `feat`: 新機能
- `fix`: バグ修正
- `docs`: ドキュメントのみの変更
- `style`: コードの意味に影響しない変更(空白、フォーマット等)
- `refactor`: リファクタリング
- `test`: テストの追加・修正
- `chore`: ビルドプロセスやツールの変更

### ルール

- subject: 50文字以内、命令形、先頭小文字、末尾にピリオドなし
- body: 72文字で折り返し、変更の理由を説明

## 出力

コミットメッセージのみを出力してください(説明や追加コメントは不要)。

使い方:

# 変更をステージング
git add .

# Claudeでコミットメッセージ生成
/commit-message

# 生成されたメッセージをコピーしてコミット
git commit -m "feat: add user authentication feature"

実践例3:テスト追加コマンド(引数付き)

特定のファイルに対してテストを生成するコマンドです。

.claude/commands/test.md:

---
description: Generate tests for a specific file
---

# Add Tests

ユーザが指定したファイル `{$1}` のテストコードを作成してください。

## テスト要件

1.  **フレームワーク**: Vitest + Testing Library
2.  **ファイル名**: `{$1}` の拡張子を `.test.ts` または `.test.svelte` に変更したもの
3.  **カバレッジ**: エッジケースも含めて網羅的に

## コンテキスト

対象ファイルの内容:
!cat {$1}

⚠️ 環境依存の注意:

!cat のようなツールコマンドは、Claude Code CLIやVS Code拡張では動作しますが、一部の環境(Web UIのCodeプロジェクトなど)では動作しない場合があります。

代替案:

環境に依存しない書き方として、引数としてファイル名だけを渡し、Claude側でファイルを読み込むよう指示する方法もあります:

## コンテキスト

まず `{$1}` ファイルの内容を確認してください。

この場合、Claude Codeが自動的にファイルを読み取ります。

使い方:

/test src/lib/calculator.ts

実践例4:RAG的なコマンド(プロジェクト知識の活用)

Claude Codeの最大の強みは、プロジェクト全体のファイルを読み込めることです。この特性を活かして、プロジェクト固有の知識を検索・活用するコマンドを作れます。

ドキュメント検索コマンド

プロジェクトのドキュメントから回答を生成するコマンド:

.claude/commands/docs.md:

---
description: Search project documentation and answer questions
---

# Documentation Search

ユーザーの質問:{$ARGUMENTS}

## 手順

1. `docs/` ディレクトリ内のMarkdownファイルを検索
2. 関連する情報を抽出
3. 質問に対する回答を生成

## 回答形式

- 簡潔な回答(2-3段落)
- 参照元のファイル名を明記
- さらに詳しい情報が必要な場合の案内

使い方:

/docs API認証の仕組みはどうなっていますか?
アーキテクチャガイドコマンド

設計原則やアーキテクチャルールに基づいてコードをチェック:

.claude/commands/design.md:

---
description: Review code against architecture guidelines
config:
    model: claude-opus-4-5 # より深い分析が必要
---

# Architecture Review

提案されたコード:{$ARGUMENTS}

## レビュー手順

1. `docs/architecture.md` の設計原則を確認
2. `CONTRIBUTING.md` のコーディング規約を確認
3. 提案コードが原則に準拠しているか検証

## チェック項目

- レイヤー分離は適切か(presentation / business / data)
- 依存関係の方向性は正しいか
- 命名規則に従っているか
- テスト可能な設計か

## 出力

準拠している点と改善が必要な点を箇条書きで。
検索を組み合わせた高度な例

プロジェクト内のコードパターンを検索して回答:

.claude/commands/find-pattern.md:

---
description: Find code patterns across the project
---

# Find Pattern

検索パターン:{$ARGUMENTS}

プロジェクト内で上記のパターンに一致するコードを検索し、以下を報告してください:

1. **検出箇所**:ファイル名と行数
2. **使用例**:実際のコード例を2-3個
3. **推奨される使い方**:ベストプラクティスがあれば

検索には `grep -r` または `rg` を使用してください。

使い方:

/find-pattern "API_ROUTE"

⚠️ 環境依存の注意:

!grep!rg のようなツールコマンドも、!cat と同様に環境依存があります。環境非依存の代替案として:

プロジェクト内で "{$ARGUMENTS}" パターンを検索してください。

このように自然言語で指示すると、Claude Codeが利用可能なツールを自動選択します。

RAG的コマンドのメリット:

  • 🔍 プロジェクト固有の知識を即座に検索
  • 📚 ドキュメントを読み直す手間を削減
  • 🏗️ 設計原則の一貫性を保つ
  • 🔄 既存のコードパターンを再利用

これらのコマンドは、プロジェクトが大きくなるほど威力を発揮します。特に新メンバーのオンボーディングや、過去の設計判断を確認する際に非常に有用です。

応用編:複雑なワークフローの例

このサイト(tarikicode-svelte)では、AI技術ニュース記事を自動生成する/ai-newsコマンドを運用しています。このコマンドでは:

  • Step 0-1: システム日付を確認し、検索対象期間を算出
  • Step 0-2: 既存記事をチェックして重複を回避
  • Research Phase: 複数回のWebSearchで最新ニュースを収集
  • Deep Dive: 選定したトピックの詳細調査
  • Article Generation: frontmatter付きMarkdown記事を生成

このように、複数のステップを組み合わせた高度なワークフローも実現できます。

ベストプラクティス

失敗しないコマンド設計の型

効果的なコマンドには、共通の構造パターンがあります。以下のテンプレートに従うことで、常に高品質なコマンドを作成できます:

基本テンプレート:

---
description: [コマンドの簡潔な説明]
---

# [コマンド名]

## 1. ゴール(Goal)

[このコマンドが何を生成・実行するか]

## 2. 入力(Input)

[引数、git diff、ファイルなど、何を受け取るか]

- 引数: {$ARGUMENTS}
- コンテキスト: [必要な情報]

## 3. 制約(Constraints)

[守るべきルール・規約]

- プロジェクトのコーディング規約: `STYLE_GUIDE.md`
- 命名規則: キャメルケース
- 最大行数: 関数は50行以内
- [その他の制約]

## 4. 出力形式(Output Format)

[どのような形式で結果を返すか]

- コードブロックのみ(説明なし)
- 箇条書きで3-5項目
- 表形式でまとめる

## 5. 禁止事項(Don'ts)

[やってはいけないこと]

- 冗長な説明を含めない
- 既存のコメントを削除しない
- コード以外の出力をしない

実践例:リファクタリングコマンド:

---
description: Refactor code following project standards
config:
    model: claude-opus-4-5
---

# Refactor Code

## Goal

提供されたコードを、保守性と可読性を向上させる形にリファクタリングします。

## Input

対象コード:{$ARGUMENTS}

## Constraints

- プロジェクトのTypeScript設定(strict mode)に準拠
- 既存のテストが壊れないこと
- 関数は1つの責務のみを持つこと
- 変数名は意図が明確であること
- 不要なコメントは削除、必要なコメントは残す

## Output Format

- 更新後のコードブロックのみを出力
- 変更理由を1-2文で簡潔に説明
- 影響を受ける可能性のあるファイルがあれば列挙

## Don'ts

- 機能を変更しない(リファクタリングのみ)
- 長々とした説明文を含めない
- 「これで完璧です!」のような主観的な表現を使わない

この構造を使うことで:

  • 明確性: Claudeが何をすべきか迷わない
  • 再現性: 誰が実行しても同じ結果
  • 保守性: 後から見てもルールが理解できる
  • 品質: 出力の質が安定する

明確な指示を書く

曖昧な指示ではなく、具体的なアクションを書きましょう:

❌ 悪い例:

コードを良くしてください

✅ 良い例:

以下の観点でコードを改善してください:

1. 関数を50行以下に分割
2. magic numberを定数化
3. エラーハンドリングを追加

出力形式を指定する

「どのような形式で出力してほしいか」を明示すると、結果の品質が向上します:

## 出力形式

- 箇条書きで3-5項目
- 各項目は1-2文で簡潔に
- コード例を含める場合は TypeScript で

プロジェクト固有の情報を含める

コーディング規約、使用しているライブラリ、ディレクトリ構造などをコマンドに含めることで、より精度の高いアウトプットが得られます。

チーム全体でレビューする

コマンドもコードと同じようにレビューしましょう。Pull Requestで追加・修正することで、チーム全体のナレッジが蓄積されます。

まとめ

Claude Codeのカスタムスラッシュコマンドは、開発ワークフローを大幅に効率化できる強力な機能です:

  • 簡単: .claude/commands/ にMarkdownファイルを置くだけ
  • 柔軟: シンプルなコマンドから複雑なワークフローまで対応
  • 共有可能: Gitで管理してチーム全体で活用
  • 進化可能: 実際に使いながら改善していける

まずは簡単なコマンド(コードレビューやコミットメッセージ生成)から始めて、徐々にプロジェクトに合わせてカスタマイズしていくのがおすすめです。

あなたのプロジェクトでも、ぜひカスタムスラッシュコマンドを活用してみてください!

参考リンク

公式ドキュメント

コミュニティリソース