# Cara Menulis File CLAUDE.md yang Efektif untuk Claude Code

> Cara menulis file CLAUDE.md yang efektif: mulai dari /init, pangkas isi, tulis perintah dan aturan keras, pindah ke rule dan skill, uji lewat /context.

URL: https://www.matthewswong.com/id/blog/cara-menulis-claude-md-yang-efektif/

- Author: Matthews Wong (https://www.matthewswong.com/id/about/)
- Published: 2026-10-17
- Updated: 2026-10-17
- Category: AI

> **Key takeaway:** Cara menulis file CLAUDE.md yang efektif: jalankan /init, pangkas semua yang bisa Claude simpulkan dari kode, tulis perintah, konvensi, dan aturan keras yang konkret, jaga di bawah 200 baris, pindahkan aturan khusus folder ke rule, lalu cek lewat /context. CLAUDE.md hanyalah konteks, jadi aturan wajib butuh hook atau test.

Kamu menjalankan /init, Claude membuatkan CLAUDE.md, dan beberapa hari kemudian file itu sudah seratus baris lebih karena setiap kali Claude salah kamu menambah satu kalimat. Lalu Claude tetap memakai npm padahal proyekmu pakai pnpm, atau tetap mengubah file yang sudah kamu larang. Kamu menambah kata SANGAT PENTING di sana-sini, dan hasilnya malah makin tidak terarah. Hampir semua orang yang pertama kali menulis CLAUDE.md berhenti di titik ini.

Panduan ini membawamu dari file kosong ke CLAUDE.md yang pendek, konkret, dan bisa diuji, dalam enam langkah. Setiap perintah dan aturan saya cocokkan dengan dokumentasi resmi Claude Code, dan contoh nyatanya diambil dari CLAUDE.md situs ini sendiri. Saya sengaja tidak mengutip bagian yang berisi identitas pribadi.

Ingin tahu dulu apa itu CLAUDE.md dan bagaimana lapisan serta urutan memuatnya? Baca pelajaran gratis kami:

CLAUDE.md adalah: contoh file, lapisan, dan urutan memuatnya

. Artikel ini adalah sisi prakteknya: kamu menulis filenya langkah demi langkah.

## Yang kamu butuhkan

Tidak banyak, dan semuanya bisa dicoba di repositori latihan.

- Claude Code terpasang dan bisa dijalankan dengan perintah claude.
- Satu repositori git untuk bereksperimen. Lebih baik repo latihan, bukan repo kerja.
- Sekitar 20 menit dan editor teks apa saja.

Semua perintah slash di bawah (/init, /context, /memory, /doctor) diketik di dalam sesi claude, bukan di terminal biasa.

## Langkah 1: Buat draf pertama dengan /init

Masuk ke folder proyekmu, jalankan claude, lalu ketik /init. Claude membaca codebase dan membuat CLAUDE.md berisi perintah build, instruksi test, dan konvensi yang ia temukan. Kalau CLAUDE.md sudah ada, /init mengusulkan perbaikan dan tidak menimpanya. Anggap hasilnya draf, bukan hasil akhir.

File project boleh berada di ./CLAUDE.md atau ./.claude/CLAUDE.md dan sebaiknya di-commit supaya seluruh tim memakainya. Kalau repomu sudah punya AGENTS.md untuk tool lain, baca dulu perbandingannya di

AGENTS.md vs CLAUDE.md

. Untuk catatan pribadi yang tidak boleh ikut ke git, pakai CLAUDE.local.md di root proyek dan masukkan ke .gitignore.

## Langkah 2: Pangkas sampai tinggal yang Claude tidak bisa tebak

Ini langkah yang paling sering dilewati. Dokumentasi menyarankan satu pertanyaan untuk setiap baris: kalau baris ini dihapus, apakah Claude akan membuat kesalahan? Kalau tidak, hapus. Tabel di bawah merangkum apa yang layak masuk dan apa yang tidak.

| Masukkan | Jangan masukkan |
| --- | --- |
| Perintah Bash yang tidak bisa Claude tebak | Apa pun yang bisa Claude simpulkan dari membaca kode |
| Aturan gaya kode yang berbeda dari bawaan | Konvensi bahasa pemrograman standar yang sudah Claude kenal |
| Instruksi test dan test runner yang dipilih | Dokumentasi API yang panjang (cukup beri tautan) |
| Keputusan arsitektur khusus proyekmu | Penjelasan file demi file tentang codebase |
| Jebakan yang tidak kelihatan jelas | Nasihat kosong seperti tulis kode yang bersih |

Perhatikan perbedaannya di contoh di atas. Versi salah terdengar masuk akal tetapi tidak bisa dicek: kapan sebuah kode disebut bersih? Versi benar menyebut perintah, folder, dan angka yang bisa kamu verifikasi. Dokumentasi memberi pola yang sama: use 2-space indentation lebih baik daripada format code properly.

## Langkah 3: Tulis perintah, konvensi, dan aturan keras

Struktur yang saya pakai terdiri dari empat blok pendek dengan header: Commands, Conventions, Hard rules, dan Gotchas. Dokumentasi menyatakan tidak ada format wajib, tetapi file yang terorganisasi dengan header dan bullet lebih mudah diikuti Claude daripada paragraf padat. Berikut contoh untuk proyek fiktif bernama toko-api.

Setiap aturan keras menyebut apa yang rusak kalau dilanggar. Itulah yang membuat aturan bisa dicek. Beginilah bentuknya di CLAUDE.md situs ini sendiri, bagian Hard rules:

Lima aturan, satu baris masing-masing. Aturan 2 sampai 4 juga menyebut pengamannya, yaitu merge script atau assertBlogParity() yang menggagalkan build, jadi aturan tetap berlaku walaupun suatu hari Claude salah membacanya. Satu hal lagi di file ini adalah jebakan yang ditulis sekali: bahwa npm run build gagal kalau lib/blog-sources.json basi, lengkap dengan perintah perbaikannya, supaya Claude tidak perlu menebak penyebabnya.

> Kalau Claude terus melewati satu instruksi, tambahkan penekanan seperti IMPORTANT pada baris itu saja. Dokumentasi menjelaskan bahwa kalau banyak baris diberi penekanan, tidak ada yang menonjol.

## Langkah 4: Jaga di bawah 200 baris, pindahkan sisanya

Dokumentasi menargetkan di bawah 200 baris per file CLAUDE.md. File yang lebih panjang memakan lebih banyak konteks dan menurunkan kepatuhan. Jujur saja, CLAUDE.md situs ini sendiri lebih dari 500 baris, dan sebagian besarnya adalah prosedur blog yang lebih tepat dipindah ke skill. Itu utang yang saya tahu, dan contoh yang buruk untuk ditiru.

Kamu punya tiga tempat pindah. Aturan yang hanya relevan untuk satu folder masuk ke file seperti .claude/rules/api.md dengan frontmatter paths, dan baru dimuat saat Claude menyentuh file yang cocok. Prosedur bertahap masuk ke skill, yang dimuat saat dipanggil atau saat Claude menilainya relevan. Catatan untuk manusia masuk ke komentar HTML, yang dibuang sebelum file sampai ke Claude.

Jangan memecah file panjang menjadi beberapa @import untuk berhemat. File yang diimpor dimuat di awal sesi sama seperti teks biasa, jadi biayanya tetap sama. Kalau repomu monorepo dengan banyak folder, lihat juga

workflow Claude Code untuk monorepo

.

> CLAUDE.md di repo dibagikan ke seluruh tim lewat git. Jangan menaruh secret, password, atau data pribadi di dalamnya. Simpan preferensi pribadi di CLAUDE.local.md yang masuk .gitignore, dan baca ulang file sebelum di-commit.

## Langkah 5: Pasangkan aturan wajib dengan pengaman

CLAUDE.md sampai ke Claude sebagai user message setelah system prompt. Claude membacanya dan berusaha menurut, tetapi dokumentasi tegas bahwa tidak ada jaminan kepatuhan penuh. Untuk memblokir sebuah aksi apa pun keputusan Claude, pakai hook PreToolUse. Hook dijalankan deterministik, sedangkan instruksi CLAUDE.md bersifat saran.

Di situs ini polanya sama: setiap aturan keras punya pengaman yang gagal dengan sendirinya, misalnya build yang gagal atau test yang merah. Sebuah baris di CLAUDE.md menjelaskan alasannya kepada Claude, dan pengamannya yang menjaga hasil akhirnya. Hook dipasang di .claude/settings.json dan skripnya harus executable.

## Langkah 6: Uji bahwa Claude benar-benar membacanya

Mulai sesi baru, jalankan /context, dan lihat daftar di bawah Memory files. Kalau file tidak ada di sana, Claude tidak bisa melihat satu kata pun darinya. Perintah /memory juga menampilkan lokasi file CLAUDE.md dan CLAUDE.local.md dan membukanya untuk diedit.

Lalu uji perilakunya: minta Claude melakukan sesuatu yang diatur oleh salah satu aturanmu dan lihat apakah ia menurut. Dokumentasi menyarankan memperlakukan CLAUDE.md seperti kode, yaitu meninjaunya saat ada masalah, memangkasnya secara berkala, dan menguji perubahan dengan mengamati apakah perilaku Claude benar-benar bergeser. Untuk mencari instruksi yang usang atau bertentangan, jalankan /doctor prompt-audit, yang butuh Claude Code v2.1.283 atau lebih baru.

## Error umum dan cara memperbaikinya

Enam masalah yang paling sering muncul setelah file ditulis, dengan penyebab dan perbaikannya.

| Gejala | Penyebab | Perbaikan |
| --- | --- | --- |
| Claude mengabaikan aturan yang sudah kamu tulis | File terlalu panjang, aturannya tenggelam, atau kalimatnya samar | Pangkas sampai di bawah 200 baris dan tulis ulang jadi konkret. Beri IMPORTANT hanya pada satu baris yang sering dilewati. |
| File tidak muncul di Memory files pada /context | Nama atau lokasinya salah, atau sesi dimulai dari folder yang bukan bagian dari proyek itu | Pastikan namanya CLAUDE.md dan berada di ./CLAUDE.md atau ./.claude/CLAUDE.md, mulai ulang sesi dari folder proyek, lalu cek /context lagi. |
| CLAUDE.md di subfolder tidak ada di Memory files | File di subfolder dimuat saat dibutuhkan, bukan saat sesi dimulai | Minta Claude membaca satu file di folder itu. Baris Loaded dengan path-nya akan muncul di terminal. |
| Claude kadang memakai npm dan kadang pnpm | Dua instruksi bertentangan. File digabung, bukan saling menimpa, jadi Claude bisa memilih salah satunya. | Hapus salah satunya, dan periksa file user, file project, serta file subfolder. Jalankan /doctor prompt-audit untuk membantu mencarinya. |
| Aturan jangan sentuh .env tetap dilanggar | CLAUDE.md adalah konteks, bukan penegak aturan | Pasang hook PreToolUse yang keluar dengan kode 2 untuk memblokir aksinya. |
| Catatan pribadi ikut ter-commit ke repo | Catatan itu ditulis di CLAUDE.md yang dibagikan lewat git | Pindahkan ke CLAUDE.local.md dan tambahkan ke .gitignore. Jangan pernah menaruh secret di file yang di-commit. |

Kalau satu masalah terus berulang, jangan menambah baris baru di CLAUDE.md. Tanyakan dulu apakah aturannya perlu pengaman, perlu dipindah ke rule atau skill, atau perlu dipangkas.

## Checklist sebelum di-commit

File kurang dari 200 baris dan tidak ada baris yang bisa Claude simpulkan dari kode.

Ada blok perintah, konvensi, aturan keras, dan jebakan, masing-masing dengan header.

Setiap aturan konkret dan bisa dicek, tidak ada nasihat kosong.

Tidak ada dua instruksi yang bertentangan, termasuk dengan file user dan file subfolder.

Setiap aturan yang wajib berlaku punya hook, permission, atau test sebagai pengaman.

/context menampilkan filenya di bawah Memory files, dan catatan pribadi ada di CLAUDE.local.md.

## Belajar lebih dalam

Untuk memahami lapisan managed, user, project, dan local serta urutan memuatnya, ikuti pelajaran gratis

. Untuk melihat bagaimana konteks dikelola di repositori besar, baca

context engineering untuk AI agent di monorepo

.

Aturannya sederhana: tulis hanya yang tidak bisa Claude tebak, buat setiap baris bisa dicek, dan jangan percayakan aturan wajib pada CLAUDE.md saja. File yang pendek dan konkret dibaca dan diikuti lebih konsisten daripada file panjang yang lengkap.

## Sumber:

- Dokumentasi Claude Code: menulis instruksi yang efektif
- Dokumentasi Claude Code: best practices, menulis CLAUDE.md yang efektif
- Dokumentasi Claude Code: rule khusus path
- Dokumentasi Claude Code: panduan hooks
- Dokumentasi Claude Code: mengatasi masalah memori

## Source links

- https://code.claude.com/docs/en/memory#write-effective-instructions
- https://code.claude.com/docs/en/best-practices#write-an-effective-claude-md
- https://code.claude.com/docs/en/memory#path-specific-rules
- https://code.claude.com/docs/en/hooks-guide
- https://code.claude.com/docs/en/memory#troubleshoot-memory-issues

## FAQ

### Di mana saya harus menaruh file CLAUDE.md?

CLAUDE.md untuk proyek ditaruh di ./CLAUDE.md atau ./.claude/CLAUDE.md dan di-commit supaya tim memakainya bersama. Preferensi pribadi untuk satu proyek ditaruh di CLAUDE.local.md yang kamu masukkan ke .gitignore. Preferensi untuk semua proyek ditaruh di ~/.claude/CLAUDE.md.

### Kenapa Claude mengabaikan isi CLAUDE.md saya?

CLAUDE.md dikirim sebagai konteks setelah system prompt, bukan konfigurasi yang dipaksakan, jadi instruksi yang samar, bertentangan, atau tenggelam bisa terlewat. Penyebab paling umum adalah file yang terlalu panjang, jadi pangkas dan buat tiap aturan konkret. Jalankan /context untuk memastikan filenya memang termuat.

### Berapa panjang file CLAUDE.md yang ideal?

Dokumentasi menargetkan di bawah 200 baris per file. File yang lebih panjang memakan lebih banyak konteks dan menurunkan seberapa konsisten Claude mengikutinya. Pindahkan aturan satu folder ke .claude/rules/ dan prosedur ke skill.

### Apakah CLAUDE.md bisa memaksa Claude menurut setiap saat?

Tidak. Dokumentasi menyebutnya konteks, bukan konfigurasi yang dipaksakan. Untuk memblokir aksi apa pun keputusan Claude, pakai hook PreToolUse yang keluar dengan kode 2, atau aturan deny di permission.

### Apakah perintah /init akan menimpa CLAUDE.md yang sudah ada?

Tidak. Kalau CLAUDE.md sudah ada, /init mengusulkan perbaikan dan tidak menimpanya. Tinjau usulannya dan hapus apa pun yang bisa Claude simpulkan dari membaca kode.

---

- HTML version: https://www.matthewswong.com/id/blog/cara-menulis-claude-md-yang-efektif/
- English: https://www.matthewswong.com/en/blog/cara-menulis-claude-md-yang-efektif/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
