Alur kerja Claude Code PR review untuk memeriksa keterbacaan, kebenaran, dan kasus tepi pada diff sebelum review, lalu menghasilkan daftar periksa reviewer dan pertanyaan yang perlu diajukan.

Tinjauan PR jarang memakan waktu lama karena kodenya “sulit”. Mereka sering lama karena reviewer harus merekonstruksi intent, risiko, dan dampak dari sebuah diff yang hanya menunjukkan perubahan, bukan keseluruhan cerita.
Sebuah edit kecil bisa mengenai dependensi tersembunyi: ganti nama field dan laporan rusak, ubah default dan perilaku bergeser, ubah kondisi dan penanganan error berubah. Waktu review bertambah ketika reviewer harus mengklik ke sana-sini untuk konteks, menjalankan aplikasi secara lokal, dan mengajukan pertanyaan lanjutan hanya untuk memahami apa yang seharusnya dilakukan PR.
Ada juga masalah pola manusia. Orang cenderung membaca diff dengan cara yang bisa diprediksi: kita fokus pada perubahan “utama” dan melewatkan baris membosankan tempat bug bersembunyi (pemeriksaan batas, penanganan null, logging, pembersihan). Kita juga cenderung membaca apa yang kita harapkan, sehingga kesalahan copy-paste dan kondisi terbalik bisa lolos.
Pra-tinjauan yang baik bukanlah sebuah vonis. Ini adalah mata kedua yang cepat dan terstruktur yang menunjukkan tempat di mana manusia harus memperlambat. Hasil terbaik adalah:
Yang seharusnya tidak dilakukan: “mengesahkan” PR, mengarang persyaratan, atau menebak perilaku runtime tanpa bukti. Jika diff tidak menyertakan konteks yang cukup (input yang diharapkan, batasan, kontrak pemanggil), pra-tinjauan harus menyatakannya dan mencantumkan dengan tepat apa yang hilang.
Bantuan AI paling kuat pada PR berskala sedang yang menyentuh logika bisnis atau refactor di mana makna bisa hilang. AI kurang efektif ketika jawaban yang benar bergantung pada pengetahuan spesifik organisasi yang mendalam (perilaku legacy, keanehan performa produksi, aturan keamanan internal).
Contoh: PR yang “hanya memperbarui pagination” sering menyembunyikan halaman off-by-one, hasil kosong, dan ketidaksesuaian sorting antara API dan UI. Pra-tinjauan harus mengangkat pertanyaan-pertanyaan itu sebelum seorang manusia membuang 30 menit untuk menemukannya kembali.
Perlakukan Claude seperti reviewer awal yang cepat dan cerewet, bukan orang yang memutuskan apakah PR boleh dikirim. Tujuannya adalah mengungkap masalah lebih awal: kode yang membingungkan, perubahan perilaku tersembunyi, tes yang hilang, dan kasus tepi yang sering terlupakan saat Anda dekat dengan perubahan.
Berikan apa yang seorang reviewer manusia yang adil perlukan:
Jika PR menyentuh area berisiko tinggi yang diketahui, sebutkan di awal (auth, billing, migrasi, konkurensi).
Kemudian minta keluaran yang bisa Anda tindaklanjuti. Permintaan yang kuat terlihat seperti:
Jaga manusia tetap memegang kendali dengan memaksa kejelasan pada ketidakpastian. Minta Claude memberi label temuan sebagai “pasti dari diff” vs “butuh konfirmasi,” dan mengutip baris tepat yang memicu tiap kekhawatiran.
Claude hanya sebaik apa yang Anda tunjukkan padanya. Jika Anda menempelkan diff besar tanpa tujuan atau batasan, Anda akan mendapat saran generik dan melewatkan risiko nyata.
Mulai dengan tujuan konkret dan kriteria keberhasilan. Contoh: “PR ini menambahkan rate limiting ke endpoint login untuk mengurangi penyalahgunaan. Ini tidak boleh mengubah bentuk respons. Harus menjaga latency rata-rata di bawah 50 ms.”
Selanjutnya, sertakan hanya yang penting. Jika 20 file berubah tetapi hanya 3 yang berisi logika, fokus pada ketiga file itu. Sertakan konteks sekitar saat potongan akan menyesatkan, seperti tanda tangan fungsi, tipe kunci, atau konfigurasi yang mengubah perilaku.
Terakhir, jelaskan ekspektasi pengujian. Jika Anda ingin unit test untuk kasus tepi, integration test untuk jalur kritis, atau pemeriksaan manual UI, sebutkan. Jika tes sengaja tidak disertakan, jelaskan alasannya.
Paket konteks sederhana yang bekerja dengan baik:
Claude Code PR review bekerja sebagai loop singkat: berikan konteks yang cukup, dapatkan catatan terstruktur, lalu ubah menjadi tindakan. Ini tidak menggantikan manusia. Ini menangkap kelalaian mudah sebelum rekan menghabiskan waktu lama membaca.
Gunakan lintasan yang sama setiap kali agar hasil tetap dapat diprediksi:
Setelah mendapatkan catatan, ubah menjadi pintu merge singkat:
Daftar cek merge (singkat):
Akhiri dengan meminta 3–5 pertanyaan yang memaksa kejelasan, seperti “Apa yang terjadi jika API mengembalikan daftar kosong?” atau “Apakah ini aman di bawah permintaan concurrent?”
Claude paling membantu ketika Anda memberinya lensa tetap. Tanpa rubrik, ia cenderung mengomentari apa pun yang pertama kali muncul (seringnya nit gaya) dan bisa melewatkan satu kasus batas yang berisiko.
Rubrik praktis:
Saat mem-prompt, minta satu paragraf singkat per kategori dan minta “isu berisiko tertinggi dulu.” Urutan itu menjaga fokus manusia.
Gunakan prompt dasar yang dapat dipakai ulang agar hasil tampak sama antar PR. Tempel deskripsi PR, lalu diff. Jika perilaku bersifat user-facing, tambahkan perilaku yang diharapkan dalam 1–2 kalimat.
You are doing a pre-review of a pull request.
Context
- Repo/service: <name>
- Goal of change: <1-2 sentences>
- Constraints: <perf, security, backward compatibility, etc>
Input
- PR description:
<...>
- Diff (unified diff):
<...>
Output format
1) Summary (max 4 bullets)
2) Readability notes (nits + suggested rewrites)
3) Correctness risks (what could break, and why)
4) Edge cases to test (specific scenarios)
5) Reviewer checklist (5-10 checkboxes)
6) Questions to ask the author before merge (3-7)
Rules
- Cite evidence by quoting the relevant diff lines and naming file + function/class.
- If unsure, say what info you need.
Untuk perubahan berisiko tinggi (auth, pembayaran, permissions, migrasi), tambahkan pemikiran kegagalan dan rollback yang eksplisit:
Extra focus for this review:
- Security/privacy risks, permission bypass, data leaks
- Money/credits/accounting correctness (double-charge, idempotency)
- Migration safety (locks, backfill, down path, runtime compatibility)
- Monitoring/alerts and rollback plan
Return a “stop-ship” section listing issues that should block merge.
Untuk refactor, jadikan “tidak ada perubahan perilaku” aturan keras:
This PR is a refactor. Assume behavior must be identical.
- Flag any behavior change, even if minor.
- List invariants that must remain true.
- Point to the exact diff hunks that could change behavior.
- Suggest a minimal test plan to confirm equivalence.
Jika Anda ingin skim cepat, tambahkan batas seperti “Answer in under 200 words.” Jika ingin kedalaman, minta “up to 10 findings with reasoning.”
Catatan Claude menjadi berguna saat Anda mengubahnya menjadi daftar periksa singkat yang bisa ditutup oleh manusia. Jangan ulangi diff. Tangkap risiko dan keputusan.
Bagi item menjadi dua keranjang agar thread tidak berubah menjadi debat preferensi:
Harus diperbaiki (blok merge)
Bagus untuk dimiliki (tindak lanjut)
Juga tangkap kesiapan rollout: urutan deploy paling aman, apa yang dipantau setelah rilis, dan bagaimana cara membatalkan perubahan.
Pra-tinjauan hanya membantu jika berakhir dengan sejumlah kecil pertanyaan yang memaksa kejelasan.
Jika Anda tidak bisa menjawab ini dengan kata-kata sederhana, hentikan merge dan perjelas scope atau tambahkan bukti.
Kegagalan kebanyakan adalah masalah proses, bukan masalah model.
Jika sebuah PR menambahkan endpoint checkout baru, jangan tempel seluruh service. Tempel handler, validasi, penulisan DB, dan perubahan skema apa pun. Lalu nyatakan: “Tujuan: cegah double charge. Bukan tujuan: refactor penamaan.” Anda akan mendapat lebih sedikit komentar, dan yang ada lebih mudah diverifikasi.
PR kecil yang terasa nyata: tambahkan field “display name” ke layar settings. Menyentuh validasi (server) dan teks UI (client). Cukup kecil untuk dipahami, tapi masih penuh tempat di mana bug bisa bersembunyi.
Berikut jenis potongan diff yang akan Anda tempel (plus 2–3 kalimat konteks seperti perilaku yang diharapkan dan tiket terkait):
- if len(name) == 0 { return error("name required") }
+ if len(displayName) < 3 { return error("display name too short") }
+ if len(displayName) > 30 { return error("display name too long") }
- <TextInput label="Name" value={name} />
+ <TextInput label="Display name" value={displayName} helperText="Shown on your profile" />
Contoh temuan yang ingin Anda terima:
len(displayName) tetapi tetap terlihat kosong. Trim sebelum validasi.Ubah itu menjadi daftar periksa:
Tinjauan Claude Code PR paling efektif saat diakhiri dengan beberapa pemeriksaan cepat:
Untuk melihat apakah ini efektif, lacak dua metrik sederhana selama 2–4 minggu: waktu review (dari dibuka hingga review bermakna pertama, dan dari dibuka hingga merge) dan rework (commit tindak lanjut setelah review, atau berapa banyak komentar yang membutuhkan perubahan kode).
Standarisasi mengalahkan prompt sempurna. Pilih satu template, wajibkan blok konteks singkat (apa yang berubah, kenapa, bagaimana menguji), dan sepakati apa arti “selesai”.
Jika tim Anda membangun fitur lewat pengembangan berbasis chat, Anda bisa menerapkan alur yang sama di dalam Koder.ai: hasilkan perubahan, ekspor source code, lalu lampirkan checklist pra-tinjauan ke PR sehingga tinjauan manusia tetap fokus pada bagian yang paling berisiko.