Claude Code'da CLAUDE.md ve Auto Memory: Proje Hafızası Rehberi

Claude Code'un her oturumu boş bir bağlamla (context window) başlar — bir önceki konuşmada söylediğiniz hiçbir şeyi hatırlamaz. Peki "yorumları Türkçe yaz", "testleri npm test ile çalıştır" ya da "API endpoint'leri src/api/handlers/ altında olmalı" gibi kuralları her seferinde yeniden yazmak zorunda mısınız? Hayır. Claude Code'da bunun için iki tamamlayıcı mekanizma var: sizin yazdığınız CLAUDE.md dosyaları ve Claude'un kendi kendine tuttuğu notlardan oluşan Auto Memory. Bu yazıda ikisinin nasıl çalıştığını, nereye yazıldığını, hangi sırayla yüklendiğini ve pratikte nasıl kurulacağını uçtan uca anlatıyorum. Daha önce kurulum yazısında /init komutundan kısaca bahsetmiştim; bu yazı o konuyu derinlemesine ele alıyor.

CLAUDE.md Nedir ve Ne İşe Yarar?

CLAUDE.md, Claude Code'a proje, kişisel iş akışı veya organizasyon geneli için kalıcı talimatlar veren düz metin bir markdown dosyasıdır. Claude bu dosyayı her oturumun başında okur. İçine derleme/test komutları, kod standartları, mimari kararlar, isimlendirme kuralları ve sık kullanılan iş akışlarını yazarsınız — kısacası, Claude'a aynı şeyi tekrar tekrar anlatmak yerine bir kere yazıp kalıcı hale getirdiğiniz bilgiler.

Resmi dokümantasyona göre CLAUDE.md'ye bir şey eklemenin doğru zamanı şudur:

  • Claude aynı hatayı ikinci kez yaptığında
  • Bir kod incelemesi, Claude'un bu proje hakkında zaten bilmesi gereken bir şeyi yakaladığında
  • Sohbete geçen oturumda yazdığınız aynı düzeltmeyi veya açıklamayı tekrar yazdığınızda
  • Yeni bir takım arkadaşının üretken olmak için ihtiyaç duyacağı bir bağlam olduğunda

Buna karşılık, çok adımlı bir prosedür ya da yalnızca kod tabanının belirli bir bölümünde geçerli bir kuralsa, bunu CLAUDE.md'ye değil bir skill'e veya yol bazlı (path-scoped) bir kurala taşımak daha doğrudur — bu ikisine birazdan değineceğim.

CLAUDE.md Dosyaları Nerede Saklanır?

CLAUDE.md dosyaları birkaç farklı konumda yaşayabilir; her konumun kapsamı farklıdır. Aşağıdaki tablo bunları en geniş kapsamdan en dar kapsama doğru sıralar (bu sıralama aynı zamanda yükleme sırasıdır):

Kapsam Konum Kullanım örneği
Yönetilen politika (managed policy) macOS: /Library/Application Support/ClaudeCode/CLAUDE.md
Linux/WSL: /etc/claude-code/CLAUDE.md
Windows: C:\Program Files\ClaudeCode\CLAUDE.md
Şirket geneli kodlama standartları, güvenlik politikaları
Kullanıcı talimatları ~/.claude/CLAUDE.md Tüm projelerde geçerli kişisel kod stili tercihleri
Proje talimatları ./CLAUDE.md veya ./.claude/CLAUDE.md Proje mimarisi, takım standartları, ortak iş akışları
Yerel talimatlar ./CLAUDE.local.md Kişisel sandbox URL'leri, tercih edilen test verisi

Proje talimatları versiyon kontrolü üzerinden takımla paylaşılır; yerel talimatlar ise yalnızca sizde kalır ve .gitignore'a eklenmelidir (/init çalıştırıp kişisel seçeneği belirlerseniz bunu otomatik yapar).

CLAUDE.md Dosyaları Hangi Sırayla Yüklenir?

Claude Code, çalışma dizininizden başlayarak dizin ağacında yukarı doğru yürür ve her klasörde CLAUDE.md ile CLAUDE.local.md arar. Örneğin foo/bar/ içinde çalıştırırsanız hem foo/bar/CLAUDE.md hem de foo/CLAUDE.md yüklenir.

Bulunan tüm dosyalar birbirinin üzerine yazmaz; art arda bağlama eklenir. Dizin ağacında sıralama dosya sistemi kökünden çalışma dizinine doğrudur — yani foo/CLAUDE.md, foo/bar/CLAUDE.md'den önce bağlama girer. Böylece çalıştığınız klasöre en yakın talimatlar en son okunur. Her dizin seviyesinde CLAUDE.local.md, aynı seviyedeki CLAUDE.md'den sonra eklenir; yani kişisel notlarınız o seviyede okunan son şeydir.

Çalışma dizininin altındaki alt klasörlerdeki CLAUDE.md dosyaları başlangıçta yüklenmez — Claude o alt klasördeki bir dosyayı okuduğu anda devreye girerler. Büyük monorepo'larda başka takımların CLAUDE.md dosyaları işinizle alakasızsa claudeMdExcludes ayarıyla belirli dosyaları hariç tutabilirsiniz:

{
  "claudeMdExcludes": [
    "**/monorepo/CLAUDE.md",
    "/home/user/monorepo/other-team/.claude/rules/**"
  ]
}

/init Komutu ile CLAUDE.md Nasıl Oluşturulur?

Sıfırdan CLAUDE.md yazmak yerine, proje kök dizininde Claude Code'u açıp /init yazmanız yeterlidir:

claude
> /init

Claude kod tabanınızı analiz eder ve derleme komutları, test talimatları ile keşfettiği proje kurallarını içeren bir dosya oluşturur. Zaten bir CLAUDE.md varsa /init dosyanın üzerine yazmaz, iyileştirme önerir. CLAUDE_CODE_NEW_INIT=1 ortam değişkenini ayarlarsanız daha etkileşimli, çok aşamalı bir akış açılır: /init önce hangi bileşenlerin kurulacağını sorar (CLAUDE.md, skill'ler, hook'lar), sonra bir subagent ile kod tabanını keşfeder, eksik bilgileri size sorarak tamamlar ve dosyaları yazmadan önce gözden geçirebileceğiniz bir öneri sunar.

Zaten bir AGENTS.md dosyanız varsa, aynı dizinde /init çalıştırdığınızda bu dosyayı okur ve ilgili kısımları oluşturduğu CLAUDE.md'ye dahil eder. .cursorrules, .devin/rules/ ve .windsurfrules gibi diğer araçların yapılandırma dosyalarını da aynı şekilde okur.

Etkili Bir CLAUDE.md Nasıl Yazılır?

CLAUDE.md her oturumun başında bağlama yüklenir ve konuşmanızla birlikte token tüketir; bu yüzden nasıl yazıldığı önemlidir:

  • Boyut: Dosya başına 200 satırın altını hedefleyin. Daha uzun dosyalar daha fazla bağlam tüketir ve talimatlara uyumu azaltır. Talimatlarınız büyüyorsa yol bazlı kurallara (aşağıda anlatıyorum) bölün.
  • Yapı: Markdown başlıkları ve madde işaretleri kullanın. Claude, yapıyı tıpkı bir okuyucu gibi tarar; düzenli bölümler yoğun paragraflardan daha kolay takip edilir.
  • Somutluk: Doğrulanabilir, net talimatlar yazın. "Kodu düzgün formatla" yerine "2 boşluk girinti kullan"; "değişikliklerini test et" yerine "commit'ten önce npm test çalıştır"; "dosyaları düzenli tut" yerine "API handler'ları src/api/handlers/ altında olmalı" gibi.
  • Tutarlılık: İki kural birbiriyle çelişiyorsa Claude rastgele birini seçebilir. CLAUDE.md dosyalarınızı, alt dizinlerdeki nested CLAUDE.md'leri ve .claude/rules/ dosyalarını periyodik olarak gözden geçirip eskimiş veya çelişen talimatları temizleyin.

Bu kuralları uygulamanın kolay bir yolu, checked-in bir CLAUDE.md'yi /doctor komutuyla denetlemektir: v2.1.206 ve sonrasında /doctor, Claude'un kod tabanından zaten çıkarabileceği içeriği (dizin yapıları, bağımlılık listeleri, mimari özetleri) kırpmayı önerirken, araçların varsayılanlarından farklı olan tuzakları, gerekçeleri ve kuralları korur.

@path İçe Aktarma (Import) Sözdizimi

CLAUDE.md dosyaları @path/to/import sözdizimiyle başka dosyaları içe aktarabilir. İçe aktarılan dosyalar, referans veren CLAUDE.md ile birlikte açılışta bağlama genişletilerek yüklenir:

Proje genel bakışı için @README ve kullanılabilir npm komutları için @package.json'a bakın.

# Ek Talimatlar
- git iş akışı @docs/git-instructions.md

Hem göreli hem mutlak yollar desteklenir; göreli yollar, referansı içeren dosyaya göre çözülür (çalışma dizinine göre değil). İçe aktarılan dosyalar kendi içinde başka dosyaları içe aktarabilir, maksimum derinlik dört seviyedir. Import ayrıştırması markdown kod blokları ve satır içi kod işaretlerini atlar — yani bir yolu içe aktarmadan yalnızca metin olarak belirtmek isterseniz `@README` gibi ters tırnak içine alabilirsiniz; ters tırnak dışında yazılan @README ise dosyayı içe aktarır.

Claude Code, bir projede ilk kez harici bir import'la karşılaştığında dosyaları listeleyen bir onay diyaloğu gösterir. Reddederseniz import'lar devre dışı kalır ve diyalog bir daha çıkmaz.

Birden fazla git worktree ile çalışıyorsanız, .gitignore'a eklenmiş bir CLAUDE.local.md yalnızca oluşturulduğu worktree'de bulunur. Kişisel talimatları worktree'ler arasında paylaşmak için ev dizininizdeki bir dosyayı import edebilirsiniz:

# Kişisel Tercihler
- @~/.claude/my-project-instructions.md

AGENTS.md Kullanan Projelerde Claude Code

Claude Code yalnızca CLAUDE.md dosyasını okur, AGENTS.md'yi değil. Deponuz zaten başka kodlama ajanları için AGENTS.md kullanıyorsa, aynı içeriği tekrar etmeden iki aracın da aynı talimatları okumasını sağlamak için AGENTS.md'yi içe aktaran bir CLAUDE.md oluşturabilirsiniz. Bu importun altına Claude'a özel talimatlar da ekleyebilirsiniz:

@AGENTS.md

## Claude Code

src/billing/ altındaki değişiklikler için plan modu kullan.

Yalnızca aynı içeriği paylaşmak yeterliyse bir symlink de işe yarar:

ln -s AGENTS.md CLAUDE.md

Windows'ta symlink oluşturmak Yönetici ayrıcalıkları veya Geliştirici Modu gerektirdiğinden, bu platformda @AGENTS.md importunu tercih edin.

.claude/rules/ ile Kuralları Modüler Hale Getirmek

Büyük projelerde tek bir CLAUDE.md hızla şişer. Bunun yerine talimatları .claude/rules/ dizini altında konu bazlı dosyalara bölebilirsiniz — code-style.md, testing.md, security.md gibi. Tüm .md dosyaları özyinelemeli olarak keşfedilir, yani frontend/ veya backend/ gibi alt klasörlere de ayırabilirsiniz.

paths frontmatter'ı olmayan kurallar, açılışta .claude/CLAUDE.md ile aynı öncelikte yüklenir. Asıl güç, kuralları belirli dosya kalıplarına sınırlayabilmenizde: YAML frontmatter içindeki paths alanıyla bir kuralı yalnızca eşleşen dosyalarla çalışırken devreye sokabilirsiniz.

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

# API Geliştirme Kuralları

- Tüm API endpoint'leri girdi doğrulaması içermeli
- Standart hata yanıt formatını kullan
- OpenAPI dokümantasyon yorumları ekle

Yol bazlı kurallar, Claude eşleşen bir dosyayı okuduğunda tetiklenir — her araç çağrısında değil. Birden fazla kalıp belirtebilir ve süslü parantezle uzantı genişletmesi (brace expansion) kullanabilirsiniz:

---
paths:
  - "src/**/*.{ts,tsx}"
  - "lib/**/*.ts"
  - "tests/**/*.test.ts"
---

.claude/rules/ dizini symlink'leri de destekler, böylece paylaşılan bir kural setini birden fazla projeye bağlayabilirsiniz. ~/.claude/rules/ altındaki kişisel kurallar ise makinenizdeki her projede geçerlidir ve proje kurallarından önce yüklenir, dolayısıyla proje kuralları önceliklidir.

Auto Memory (Otomatik Hafıza) Nedir?

CLAUDE.md'yi siz yazarsınız; Auto Memory'yi ise Claude kendisi. Çalışırken derleme komutlarını, hata ayıklama içgörülerini, mimari notları, kod stili tercihlerini ve iş akışı alışkanlıklarını kendi kendine kaydeder. Her oturumda bir şey kaydetmez — bir bilginin gelecekteki bir konuşmada işe yarayıp yaramayacağına kendisi karar verir.

Bunu, siz düzeltme yaptıkça Claude'un öğrendiği bir sistem olarak düşünebilirsiniz: "her zaman pnpm kullan, npm değil" ya da "API testleri yerel bir Redis örneği gerektirir" gibi bir şey söylediğinizde, Claude bunu Auto Memory'ye kaydeder. CLAUDE.md'ye bir şey eklemek isterseniz bunun yerine doğrudan "bunu CLAUDE.md'ye ekle" diyebilir veya /memory ile dosyayı kendiniz düzenleyebilirsiniz.

Auto Memory Nasıl Çalışır ve Nerede Saklanır?

Her proje, ~/.claude/projects/<project>/memory/ altında kendine ait bir hafıza dizini alır. <project> yolu git deposundan türetilir, yani aynı deponun tüm worktree'leri ve alt dizinleri tek bir Auto Memory dizinini paylaşır. Git deposu dışında ise proje kök dizini kullanılır.

Bu dizinin içeriği şöyledir:

~/.claude/projects/<project>/memory/
├── MEMORY.md          # Kısa bir indeks, her oturumda yüklenir
├── debugging.md       # Hata ayıklama kalıpları üzerine detaylı notlar
├── api-conventions.md # API tasarım kararları
└── ...                # Claude'un oluşturduğu diğer konu dosyaları

MEMORY.md, hafıza dizininin bir indeksi gibi çalışır; Claude oturum boyunca bu dizindeki dosyaları okur ve yazar, neyin nerede saklandığını takip etmek için MEMORY.md'yi kullanır. Önemli bir sınır var: her oturumun başında MEMORY.md'nin yalnızca ilk 200 satırı veya 25KB'ı — hangisi önce gelirse — yüklenir. Bu eşiğin ötesindeki içerik oturum başlangıcında yüklenmez; bu yüzden Claude, detaylı notları ayrı konu dosyalarına taşıyarak MEMORY.md'yi kısa tutar. debugging.md gibi konu dosyaları açılışta yüklenmez; Claude bunlara ihtiyaç duyduğunda standart dosya araçlarıyla okur.

Bu limit yalnızca MEMORY.md için geçerlidir — CLAUDE.md dosyaları uzunluğundan bağımsız olarak tam yüklenir, ama daha kısa dosyalar daha iyi uyum sağlar. Auto Memory makineye özgüdür: aynı git deposunun tüm worktree'leri ve alt dizinleri bir hafıza dizinini paylaşır, ancak dosyalar makineler veya bulut ortamları arasında paylaşılmaz.

Auto Memory'yi Açma, Kapama ve Özelleştirme

Auto Memory varsayılan olarak açıktır. Bir oturumda /memory açıp Auto Memory anahtarını kapatabilir veya proje ayarlarınızda autoMemoryEnabled'ı ayarlayabilirsiniz:

{
  "autoMemoryEnabled": false
}

Ortam değişkeniyle devre dışı bırakmak için:

CLAUDE_CODE_DISABLE_AUTO_MEMORY=1

Hafızayı farklı bir konumda saklamak isterseniz settings.json'da autoMemoryDirectory'yi ayarlayın (kullanıcı, proje, yerel, politika veya --settings gibi herhangi bir ayar kapsamından okunur):

{
  "autoMemoryDirectory": "~/my-custom-memory-dir"
}

Bu değer mutlak bir yol olmalı veya ~/ ile başlamalıdır. Bir projenin .claude/settings.json veya .claude/settings.local.json dosyasında ayarlanırsa, yalnızca o klasör için workspace trust diyaloğunu kabul ettikten sonra devreye girer — bu, hook'ları yöneten kapıyla aynıdır.

Auto Memory dosyaları düz markdown'dır; istediğiniz zaman düzenleyebilir veya silebilirsiniz. /memory komutunu çalıştırıp hafıza klasörünü seçerek Claude'un neyi kaydettiğini gözden geçirebilirsiniz.

/memory Komutu Ne İşe Yarar?

/memory komutu, geçerli oturumda yüklenen tüm CLAUDE.md, CLAUDE.local.md ve kural dosyalarını listeler, Auto Memory'yi açıp kapatmanızı sağlar ve Auto Memory klasörünü açmak için bir bağlantı sunar. Herhangi bir dosyayı seçtiğinizde editörünüzde açılır. Bu komut, hangi dosyaların gerçekten yüklendiğini doğrulamanın en hızlı yoludur — bir dosya listede görünmüyorsa Claude onu göremiyor demektir.

Kurumsal Kullanım: Organizasyon Çapında CLAUDE.md

Takımlar genelinde Claude Code dağıtan organizasyonlar, merkezi olarak yönetilen bir CLAUDE.md'yi bir makinedeki tüm kullanıcılara uygulayabilir. Bu dosya bireysel ayarlarla dışlanamaz. Kurulum adımları şöyledir:

  1. Dosyayı yönetilen politika konumunda oluşturun (yukarıdaki tabloya bakın).
  2. MDM, Group Policy, Ansible gibi bir yapılandırma yönetim aracıyla geliştirici makinelerine dağıtın.

Alternatif olarak managed-settings.json içindeki claudeMd anahtarıyla, ayrı bir dosya dağıtmadan yönetilen CLAUDE.md içeriğini doğrudan ayarlara gömebilirsiniz:

{
  "claudeMd": "Her zaman commit'ten önce `make lint` çalıştır.\nAsla doğrudan main'e push yapma."
}

Yönetilen CLAUDE.md ile yönetilen ayarlar farklı amaçlara hizmet eder: teknik zorlama için ayarları, davranışsal rehberlik için CLAUDE.md'yi kullanın.

İhtiyaç Nerede yapılandırılır
Belirli araç, komut veya dosya yollarını engellemek Yönetilen ayarlar: permissions.deny
Sandbox izolasyonunu zorunlu kılmak Yönetilen ayarlar: sandbox.enabled
Ortam değişkenleri ve API sağlayıcı yönlendirmesi Yönetilen ayarlar: env
Kod stili ve kalite yönergeleri Yönetilen CLAUDE.md
Claude için davranışsal talimatlar Yönetilen CLAUDE.md

Claude CLAUDE.md'yi Neden Takip Etmiyor?

CLAUDE.md içeriği sistem promptunun bir parçası olarak değil, sistem promptundan sonra gelen bir kullanıcı mesajı olarak iletilir. Claude onu okur ve uymaya çalışır, ama özellikle belirsiz veya çelişen talimatlarda kesin uyum garanti edilmez. Sorun giderme adımları:

  • /memory çalıştırıp CLAUDE.md ve CLAUDE.local.md dosyalarınızın gerçekten yüklendiğini doğrulayın. Bir dosya listede yoksa Claude onu göremiyordur.
  • İlgili CLAUDE.md'nin oturumunuz için yüklenen bir konumda olduğunu kontrol edin.
  • Talimatları daha somut hale getirin — "kodu düzgün formatla" yerine "2 boşluk girinti kullan" gibi.
  • Farklı CLAUDE.md dosyaları arasında çelişen talimat olup olmadığına bakın; iki dosya aynı davranış için farklı yönerge veriyorsa Claude rastgele birini seçebilir.

Commit öncesi veya her dosya düzenlemesinden sonra çalışması gereken, yani belirli bir noktada kesinlikle çalışması gereken bir talimatınız varsa bunu CLAUDE.md'ye değil bir hook'a yazın — hook'lar sabit yaşam döngüsü olaylarında shell komutu olarak çalışır ve Claude'un kararından bağımsız olarak uygulanır. Sistem prompt seviyesinde talimat istiyorsanız --append-system-prompt kullanabilirsiniz; bu bayrak her çağrıda geçilmesi gerektiğinden interaktif kullanımdan çok script ve otomasyona uygundur — bu konuyu CLI otomasyon yazısında daha detaylı işlemiştim.

CLAUDE.md'niz çok büyüdüyse (200 satırın üzerinde), yol bazlı kuralları kullanarak talimatları yalnızca ilgili dosyalarla çalışırken yüklenecek şekilde bölün ya da her oturumda gerekmeyen içeriği kırpın. İçe aktarma (@path) organizasyon için yardımcı olur ama bağlam tüketimini azaltmaz, çünkü içe aktarılan dosyalar da açılışta yüklenir.

/compact sonrasında proje kök dizinindeki CLAUDE.md hayatta kalır: Claude onu diskten yeniden okur ve oturuma tekrar enjekte eder. Alt dizinlerdeki nested CLAUDE.md dosyaları ise otomatik olarak yeniden enjekte edilmez; Claude o alt dizindeki bir dosyayı bir sonraki sefer okuduğunda yeniden yüklenirler. Bir talimat compaction sonrası kaybolduysa, ya yalnızca sohbette verilmiştir ya da henüz yeniden yüklenmemiş bir nested CLAUDE.md'dedir — kalıcı olmasını istediğiniz sohbet-içi talimatları CLAUDE.md'ye ekleyin.

Örnek Workflow: Sıfırdan Bir Proje İçin Hafıza Kurulumu

Yeni bir projeye başladığınızı ve Claude Code'u disipline etmek istediğinizi varsayalım. İzlenecek pratik sıra şöyle:

cd ~/projeler/yeni-proje
claude
> /init

Claude kod tabanını tarar, derleme/test komutlarını keşfeder ve bir CLAUDE.md taslağı oluşturur. Bu taslağı gözden geçirip Claude'un kendi başına çıkaramayacağı şeyleri ekleyin: "Bu proje monorepo, yalnızca packages/web altında çalış", "Veritabanı migration'ları elle değil make migrate ile uygulanır" gibi.

Proje büyüdükçe ve farklı alanlar (frontend, backend, testler) için ayrı kurallara ihtiyaç duyduğunuzda .claude/rules/ dizinine geçin:

mkdir -p .claude/rules
cat > .claude/rules/frontend.md <<'EOF'
---
paths:
  - "src/components/**/*.tsx"
---

# Frontend Kuralları

- Tüm bileşenler fonksiyonel component olmalı, class component kullanma
- Stil için Tailwind kullan, satır içi style attribute'u kullanma
EOF

Bundan sonra Claude ile çalışırken "her zaman pnpm kullan, npm değil" gibi bir düzeltme yaparsanız, bu otomatik olarak Auto Memory'ye kaydedilir; hiçbir şey yapmanıza gerek yoktur. Ara sıra /memory ile hem CLAUDE.md hem Auto Memory'yi denetleyip eskimiş notları temizlemek, uzun vadede en sağlıklı yaklaşımdır. Bir sonraki oturumda tekrar claude yazıp başladığınızda, tüm bu katmanlar — yönetilen politika varsa, kullanıcı CLAUDE.md'niz, proje CLAUDE.md'si, eşleşen kurallar ve Auto Memory'nin MEMORY.md indeksi — otomatik olarak bağlama yüklenmiş olur.

CLAUDE.md mi, Auto Memory mi, Hook mu, Skill mi?

Dört mekanizma da "Claude'un davranışını şekillendirme" amacına hizmet eder ama farklı problemleri çözer:

Mekanizma Kim yazar Ne zaman kullanılır
CLAUDE.md Siz Her oturumda geçerli kalıcı kurallar: kod standartları, mimari, ortak iş akışları
Auto Memory Claude Sizin düzeltmelerinizden öğrenilen derleme komutları, hata ayıklama içgörüleri, tercihler
.claude/rules/ (yol bazlı) Siz Yalnızca belirli dosya kalıplarıyla çalışırken geçerli kurallar
Hook Siz Claude'un kararından bağımsız, kesinlikle her seferinde çalışması gereken kontroller
Skill Siz Çağrıldığında veya ilgili görüldüğünde yüklenen, çok adımlı tekrarlanabilir iş akışları

Kısacası: CLAUDE.md ve Auto Memory her oturumda otomatik bağlama girer ve bağlam sağlar, zorlama (enforcement) sağlamaz — Claude bunlara uyar ama garanti değildir. Kesin uyum gereken şeyler için hook; yalnızca gerektiğinde yüklenmesi gereken çok adımlı prosedürler için skill; yalnızca belirli dosyalarla çalışırken gereken kurallar için yol bazlı kural kullanın.

Sıkça Sorulan Sorular

CLAUDE.md dosyası nereye konulmalı?

Proje geneli için ./CLAUDE.md veya ./.claude/CLAUDE.md kullanılır ve versiyon kontrolüne eklenir. Kişisel proje tercihleri için .gitignore'a eklenen ./CLAUDE.local.md, tüm projelerde geçerli kişisel tercihler için ~/.claude/CLAUDE.md, organizasyon çapında zorunlu kurallar için ise işletim sistemine göre değişen bir yönetilen politika konumu kullanılır.

CLAUDE.md dosyaları hangi sırayla yüklenir?

Yönetilen politika, kullanıcı talimatları, proje talimatları ve yerel talimatlar sırasıyla en geniş kapsamdan en dara doğru yüklenir; dosyalar birbirinin üzerine yazmaz, art arda birleştirilir. Dizin ağacında dosya sistemi kökünden çalışma dizinine doğru sıralanır, yani çalışılan klasöre en yakın CLAUDE.md en son okunur. Her dizin seviyesinde CLAUDE.local.md, CLAUDE.md'den sonra eklenir.

Auto Memory'nin CLAUDE.md'den farkı nedir?

CLAUDE.md'yi siz yazarsınız ve talimat/kural içerir; her oturumda tam olarak yüklenir. Auto Memory'yi ise Claude kendisi yazar; düzeltmelerinizden ve tercihlerinizden öğrendiği notları, derleme komutlarını ve hata ayıklama ipuçlarını saklar. Her oturumda yalnızca MEMORY.md dosyasının ilk 200 satırı veya 25KB'ı (hangisi önce gelirse) yüklenir, konu bazlı dosyalar ise ihtiyaç anında okunur.

Auto Memory verileri nerede saklanır?

Her proje için ~/.claude/projects/<project>/memory/ altında ayrı bir dizin oluşturulur; bu dizindeki MEMORY.md bir indeks görevi görür, ek konu dosyaları da aynı klasörde tutulur. Konum autoMemoryDirectory ayarıyla değiştirilebilir, tamamen kapatmak için autoMemoryEnabled false yapılabilir veya CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 ortam değişkeni kullanılabilir.

Claude neden CLAUDE.md'deki talimatları takip etmiyor?

CLAUDE.md içeriği sistem promptunun bir parçası değil, sistem promptundan sonra gelen bir kullanıcı mesajı olarak iletilir; bu yüzden kesin uyum garanti edilmez. /memory komutuyla dosyanın gerçekten yüklendiğini doğrulayın, talimatları daha somut hale getirin, çelişen kuralları temizleyin. Her durumda kesin uyulması gereken kurallar için CLAUDE.md yerine hook kullanılmalıdır, çünkü hook'lar Claude'un kararından bağımsız olarak çalışır.

AGENTS.md kullanan bir projede Claude Code nasıl çalışır?

Claude Code yalnızca CLAUDE.md dosyasını okur, AGENTS.md'yi doğrudan okumaz. Aynı içeriği iki dosyada tekrar etmemek için CLAUDE.md içine @AGENTS.md şeklinde bir import satırı eklenir; Claude'a özel talimatlar bu satırın altına yazılabilir. Windows dışındaki sistemlerde CLAUDE.md'yi AGENTS.md'ye symlink yapmak da bir alternatiftir.

Özet

Claude Code'un proje hafızası iki katmandan oluşur: sizin yazdığınız ve versiyon kontrolüyle takımınızla paylaştığınız CLAUDE.md dosyaları, ve Claude'un düzeltmelerinizden kendi kendine öğrendiği Auto Memory. Pratik bir başlangıç noktası şöyle: yeni bir projede /init ile taslak bir CLAUDE.md oluşturun, Claude'un kendi başına çıkaramayacağı kuralları elle ekleyin, dosya 200 satırı geçmeye başladığında .claude/rules/ ile yol bazlı kurallara bölün, ve Auto Memory'yi açık bırakıp zaman zaman /memory ile neyin biriktiğini gözden geçirin. Kesin uyum gereken kontroller için CLAUDE.md yerine hook kullanmayı unutmayın — CLAUDE.md ve Auto Memory birer bağlamdır, zorlama katmanı değildir. Bu temel kurulduktan sonra bir sonraki doğal adım, projeye özgü tekrarlanabilir iş akışlarını skill haline getirmektir; bu konuyu ayrı bir yazıda ele alacağım.

Bu yazı Ahmet Bilgiç tarafından ahmetbilgic.com için yazılmıştır. Diğer yazılar için: medium.com/@ahmet_bilgic07