Tutorial ini nunjukin cara nyetel code review pakai Cursor CLI di GitHub Actions. Workflow-nya bakal menganalisis pull request, nemuin masalah, dan ngepost feedback sebagai komentar.
Buat sebagian besar pengguna, kami nyaranin pakai Bugbot aja. Bugbot nyediain automated code review terkelola tanpa perlu setup. Pendekatan CLI ini berguna buat jelajah kapabilitas dan kustomisasi tingkat lanjut.
Tinjauan kode otomatis yang menampilkan komentar sebaris pada pull request

Konfigurasikan autentikasi

Setel kunci API dan secret repositori untuk mengautentikasi Cursor CLI di GitHub Actions.

Menyiapkan izin agen

Bikin file konfigurasi buat ngatur aksi yang bisa dilakukan agen. Ini mencegah operasi yang nggak diinginkan seperti push kode atau bikin pull request. Buat .cursor/cli.json di root repositori kamu:
{
  "permissions": {
    "deny": [
      "Shell(git push)",
      "Shell(gh pr create)",
      "Write(**)"
    ]
  }
}
Konfigurasi ini bikin agen bisa baca file dan pakai GitHub CLI buat komentar, tapi ngehalangin dia buat ngubah apa pun di repositori kamu. Lihat referensi permissions buat opsi konfigurasi lainnya.

Bangun workflow GitHub Actions

Sekarang kita bangun workflow-nya langkah demi langkah.

Setel pemicu workflow

Bikin .github/workflows/cursor-code-review.yml dan konfigurasikan supaya jalan di pull request:
name: Cursor Code Review

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

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

Checkout repository

Tambahkan langkah checkout untuk mengakses kode dari pull request:
- name: Checkout repository
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
    ref: ${{ github.event.pull_request.head.sha }}

Instal Cursor CLI

Tambahkan langkah instalasi CLI:
- name: Install Cursor CLI
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

Konfigurasi agen review

Sebelum implementasi langkah review penuh, yuk pahami anatomi prompt review kita. Bagian ini ngejelasin gimana kita mau agen berperilaku: Objective: Kita mau agen nge-review diff PR saat ini dan cuma menandai isu yang jelas dengan tingkat keparahan tinggi, lalu ninggalin komentar inline yang sangat singkat (1-2 kalimat) hanya di baris yang berubah, dengan ringkasan singkat di akhir. Ini menjaga rasio signal-to-noise tetap seimbang. Format: Kita mau komentar yang pendek dan langsung ke poin. Kita pakai emoji biar gampang discan, dan kita mau ringkasan high-level dari keseluruhan review di akhir. Submission: Saat review selesai, kita mau agen menyertakan komentar pendek berdasarkan temuan selama review. Agen harus ngirim satu review yang berisi komentar inline plus ringkasan yang padat. Edge cases: Kita perlu nangani:
  • Komentar yang sudah ada dan terselesaikan: Agen harus menandainya selesai saat sudah ditangani
  • Hindari duplikasi: Agen harus skip komentar kalau umpan balik serupa sudah ada pada atau dekat baris yang sama
Final prompt: Prompt lengkap menggabungkan semua kebutuhan perilaku ini untuk bikin umpan balik yang fokus dan bisa ditindaklanjuti Sekarang kita implementasikan langkah agen review:
- name: Perform code review
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
    GH_TOKEN: ${{ github.token }}
  run: |
    cursor-agent --force --model "$MODEL" --output-format=text --print "You are operating in a GitHub Actions runner performing automated code review. The gh CLI is available and authenticated via GH_TOKEN. You may comment on pull requests.
    
    Context:
    - 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 }}
    
    Objectives:
    1) Re-check existing review comments and reply resolved when addressed
    2) Review the current PR diff and flag only clear, high-severity issues
    3) Leave very short inline comments (1-2 sentences) on changed lines only and a brief summary at the end
    
    Procedure:
    - Get existing comments: gh pr view --json comments
    - Get diff: gh pr diff
    - If a previously reported issue appears fixed by nearby changes, reply: ✅ This issue appears to be resolved by the recent changes
    - Avoid duplicates: skip if similar feedback already exists on or near the same lines
    
    Commenting rules:
    - Max 10 inline comments total; prioritize the most critical issues
    - One issue per comment; place on the exact changed line
    - Natural tone, specific and actionable; do not mention automated or high-confidence
    - Use emojis: 🚨 Critical 🔒 Security ⚡ Performance ⚠️ Logic ✅ Resolved ✨ Improvement
    
    Submission:
    - Submit one review containing inline comments plus a concise summary
    - Use only: gh pr review --comment
    - Do not use: gh pr review --approve or --request-changes"
.
├── .cursor/
│   └── cli.json
├── .github/
│   └── workflows/
│       └── cursor-code-review.yml

Uji reviewer kamu

Bikin pull request percobaan untuk memastikan workflow berjalan dan agen ngepost komentar review dengan feedback pakai emoji.
Pull request yang menampilkan komentar review otomatis dengan emoji dan feedback inline pada baris tertentu

Langkah berikutnya

Sekarang kamu punya sistem tinjauan kode otomatis yang sudah berjalan. Pertimbangkan peningkatan berikut:
  • Siapkan workflow tambahan untuk memperbaiki kegagalan CI
  • Konfigurasikan level tinjauan yang berbeda untuk cabang yang berbeda
  • Integrasikan dengan proses review kode tim kamu yang sudah ada
  • Kustomisasi perilaku agent untuk tipe file atau direktori yang berbeda