Greptile と Claude Code でつくるコードレビュー改善 AI Agent

この記事は LayerX AI Agent ブログリレー 35 日目の記事です。

こんにちは。バクラク申請・経費精算チームの @ktr です。
私たちのプロダクトには日々、お客様からお問い合わせをいただいており、これらをもとにプロダクトの品質を改善する取り組みを行っています。

今回は、AI Agent を活用したコード品質向上の取り組みについてご紹介します。

品質改善の取り組みと Greptile

そもそも、お客様からのお問い合わせでバグが発覚するのは望ましくありません。開発プロセスのより早い段階——例えばコードレビューやテストの段階——でバグを発見したいと考えています。とくにプログラミングミスはその最たる例です。
私たちのチームでは直近のお問い合わせから、とくに改善・シフトレフトの余地があったと考えられるバグをピックアップし、Next Action を決めて取り組みを進めています。

その Next Action の一つが、AI コードレビューサービスの Greptile にカスタムルールを追加することです。同様の問題が起きたときに、コードレビューで検出できるようにする取り組みを行いました。

Greptile とは

Greptile は AI を活用したコードレビューサービスです。人間のようにコードを理解し、改善点を提案してくれます。Claude Code や GitHub Actions でもコードレビューは可能ですが、Greptile の特徴は人間からのフィードバックをもとに学習し、レビューの質を向上させられる点にあります。

Pull Request をトリガーにして自動でコードレビューを行い、コメントを残していってくれます。たとえば typo を指摘するレビューは次のようになります。

大文字・小文字の一貫性についての指摘

より複雑な例として、Slack の署名検証の考慮漏れに関するレビューがありました。Greptile はグラフベースのインデックスを構築しており、ファイル単体や関数単体ではなく、呼び出し前後の関係まで考慮したレビューが可能です。詳しくは Greptile の公式ドキュメント をご覧ください。

最近驚いたレビューの一つ

これらのレビューには 👍 / 👎 でフィードバックでき、👎 が何度もつくと学習し、そのようなレビューを行わなくなります。

Greptile では独自のレビュールールを作成できます。次の会話は、レビューの途中で気づいたことを Greptile にメンションしてルール化してもらっている様子です。

このように、柔軟かつ簡単にルール化できます。もちろん 100% の精度でレビューしてくれるわけではありませんが、静的解析するほどでもない、あるいは曖昧で機械的な判定が難しいケースでは抜群の効果を発揮します。

レビュールール生成の自動化

話を品質改善に戻します。品質改善の Next Action の一つとして Greptile へのカスタムルール追加を行っていましたが、この一連の作業を自動化できるのではと考え、実際に仕組みをつくってみました。構成は非常にシンプルで、使い慣れている Claude Code と Greptile をはじめとする各サービスの MCP サーバを使うだけです。

今回は社内のお問い合わせ運用に沿って次の MCP サーバ・ツールを使いました:

  • Notion MCP (リモート MCP 版)
  • Greptile MCP
    • カスタムルールを作成するために必要で、公式から提供されています
  • gh コマンド (GitHub MCP ではない)
    • バグが入ったときの Pull Request や修正したときの Pull Request を取得します
    • MCP サーバを使わない強い理由はないですが、使いたい大きなメリットもなかったので普段から gh コマンドを使っています

ではさっそく Claude Code からカスタムルールをつくれるようにしていきます。

Agent Skills を構成する

Claude Code で再利用可能な仕組みをつくる場合、Slash Command と最近リリースされた Agent Skills の2つの方法があります。公式ドキュメントには、この2つの比較が記載されています。

各々をいつ使用するか

Slash Command を使用する場合:

  • 同じプロンプトを繰り返し呼び出す
  • プロンプトが 1 つのファイルに収まる
  • いつ実行するかについて明示的な制御が必要

Agent Skills を使用する場合:

  • Claude が機能を自動的に検出する必要がある
  • 複数のファイルまたはスクリプトが必要
  • 検証ステップを含む複雑なワークフロー
  • チームが標準化された詳細なガイダンスが必要

docs.claude.com

今回は複数の MCP を利用し、参照したいドキュメントもあったので拡張を見越して Agent Skills を選びました。
試行錯誤の結果、ディレクトリ構成は次のようになりました。

skills
└── create-greptile-custom-context-from-notion
    ├── greptile-best-practice.md
    ├── greptile-custom-context-examples.md
    └── SKILL.md

SKILL.md は次のような内容です:

---
name: create-greptile-custom-context-from-notion
description: 問い合わせの概要・調査ログ・対応を集約する Notion ページや、そこから辿れる問題の Pull Request や修正の Pull Request から、コードレビュー化すべき内容を抽出し、必要に応じて Greptile カスタムコンテキストを作成する
allowed-tools: Bash(gh:*), AskUserQuestion, mcp__notion__notion_fetch, mcp__greptile__create_custom_context
---

# Create Greptile Custom Context from Notion

Notion に記載された内容や、そこから辿れる GitHub Pull Request の情報を基に、Greptile のカスタムコンテキストを作成します。
Notion ページは主に顧客からの問い合わせページを想定しており、そこから辿れる GitHub Pull Request を参照し、レビュールールとして登録すべきものを抽出します。  

## Instructions

1. Notion ページを取得して内容を理解
2. Notion ページに紐づく Pull Request を gh コマンドで取得
3. 取得した Pull Request での修正内容を分析
4. プロジェクトの一般的なコードレビューの観点として追加すべきであれば Greptile カスタムコンテキストの内容を用意し、**AskUserQuestion ツールで登録するカスタムコンテキストについてユーザーに必ず確認する**
5. ユーザの承認を得たら、Greptile カスタムコンテキストとして登録。ユーザの承認なしに登録しないこと

## Best Practices
- Notion ページに GitHub Pull Request が紐づいていない場合はユーザに確認を取る
- AskUserQuestion ツールを活用して、ユーザーに確認を取ることで、不要なカスタムコンテキストの登録を防ぐ
- [Greptile カスタムコンテキストのベストプラクティス](greptile-best-practice.md) を理解して、効果的なレビュールールを作成する。紹介されている例に沿ってルールを作成する
- 生成する Greptile カスタムコンテキストはそのプログラミング言語や monorepo で広く活かせるルールとなるように心がける
- カスタムコンテキストの内容に Notion や Pull Request のリンクや、問い合わせの概要などの詳細は含めない。レビュールールとして有効な内容に留める

## Version History
- v1.0.0 (2025-10-29): 初期リリース

基本的には Agent Skills のドキュメント に沿ってシンプルに記述していますが、いくつかポイントがあります。

一つ目は、Greptile に関するマークダウンファイルを SKILL.md から参照している点です。効果的なカスタムコンテキストを作成するため、公式ドキュメントのベストプラクティスや具体例を記述しています。

二つ目は、AskUserQuestion ツールを使っている点です。これは Claude Code 組み込みのツールで、ユーザーに追加で質問したり、追加情報を提供してもらえるインタラクション性を提供します。質の悪いルールが生成され、そのまま Greptile に登録されてしまうと、ルールにノイズが蓄積されていきます。そこで、このツールを使って登録前にルールを確認し、必要に応じて追加の指示を提供できるようにしています。

動作を表現したシーケンス図は次のとおりです:

sequenceDiagram
    participant User
    participant ClaudeCode as Claude Code
    participant Skill as create-greptile-custom-context-from-notion
    participant Notion as Notion API
    participant GitHub as GitHub (gh command)
    participant Greptile as Greptile API
    
    User->>ClaudeCode: skill を起動
    ClaudeCode->>Skill: skill を実行
    Skill->>Notion: Notion ページを取得
    Notion-->>Skill: ページ内容を返却
    Skill->>Skill: 内容を理解・分析
    Skill->>GitHub: 紐づく PR を取得
    GitHub-->>Skill: PR 情報と修正内容を返却
    Skill->>Skill: 修正内容を分析
    Skill->>User: カスタムコンテキストの内容を確認依頼
    User-->>Skill: 承認
    Skill->>Greptile: カスタムコンテキストを登録
    Greptile-->>Skill: 登録完了
    Skill-->>ClaudeCode: 完了報告
    ClaudeCode-->>User: 結果を表示

動作確認

動作確認をしてみます。Agent Skills は Slash Command と異なり、モデルから自動的に利用される仕組みです。「(Notion ページの URL) から Greptile カスタムコンテキストをつくりたい」と入力するだけで、自動的に Agent Skills が呼び出されます。

今回は、実際のお問い合わせで発覚したバグを例にしました。データ取得処理を非同期化したことで生じたデグレです。SKILL.md の手順に沿って実行すると、AskUserQuestion が表示されました。生成されたルールは個別の実装に寄りすぎず、適度に一般化されています。また、登録予定のルール候補が複数表示され、3 を選択すれば追加の指示も提供できます。

実際に動かしてみた際の様子

AskUserQuestion で承認後、自動で Greptile へのルール登録まで行われました 👏

Claude Agent SDK への移行

Claude Agent SDK を使った構成への移行も簡単です。Claude Agent SDK では、今回利用した Agent Skills に加え、Subagents、Hooks、Plugins など、Claude Code で利用できる機能をそのまま扱えます。

今回は Claude Code への入力をトリガーにしていますが、SDK を使うことでインタラクションの面として Slack アプリを使うようにしたりと自由に AI Agent を構成できるようになります。
Claude Code で試行錯誤して安定して動くようになったら、すぐに Claude Agent SDK へ移行できるのもこの一連の仕組みの強みの一つです。

まとめ

今回は、Greptile と Claude Code を活用した AI Agent を構築し、システムの効率的な改善を実現しました。この仕組みを使えば、過去のお問い合わせページから対応内容を把握し、問題のあるコードと修正コードを理解した上で、適切なレビュールールの生成・登録まで自動で行えます。

また、Claude Code 組み込みの AskUserQuestion を使えば、ある程度 Agent に任せつつ、重要なポイントでは人間の確認や追加情報の提供を挟む Human-in-the-loop を導入できます。

ここまでお読みいただきありがとうございました。私たちは、プロダクトに組み込む AI Agent と、私たち自身の業務をラクにする AI Agent の両方を開発しています。興味があればぜひ一度お話ししましょう!

layerx.notion.site




元の記事を確認する

関連記事