メインコンテンツへスキップ
このチュートリアルでは、GitHub Actions で Cursor CLI を使ったコードレビューの設定方法を紹介する。ワークフローはプルリクエストを解析し、問題を検出し、コメントでフィードバックを投稿する。
ほとんどのユーザーには、代わりに Bugbot の利用をおすすめする。Bugbot はセットアップ不要で、マネージドな自動コードレビューを提供する。この CLI アプローチは、機能の検証や高度なカスタマイズに役立つ。
プルリクエストでインラインコメントを示す自動コードレビューの実行例

認証の設定

GitHub Actions で Cursor CLI を認証するには、API キーとリポジトリのシークレットを設定してね。

エージェントの権限を設定する

エージェントが実行できるアクションを制御するための設定ファイルを作成しよう。これで、コードのプッシュやプルリクエストの作成といった意図しない操作を防げる。 リポジトリのルートに .cursor/cli.json を作成:
{
  "permissions": {
    "deny": [
      "Shell(git push)",
      "Shell(gh pr create)",
      "Write(**)"
    ]
  }
}
この設定により、エージェントはファイルを読み取り、コメントには GitHub CLI を使えるけど、リポジトリを変更することはできない。設定の詳細は permissions reference を見てね。

GitHub Actions のワークフローを構築する

それじゃあ、ワークフローをステップごとに作っていこう。

ワークフローのトリガーを設定する

.github/workflows/cursor-code-review.yml を作成して、pull request で実行されるように設定しよう:
name: Cursor コードレビュー

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

jobs:
  code-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    
    steps:

リポジトリをチェックアウト

プルリクエストのコードにアクセスできるよう、チェックアウトの手順を追加しよう:
- name: リポジトリのチェックアウト
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
    ref: ${{ github.event.pull_request.head.sha }}

Cursor CLI をインストールする

CLI のインストール手順を追加:
- name: Cursor CLI のインストール
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

レビューエージェントを設定する

完全なレビュー手順を実装する前に、まずレビュー用プロンプトの構造を押さえよう。このセクションでは、エージェントにどう動いてほしいかをまとめる: 目的: エージェントには、現在の PR diff をレビューして、明確で重大度の高い問題だけをフラグし、変更行にのみごく短いインラインコメント(1〜2文)を残し、最後に簡潔なサマリーを付けてほしい。これでシグナルとノイズのバランスを保てる。 フォーマット: コメントは短く、要点だけにする。スキャンしやすくするために絵文字を使い、最後にレビュー全体のハイレベルなサマリーがほしい。 送信: レビューが完了したら、レビューで見つかった内容に基づく短いコメントを含めてほしい。エージェントは、インラインコメントと簡潔なサマリーを含む単一のレビューを送信すべき。 エッジケース: 次に対応する必要がある:
  • 既存コメントの解決: 対応済みなら完了としてマークする
  • 重複回避: 同様の指摘が同一行または近傍にすでにある場合はコメントをスキップする
最終プロンプト: 上記の振る舞い要件をすべて組み合わせて、フォーカスされた実行可能なフィードバックを生成する ではレビューエージェントのステップを実装しよう:
- name: コードレビューを実行
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
    GH_TOKEN: ${{ github.token }}
  run: |
    cursor-agent --force --model "$MODEL" --output-format=text --print "GitHub Actions のランナー上で自動コードレビューを実行している。gh CLI は GH_TOKEN で認証済みで利用可能。プルリクエストにコメントしてOK。
    
    コンテキスト:
    - Repo: ${{ github.repository }}
    - PR Number: ${{ github.event.pull_request.number }}
    - PR Head SHA: ${{ github.event.pull_request.head.sha }}
    - PR Base SHA: ${{ github.event.pull_request.base.sha }}
    
    目的:
    1) 既存のレビューコメントを再確認し、対応済みであれば「resolved」と返信
    2) 現在の PR の差分をレビューし、明確で重大度の高い問題のみを指摘
    3) 変更行にのみ非常に短いインラインコメント(1~2文)を残し、最後に簡潔なサマリーを付ける
    
    手順:
    - 既存コメントの取得: gh pr view --json comments
    - 差分の取得: gh pr diff
    - 以前報告した問題が近傍の変更で修正されたと見受けられる場合は、次のように返信: ✅ この問題は最近の変更で解消されたようです
    - 重複回避: 同様のフィードバックが同じ行付近に既にある場合はスキップ
    
    コメントルール:
    - インラインコメントは合計最大10件まで。最も重要な問題を優先
    - 1コメントにつき1件の問題。正確に変更行に付与
    - 口調は自然で、具体的かつ実行可能に。自動化や高確度である旨は言及しない
    - 絵文字の使用: 🚨 重大 🔒 セキュリティ ⚡ パフォーマンス ⚠️ ロジック ✅ 解決 ✨ 改善
    
    提出:
    - インラインコメントと簡潔なサマリーを含むレビューを1件提出
    - 次のみ使用: gh pr review --comment
    - 使用しない: gh pr review --approve または --request-changes"
.
├── .cursor/
│   └── cli.json
├── .github/
│   └── workflows/
│       └── cursor-code-review.yml

レビュアーをテストしよう

ワークフローが正しく動作し、エージェントが絵文字付きのフィードバックでレビューコメントを投稿することを確認するために、テスト用のプルリクエストを作成しよう。
特定の行へのインラインフィードバックと絵文字付きの自動レビューコメントが表示されたプルリクエスト

次のステップ

これで自動コードレビューシステムが動くようになった。次の拡張も検討してみて:
  • CI の失敗を修正するための追加ワークフローをセットアップ
  • ブランチごとに異なるレビュー レベルを設定
  • チームの既存のコードレビュー プロセスと統合
  • ファイルタイプやディレクトリごとにエージェントの動作をカスタマイズ
I