# CLAUDE.md'ye ne yazılır

CLAUDE.md, Claude'un okuduğu bir bağlamdır; uyduğu bir yapılandırma değil. Yalnızca koddan anlaşılmayanı yazın, kısa tutun, sert kuralları hook'a taşıyın.

## Bağlam, yapılandırma değil

CLAUDE.md, Claude'un her oturumun başında okuduğu düz bir markdown dosyası. Bağlam olarak ele alınır, zorla uygulanmaz. Oraya "migrations klasörüne dokunma" yazarsanız Claude çoğunlukla uyar, uymadığı gün de onu durduracak hiçbir şey yoktur.

Resmî rehber çizgiyi net çekiyor. Bazı şeyler Claude'un muhakemesine kalır: prompt'lar, CLAUDE.md. Bazı şeyleri harness zorla uygular: hook'lar, deny kuralları, sandbox. İstisnası olmayan kurallar için ikinci türü kullanın.

Neyi yazıp neyi yazmayacağınızın çoğu bu tek ayrımla belirlenir.

## Ne girer

Rehberin, bir satır eklemeden önce verdiği test şu: Claude bunu kodu okuyarak bulabilir mi, ve gerçekten bakar mı? İkisinin cevabı da evetse satırı yazmayın.

Geriye kısa bir liste kalıyor:

- Tam test, typecheck ve lint komutları.
- Yanıltıcı kod bölgeleri, yani bariz okumanın yanlış olduğu yerler.
- Repo dışında alınmış, kodun gösteremediği kararlar.
- İki kez düzeltmek zorunda kaldığınız her şey.

```markdown
## Komutlar
- Tek dosya testi: `pnpm vitest run path/to/file.test.ts`
- Typecheck: `pnpm tsc --noEmit`

## Dikkat
- `src/billing/legacy/` kullanılmıyor gibi görünüyor ama fatura dışa aktarımı ona bağlı.
- 2 boşluklu girinti kullan.
```

"2 boşluklu girinti kullan" kontrol edilebiliyor, "düzgün biçimle" edilemiyor. Doğrulanabilir satırlar belirsiz olanlardan daha iyi çalışır.

**Question:** Hangi satır CLAUDE.md'de yer hak eder?

- Proje TypeScript ile yazıldı
- Tek test şöyle çalışır: pnpm vitest run path/to/file.test.ts
- Temiz kod yaz
- src klasöründe kaynak kod var

**Answer:** Tek test şöyle çalışır: pnpm vitest run path/to/file.test.ts. Dili ve klasörleri Claude repoya bakarak görür. Tek bir testi çalıştıran tam komutu ise başka türlü tahmin etmek zorunda kalır.


## Dosyalar nereden yüklenir

Sıra geniş olandan özele doğru gider, yani en son okunan metin en özel olandır:

```flow
Managed policy CLAUDE.md
~/.claude/CLAUDE.md
Proje ./CLAUDE.md veya ./.claude/CLAUDE.md
./CLAUDE.local.md
```

Dosyalar birleştirilir. Sonraki dosya öncekini ezmez, sadece onun arkasına eklenir. Claude ayrıca başlatıldığı dizinden yukarı doğru yürür ve üstteki her CLAUDE.md'yi yükler. Başlatma dizininin altındaki alt klasörlerdeki dosyalar tembel yüklenir: Claude oradaki bir dosyayı okuyunca ya da düzenleyince.

`CLAUDE.local.md` bir proje için kişisel notlarınıza ayrılmıştır ve gitignore'a eklenmelidir. `/init` sizin için bir başlangıç dosyası yazar.

## Uzunluk bir maliyettir

Her dosyayı yaklaşık 200 satırın altında tutun. Bu düzen meselesi değil. Dosyanın tamamı her oturuma yüklenir, yani ilk derste gördüğümüz gibi her satırın bedeli her turda ödenir.

Uyma üzerinde de bir etkisi var. Rehbere göre bir satır sürekli yok sayılıyorsa vurgu eklemek nadiren işe yarar. Ya dosya fazla uzundur ve satır içinde kaybolur, ya da kuralın istisnası yoktur ve yeri bir hook'tur.

> **Prosedür kural değildir**
Çok adımlı bir prosedür, örneğin sürüm çıkarma, gerektiğinde yüklenen bir skill'e aittir. Dosya türüne özel kurallar `paths:` filtresiyle `.claude/rules/` içine gider. CLAUDE.md her yerde geçerli olanlar için.


## Bilmeye değer küçük şeyler

> **Bedava yorumlar**
CLAUDE.md içindeki blok düzeyindeki HTML yorumları dosya enjekte edilmeden önce silinir. İnsanlar için bakım notlarını sıfır token maliyetiyle bırakabilirsiniz.


- Backtick içine alınmış bir yol, örneğin `@README`, import edilmez. Import ayrıştırması kod aralıklarını ve çitli blokları atlar.
- Oturum ortasında CLAUDE.md'yi düzenlemek o oturumu değiştirmez. Yeni metin `/clear`, `/compact` ya da yeniden başlatmadan sonra yüklenir.
- Bir repoda yalnızca `AGENTS.md` varsa Claude Code onu okur. İkisi de varsa, CLAUDE.md AGENTS.md'yi import etmedikçe yalnızca CLAUDE.md okunur.
- `/doctor prompt-audit`, talimat dosyalarını bayat ya da çelişen içerik için denetler.

**Question:** CLAUDE.md'deki bir kural tekrar tekrar yok sayılıyor ve istisnası yok. Daha iyi çözüm hangisi?

- Büyük harflerle yazmak
- Üç kez tekrarlamak
- Bir hook ya da deny kuralına taşımak
- Dosyanın sonuna taşımak

**Answer:** Bir hook ya da deny kuralına taşımak. CLAUDE.md muhakemedir, zorlama değil. İstisnası olmayan kuralın yeri, harness'ın uyguladığı bir yerdir.


> **Kendi dosyanızı kısaltın**
CLAUDE.md'nizi açın ve rehberin testini her satıra uygulayın: Claude bunu kodda bulabilir mi, ve bakar mı? Testi geçemeyeni silin. Sonra `/doctor prompt-audit` çalıştırın ve ne önerdiğine bakın.
