SpyBara
Go Premium

code-review-pull-requests.md 2026-11-06 23:01 UTC to 2026-11-07 23:58 UTC

No changes for this document in this history range.

2026

Membaca dan meminta review pada pull request

Baca temuan Code Review pada pull request GitHub Anda, tanggapi atau abaikan temuan tersebut, dan minta review dengan @claude review.

Code Review adalah layanan terkelola yang diaktifkan oleh Owner di organisasi Claude Anda untuk sekumpulan repositori GitHub. Setelah diaktifkan, Claude meninjau pull request di repositori tersebut dan memposting temuannya sebagai komentar inline, ringkasan di badan review, dan check run bernama Claude Code Review. Review tidak pernah menyetujui atau memblokir pull request Anda, dan check run tidak pernah berakhir dengan status gagal.

Owner mengontrol kapan review dijalankan dan seberapa menyeluruh review tersebut untuk setiap repositori.

[!NOTE]

Jika paket Anda tidak menyertakan Code Review, Anda tetap dapat meminta Claude meninjau branch Anda dari sesi Claude Code: lihat Review secara lokal dengan /code-review.

Tingkat keparahan

Claude memposting setiap temuan sebagai komentar inline pada baris yang bersangkutan dan menandainya dengan salah satu dari tiga tingkat keparahan:

Penanda Tingkat keparahan Arti
🔴 Important Bug yang harus diperbaiki sebelum merge
🟡 Nit Masalah kecil, layak diperbaiki tetapi tidak memblokir
🟣 Pre-existing Bug yang ada di codebase tetapi tidak diperkenalkan oleh PR ini

Ketika review mencatat alasannya, temuan tersebut memiliki bagian Why this was flagged yang diciutkan. Perluas bagian tersebut untuk membaca mengapa Claude menandai masalah tersebut dan bagaimana Claude memverifikasi masalahnya.

Untuk mengubah apa yang ditandai Claude di repositori Anda atau cara Claude menentukan peringkat tingkat keparahan, lihat Menyesuaikan Code Review.

Menanggapi temuan

Anda dapat melakukan merge tanpa menanggapi temuan, kecuali aturan repositori Anda sendiri mengharuskannya. Jika proteksi branch-nya mewajibkan penyelesaian percakapan, selesaikan thread setiap temuan sebelum Anda melakukan merge.

Untuk menghapus temuan, selesaikan thread-nya atau push perbaikan.

  • Abaikan tanpa perubahan kode: selesaikan thread tersebut sendiri di GitHub. Membalas saja tidak mengabaikan temuan.
  • Perbaiki masalahnya: ubah kode dan push. Review berikutnya pada pull request tersebut akan menyelesaikan thread sebelumnya jika menilai masalahnya sudah diperbaiki, baik review itu berjalan otomatis saat Anda push maupun saat Anda memintanya.
  • Jelaskan atau nyatakan ketidaksetujuan: balas komentar tersebut. Claude tidak langsung merespons, dan balasan tidak memulai review. Review berikutnya pada pull request tersebut membaca balasan pada temuan sebelumnya, dan dapat menyelesaikan thread atau memposting satu balasan tindak lanjut. Jika jenis temuan yang sama terus muncul kembali, minta maintainer untuk menambahkan aturan ke REVIEW.md.

Untuk mendapatkan review berikutnya tanpa melakukan push, komentari @claude review sebagai komentar pull request tingkat atas.

Output check run

Tautan Details pada check run Claude Code Review membuka temuan dalam satu tabel yang diurutkan berdasarkan keparahan, termasuk temuan yang komentar inline-nya tidak diterima GitHub:

Keparahan File:Baris Masalah
🔴 Important src/auth/session.ts:142 Refresh token berbenturan (race) dengan logout, sehingga sesi usang tetap aktif
🟡 Nit src/auth/session.ts:88 parseExpiry secara diam-diam mengembalikan 0 pada input yang salah format

Temuan yang memiliki baris tetapi tidak diposting sebagai komentar inline muncul sebagai anotasi di tab Files changed, pada baris terkait. Temuan Important ditampilkan dengan warna merah, nit dengan warna kuning, dan bug pre-existing dengan warna abu-abu.

Check run berakhir dengan status neutral, atau skipped setelah beberapa push yang tidak mengubah file apa pun dan mempertahankan hasil sebelumnya. Check run tidak pernah berakhir dengan status gagal, sehingga review yang selesai tidak menggagalkan check yang diwajibkan. Jika Anda tidak melihat temuan, atau review tidak berjalan, lihat Pemecahan masalah Code Review.

Ketika push mempertahankan hasil sebelumnya

Jika check run memiliki salah satu judul berikut setelah Anda melakukan push, Code Review mempertahankan hasil dari review sebelumnya alih-alih memulai review baru:

  • Code review skipped — no new changes: tidak ada temuan Important dari review sebelumnya yang masih terbuka, sehingga Anda tidak memerlukan review baru
  • Code review not repeated — earlier findings still open: untuk memulai review baru, push perbaikan untuk temuan Important yang masih terbuka, atau selesaikan thread-nya lalu push lagi

Di github.com, Code Review dapat mempertahankan hasil ketika kedua kondisi berikut terpenuhi:

  • Pull request masih menambahkan dan menghapus baris yang sama, seperti setelah commit kosong, merge bersih dari base branch, atau rebase bersih
  • Tidak ada yang menyelesaikan thread temuan Important sejak review tersebut

Untuk mendapatkan review tanpa perubahan kode, beri komentar @claude review atau klik Re-run pada check run.

Membaca hasil dari skrip

Untuk membatasi merge atau memposting ringkasan dari CI Anda sendiri, parse baris terakhir teks Details dengan gh dan jq. Baris tersebut adalah komentar HTML yang memuat jumlah per tingkat keparahan dalam format JSON:

<!-- bughunter-severity: {"nit":1,"normal":2,"pre_existing":0} -->

Baris-baris di atasnya dapat berisi nama file dari pull request. Jika Anda mem-parse teks tersebut dengan cara Anda sendiri, ambil jumlahnya hanya dari baris terakhir, seperti yang dilakukan perintah dalam langkah-langkah berikut.

1. Temukan ID check run

Dari shell Anda, tampilkan daftar check run milik commit tersebut dan ambil id dari run Claude Code Review. Ganti OWNER dan REPO dengan pemilik dan nama repositori Anda, serta <commit-sha> dengan head commit pull request:

gh api repos/OWNER/REPO/commits/<commit-sha>/check-runs --jq '.check_runs[] | {id, name}'

Jika commit tersebut memiliki lebih dari satu run Claude Code Review, misalnya setelah Re-run, GitHub hanya menampilkan yang terbaru.

2. Baca jumlah per tingkat keparahan

Baca jumlah dari field output.text milik check run tersebut, yang berisi teks Details. Ganti CHECK_RUN_ID dengan ID-nya:

gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq '
  (.output.text | split("\n") | last
    | scan("^<!-- bughunter-severity: (.*) -->$")[0] | fromjson)?
  // error("no severity line")'

Perintah ini mencetak objek JSON dengan jumlah per tingkat keparahan dan kuncinya dalam urutan abjad, misalnya {"nit": 1, "normal": 2, "pre_existing": 0}. Kecuali pada check run yang mempertahankan hasil sebelumnya, jumlah tersebut mencakup temuan dari review sebelumnya pada pull request yang thread-nya masih terbuka.

Di bawah judul Code review skipped — no new changes, jumlah tersebut tidak menyertakan nit dan temuan pre-existing dari review sebelumnya yang masih terbuka. Dalam kondisi tersebut, tidak ada temuan Important dari review sebelumnya yang masih terbuka.

3. Bertindak berdasarkan hasil

Buat skrip Anda menangani kasus-kasus berikut secara berurutan:

  • Judul diawali dengan Code review not repeated: Code Review mempertahankan hasil sebelumnya yang temuan Important-nya masih terbuka, dan check run tidak memiliki baris keparahan. Baca judul sebelum jumlahnya, dengan gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq .output.title. Gagalkan job jika Anda ingin membatasi merge.
  • Judul diakhiri dengan no new changes: biarkan job lolos tanpa membaca jumlahnya
  • normal lebih dari nol: gagalkan job jika Anda ingin membatasi merge. Kunci normal menyimpan jumlah temuan Important, sehingga Claude menemukan setidaknya satu bug yang layak diperbaiki sebelum merge. Untuk mencetak hanya jumlah tersebut, tambahkan | .normal sebelum tanda kutip tunggal penutup.
  • Baris tersebut tidak ada: perintah mencetak error yang berisi no severity line alih-alih jumlah, dan keluar dengan status bukan nol. Perlakukan sebagai tidak ada putusan, bukan sebagai nol temuan. Check run untuk review yang gagal, kehabisan waktu, dibatalkan, atau digantikan oleh review yang lebih baru tidak memiliki baris tersebut, dan beberapa review yang selesai juga tidak memilikinya.

Meminta review

Jika pull request Anda berupa draft atau berasal dari fork, review otomatis akan melewatinya, jadi minta review dengan perintah komentar. Untuk mendapatkan review pada pull request Anda, lakukan salah satu hal berikut:

  • Buka atau tandai siap: di repositori yang diatur ke Once after PR creation atau After every push, review dimulai saat Anda membuka atau membuka kembali pull request, atau menandai draft sebagai siap untuk review.
  • Komentari sebuah perintah: posting @claude review pada pull request.
  • Push commit: push memulai review di repositori yang diatur ke After every push, atau pada pull request yang Anda langgankan dengan @claude review always. Jika pull request Anda masih menambahkan dan menghapus baris yang sama setelah push, Code Review dapat mempertahankan hasil sebelumnya sebagai gantinya.
  • Klik Re-run: setelah review gagal atau kehabisan waktu pada pull request yang tidak berasal dari fork, jalankan lagi dari check run. Pada pull request yang tidak berasal dari fork, Anda juga dapat mengklik Re-run setelah push yang mempertahankan hasil sebelumnya.
  • Tunggu retry otomatis: review yang sesinya terputus akan dicoba ulang sekali secara otomatis. Ringkasan check run memberi tahu kapan hal itu terjadi.

Perintah komentar

Posting salah satu perintah berikut sebagai komentar pada pull request:

Perintah Fungsinya Kapan menggunakannya
@claude review Memulai satu review tanpa melanggankan PR ke push berikutnya Anda menginginkan satu review sekarang, seperti pada pull request di repositori yang diatur ke Manual, atau review lain segera di mode lainnya
@claude review always Memulai tinjauan dan mendaftarkan PR untuk tinjauan yang dipicu oleh push ke depannya Anda ingin push berikutnya memulai tinjauan, seperti pada PR berprioritas tinggi di repositori yang diatur ke Manual
@claude review once Sama dengan @claude review: memulai satu review tanpa berlangganan Kasus yang sama dengan @claude review
@claude review stop Mengakhiri langganan PR ke review yang dipicu push, tanpa memulai review atau membatalkan review yang sudah berjalan. Claude membalas dengan komentar, bukan check run. Anda melanggankan PR dengan @claude review always di repositori yang diatur ke Manual atau Once after PR creation, dan tidak lagi ingin setiap push memulai review
@claude review off atau @claude review pause Sama dengan @claude review stop Kasus yang sama dengan @claude review stop

Di repositori yang diatur ke After every push, Anda tidak dapat menghentikan review dengan komentar, karena push di sana memulai review dengan atau tanpa langganan. Untuk mencegah push memulai review pada satu pull request di sana, ubah pull request tersebut menjadi draft. Saat Anda menandainya kembali sebagai siap untuk review, review akan dimulai.

Agar perintah komentar apa pun berlaku, semua kondisi berikut harus terpenuhi:

  • Posting sebagai komentar pull request tingkat atas yang baru, bukan komentar inline pada baris diff dan bukan badan review. Mengedit komentar sebelumnya tidak dihitung.
  • Letakkan seluruh perintah dalam satu baris di awal komentar. Teks lain dapat mengikutinya. Jika always atau stop salah eja atau berada di baris berikutnya, Claude membaca komentar tersebut sebagai @claude review biasa dan memulai satu review. Huruf besar/kecil tidak berpengaruh.
  • Anda memerlukan izin write, maintain, atau admin pada repositori. Claude memeriksa hal ini dengan GitHub untuk setiap orang yang berkomentar, dan komentar dari bot tidak memulai review.
  • Pull request harus dalam keadaan terbuka.

Ketika perintah yang memulai review diterima, check run Claude Code Review muncul pada pull request dengan judul Code review queued.... Judul berubah menjadi Code review in progress... saat review dimulai. Claude mungkin juga bereaksi terhadap komentar Anda dengan 👀, tetapi reaksi itu dapat muncul meskipun tidak ada review yang dimulai, jadi periksa check run-nya.

Jika review sudah berjalan pada commit terbaru pull request, permintaan baru tidak akan memulai review kedua.

[!NOTE]

Sebelum pembaruan Juli 2026, @claude review melanggankan PR ke review yang dipicu push. Jika Anda mengandalkan perilaku tersebut, komentari @claude review always sebagai gantinya.

Cakupan review berikutnya

Review berikutnya yang dimulai dengan sendirinya, seperti setelah push, berfokus pada apa yang berubah sejak review terakhir dan memposting lebih sedikit nit dan temuan pre-existing. Untuk melihat apakah review tersebut tidak menyertakan temuan sebagai akibatnya, cari kalimat yang menghitungnya di badan review:

  • Temuan pada kode yang tidak berubah sejak review terakhir: kalimat diakhiri dengan "outside the scope of this re-review and not posted"
  • Nit dan temuan pre-existing: kalimat diakhiri dengan "found and not posted"

Untuk mendapatkan review yang tidak menghilangkan satu pun dari temuan tersebut, komentari @claude review. Review ini mencakup seluruh pull request lagi.

Review draft dan pull request dari fork

Review otomatis melewati keduanya, jadi minta review dengan perintah komentar:

  • Draft pull request: perintah komentar berjalan pada draft, sehingga Anda dapat meminta review sebelum menandai pull request sebagai siap. Push ke draft tidak memulai review, bahkan setelah @claude review always. Langganan mulai berlaku setelah Anda menandai pull request sebagai siap.
  • Pull request dari fork: Claude tidak meninjau pull request dari fork secara otomatis, terlepas dari pengaturan Review runs repositori. Untuk memulainya, komentari @claude review pada pull request. Kondisi untuk perintah komentar tetap berlaku, dan akses write yang Anda perlukan adalah ke repositori dasar, bukan fork.

Pada pull request dari fork, @claude review always juga berfungsi, tetapi tidak melanggankan pull request ke review pada push berikutnya. Mengklik Re-run pada check run tidak memulai review di sana.

Menggunakan Code Review bersama Claude Code GitHub Action

Jika repositori juga menjalankan Claude Code GitHub Action dalam mode interaktif dengan frasa pemicu default @claude, komentar @claude review juga akan memulai Action tersebut. Untuk memisahkan keduanya, atur input trigger_phrase milik Action ke frasa yang berbeda.

Sumber daya terkait