⚡️

Claude Codeのカスタムスラッシュコマンドでコード変更を自動分析してGitHub作業を効率化する

に公開

はじめに

GitHub での開発作業で、ブランチ名の命名やコミットメッセージの作成、PR 概要の記述に時間を取られていませんか?

Claude Code のカスタムスラッシュコマンド機能を使えば、現在のコードの変更を自動で読み取って、適切なブランチ名、コミットメッセージ、PR 概要を提案してくれます。

この記事では、コード変更を自動分析して GitHub 作業を効率化するカスタムスラッシュコマンドの実装方法を紹介します。

カスタムスラッシュコマンドとは

カスタムスラッシュコマンドは、/で始まるコマンドを自分で定義できる機能です。特に、現在のコードベースや変更内容を自動で読み取って、適切な提案を生成できるのが特徴です。

例えば:

  • /branch - 現在の変更内容からブランチ名を提案
  • /commit - 変更されたファイルからコミットメッセージを提案
  • /pr - 変更内容から PR 概要を生成

基本的な作り方

1. コマンドファイルを作る

Claude Code では、Markdown ファイルとしてコマンドを定義します。以下の 2 つの場所に配置できます:

プロジェクトコマンド(チームと共有):

  • 場所:.claude/commands/
  • 例:.claude/commands/branch.md

個人コマンド(全プロジェクトで利用):

  • 場所:~/.claude/commands/
  • 例:~/.claude/commands/commit.md

2. 基本的なコマンドファイルの例

まず、簡単な例から始めましょう。~/.claude/commands/hello.mdを作成:

---
description: 挨拶を返します
---

こんにちは{{input}}!何かお手伝いできることはありますか?

3. 使ってみる

Claude Code で/hello テストと入力すると、設定したプロンプトが実行されます。

> /hello is running… テスト

⏺ こんにちは!テストについて何かお手伝いできることはありますか?

コード変更を自動分析するコマンドを作る

ブランチ名提案コマンド(コード変更から自動分析)

~/.claude/commands/branch.mdを作成:

---
description: 現在のコード変更からブランチ名を提案します
allowed-tools: Bash(git status:*), Bash(git diff:*)
---

## コンテキスト

現在の Git の状態と変更内容を確認します:

- 現在のブランチ: !`git branch --show-current`
- 変更されたファイル: !`git status --porcelain`
- 変更内容の詳細: !`git diff HEAD`

## タスク

上記の変更内容を分析して、適切な Git ブランチ名を提案してください。

**分析対象:**

- 変更されたファイル
- 追加・修正・削除された機能
- 変更の種類(新機能、バグ修正、リファクタリング等)

**命名規則:**

- 機能追加: feature/機能名
- バグ修正: fix/内容
- リファクタリング: refactor/対象
- ドキュメント: docs/内容

**提案するブランチ名と理由:**

使い方:

/branch

出力例:

分析結果:
- 新規ファイル: src/auth/login.js (ユーザーログイン機能)
- 新規ファイル: src/auth/jwt.js (JWT認証機能)
- 修正ファイル: src/api/users.js (ユーザーAPIに認証機能を追加)

提案するブランチ名:feature/user-authentication

理由:
- 新機能の追加(ユーザー認証機能)なので「feature/」プレフィックスを使用
- 機能名は「user-authentication」で認証機能であることが明確
- 複数の認証関連ファイルが追加・修正されているため、包括的な機能名を選択

コミットメッセージ提案コマンド(コード変更から自動分析)

~/.claude/commands/commit.mdを作成:

---
description: 現在のコード変更からコミットメッセージを提案します
allowed-tools: Bash(git status:*), Bash(git diff:*)
---

## コンテキスト

現在の Git の状態と変更内容を確認します:

- 変更されたファイル: !`git status --porcelain`
- 変更内容の詳細: !`git diff HEAD`
- ステージングされた変更: !`git diff --cached`

## タスク

上記の変更内容を分析して、適切なコミットメッセージを提案してください。

**分析対象:**

- 変更されたファイルの内容
- 追加・修正・削除された機能
- 変更の影響範囲

**コミットメッセージの規則:**

- 50 文字以内の簡潔な要約
- 現在形で記述
- 動詞で始める(add, fix, update, refactor, docs 等)

**提案するコミットメッセージと理由:**

使い方:

/commit

出力例:

分析結果:
- 新規追加: ユーザーログイン機能(JWT認証含む)
- 新規追加: パスワードハッシュ化機能
- 修正: ユーザーAPIに認証エンドポイントを追加

提案するコミットメッセージ:add user authentication with JWT and password hashing

理由:
- 新機能追加なので「add」で開始
- 主要な機能(user authentication)を明記
- JWT認証とパスワードハッシュ化も含まれていることを示す
- 50文字以内で簡潔

PR 概要生成コマンド(コード変更から自動分析)

~/.claude/commands/pr.mdを作成:

---
description: 現在のコード変更からPR概要を生成します
allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git log:*)
---

## コンテキスト

現在の Git の状態と変更内容を確認します:

- 変更されたファイル: !`git status --porcelain`
- 変更内容の詳細: !`git diff HEAD`
- 最近のコミット履歴: !`git log --oneline -5`

## タスク

上記の変更内容を分析して、PR 概要を生成してください。

**分析対象:**

- 変更されたファイルの詳細
- 追加・修正・削除された機能
- 技術的な変更点
- 影響を受ける他の機能

**PR 概要の構成:**

## 概要

変更の目的と概要

## 変更内容

- 具体的な変更点
- 追加・修正・削除された機能

## 技術的な変更点

- 実装の詳細
- 使用した技術・ライブラリ

## テスト

- 実施したテスト内容
- 動作確認項目

## その他

- 注意事項
- 関連 Issue

**PR 概要:**

使い方:

/pr

出力例:

## 概要
ユーザー認証機能を実装し、セキュアなログイン・ログアウト機能を提供します。

## 変更内容
- ユーザーログイン機能の追加(src/auth/login.js)
- ユーザーログアウト機能の追加(src/auth/logout.js)
- JWTトークンによる認証機能の実装(src/auth/jwt.js)
- パスワードのハッシュ化処理の追加(src/auth/password.js)
- ユーザーAPIに認証エンドポイントを追加(src/api/users.js)

## 技術的な変更点
- JWT(JSON Web Token)を使用した認証システム
- bcryptライブラリを使用したパスワードハッシュ化
- Express.jsミドルウェアとして認証機能を実装
- 環境変数による設定管理

## テスト
- ログイン機能の動作確認(正常ログイン、認証失敗)
- ログアウト機能の動作確認
- JWTトークンの有効性確認
- パスワードハッシュ化の検証
- 認証失敗時のエラーハンドリング確認

## その他
- セキュリティ上の考慮事項として、パスワードはbcryptでハッシュ化
- JWTトークンの有効期限は24時間に設定
- 環境変数JWT_SECRETの設定が必要
- 関連Issue: #123

高度な機能

フロントマターの活用

コマンドファイルの先頭でメタデータを指定できます:

---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git diff:*)
argument-hint: [message]
description: 現在のコード変更からコミットメッセージを提案します
model: haiku
---

引数の使用

$ARGUMENTSプレースホルダーを使って動的な値を渡せます:

---
description: 特定のIssue番号を参照してPR概要を生成します
---

Issue #$ARGUMENTS の実装内容を分析して PR 概要を生成してください。

変更内容の確認: !`git diff HEAD`

使い方:

/pr 123

ファイル参照

@プレフィックスでファイルの内容を参照できます:

---
description: 特定のファイルの変更を分析します
---

@src/auth/login.js の実装を確認して、適切なコミットメッセージを提案してください。

実際の使用例

開発フローでの活用

  1. 機能開発完了後

    /branch
    

    → 変更されたファイルを自動分析してfeature/user-authenticationを提案

  2. コミット時

    /commit
    

    → 変更内容を自動分析してadd user authentication with JWT and password hashingを提案

  3. PR 作成時

    /pr
    

    → 変更内容を自動分析して詳細な PR 概要を生成

コツと注意点

プロンプトの書き方のコツ

  1. 分析対象を明確にする

    • 変更されたファイル、追加・修正・削除された機能を具体的に指定
  2. 出力形式を統一する

    • 理由や分析結果も含めて出力するよう指示
  3. Bash コマンドを活用する

    • !プレフィックスで Git コマンドを実行し、結果を分析に活用

よくある失敗

  • 分析対象が曖昧 → 具体的に何を分析するか指示する
  • 出力形式が不統一 → 期待する出力形式を明確に指定する(PR テンプレートを用意する等)
  • 権限設定の不備allowed-toolsで必要な Bash コマンドを許可する

まとめ

Claude Code のカスタムスラッシュコマンドは、以下の手順で簡単に作れます:

  1. コマンドファイルを作る (.claude/commands/または~/.claude/commands/)
  2. Markdown 形式でプロンプトを記述
  3. 使ってみる (/コマンド名)

特に、現在のコード変更を自動分析する機能により、開発効率が大幅に向上します。手動で変更内容を説明する必要がなく、Claude Code が自動でコードを読み取って適切な提案をしてくれるからです。

これで、GitHub での開発作業がより効率的になります!

参考

ispec inc.

Discussion