> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 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](/docs/id/code-review-setup#set-when-reviews-run) dan [seberapa menyeluruh review tersebut](/docs/id/code-review-setup#set-the-default-review-level) 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`](/docs/id/code-review-local).
</Note>

<h2 id="severity-levels">
  Tingkat keparahan
</h2>

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](/docs/id/code-review-customize).

<h2 id="respond-to-findings">
  Menanggapi temuan
</h2>

Anda dapat melakukan merge tanpa menanggapi temuan, kecuali aturan repositori Anda sendiri mengharuskannya. Jika proteksi branch-nya [mewajibkan penyelesaian percakapan](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-conversation-resolution-before-merging), 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`](/docs/id/code-review-customize#choose-what-to-write-in-review-md).

Untuk mendapatkan review berikutnya tanpa melakukan push, komentari `@claude review` sebagai [komentar pull request tingkat atas](#comment-commands).

<h2 id="check-run-output">
  Output check run
</h2>

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 ketika review otomatis tidak berjalan karena push tidak mengubah file apa pun. 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](/docs/id/code-review-troubleshooting).

<h3 id="read-the-result-from-a-script">
  Membaca hasil dari skrip
</h3>

Untuk membatasi merge atau memposting ringkasan dari CI Anda sendiri, parse baris terakhir teks Details dengan `gh` dan jq. Baris tersebut adalah komentar yang dapat dibaca mesin.

<Steps>
  <Step title="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:

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

  <Step title="Baca jumlah per tingkat keparahan">
    Baca jumlah dari check run tersebut, ganti `CHECK_RUN_ID` dengan ID-nya:

    ```bash theme={null}
    gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \
      --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'
    ```

    Perintah ini mencetak objek JSON dengan jumlah per tingkat keparahan dan kuncinya dalam urutan abjad, misalnya `{"nit": 1, "normal": 2, "pre_existing": 0}`. Jumlah tersebut mencakup temuan dari review sebelumnya pada pull request yang thread-nya masih terbuka.
  </Step>

  <Step title="Bertindak berdasarkan hasil">
    Buat skrip Anda menangani kasus-kasus berikut:

    * **`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.
    * **Baris tersebut tidak ada**: 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.
  </Step>
</Steps>

<h2 id="request-a-review">
  Meminta review
</h2>

Jika pull request Anda berupa draft atau berasal dari fork, review otomatis akan melewatinya, jadi [minta review dengan perintah komentar](#review-drafts-and-pull-requests-from-forks). 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`](#comment-commands) 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`.
* **Klik Re-run**: setelah review gagal atau kehabisan waktu pada pull request yang tidak berasal dari fork, [jalankan lagi](/docs/id/code-review-troubleshooting#retrigger-a-failed-or-timed-out-review) dari check run.
* **Tunggu retry otomatis**: review yang sesinya terputus akan dicoba ulang sekali secara otomatis. [Ringkasan check run](/docs/id/code-review-troubleshooting#retrigger-a-failed-or-timed-out-review) memberi tahu kapan hal itu terjadi.

<h3 id="comment-commands">
  Perintah komentar
</h3>

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 review dan melanggankan PR ke review yang dipicu push ke depannya | Anda ingin setiap push berikutnya memulai review baru, 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` |

Agar salah satu perintah ini memulai review, 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 perintah di awal komentar, dengan `always` pada baris yang sama dengan bagian perintah lainnya. 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 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.
</Note>

<h3 id="what-a-later-review-covers">
  Cakupan review berikutnya
</h3>

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. Ringkasannya menghitung apa yang tidak disertakan, dalam baris yang diakhiri dengan "found and not posted" atau "outside the scope of this re-review and not posted."

Untuk mendapatkan review yang tidak menghilangkan satu pun dari temuan tersebut, komentari [`@claude review`](#comment-commands). Review ini mencakup seluruh pull request lagi.

<h3 id="review-drafts-and-pull-requests-from-forks">
  Review draft dan pull request dari fork
</h3>

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](#comment-commands) 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.

<h3 id="use-code-review-alongside-the-claude-code-github-action">
  Menggunakan Code Review bersama Claude Code GitHub Action
</h3>

Jika repositori juga menjalankan [Claude Code GitHub Action](/docs/id/github-actions) 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.

<h2 id="related-resources">
  Sumber daya terkait
</h2>

* [Pemecahan masalah Code Review](/docs/id/code-review-troubleshooting): review yang tidak dimulai, gagal, atau dilewati karena anggaran
* [Code Review](/docs/id/code-review): apa layanan ini dan bagaimana review berjalan
* [Menyiapkan Code Review](/docs/id/code-review-setup): untuk Owner, aktifkan Code Review dan pilih kapan review dijalankan dan pada tingkat apa
* [Menyesuaikan Code Review](/docs/id/code-review-customize): ubah apa yang ditandai Claude dengan `REVIEW.md` dan `CLAUDE.md`
* [Biaya dan penggunaan Code Review](/docs/id/code-review-costs): bagaimana review ditagih dan di mana batas pengeluaran diatur
* [Review secara lokal dengan `/code-review`](/docs/id/code-review-local): jalankan review branch Anda dari sesi Claude Code
