Claude Projectsを使って雑に1次レビューしてもらう
読んでほしい方
- 業務でLLM使ってるけど、なんだかんだ質問して答えてもらうぐらいしか使えてないなあ...という方
- いきなりGithubActionsに入れるとかは大袈裟なので、とりあえず手元でAIレビューを動かしてみたい方
Claude Projectsを設定
Claude Projectsとは
Claude ProjectsはProjectごとにファイルやテキストを渡すことで、個別のコンテキストを注入することができる機能です。
必要な情報を入れておいてRAGシステムのように使うことや、AIへの指示を入れておいて回答内容をカスタマイズしておくこと等ができます。
コンテキストを入れる
Project画面の右「Project knowledge」から入れることができます。
ファイルをアップすることもできますし、テキストを直接GUIで記入することもできますが、今回はプロンプトを渡せれば良いのでテキスト入力を使いましょう。
コードレビューさせるプロンプトについて
よく言われていますが、プロダクト特有のドメイン知識が必要なところをレビューさせるのは難しいと感じています。
例えば、Claude Projectにリポジトリのコードを丸ごと入れたりすればある程度全体を把握してレビューしてくれますが、それでも「社内の先輩エンジニア」という感触には程遠いですし、人間側が頑張る必要があるためドメイン知識が必要なレビューはさせていません。
従って、以下のようにAIと分担することを意識しています。
- AI:ケアレスミスやパフォーマンス的に不利な処理の書き方がないかの確認(diffだけ見れば確認できる内容)
- 人間:設計・方針や仕様など大枠の確認(ドメイン知識やチームの情報が必要な内容)
私は以下のようなプロンプトを入れています。
テンプレートで回答形式を固定させるようにしていますが、それ以外は頑張っていません。「問題あれば教えてくれ」ぐらいのことしか書いてないですね。
- プロダクト名など、プロダクト全体で使われる特有の名前の説明
- 開発環境の情報
例)
開発環境は以下の通り
- React:v18.3.1
- ReactNative:v0.74.5
- typescript:v5.5.4
- レビュー用のプロンプト
例)
コードのdiff情報が渡されるので、プログラマとしてコードレビューを行なってください。
コードレビューは以下テンプレートに沿って回答してください
【回答テンプレート】
\```
## パフォーマンス
{パフォーマンスに問題があるコードがある場合は、その修正方法と併せて該当コードを記載する。問題がない場合は「問題なし」とのみ記載する。}
## セキュリティ
{セキュリティに問題がある場合は、その修正方法と併せて該当コードを記載する。問題がない場合は「問題なし」とのみ記載する。}
## 不要コード
{不要なコードが残存している場合はその部分を列挙する。問題がない場合は「問題なし」とのみ記載する。}
## 命名
{関数名や変数名がその振る舞いと一致していないものがある場合は、正しい命名候補と併せてその部分を列挙する。問題がない場合は「問題なし」とのみ記載する。}
## 仕様についての確認事項
{仕様について把握できる範囲で確認すべき点を列挙する}
\```
PRのdiff情報を取得
Github CLI
Claudeに渡すPRの情報を取得するためにGitHub CLI (ghコマンド)を使っていきます。
インストール方法:https://docs.github.com/ja/github-cli/github-cli/quickstart
PRの情報とdiffをまとめる
以下のような関数を.zshrc
等に書くことで、コマンド一発で対象のPRの情報とfile diffを合体させたものをクリップボードにねじ込みます。
PRのタイトルと説明文から、どういう変更をしようとしているのかもある程度渡したいためです。
gd() {
(gh pr view "$1" && echo "\n=== DIFF ===\n" && gh pr diff "$1") | pbcopy
}
# 使い方
gd 123
# 対象のリポジトリのフォルダ内で使う
# 数字はPR番号
Claudeにレビューしてもらう
あとは、上記のコマンドで取得した情報をProjectにペーストするだけで、プロンプトに沿ってレビューしてくれるようになります!
自分のPRの確認にも使えるので、ぜひお試しください。
Discussion