Rehberler sayfasına dön
Builders

CLAUDE.md Açıklaması: Claude Code'a Projeni Bir Kez Öğret

11 dk okuma


Claude Code'un her yeni oturumu boş bir kafayla başlar. Ona npm değil pnpm kullanmasını söylersin. Testlerin nerede durduğunu söylersin. Üretilmiş klasöre dokunmamasını söylersin. Yarın bunların hepsini yeniden söylersin.

CLAUDE.md, aksi hâlde yeniden anlatacağın şeyleri yazdığın yerdir.

Markdown biçiminde düz bir metin dosyasıdır. Claude Code onu her oturumun başında okur, yani içindeki her şey ilk promptundan önce zaten bilinir. Bu rehber dosyanın nereye gittiğini, Claude'un uyacağı bir dosyanın nasıl yazılacağını ve nelerin dışarıda bırakılacağını gösterir.

CLAUDE.md nedir, ne değildir

Her Claude Code oturumu taze bir bağlam penceresiyle başlar. Bilgiyi bir oturumdan ötekine iki mekanizma taşır:

CLAUDE.mdOtomatik hafıza (auto memory)
Kim yazarSenClaude
İçine ne girerYönergeler ve kurallarEdindiği çıkarımlar ve örüntüler
Ne zaman yüklenirHer oturumHer oturum (ilk 200 satır ya da 25 KB)
En uygun olduğuKodlama standartları, iş akışları, proje düzeniDüzeltmelerin ve tercihlerin

İkisi de bağlam olarak yüklenir. Bu sözcük önemli: Claude, CLAUDE.md'yi okur ve ona uymaya çalışır, ama bu zorla uygulanan bir ayar değildir. Belirsiz ya da çelişkili bir satır yok sayılabilir. Dosyayı nasıl yazman gerektiğini bu belirlediği için sorun giderme bölümünde buna döneceğiz.

Zaten bir AGENTS.md var mı?

Deponda başka kodlama ajanları için yazılmış bir AGENTS.md varsa, çalışma dizininde ya da üstünde CLAUDE.md veya CLAUDE.local.md bulunmadığı sürece Claude Code onu CLAUDE.md yerine okuyabilir. İkisi de varsa Claude yalnızca CLAUDE.md dosyalarını okur. İkisini birlikte kullanmak için AGENTS.md'yi CLAUDE.md içinden içe aktar. AGENTS.md'yi doğrudan okumak için Claude Code 2.1.277 veya üstü gerekir.

Dosya nereye konur

Dört yer var ve üst üste biner. Claude onları en genel kapsamdan en özele doğru yükler, yani projene daha yakın olan en son okunur.

KurumYalnızca sen, bu proje

  1. Yönetilen ilkeBT tarafından kurumdaki herkes için belirlenir
  2. Kullanıcı~/.claude/CLAUDE.md, her projedeki tercihlerin
  3. Proje./CLAUDE.md veya ./.claude/CLAUDE.md, git üzerinden ekibinle paylaşılır
  4. Yerel./CLAUDE.local.md, bu projeye özel ve kişisel, git dışında tutulur
Dosyalar birbirinin yerine geçmez, eklenir. Hiçbiri ötekini ezmez; bu yüzden katmanlar arasındaki çelişkiler Claude'u şaşırtır.

Kullanacağın ikisi proje dosyası ve kullanıcı dosyasıdır.

  • Proje dosyası. CLAUDE.md dosyasını projenin köküne ya da kökteki bir .claude klasörüne koy. Commit et; böylece projede çalışan herkes aynı yönergeleri alır. Herkes için doğru olanı yaz: derleme komutları, kurallar, proje düzeni.
  • Kullanıcı dosyası. ~/.claude/CLAUDE.md seni her projeye kadar izler. Açıklamaların nasıl ifade edilmesini istediğin gibi kişisel alışkanlıklar için kullan.
  • Yerel dosya. CLAUDE.local.md, bir sandbox adresi gibi sana ait ve tek bir projeye özel notlar içindir. Commit edilmesin diye onu .gitignore dosyana ekle.

Claude ayrıca başlattığın klasöre ve onun üstündeki her klasöre bakar. foo/bar/ içinde başlatırsan foo/bar/CLAUDE.md ve foo/CLAUDE.md yüklenir. Altındaki klasörlerde bulunan dosyalar daha sonra, Claude o alt klasördeki bir dosyayı ilk okuduğunda ya da düzenlediğinde, gerektikçe yüklenir.

/init ile başla

İlk sürümü elle yazman gerekmez. Bir oturumun içinde şunu çalıştır:

my-website
> /initKod tabanın analiz ediliyor...Bulduğu derleme komutları, test yönergeleri ve kurallarla CLAUDE.md oluşturuldu.
Akışın bir örneği. Tam çıktı sürümüne ve projene bağlıdır.

Claude Code projeni okur ve keşfettiği derleme ve test komutlarıyla kuralları içeren bir CLAUDE.md yazar. Zaten bir CLAUDE.md varsa /init üzerine yazmak yerine iyileştirmeler önerir. Sonucu ilk taslak say. Senin işin, Claude'un kendi başına bulamayacağı şeyleri eklemek.

Dosyanın yüklendiğini doğrulamak için bir oturumda /context çalıştır ve Memory files altına bak.

Dosyaya ne girer

Herhangi bir satırı yazmadan önce iyi bir sınama, iki sorudur:

  1. 1

    Claude bunu kodu okuyarak bulabilir mi?

    Klasör düzeni, test çerçevesi, mevcut bileşenlerin kurulma biçimi: Claude bunları saniyeler içinde okur. Bunları yazmak ağırlık katar, değer katmaz.

  2. 2

    Gerçekten gidip bakar mı?

    Bazı bilgiler depodadır ama çıkarmak dakikalar alır ve Claude bunu her oturumda yeniden yapar. Bunlar bir satıra değer.

İki yanıt da evetse satırı dışarıda bırak. Geriye kalan, koda hiç girmemiş ya da yeniden keşfedilmesi gerçekten zaman alan bilgidir:

  • Derleme, test ve lint için tam komutlar, kullandığın bayraklarla birlikte

  • Ekibinin bir toplantıda aldığı ve kodun göstermediği bir karar

  • Testlerinin ihtiyaç duyduğu ortam değişkeni ya da yerel servis

  • Aracın varsayılanından farklı bir kural ve nedeni

  • Üretilmiş bir klasör gibi asla dokunulmaması gereken şeyler

Claude aynı hatayı ikinci kez yaptığında, bir kod incelemesi onun bilmesi gereken bir şeyi yakaladığında ya da geçen oturumda yazdığın düzeltmeyi yine yazdığında bir satır ekle. Bu, bilginin dosyaya ait olduğunun işaretidir.

Kopyalamaya değer bir örnek

İşte kısa bir proje dosyası. Her satırın doğrulayabileceğin bir şey olduğuna ve mimariyi ne kadar az anlattığına dikkat et.

# Project notes

## Commands
- Install: pnpm install (never npm or yarn)
- Dev server: pnpm dev (port 3000)
- Tests: pnpm test -- --run, run before every commit
- Typecheck: pnpm typecheck, must pass before a pull request

## Conventions
- 2-space indentation, double quotes
- API handlers live in src/api/handlers/
- Do not edit anything in src/gen/, it is generated by pnpm codegen

## Gotchas
- Integration tests need a local Redis: docker compose up redis
- Dates are stored in UTC, formatted only in the UI layer

Bu 15 satır ve her biri yerini hak ediyor.

Claude'un uyacağı satırlar nasıl yazılır

CLAUDE.md yapılandırma değil bağlam olduğundan, bir satırı nasıl ifade ettiğin ona uyulup uyulmayacağını belirler. Yönergeleri kontrol edilebilecek kadar somut yaz.

BelirsizSomut
Kodu düzgün biçimlendir2 boşluklu girinti kullan
Değişikliklerini test etCommit etmeden önce npm test çalıştır
Dosyaları düzenli tutAPI işleyicileri src/api/handlers/ içinde durur
Veritabanına dikkat etMigration'ları asla production'a karşı çalıştırma, .env.staging içindeki staging adresini kullan

Sonra dosyayı formda tut:

  • Kısa. Dosya başına 200 satırın altını hedefle. Daha uzun dosyalar daha çok bağlam harcar ve Claude onlara daha az güvenilir biçimde uyar.
  • Düzenli. İlgili satırları Markdown başlıkları ve madde işaretleri altında grupla. Claude, yoğun paragraflardan çok yapıya daha iyi uyar.
  • Tutarlı. İki satır birbiriyle çelişirse Claude rastgele birini seçebilir. Dosyalarını, alt klasörlerdekiler dahil, ara sıra oku ve güncelliğini yitirmiş her şeyi sil.

Bağırmak işe yaramaz

Claude'un sürekli kaçırdığı bir satıra IMPORTANT eklemek ya da BÜYÜK HARF yazmak, kuralı fazla uygulamasına yol açma eğilimindedir. Bir satır gerçekten esnemiyorsa CLAUDE.md'ye hiç ait değildir. Model ne karar verirse versin Claude Code'un her seferinde zorla uyguladığı bir hook'a ya da bir yasaklama (deny) kuralına aittir.

Claude'un yönerge dosyalarını güncelliğini yitirmiş ya da çelişen satırlar için denetlemesini istiyorsan /doctor prompt-audit çalıştır. Bulgularını raporlar ve düzenleme önerir, sen isteyene kadar hiçbir şeyi değiştirmez. Claude Code 2.1.283 veya üstü gerekir.

Başka dosyaları içe aktarmak

CLAUDE.md, yolun önüne @ koyarak başka dosyaları çekebilir. İçe aktarılan dosya, onu anan CLAUDE.md ile birlikte yüklenir.

See @README for the project overview and @package.json for the npm commands.

# Additional instructions
- git workflow: @docs/git-instructions.md

Göreli yollar, içe aktarmayı içeren dosyadan çözülür. İçe aktarılan dosyalar da başka dosyaları içe aktarabilir, en fazla dört düzey derinliğe kadar. @ yalnızca kod aralıklarının dışında okunur; bu yüzden bir yoldan içe aktarmadan söz etmek istiyorsan onu ters tırnak içine al.

İçe aktarmalar düzen için iyidir, ama bağlamı küçültmez: içe aktarılan dosyalar yine de tamamen yüklenir. Aynı deponun birkaç kopyasında istediğin kişisel yönergeler için ana klasöründen bir dosya içe aktar, örneğin @~/.claude/my-project-instructions.md. Bir proje çalışma dizininin dışından bir dosyayı ilk kez içe aktardığında Claude Code onayını ister.

Tek dosya çok uzadığında

Bir noktada dosya, her oturumun ihtiyacından fazla büyür. Dört aracın var, her biri farklı bir iş için.

AraçNe için kullanılırNe zaman yüklenir
CLAUDE.mdHer oturumda gereken bilgilerHer oturum
.claude/rules/ içindeki kurallarKod tabanının tek bir bölümü için yönergelerClaude eşleşen dosyalara dokunduğunda (kapsamlıysa)
SkillsÇok adımlı prosedürler, ekip rehberleriYalnızca kullanıldığında ya da ilgili olduğunda
HooksHer zaman ya da asla olması gerekenlerClaude Code'un kendisi çalıştırır

Belirli dosyalara kapsamlanmış kurallar

.claude/rules/ içine her konu için bir Markdown dosyası koy, örneğin testing.md ya da api-design.md. Bir kuralın yalnızca belirli dosyalara uygulanması için en üste bir paths alanı ekle:

---
paths:
  - "src/api/**/*.ts"
---

# API rules

- Every endpoint validates its input
- Use the standard error response format

paths olmayan bir kural her oturum yüklenir. Kapsamlı olan, Claude eşleşen bir dosyayı okuduğunda ya da düzenlediğinde yüklenir; böylece yönergeler diğer zamanlarda yoldan çekilir.

CLAUDE.md içindeki bir blok, bir sürümün nasıl hazırlanacağı gibi çok adımlı bir prosedürse onu bir skill'e taşı. Skill'ler yalnızca kullanıldıklarında yüklenir.

Otomatik hafıza: Claude'un kendisi için tuttuğu notlar

Senin yazdığın dosyanın yanı sıra Claude Code kendi başına da not tutabilir. Otomatik hafıza yerel oturumlarda varsayılan olarak açıktır. Claude çalışırken dört tür not kaydeder: seninle ilgili (rolün ve tercihlerin), geri bildirim (düzeltmelerin ve onayladığın yaklaşımlar), proje (kodda görünmeyen kararlar ve son tarihler) ve referanslar (projenin dışında bir şeyleri nerede bulacağı).

Koddan okuyabildiği şeyleri ya da CLAUDE.md'nin zaten söylediklerini kaydetmez. Oturumda "Saved 2 memories" gibi mesajlar göreceksin. Notlar ~/.claude/projects/ altında düz Markdown'dır ve dizin dosyasının ilk 200 satırı ya da 25 KB'ı her oturumun başında yüklenir.

Tüm yönerge dosyalarını ve otomatik hafıza klasörünü görmek, herhangi birini editöründe açmak ve otomatik hafızayı açıp kapatmak için /memory çalıştır. Claude'a "her zaman npm değil pnpm kullan" dersen bunu otomatik hafızaya kaydeder. Bir şeyi bunun yerine CLAUDE.md'ye koydurmak için açıkça söyle: "bunu CLAUDE.md'ye ekle".

Claude Tutorial içinde

Aksi hâlde tekrarlayacağın şeyi yazıya dökmek

Aynı düzeltmeyi kalıcı bir yönergeye dönüştürmek, Claude ile yapılan her tür işte karşılığını veren bir alışkanlıktır, yalnızca kodda değil; uygulama bunu adım adım öğretir.

Çok yakında
Şuradan indir:App Store
BURADAN İNDİR:Google Play

Claude buna uymadığında

Bunları sırayla uygula. Çoğu durumu çözerler.

  1. 1

    Dosyanın gerçekten yüklendiğini kontrol et

    /context çalıştır ve Memory files altına bak. Dosyan orada yoksa Claude onu göremez. Alt klasördeki bir CLAUDE.md gerektikçe yüklendiği için başlangıçta görünmez.

  2. 2

    Satırı daha belirgin yap

    "Kodu güzel biçimlendir" yerine "2 boşluklu girinti kullan" yaz. Doğrulayabildiğin bir satır, Claude'un uyabileceği bir satırdır.

  3. 3

    Çelişkilere bak

    Aynı davranış hakkında farklı şeyler söyleyen iki dosya Claude'u tahmine iter. Proje dosyasını, kullanıcı dosyasını ve kuralları birlikte kontrol et.

  4. 4

    Uzunluğu kıs

    Uzun bir dosya her satırı sulandırır. Tek bir alanla ilgili kısmı kapsamlı bir kurala taşı ve Claude'un kendi okuyabileceği şeyleri ayıkla.

  5. 5

    Mutlaka olması gerekiyorsa zorla uygulat

    Bir yönerge sabit bir noktada, örneğin her commit'ten önce çalışmak zorundaysa onu bir hook olarak yaz. Hook'u Claude Code çalıştırır, yani model onu atlayamaz.

Bilmeye değer iki ek durum var. Bir /compact sonrasında proje kökündeki CLAUDE.md diskten yeniden okunur, yani hayatta kalır. Yalnızca konuşmada verdiğin bir yönerge hayatta kalmaz, bu yüzden onu dosyaya taşı. Bir alt klasördeki CLAUDE.md çok uzunsa (daha küçük bir bağlam penceresinde yaklaşık 40.000 karakterden fazla), Claude yalnızca başını alır; bu yüzden onları kısa tut.

Sık sorulan sorular

CLAUDE.md'yi nereye koyarım?

Projenin köküne (./CLAUDE.md) ya da ./.claude/CLAUDE.md içine. Tüm projeler için kişisel tercihleri ~/.claude/CLAUDE.md içine koy. Tek bir proje hakkındaki özel notlar için .gitignore dosyasına eklenmiş ./CLAUDE.local.md kullan.

Bir CLAUDE.md ne kadar uzun olmalı?

200 satırın altını hedefle. Aşarsan Claude Code açılışta ve /status içinde bir uyarı gösterir. Alana özgü kısımları kapsamlı kurallara taşı ve Claude'un koddan okuyabildiğini çıkar.

CLAUDE.md bir sistem promptu ile aynı şey mi?

Hayır. CLAUDE.md, sistem promptundan sonra bir mesaj olarak iletilir. Claude ona uymaya çalışır, ama kesin uyum garantisi yoktur. Her seferinde geçerli olması gereken yönergeler için bir hook ya da izin kuralı kullan.

CLAUDE.md'yi git'e commit etmeli miyim?

Proje dosyası için evet; böylece tüm ekip paylaşır ve her düzeltmeyle gelişir. Kişisel olan CLAUDE.local.md için hayır.

Claude alt klasörlerdeki CLAUDE.md'yi okur mu?

Evet, gerektikçe. Bir alt klasörün dosyasını, Claude o klasördeki bir dosyayı ilk okuduğunda ya da düzenlediğinde yükler ve yolu içeren bir Loaded satırı gösterir.

CLAUDE.md ile skill arasındaki fark nedir?

CLAUDE.md, her oturumda gereken bilgiler içindir. Skill ise yalnızca çağrıldığında ya da ilgili olduğunda yüklenen bir prosedür veya rehberdir; bu yüzden diğer zamanlarda yer harcamaz.

CLAUDE.md kontrol listen

  • Dosya proje kökünde ve commit edilmiş; kişisel her şey için ayrı bir yerel dosya .gitignore içinde

  • Derleme, test ve lint komutların tam olarak çalıştırdığın gibi içinde

  • Her satır sınamayı geçiyor: Claude bunu koddan öğrenemezdi ya da yeniden keşfetmek için zaman harcardı

  • Hiçbir iki satır birbiriyle çelişmiyor ve dosya 200 satırın altında

  • /context dosyayı Memory files altında listeliyor

Okumaya devam et