⚡️

Claude Codeとghコマンドで作るカスタムスラッシュコマンドn選

に公開

こんにちは、つくぼし(tsukuboshi0755)です!

皆さんはClaude Codeを使ってますか?

最近AIエージェントは開発にはなくてはならないツールになりつつありますが、その内ターミナルで動くClaude Codeの真骨頂はカスタムスラッシュコマンドにあるのではないかと考えています。

そしてこのカスタムスラッシュコマンドは、GitHubを操作するghコマンドと非常に相性が良い事で有名です。

そこで今回は、私がよく使うClaude Codeとghコマンドを用いた便利なカスタムスラッシュコマンドを紹介します!

スラッシュコマンドとは

始めにClaude Codeのスラッシュコマンドについて簡単に説明します。

Claude Codeで指示をする代わりに、/から始まるコマンドを実行すると、事前に定義された特定の処理を実行できます。

スラッシュコマンドには「ビルトインスラッシュコマンド」と「カスタムスラッシュコマンド」があります。

ビルトインスラッシュコマンドは事前設定不要で利用できるコマンドであり、例えば/reviewコマンドを実行するとコードレビューを実行する事ができます。

一方で、カスタムスラッシュコマンドはユーザーが独自に定義する事で初めて利用できるようになるコマンドです。

.claude/commands/配下にMarkdownファイルを配置することで、独自のカスタムスラッシュコマンドを定義し、利用することができます。

スラッシュコマンドの詳細については、以下の公式ドキュメントも合わせてご覧ください。

https://docs.anthropic.com/en/docs/claude-code/slash-commands

今回はこのカスタムスラッシュコマンドを活用して、GitHubの操作を自動化する便利なコマンドを紹介します。

前提条件

今回紹介するカスタムスラッシュコマンドを使用するには、Claude Codeの他にghコマンドでGitHubの認証を済ませる必要があります。

以下の記事を参考に、事前にghコマンドのインストール及びGitHubの認証を実施してください。

https://zenn.dev/akasan/articles/08baf7b0ee96ec

コマンドその①:自動PR作成

初めに紹介するのは、ローカルでコミットした内容を元に自動でPRを作成するコマンドです。

カスタムスラッシュコマンドの定義内容は以下のとおりです。

https://github.com/tsukuboshi/dotfiles/blob/main/aiagent/commands/create-pr.md

この処理を実施するカスタムスラッシュコマンド自体は、実際に作成して使用していらっしゃる方も多いのではないでしょうか。

人によって作り方が多少異なるのですが、私は必要に応じてオプショナル引数としてPR番号を指定できる形でコマンドを定義しています。

/create-pr <PR番号(オプション)>

このコマンドはDraft PRとして作成するため、後から修正しても問題ありません。

またPR作成後に必要な手動修正が最小限で済むように、以下の特徴を持っています。

  • assigneeに自身のGitHubアカウントが自動設定される
  • もしPR_TEMPLATEで指定されたパスにPRテンプレートファイルが存在する場合、そのテンプレートに基づいてPR内容が生成される
  • もし引数ARGUMENTにPR番号が指定された場合、そのPRを踏襲した上でPRタイトル及び内容が生成される

さらにPR作成後にブラウザが自動で開かれ、すぐにプレビューできるようになっています。

例えばPRテンプレートファイルが以下のように定義したとします。

.github/PULL_REQUEST_TEMPLATE.md
## 概要
<!-- このPRで何を実装・修正したか簡潔に記述してください -->

## 変更内容
<!-- 主な変更点を箇条書きで記述してください -->

## 変更の種類
<!-- 該当するものにチェックを入れてください -->
- [ ] バグ修正
- [ ] 新機能
- [ ] 破壊的変更
- [ ] ドキュメント更新
- [ ] リファクタリング
- [ ] パフォーマンス改善
- [ ] テスト追加・修正

## レビュアーへの注意事項
<!-- レビュー時に特に確認してほしい点があれば記載してください -->

その後開発作業を実施した後に/create-prコマンドを実行すると、以下のように自身のGitHubが自動アサインされた状態でDraft版PRが作成され、そのままブラウザ画面まで自動で開いてくれます。

必要に応じてPR内容を手動で修正した後、問題なければReady for Reviewを押してPRをDraftからOpenに変更してください。

なお複数のコミットが存在する場合、以下のように事前にrebaseでfixupを用いてコミットを1つにまとめてから自動PR作成コマンドを使用する事を推奨します。

直前のコミット内容を1つにまとめる事で、新規PRの説明文をより正確に生成できるようになります。

https://zenn.dev/n_haru2/articles/685379b78e7776#case2%3A-複数の作業コミットを1つにまとめる

コマンドその②:自動PRレビュー

次に紹介するのは、既に存在するPRの変更内容をプロンプトファイルであるCLAUDE.mdを元に、AIにレビューさせるコマンドです。

カスタムスラッシュコマンドの定義内容は以下のとおりです。

https://github.com/tsukuboshi/dotfiles/blob/main/aiagent/commands/review-pr.md

これはPR番号を引数に指定して実行するコマンドとなっており、指定されたPRのコードレビューを自動で実行します。

/review-pr <PR番号>

元々このコマンドを作ったきっかけとして、なるべくローカルやGitHubを汚さないまま、AIによるコードレビューを確認したい場面が度々ありました。

例えば特定のブランチをgit pullしてからgit show HEADで確認する形であればローカルでAIにレビューさせる事ができますが、その場合PRが増える度に実行するとローカルでのブランチ管理が煩雑になります。

またClaude Code Actionsを使用する事でGitHubの中で自動レビューできますが、今度はGitHub上のコメント量が増えてしまい追うのが大変になるという問題が生じてしまいます。

そんな時に/review-prコマンドを使用する事で、ローカルやGitHubを汚さないまま、気軽に特定のPRに対してAIによるコードレビューを実行できるようになります。

コマンドその③:PRコメントによるプロンプト自動更新

最後に紹介するのは、PRに追加されたレビューコメントを参照し、その内容を元にプロンプトファイルであるCLAUDE.mdを自動更新するコマンドです。

カスタムスラッシュコマンドの定義内容は以下のとおりです。

https://github.com/tsukuboshi/dotfiles/blob/main/aiagent/commands/update-prompt.md

これはPR番号を引数に指定して実行するコマンドとなっており、PR内で他の方がつけたレビューコメントを使用してプロンプトを更新し、次回からAIの精度をより高める事ができるようになります。

/update-prompt <PR番号>

注意点として、GitHubのPRコメントの取得方法はコード内とコード外で異なるため、別々に取得する必要があります。

GitHubでコメントを取得するコメントとしては、以下のコマンドが有名です。

gh pr view <PR番号> --comments

しかしこのコマンドは、上のコード外のコメントのみしか取得できず、下のコードに記載したコメントについては取得できないという欠点があります。

下のコード内のコメントについては、代わりに以下のコマンドで取得できるようになっています。

gh api "/repos/<GitHubオーナー名>/<GitHubリポジトリ名>/pulls/<PR番号>/comments"

上記2つのコマンドを組み合わせる事で、PR内のすべてのコメントを取得し、プロンプトファイルへ反映できるようにしています。

例えば以下のように、GitHub上でコード外とコード内のPRコメントが各々追加されたとします。

その上で該当のPR番号を引数に指定した/update-promptコマンドを実行すると、すべてのPRコメントを確認した上で、CLAUDE.md内のプロンプトで以下の内容が追加される事を確認できました。

CLAUDE.md
## 注意事項

### メタタグ設定
- index.htmlのtitleタグは「ToDoアプリ」のみのシンプルな表記とする
- OGPやTwitterCardなどのメタタグは不要

### 環境変数
- 本番URLなどの環境依存の値は環境変数(`import.meta.env.VITE_*`)で管理する
- プレースホルダーURLは使用しない

このコマンドを様々なPRに対して継続的に使用する事で、PRコメントを元にプロンプトを徐々に改善し、AIの精度を簡単に高める事ができるようになります。

まとめ

今回は、Claude Codeとghコマンドを用いた便利なカスタムスラッシュコマンドを紹介しました。

Claude Codeとghコマンドは非常に相性が良く、組み合わせる事でGitHubの操作を大幅に効率化できます。

他にもこの組み合わせで便利なカスタムスラッシュコマンドがあれば、取り入れたいのでぜひコメントで教えて頂けると大変嬉しいです!

以上、つくぼし(tsukuboshi0755)でした!

Discussion