Catatan Editor: Januari 2026, kritikan Andrej Karpathy terhadap cara Claude menulis kode, memunculkan satu file yang tampaknya kecil, namun sangat krusial dalam alur kerja pemrograman AI: CLAUDE.md. Forrest Chang kemudian merangkum masalah-masalah tersebut menjadi 4 aturan perilaku, mencoba membatasi kesalahan umum Claude saat mengoding: asumsi diam-diam, over-engineering, mengganggu kode yang tidak relevan, dan kurangnya standar kesuksesan yang jelas.
Tapi beberapa bulan kemudian, skenario penggunaan Claude Code sudah tidak lagi sekadar "membuat model menulis sepotong kode". Seiring dengan normalnya penggunaan multi-step Agent, trigger berantai hook, konflik loading skill, dan kolaborasi multi-repositori, mode kegagalan baru juga mulai muncul: model kehilangan kendali dalam tugas panjang, tes lolos tanpa memvalidasi logika sebenarnya, migrasi selesai tapi diam-diam melewati error, pencampuran gaya kode yang salah.
Penulis artikel ini menguji 30 repositori kode dalam 6 minggu, dan menambahkan 8 aturan baru di atas 4 aturan asli Karpathy, mencoba menjangkau masalah baru dalam pemrograman AI yang bergerak dari penyelesaian sekali jadi menuju kolaborasi yang ter-Agent-kan.
Berikut teks aslinya:
Pertengahan Januari 2026, Andrej Karpathy membagikan untaian tweet, mengeluhkan cara Claude menulis kode. Dia menyoroti tiga masalah tipikal: membuat asumsi salah tanpa penjelasan, terlalu kompleks, dan menyebabkan kerusakan yang tidak relevan pada kode yang seharusnya tidak disentuh.
Forrest Chang melihat untaian tweet itu, merangkum keluhannya menjadi 4 aturan perilaku, menuliskannya ke dalam file terpisah CLAUDE.md, dan merilisnya ke GitHub. Proyek ini mendapat 5,828 Star di hari pertama, disimpan 60,000 kali dalam dua minggu, dan sekarang telah mencapai 120,000 Star, menjadi repositori kode file tunggal dengan pertumbuhan tercepat di tahun 2026.
Setelahnya, saya mengujinya selama 6 minggu dengan 30 repositori kode.
Keempat aturan ini memang efektif. Kesalahan yang sebelumnya muncul dengan probabilitas sekitar 40%, pada tugas-tugas yang cocok untuk aturan ini, turun menjadi di bawah 3%. Namun masalahnya, template ini awalnya dibuat untuk mengatasi kesalahan Claude menulis kode di bulan Januari.
Menjelang Mei 2026, masalah yang dihadapi ekosistem Claude Code sudah berbeda: konflik antar Agent, trigger berantai hook, konflik loading skill, dan interupsi alur kerja multi-step antar sesi.
Jadi, saya menambahkan 8 aturan lagi. Berikut adalah versi lengkap CLAUDE.md dengan 12 aturan: alasan masing-masing aturan layak ditambahkan, dan 4 poin di mana template asli Karpathy akan gagal diam-diam.
Jika ingin melewatkan penjelasan dan langsung menyalinnya, file lengkapnya ada di akhir artikel.
Mengapa Ini Penting
CLAUDE.md Claude Code, adalah file paling diremehkan di seluruh teknologi stack pemrograman AI. Kebanyakan pengembang biasanya melakukan tiga kesalahan:
Pertama, menganggapnya sebagai tempat sampah preferensi, memasukkan semua kebiasaan mereka sendiri, akhirnya membengkak hingga lebih dari 4000 token, dengan tingkat kepatuhan aturan jatuh ke 30%.
Kedua, tidak menggunakannya sama sekali, selalu memulai prompt dari awal. Ini menyebabkan pemborosan token 5 kali lipat, dan kurangnya konsistensi antar sesi.
Ketiga, menyalin sebuah template dan tidak pernah memperbaruinya lagi. Mungkin efektif selama dua minggu, tetapi seiring perubahan repositori kode, ia akan gagal tanpa Anda sadari.
Dokumentasi resmi Anthropic menjelaskan dengan jelas: pada dasarnya, CLAUDE.md hanya bersifat saran. Claude akan mengikutinya sekitar 80% dari waktu. Begitu melebihi 200 baris, tingkat kepatuhan akan turun nyata, karena aturan penting akan tenggelam dalam kebisingan.
Template Karpathy menyelesaikan masalah ini: satu file, 65 baris, 4 aturan. Ini adalah baseline minimum.
Tapi batas atasnya bisa lebih tinggi. Dengan menambahkan 8 aturan di bawah ini, cakupannya bukan hanya masalah penulisan kode yang dikeluhkan Karpathy di Januari 2026, tetapi juga masalah pengaturan Agent yang baru muncul di Mei 2026 — masalah yang belum ada saat template asli ditulis.
4 Aturan Asli
Jika Anda belum melihat repositori Forrest Chang, lihat dulu versi dasarnya:
Aturan 1: Berpikir sebelum mengkode.
Jangan membuat asumsi diam-diam. Jelaskan asumsimu, ekspos titik-titik trade-off. Tanyakan dulu sebelum menebak. Ketika ada solusi yang lebih sederhana, aktifkan untuk mengajukan keberatan.
Aturan 2: Sederhana itu prioritas.
Gunakan kode paling sedikit yang bisa menyelesaikan masalah. Jangan tambahkan fungsi yang dibayangkan. Jangan rancang lapisan abstraksi untuk kode sekali pakai. Jika seorang insinyur senior akan menganggapnya terlalu rumit, itu harus disederhanakan.
Aturan 3: Modifikasi ala bedah.
Hanya ubah bagian yang harus diubah. Jangan "mengoptimalkan" kode, komentar, atau format yang berdekatan secara sembarangan. Jangan refaktor sesuatu yang tidak rusak. Pertahankan konsistensi dengan gaya yang ada.
Aturan 4: Eksekusi berorientasi tujuan.
Definisikan standar kesuksesan dulu, lalu lakukan iterasi secara siklus hingga verifikasi selesai. Jangan beri tahu Claude langkah demi langkah apa yang harus dilakukan, tapi beri tahu seperti apa seharusnya hasil yang sukses, biarkan dia sendiri yang mengulang.
Keempat aturan ini bisa menyelesaikan sekitar 40% mode kegagalan yang saya lihat dalam sesi Claude Code tanpa pengawasan. Sekitar 60% masalah lainnya, tersembunyi di area kosong di bawah ini.
8 Aturan Baru Saya, dan Alasannya
Setiap aturan, berasal dari momen nyata: 4 aturan asli Karpathy sudah tidak cukup. Di bawah ini saya akan ceritakan dulu skenarionya, baru berikan aturan yang sesuai.
Aturan 5: Jangan biarkan model mengerjakan tugas non-bahasa
Aturan Karpathy tidak mencakup ini. Akibatnya model mulai memutuskan hal-hal yang seharusnya ditangani oleh kode deterministik: apakah harus mencoba ulang panggilan API, bagaimana merutekan pesan, kapan harus mengeskalasi penanganan. Hasilnya, keputusan setiap minggu berbeda-beda. Yang Anda dapatkan adalah if-else yang tidak stabil, dibayar per token $0.003.
Momen itu seperti ini: ada sepotong kode yang memanggil Claude untuk "menentukan apakah harus mencoba ulang saat mendapatkan 503". Awalnya berjalan baik, bertahan dua minggu, lalu tiba-tiba menjadi tidak stabil, karena model mulai menganggap body request sebagai konteks penilaian. Strategi percobaan ulang menjadi acak, karena prompt itu sendiri memang acak.
Aturan 6: Tetapkan anggaran token yang ketat, tanpa pengecualian
CLAUDE.md tanpa batasan anggaran, sama dengan cek kosong. Setiap loop bisa lepas kendali, berubah menjadi pembuangan konteks 50,000 token. Model tidak akan berhenti sendiri.
Momen itu seperti ini: satu sesi debugging berlangsung selama 90 menit. Model terus mengulang-ulang iterasi di sekitar pesan error 8KB yang sama, dan perlahan lupa solusi apa yang sudah dicoba. Pada akhirnya, dia mulai mengusulkan solusi yang sudah saya tolak 40 pesan sebelumnya. Jika ada anggaran token, proses ini seharusnya dihentikan di menit ke-12.
Aturan 7: Ekspos konflik, jangan berkompromi rata-rata
Ketika dua bagian di repositori kode saling bertentangan, Claude akan mencoba memuaskan kedua belah pihak, menghasilkan kode yang tidak koheren.
Momen itu seperti ini: satu repositori kode memiliki dua pola penanganan error, satu async/await dengan try/catch eksplisit, yang lain adalah global error boundary. Kode baru yang ditulis Claude menggunakan kedua pola tersebut. Akibatnya penanganan error dilakukan dua kali. Saya butuh 30 menit untuk memahami, mengapa error ditelan dua kali.
Aturan 8: Baca dulu, baru tulis
"Modifikasi ala bedah" Karpathy memberi tahu Claude untuk tidak mengubah kode yang berdekatan. Tapi dia tidak memberi tahu Claude: pahami dulu kode yang berdekatan itu. Tanpa ini, Claude akan menulis kode baru yang bertentangan dengan kode yang sudah ada 30 baris sebelumnya.
Momen itu seperti ini: Claude menambahkan fungsi baru di sebelah fungsi yang sudah ada dengan fungsi yang persis sama, karena dia tidak membaca fungsi aslinya terlebih dahulu. Kedua fungsi melakukan hal yang sama. Tapi karena urutan import, fungsi baru menimpa fungsi lama, padahal fungsi lama sudah menjadi standar de facto selama 6 bulan.
Aturan 9: Tes bukan opsi, tetapi tes itu sendiri bukan tujuan
"Eksekusi berorientasi tujuan" Karpathy mengisyaratkan tes bisa menjadi standar kesuksesan. Tapi dalam praktik, Claude akan menganggap "tes lolos" sebagai satu-satunya tujuan, sehingga menulis kode yang lolos tes dangkal, tapi merusak hal lain.
Momen itu seperti ini: Claude menulis 12 tes untuk sebuah fungsi autentikasi, semuanya lolos. Tapi logika autentikasi di lingkungan produksi rusak. Tes-tes itu hanya memverifikasi fungsi "mengembalikan sesuatu", bukan memverifikasi apakah itu mengembalikan hal yang benar. Fungsi bisa lolos tes karena mengembalikan sebuah konstanta.
Aturan 10: Operasi berjalan lama perlu checkpoint
Template Karpathy mengasumsikan interaksi itu sekali jadi. Tapi pekerjaan Claude Code yang sebenarnya seringkali multi-step: refaktor di 20 file, membangun fitur dalam satu sesi, debugging di banyak commit. Tanpa checkpoint, satu langkah salah, semua kemajuan sebelumnya bisa hilang.
Momen itu seperti ini: tugas refaktor 6 langkah error di langkah ke-4. Saat saya sadar, Claude sudah melanjutkan dan menyelesaikan langkah 5 dan 6 di atas status yang salah. Waktu untuk membongkar dan memperbaikinya, lebih lama daripada mengulangi seluruh tugas. Jika ada checkpoint, masalah akan terdeteksi di langkah ke-4.
Aturan 11: Konvensi lebih diutamakan daripada kebaruan
Di repositori kode yang sudah memiliki pola matang, Claude suka memperkenalkan gaya tulisannya sendiri. Meskipun gaya tulisannya "lebih baik", memperkenalkan pola kedua itu sendiri, lebih buruk daripada pola tunggal mana pun.
Momen itu seperti ini: Claude memperkenalkan hooks di repositori React yang berbasis class component. Memang bisa berjalan. Tapi sekaligus merusak pola tes asli repositori, karena tes-tes itu bergantung pada componentDidMount. Akhirnya butuh setengah hari untuk menghapusnya dan menulis ulang.
Aturan 12: Gagal secara eksplisit, jangan gagal diam-diam
Kegagalan Claude yang paling mahal, seringkali adalah yang terlihat seperti kesuksesan. Sebuah fungsi "bisa jalan", tapi mengembalikan data yang salah; sebuah migrasi "selesai", tapi melewatkan 30 catatan; sebuah tes "lolos", tapi hanya karena assertion-nya sendiri yang salah.
Momen itu seperti ini: Claude mengatakan migrasi database "berhasil selesai". Tapi sebenarnya, dia diam-diam melewatkan 14% catatan yang memicu konflik constraint. Perilaku melewatkan itu masuk ke log, tapi tidak diekspos secara jelas. 11 hari kemudian, saat data laporan mulai tidak normal, barulah kita menemukan masalah.
Hasil Data
Saya melacak 50 tugas perwakilan yang sama selama 6 minggu, mencakup 30 repositori kode, menguji tiga konfigurasi.
Tingkat error mengacu pada: tugas perlu dikoreksi atau ditulis ulang agar sesuai dengan niat aslinya. Error yang dihitung termasuk: asumsi salah diam-diam, over-engineering, kerusakan tidak relevan, kegagalan diam-diam, pelanggaran konvensi, kompromi konflik, melewatkan checkpoint.
Tingkat kepatuhan mengacu pada: ketika suatu aturan berlaku, seberapa besar kemungkinan Claude akan menerapkan aturan itu secara eksplisit.
Hasil yang benar-benar menarik, bukan hanya tingkat error turun dari 41% ke 3%. Lebih penting lagi, memperluas dari 4 aturan menjadi 12 aturan, hampir tidak menambah beban kepatuhan, tingkat kepatuhan hanya turun dari 78% menjadi 76%, tetapi tingkat error turun lagi 8 poin persentase. Aturan baru menangani mode kegagalan yang tidak ditangani oleh 4 aturan asli, mereka tidak memperebutkan anggaran perhatian yang sama.
Di Mana Template Karpathy Akan Gagal Diam-diam
Bahkan tanpa menambahkan aturan baru, template 4 aturan asli setidaknya tidak memadai di 4 tempat ini.
Pertama, tugas Agent yang berjalan lama.
Aturan Karpathy terutama ditujukan untuk saat Claude sedang menulis kode. Tapi apa yang terjadi ketika Claude menjalankan pipeline multi-step? Template asli tidak memiliki aturan anggaran, aturan checkpoint, atau aturan "gagal dengan keras". Akibatnya pipeline akan perlahan bergeser.
Kedua, konsistensi multi-repositori.
"Sesuaikan gaya yang ada" secara default hanya mengasumsikan satu gaya. Tapi dalam monorepo yang memiliki 12 layanan, Claude harus memilih gaya mana yang akan disesuaikan. Aturan asli tidak memberi tahu cara memilih. Akibatnya dia memilih secara acak, atau mencampur rata beberapa gaya.
Ketiga, kualitas tes.
"Eksekusi berorientasi tujuan" akan menganggap "tes lolos" sebagai kesuksesan, tapi tidak menjelaskan bahwa tes itu sendiri harus bermakna. Hasilnya, Claude menulis tes yang hampir tidak memverifikasi apa pun, tapi tes ini membuatnya merasa yakin.
Keempat, perbedaan lingkungan produksi dan tahap prototipe.
Keempat aturan yang sama, bisa mencegah kode produksi dari over-engineering, tapi juga bisa memperlambat pengembangan prototipe. Karena tahap prototipe kadang memang membutuhkan 100 baris scaffolding eksplorasi, untuk menemukan arah dulu. "Sederhana itu prioritas" Karpathy mudah terpicu berlebihan pada kode tahap awal.
Kedelapan aturan baru ini bukan untuk menggantikan 4 aturan asli Karpathy, melainkan memperbaiki kekosongannya: template asli sesuai dengan skenario penulisan kode yang cenderung otomatis-lengkap di Januari 2026; sedangkan di Mei 2026, Claude Code sudah memasuki lingkungan kolaborasi multi-step, multi-repositori yang digerakkan oleh Agent, masalah yang dihadapi keduanya berbeda.
Metode Apa yang Tidak Berhasil
Sebelum menetapkan 12 aturan ini, saya juga mencoba beberapa skema lain.
Menambahkan aturan yang saya lihat di Reddit / X.
Kebanyakan dari mereka, hanya mengulangi 4 aturan asli Karpathy dengan kata-kata berbeda, atau aturan spesifik domain yang tidak bisa digeneralisasi, seperti "selalu gunakan class Tailwind". Semua akhirnya dihapus.
Lebih dari 12 aturan.
Saya menguji sampai 18 aturan. Setelah melebihi 14 aturan, tingkat kepatuhan turun dari 76% menjadi 52%. Batas 200 baris itu nyata. Setelah melebihi panjang ini, Claude akan mulai mem-pattern match menjadi "ada aturan di sini", daripada benar-benar membaca aturan satu per satu.
Aturan yang bergantung pada keberadaan alat tertentu.
Misal "selalu gunakan eslint", begitu proyek tidak menginstal eslint, aturan ini akan gagal, dan gagal diam-diam. Akhirnya saya mengubahnya menjadi ekspresi yang tidak bergantung pada alat tertentu, seperti mengubah "gunakan eslint" menjadi "ikuti gaya yang sudah diberlakukan di repositori kode".
Meletakkan contoh di CLAUDE.md, bukan aturan.
Contoh mengambil lebih banyak konteks daripada aturan. Tiga contoh mengonsumsi konteks yang hampir sama dengan 10 aturan, dan Claude mudah overfitting pada contoh. Aturan itu abstrak, contoh itu spesifik. Jadi, gunakan aturan.
"Hati-hati", "berpikir matang", "fokus".
Ini semua adalah noise. Tingkat kepatuhan instruksi seperti ini turun menjadi sekitar 30%, karena tidak bisa diperiksa. Akhirnya saya menggantinya dengan aturan perintah yang lebih spesifik, seperti "jelaskan asumsi secara eksplisit".
Menyuruh Claude agar seperti "insinyur senior".
Ini tidak berguna. Claude memang sudah merasa seperti insinyur senior. Masalah sebenarnya bukan pada apakah dia berpikir begitu, tapi apakah dia melaksanakannya. Aturan perintah dapat memperkecil kesenjangan ini, petunjuk identitas tidak bisa.
CLAUDE.md Versi 12 Aturan Lengkap
Berikut adalah versi lengkap yang bisa langsung disalin dan ditempel.
Konten ini untuk sementara tidak dapat ditampilkan di luar Dokumen Feishu
Simpan sebagai CLAUDE.md di direktori root repositori. Di bawah 12 aturan ini, tambahkan aturan khusus proyek, seperti tech stack, perintah tes, mode error, dll. Total jangan melebihi 200 baris, setelah itu tingkat kepatuhan aturan akan turun nyata.
Cara Instalasi
Dua langkah saja:
1. Tambahkan 4 aturan dasar Karpathy ke CLAUDE.md Anda
curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md
2. Tempelkan aturan 5–12 dari artikel ini di bawahnya
Simpan file di direktori root repositori. >> di sini penting, fungsinya untuk menambahkan ke CLAUDE.md yang sudah ada, bukan menimpa aturan khusus proyek yang sudah Anda tulis.
Model Mental
CLAUDE.md bukan daftar keinginan, melainkan kontrak perilaku, untuk memblokir mode kegagalan spesifik yang sudah Anda amati.
Setiap aturan harus menjawab pertanyaan: kesalahan apa yang dicegahnya?
4 aturan Karpathy, mencegah mode kegagalan yang dilihatnya di Januari 2026: asumsi diam-diam, over-engineering, kerusakan tidak relevan, standar kesuksesan yang lemah. Itu adalah dasar, jangan dilewatkan.
8 aturan tambahan saya, mencegah mode kegagalan baru yang muncul setelah Mei 2026: loop Agent tanpa batasan anggaran, tugas multi-step tanpa checkpoint, tes yang sepertinya menguji tapi sebenarnya tidak menyentuh logika kunci, dan masalah yang mengemas kegagalan diam-diam sebagai kesuksesan diam-diam. Ini adalah patch tambahan.
Tentu saja, efek spesifiknya bervariasi per orang. Jika Anda tidak menjalankan pipeline multi-step, Aturan 10 tidak terlalu penting bagi Anda. Jika repositori kode Anda hanya memiliki satu gaya seragam, dan sudah diberlakukan oleh lint, Aturan 11 adalah redundan. Setelah membaca 12 aturan ini, pertahankan aturan yang benar-benar sesuai dengan kesalahan yang pernah Anda buat, hapus sisanya.
Versi CLAUDE.md dengan 6 aturan yang disesuaikan dengan mode kegagalan nyata, lebih baik daripada versi dengan 12 aturan, di mana 6 aturan tidak pernah Anda gunakan.
Penutup
Tweet Karpathy di Januari 2026, pada dasarnya adalah keluhan. Forrest Chang mengubahnya menjadi 4 aturan. Akhirnya, 120 ribu pengembang memberikan Star pada hasil ini. Dan kebanyakan dari mereka, hari ini masih hanya menggunakan 4 aturan itu.
Model sudah berkembang, ekosistem juga sudah berubah. Multi-step Agent, trigger berantai hook, loading skill, kolaborasi multi-repositori — semua ini belum ada ketika Karpathy menulis tweet itu. Keempat aturan asli tidak menyelesaikan masalah ini. Aturan-aturan itu tidak salah, hanya tidak lengkap.
Tambahkan 8 aturan baru. Waktu 6 minggu, pengujian mencakup 30 repositori kode. Tingkat error turun dari 41% menjadi 3%.
Malam ini juga simpan artikel ini, tempelkan 12 aturan ini ke CLAUDE.md Anda. Jika ini membantu Anda menghindari jalan berliku Claude selama seminggu, silakan bagikan.












