開発メンバーがClaude CodeでPRのCodeRabbitレビューを確認しようとした時の話です。コメント数が多いPRだと、ghコマンドで取得したJSONが大きすぎてツール出力がファイルに退避され、そのファイルを読もうとするとまた大きすぎてさらに別ファイルに退避され……と連鎖して、動作が不安定になるという問題が起きていました。
結局Claudeから「ブラウザでGitHubのPRページを開き、具体的な指摘内容をコピペしてもらうのが一番確実です」と返されたそうです。
そこでClaude Codeのスキルで何とかできないかと思い、作ってみました。
/review-pr 123のようにスラッシュコマンドで呼び出せるカスタムワークフローです。Markdownで手順を書いておくと、Claudeがその通りに動いてくれます。
PRレビューコメントの取得→正規化→表示を3つのシェルスクリプトに分けました。
scripts/ ├── fetch_pr_comments.sh # GitHub APIから3系統のコメントを取得 ├── normalize_pr_comments.sh # 重複排除・重要度分類 → triaged.json └── render_pr_summary.sh # サマリ/全文/重要度別の表示
ポイントはClaudeに巨大なJSONを直接扱わせないことです。シェルスクリプト側でjqを使ってデータを整理し、Claudeには整理済みの結果だけを渡します。
CodeRabbitのコメントには絵文字で重要度が付いています(🔴Critical、🟠Major、🟡Minor)。これをjqで読み取って自動分類し、まずサマリで全体像を見てから、Criticalだけ詳細表示……と段階的に確認できるようにしました。
コメントが多くても「まずCriticalの3件だけ見る」ということができます。
/review-pr 5と打つと、こんな感じでサマリが出ます。
サマリ表示後にClaudeが「Minorの詳細も確認しますか?」と聞いてくれるので、そこからCritical+Majorだけ詳細表示したり、全件の内容を確認したりと、段階的に掘り下げることもできます。
まだ十数件程度のコメントがあるPRでしか試せていないので、もっとコメント数が多いPRでも問題なく使えるかはこれから検証していくところです。
ただ、元々の問題は「APIレスポンスの巨大JSONがそのままClaudeのツール出力に流れてしまう」ことでした。シェルスクリプト側でファイルに保存・整理してからClaude側に渡すこのアプローチなら、コメント数が増えても耐えられるのではと期待しています。
Claude Codeのスキルは割と簡単に作れるので、今後も開発フローの中で自動化できそうなものを見つけたら、スキル化を試していきたいと思います。