SSD Nodes Learn 🎉 VPS $5.50/aydan başlayan
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-13

Kodlama ajanları talimatları neden görmezden gelir?

Kodlama ajanlarının talimatlarınızı neden uygulamadığını öğrenin. Bağlam penceresi ve işlem sırası sorunlarını teşhis ederek hatalı komutları düzeltmenin yollarını keşfedin.

Kodlama ajanları talimatlarınızı neden görmezden gelir

Kodlama ajanlarının talimatlarınızı görmezden gelmesinin dört nedeni vardır ve bunların hiçbiri fazla nazik olmanız değildir. Kural hiçbir zaman bağlam penceresinde (context window) yer almamıştır. Kural, bir eylemi doğrulamak için fazla belirsizdir. Bağlamdaki başka bir şey, genellikle ajanın az önce okuduğu kod, kural ile çelişmektedir. Veya kural hala yüklüdür ancak mevcut işlem sırasının çok gerisinde kalmıştır ve ajan kendisine yakın olan verilerle çalışmaktadır.

Her nedenin kendine özgü bir çözümü vardır, bu yüzden ilk iş bunları birbirinden ayırmaktır. Büyük harfler ve IMPORTANT kelimesini kullanmak bir teşhis yöntemi değildir. Aşağıdaki mekanizmalar, Ağustos 2026 itibarıyla yükleme ve sıkıştırma davranışı ayrıntılı olarak belgelendiği için örnek olarak Claude Code kullanmaktadır. Diğer araçlar ayrıntılarda farklılık gösterse de ana hatlarıyla aynı şekilde davranırlar.

Öncelikle iki terimi tanımlayalım. Bağlam penceresi (context window), modelin belirli bir işlem sırasında gördüğü metin bloğudur: sistem istemi, talimat dosyalarınız, konuşma geçmişi ve ajanın okuduğu her dosya. Harness, modelin etrafındaki programdır; diskten dosyaları okuyan ve bu bloğu bir araya getiren yapıdır. Bu yazıdaki neredeyse her şikayet, aslında modele değil, harness yapısına yöneliktir.

Talimat dosyanız bir ayar değil, bir mesajdır

Bir talimat dosyası yapılandırma değildir. Çalışma zamanında hiçbir şey CLAUDE.md dosyasını okumaz ve uygulamaz. Harness, dosyayı diskten okur ve metni konuşmanın içine yapıştırır. Claude Code içerisinde bu içerik, sistem isteminden sonra yerleştirilen bir kullanıcı mesajı olarak iletilir; bu da modelin kurallarınızı yazdığınız diğer her şeyi gördüğü gibi gördüğü anlamına gelir.

Bunun rahatsız edici bir sonucu vardır. Kurallarınız, penceredeki diğer tüm metinlerle eşit düzeyde rekabet eder. Bir kural bir iddiadır. Aracın az önce açtığı dosya ise kanıttır. İkisi çeliştiğinde genellikle kanıt kazanır ve hiçbir hata oluşmaz; çünkü modelin bakış açısından ters giden bir durum yoktur.

Resmi belgeler bunu açıkça belirtir: talimat dosyaları zorunlu yapılandırma olarak değil, bağlam olarak ele alınır. Modelin kararı ne olursa olsun bir eylemi engellemek için bir cümleye değil, bir kancaya (hook) ihtiyacınız vardır. Bu prensibi unutmayın. Bu yazının sonundaki düzeltmelerin çoğu, bu prensibin belirli bir duruma uygulanmış halidir.

Hangi talimat dosyaları ne zaman yüklenir

Claude Code, başlatıldığı dizinden başlayarak dizin ağacında yukarı doğru ilerler. Dosya sistemi kök dizininden çalışma dizininize kadar olan tüm CLAUDE.md ve CLAUDE.local.md dosyaları, başlatma anında tamamen yüklenir. Bu dosyalar belirtilen sırayla birleştirilir; dolayısıyla başlatma yaptığınız yere en yakın olan dosya en son okunur ve aynı dizin içindeki .local dosyası, ana dosyadan sonra eklenir.

Çalışma dizininizin altındaki alt dizinlerde bulunan dosyalar farklı davranır. Bu dosyalar başlatma anında yüklenmez. Yalnızca aracı (agent) o dizindeki bir dosyayı okuduğunda yüklenirler. .claude/rules/ içindeki paths: ön bilgisi (frontmatter) alanına sahip yol kapsamlı kurallar için de aynı durum geçerlidir: bu kurallar her adımda değil, eşleşen bir dosya okunduğunda bağlama dahil edilir.

Bu tek fark, bildirilen hataların büyük bir kısmını açıklar. packages/api/CLAUDE.md içine bir kural eklersiniz, API hakkında bir soru sorarsınız ve aracı, packages/api/ altındaki hiçbir dosyayı açmadan yanıt verir. Kural göz ardı edilmemiştir; kural hiçbir zaman mevcut olmamıştır. Eğer deponuzdaki rehberlik monorepo içindeki paket bazlı talimat dosyaları arasında bölünmüşse, her seferinde kontrol edilmesi gereken ilk yer burasıdır.

Bir diğer yükleme tuzağı ise "aracı talimatlarımı göz ardı etti" şikayetlerinin en yaygın nedenidir: Claude Code CLAUDE.md dosyasını okur, AGENTS.md dosyasını değil. Standart olarak AGENTS.md kullanan ve CLAUDE.md dosyası bulunmayan bir depo, Claude Code'a yüklenecek hiçbir şey sunmaz. Desteklenen köprü, ilk satırı @AGENTS.md olan ve başlatma anında dosyayı içe aktaran, altında ise Claude'a özel notların bulunduğu bir CLAUDE.md dosyasıdır. Eklenecek ekstra bir notunuz olmadığında sembolik bağ (symlink) da iş görür. Bu dosyada nelerin yer alması gerektiğine karar vermek ise aracı talimatlarını insan dokümantasyonundan ayırma konusunda ele alınan ayrı bir konudur.

Dosyayı yeniden yazmadan önce yüklendiğini doğrulayın

Ajanın dosyayı görebildiğine dair kanıtınız olmadan metin üzerinde değişiklik yapmayın. İki kontrol yöntemi mevcuttur ve maliyeti düşük olan ilk uygulanmalıdır.

Oturum içerisinde /context komutunu çalıştırın. Bu komut, mevcut pencereyi kategorilere ayırarak listeler ve Memory files listesi, gerçekten yüklenmiş olan her talimat dosyasının adını gösterir. Bu listede yer almayan bir dosya konuşmaya dahil edilmemiştir; dolayısıyla dosya içerisinde yapacağınız hiçbir değişiklik bir sonuç doğurmaz. /memory ise dosya konumlarını listeler ve henüz mevcut olmayanlar da dahil olmak üzere dosyaları düzenleme için açar.

Daha kesin bir sonuç için yükleme işlemlerini günlüğe kaydedin. InstructionsLoaded kanca olayı, her CLAUDE.md veya kural dosyası bağlama girdiğinde tetiklenir ve eşleştiricisi yüklemenin neden gerçekleştiğini bildirir: session_start, nested_traversal, path_glob_match, include veya compact. Bunu .claude/settings.json içerisine yerleştirin:

{
  "hooks": {
    "InstructionsLoaded": [
      {
        "matcher": "nested_traversal",
        "hooks": [
          {
            "type": "command",
            "command": "cat >> /tmp/instructions-loaded.log"
          }
        ]
      }
    ]
  }
}

Kanca, yükünü standart girdi üzerinden JSON formatında alır; bu nedenle cat tüm kaydı ekler. Çalışırken tail -f /tmp/instructions-loaded.log ile bu kaydı izleyin. Bu olayın çıkış durumu göz ardı edilir, yani kanca yalnızca gözlem yapabilir, engelleme yapamaz. İç içe yerleştirilmiş dosyanız, beklentinizin olduğu bir oturumda bu günlükte görünmüyorsa yeniden yazma işlemini durdurun. Sorun, dosyanın konumlandırılmasıyla ilgilidir.

Uzun bir oturumun kurallarınız üzerindeki etkisi

Burada iki ayrı etki söz konusudur ve bunlar farklı müdahaleler gerektirir.

Uzaklık. 1. turda belirtilen bir kural, 90. turda hala bağlam penceresindedir; ancak şu an yaptığınız işe daha yakın ve daha özel olan 90 turluk metinle rekabet halindedir. Bunu yapılandırma ile engelleyemezsiniz, ancak ölçebilirsiniz. Aynı görevi yeni bir oturumda çalıştırın. Kural orada geçerli olup uzun bir oturumun derinliklerinde başarısız oluyorsa, sorun uzaklıktır.

Sıkıştırma. Pencere dolduğunda, sistem şimdiye kadarki konuşmayı özetler ve bu özet üzerinden devam eder. Hayatta kalanlar, özetleyicinin önemli bulduklarıdır; bunlar sizin önemli bulduklarınızla aynı olmayabilir. Claude Code, sonucu mekanizma bazında belgeler ve aradaki farklar büyüktür. Proje kök dizinindeki CLAUDE.md ve kapsam dışı kurallar, bir sıkıştırma işleminden sonra diskten yeniden yüklenir. Otomatik bellek diskten yeniden yüklenir. paths: ön bilgisine (frontmatter) sahip kurallar, ilgili dosya tekrar okunana kadar kaybolur. Alt dizinlerdeki iç içe geçmiş CLAUDE.md dosyaları, o alt dizindeki bir dosya tekrar okunana kadar kaybolur.

Talimatlarınızı bu tabloya göre sıraladığınızda kırılganlık sırası ortaya çıkar. Sadece sohbet ekranına yazdığınız bir kural, oturumdaki en kırılgan şeydir: yalnızca özetleyicinin onu tutması durumunda varlığını sürdürür. packages/api/CLAUDE.md içindeki bir kural bir sonraki aşamadadır; çünkü bir kez yüklenmiş, özetlenerek elenmiş ve ancak o dizindeki bir sonraki okumada geri dönmüştür. Proje kök dosyasındaki bir kural en dayanıklı olanıdır; çünkü her seferinde diskten yeniden okunur.

Bu nedenle, bir talimatın tüm oturum boyunca geçerli olması gerekiyorsa, bu talimat paths: ön bilgisi içermeyen proje kök dosyasında bulunmalıdır. Diğer her şey, bilinçli olarak yapmanız gereken bir tercihtir. Bağlam penceresinde nelerin kalacağını yönetme, odak argümanı ile /compact ve alakasız görevler arasındaki /clear konularını ele alır; her ikisi de özetleyicinin kurallarınızın ne olduğuna karar verme sıklığını değiştirir.

Çevredeki kodun kuralı neden geçersiz kıldığı

Bu, insanların en sık tanımladığı ancak en az teşhis ettiği başarısızlık türüdür. Dosyanız, veritabanı erişiminin repository katmanı üzerinden yapılması gerektiğini belirtir. Ancak aracı, doğrudan ORM (nesne ilişkisel eşleyici) çağıran bir işleyici yazar. Stil gerekçeleriyle göz ardı edilmediniz. Kanıtlar karşısında geçersiz kaldınız.

Bir kural, bir tercihi tanımlar. Kod ise bir tercihi sergiler. Aracı, düzenlemek üzere olduğu modüldeki üç dosyayı açtığında ve bu üç dosya da doğrudan ORM'yi çağırdığında; bağlam, bir tarafta soyut bir cümle, diğer tarafta ise üç somut, güncel ve görevle eşleşen örnek barındırır. Yerel kalıbı kopyalamak genellikle doğru davranıştır. Burada yanlış olmasının tek nedeni, bağlamın bilmediği bir şeyi sizin biliyor olmanızdır: bu dosyalar eski (legacy) koddur.

Bu yüzden bunu kuralın içine yazın. Kendi karşıt kanıtını belirten kurallar, gerçek bir depo ile karşılaştığında varlığını sürdürür. Sadece çıplak bir tercih belirten kurallar ise sürdüremez.

Yeni veritabanı erişimi app/repositories/ üzerinden yapılmalıdır. app/legacy/ altındaki dosyalar hala doğrudan ORM'yi çağırmaktadır. Bu eski koddur, geçerli kalıp değildir. Bunu kopyalamayın.

İkinci cümle işin büyük kısmını yapar. Aracıya, bulmak üzere olduğu şeyi ve onu nasıl yorumlaması gerektiğini, daha bulmadan önce söyler. Aynı düzeltme, deponuzun gözle görülür biçimde çeliştiği her kural için geçerlidir: geçmişinizin takip etmediği bir commit stili, test paketinizin yarısının görmezden geldiği bir test düzeni veya yalnızca yeni kodda geçerli olan bir import kuralı. Kodun dosya ile çeliştiği her yerde, bu çelişkiyi dosyanın içinde belirtin.

Belirsiz bir kural denetlenemez, dolayısıyla uygulanamaz

"Temiz kod yazın." "Aşırı mühendislikten kaçının." "Basit tutun." "Taşıma işlemlerinde dikkatli olun." Bunların hiçbiri, ne ajan ne de sizin tarafınızdan belirli bir eyleme karşı test edilemez. Kendi çıktısına karşı denetleyemeyeceği bir kural verilen ajan tahmin yürütür; siz de bu tahmini hislerinize göre değerlendirirsiniz.

Dosyanızdaki her satıra uygulamanız gereken test şudur: Kural ihlal edildiğinde sıfır olmayan bir çıkış kodu döndürecek shell komutunu yazın. Eğer bu komutu yazamıyorsanız, kural denetlenebilir değildir. Şu çiftleri karşılaştırın:

  • Denetlenemez: "Fonksiyonları küçük tutun." Denetlenebilir: "60 satırdan uzun bir fonksiyonun üzerinde, nedenini açıklayan bir yorum satırı bulunmalıdır."
  • Denetlenemez: "Değişikliklerinizi test edin." Denetlenebilir: "npm test komutunu çalıştırın ve bir görevi tamamlandı olarak işaretlemeden önce hata sayısını yapıştırın."
  • Denetlenemez: "Dosyaları düzenli tutun." Denetlenebilir: "HTTP işleyicileri src/api/handlers/ dizininde bulunur. Bu dizine başka hiçbir şey konulamaz."
  • Denetlenemez: "Kodu düzgün biçimlendirin." Denetlenebilir: ".ts dosyalarında 2 boşluklu girintileme kullanın."

"Aşırı mühendislikten kaçının" kuralı, insanların ilk vazgeçtiği kuraldır; çünkü bunun çözümü daha kısa bir cümle değil, daha uzun bir cümledir: çalışan en küçük değişikliğin ne anlama geldiğini açıkça belirtmek, ajana kendi diff çıktısını karşılaştırabileceği kriterler sunar.

Boyut konusu, farklı bir kılığa bürünmüş aynı sorundur. Claude Code rehberliği, talimat dosyası başına 200 satırın altını hedefler ve daha uzun dosyaların uyumu azalttığını doğrudan belirtir. 700 satırlık bir dosya daha sağlam bir talimat değildir. Bu, birbirleriyle çelişme olasılığı daha yüksek olan 700 satırlık iddialar bütünüdür ve her adımda pencerenizden harcanır; bu da token kullanımınızda doğrudan görülür. Dosyanın, her kuralın bir okuyucunun tarayabileceği bir başlık altında yer alacak şekilde yapılandırılması, bir ajanın üzerinde işlem yapabileceği bir talimat dosyası yazma konusunda ele alınmıştır.

On dakikada nasıl teşhis edilir

Bunları sırasıyla çalıştırın. Son adıma atlamak, insanların neden çalışmayan ve karmaşık kurallar bütünüyle baş başa kaldıklarının sebebidir.

  1. Yüklendiğini doğrulayın. /context komutunu çalıştırın ve Memory dosyaları listesini okuyun. Dosya orada değilse, konumu düzeltin ve durun. Bu listedeki diğer hiçbir madde henüz geçerli değildir.
  2. Yeni bir oturumda yeniden oluşturun. Yeni bir oturum başlatın ve kuralı tetiklemesi gereken en küçük görevi verin. Burada başarılı olup uzun bir oturumda başarısız oluyorsa, sorun mesafe veya sıkıştırma kaynaklıdır. Burada da başarısız oluyorsa, sorun kuralın kendisindedir.
  3. Rekabeti ortadan kaldırın. Aynı değişikliği, mevcut kodu zaten kurala uyan bir dizinde talep edin. Uyumluluk geri gelirse, çevredeki kod sizin ifadenizi geçersiz kılıyordu.
  4. Çakışma arayın. Aynı davranış için farklı yönlendirmeler veren iki dosya, belgelenmiş bir hatadır: model bunlardan birini rastgele seçebilir ve size bunu bildirmez.
  5. Denetlenebilir hale getirin ve yeniden test edin. Kuralı somut bir yol ve koşul ile yeniden yazın. Uyumlulukta büyük bir artış olması, sorunun ifade biçiminden kaynaklandığını gösterir.
  1. adım tek bir komuttur. Sadece düzenlediğiniz dosyayı değil, konuyla ilgili tüm talimat kaynaklarını grep ile tarayın:
grep -rni "migration" --include="CLAUDE.md" --include="CLAUDE.local.md" .
grep -rni "migration" .claude/rules/ ~/.claude/CLAUDE.md ~/.claude/rules/ 2>/dev/null

İki farklı dosyada birbirine zıt talimatların bulunması hatanızdır. Birini silin. Daha güçlü ifadeler kullanarak bunları sıralamaya çalışmayın, çünkü başvurabileceğiniz bir sıralama motoru yoktur.

Etki düzeyine göre düzeltmeler

Aşağıdaki her adım, bir öncekinden daha yüksek etkiye sahiptir ancak kurulumu daha maliyetlidir. Bir kuralın yeniden ifade edilmesi ucuz olduğunda en üstten başlayın. Bir kural, ara sıra yapılan hataların kabul edilemeyeceği kadar önemli hale geldiğinde aşağıya doğru ilerleyin.

  1. Kuralı somutlaştırın. Bir yol, komut veya koşul belirtin. Daha önce gösterildiği gibi, aracın depoda bulacağı karşıt kanıtı ekleyin. Bu işlem ücretsizdir ve vakaların şaşırtıcı derecede büyük bir kısmını çözer.
  2. Kuralı yönettiği öğeye yaklaştırın. İç içe geçmiş bir CLAUDE.md, .claude/rules/ içinde kapsamı belirlenmiş bir yol kuralı veya dosyanın en üstüne eklenen bir yorum. Kural, uygulandığı kodla aynı okuma işleminde karşınıza çıkar. Takasın farkında olun: bu şekilde yüklenen her şey bir sonraki sıkıştırma işleminde bellekten düşer ve bir sonraki eşleşen okumada geri döner.
  3. Uygulamayı bir kancaya (hook) taşıyın. Metin rica eder, kanca ise karar verir. Kancalar, sabit yaşam döngüsü olaylarında kod olarak çalışır ve modelin ne sonuç çıkardığına bakılmaksızın uygulanır.
  4. Kuralı deterministik bir araca verin ve metni silin. Biçimlendirme, içe aktarma sırası, satır uzunluğu, yasaklı içe aktarmalar, commit mesajı biçimi. ruff format, prettier --write, eslint, bir pre-commit kancası. Biçimlendirici her zaman haklıdır ve sıfır token maliyeti vardır. Cümle ise çoğu zaman haklıdır ancak her adımda token harcar.
  1. adımın tamamı. Göç (migration) dosyalarının araç tarafından asla düzenlenmemesi gerektiğini varsayalım. Bunu .claude/settings.json içine yerleştirin:
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/guard-migrations.sh"
          }
        ]
      }
    ]
  }
}

Ve bunu .claude/hooks/guard-migrations.sh içine yerleştirin:

#!/usr/bin/env bash
set -euo pipefail

path=$(jq -r '.tool_input.file_path // empty')

case "$path" in
  */migrations/*)
    echo "Files under migrations/ are written by hand. Stop and ask first." >&2
    exit 2
    ;;
esac

exit 0

chmod +x .claude/hooks/guard-migrations.sh komutunu çalıştırın, ardından yeni bir oturum başlatın ve araçtan migrations/ altındaki bir dosyayı düzenlemesini isteyin. Düzenleme reddedilir ve mesajınız gerekçe olarak geri döner. PreToolUse üzerindeki 2 çıkış durumu, araç çağrısını çalışmadan önce engeller ve stderr metniniz, engelleyici mesaj olarak modele iletilir. ${CLAUDE_PROJECT_DIR} proje kök dizinine çözümlenir, bu nedenle kanca, araç hangi dizinde olursa olsun çalışır. Aracın kuralı kabul etmesi, hatırlaması veya kuralın bağlam içinde kalması gerekmez. Düzenleme gerçekleşmez.

İçinde mantık barındırmayan düz bir yasak için, ayarlarınızdaki permissions.deny aynı işi herhangi bir betik bakımı gerektirmeden yapar ve izin modları size sormadan neyin çalışacağına karar verir. Bir talimatın kullanıcı mesajı yerine sistem istemi (system prompt) düzeyinde durması gerekiyorsa, --append-system-prompt bunu oraya yerleştirir; ancak bu talimat her çağrıda iletilmelidir, bu da etkileşimli çalışmadan ziyade betikler için daha uygundur.

Talimatla engelleyemeyecekleriniz

Bu durumun hangi kısmının size ait olduğu konusunda net olun. Yerleşim, ifade biçimi, dosyalar arası çakışmalar ve dosya boyutu yazarın sorunlarıdır ve yazar tarafından düzeltilmelidir. Geri kalanı model davranışıdır; daha iyi bir ifade biçimi bunu ortadan kaldırmaz.

Onaylama, uyum anlamına gelmez. Bir aracı kuralı kabul eder, size doğru şekilde geri ifade eder ve iki araç çağrısı sonra kuralı ihlal eder. Onaylamanın bir maliyeti yoktur ve hiçbir şeyi öngörmez. Bunu bir çözüm olarak okumayın ve bir test olarak değerlendirmeyin.

Bazı alışkanlıklar kalıcıdır. Yorum eklemek, savunma amaçlı hata yönetimi eklemek, kapanış özeti yazmak, bir sonraki bariz komutu çalıştırmak gibi. Bunlar, kendilerini yasaklayan bir kural altında bile, sıfıra inmek yerine azalan bir oranda geri dönerler. Kendi hata oranınızı ölçebilirsiniz: aynı görevi on kez yeni oturumlarda çalıştırın ve ihlalleri sayın. Bu sayının sıfır olması gereken durumlarda, kuralın istemden (prompt) çıkarılması gerekir.

Kendi oturumunuz bir örneğe dönüşür. Eğer aracı 12. adımda kuralı ihlal ettiyse ve siz buna izin verdiyseniz, bu ihlal artık bağlam içinde bir gösterim olarak yer alır ve kuraldan çok daha günceldir. Bir ihlali gördüğünüz anda düzeltin. Düzeltilmeyen bir ihlal, oturumun geri kalanına yanlış örnek teşkil eder.

Bir talimat dosyası güvenlik sınırı değildir. Davranışı şekillendirir ancak zorunlu kılmaz. Hata yapmanın maliyetli olduğu, kimlik bilgileri veya yıkıcı komutlar içeren her şey, izinlerin veya kancaların (hook) konusudur. Gizli bilgileri aracın erişemeyeceği bir yerde tutmak, aynı ilkeyi veriler için de uygular: bir araçtan bir dosyayı okumamasını istemeyin, dosyanın okunamaz olmasını sağlayın.

Kısa versiyonu şudur: Dosyanın yüklendiğini kanıtlayın, kuralı denetlenebilir kılın, kuralı yönettiği şeyin yanına taşıyın ve hata oranı hala önemliyse, kuralı metin içinden çıkarın. Bir aracın görmezden gelemeyeceği bir kural, araca hiç sorulmamış olan kuraldır.

FAQ

Claude Code neden CLAUDE.md dosyamı yok sayıyor?

Dosyanın yok sayıldığını varsaymadan önce yüklendiğinden emin olun. /context komutunu çalıştırın ve Memory files listesini kontrol edin; bu listede yer almayan bir dosya konuşmaya dahil edilmemiştir. Talimat dosyaları, sistem isteminden sonra bir kullanıcı mesajı olarak iletilir ve zorunlu bir yapılandırmadan ziyade bağlam olarak değerlendirilir, bu nedenle kesin bir uyum garantisi yoktur. Çoğu gerçek vaka şu dört durumdan biridir: dosya ajanın hiç okumadığı bir alt dizindedir, iki dosya birbiriyle çelişmektedir ve model rastgele birini seçmiştir, kural bir eylemi denetlemek için çok belirsizdir veya çevredeki kod kuralın söylediğinin tam tersini göstermektedir.

Oturum sırasında talimat dosyasını düzenlemek bir şeyi değiştirir mi?

Konuşmada halihazırda bulunan kopya için hayır. Çalışma dizininizin üzerindeki dosyalar başlatma sırasında tamamen yüklenir, bu nedenle modelin elinde tuttuğu metin başlatma anındaki metindir. Bir değişikliği yansıtmak için yeni bir oturum başlatın veya ajandan dosya araçlarını kullanarak dosyayı okumasını isteyin; bu, dosyanın güncel sürümünü yeni bir mesaj olarak konuşmaya ekler. Sıkıştırma (compaction) işleminden sonra proje kök dizinindeki dosya diskten yeniden okunur, dolayısıyla yeni sürüm o noktada sisteme dahil olur.

Kök dizindeki CLAUDE.md ile iç içe olan bir dosya çeliştiğinde hangisi geçerli olur?

Hiçbiri güvenilir bir şekilde geçerli olmaz. Keşfedilen dosyalar birbirinin üzerine yazmak yerine bağlama eklenir (concatenated); dosya sistemi kökünden çalışma dizininize doğru sıralanır, bu nedenle en yakındaki dosya en son okunur. Çelişkileri çözen bir öncelik mekanizması yoktur ve Claude Code belgeleri, çelişkili kuralların rastgele çözülebileceğini belirtir. İç içe dosyaları, yönettikleri yolu belirten eklemeler olarak yazın ve bir kuralı diğerinden üstün kılmaya çalışmak yerine çelişkili ifadeyi silin.

Talimatlarım /compact komutundan sonra korunur mu?

Bu, talimatların nasıl yüklendiğine bağlıdır. Proje kök dizinindeki CLAUDE.md, kapsamı belirlenmemiş kurallar ve otomatik bellek, sıkıştırma işleminden sonra diskten yeniden enjekte edilir. paths: ön bilgisine (frontmatter) sahip kurallar ve alt dizinlerdeki iç içe CLAUDE.md dosyaları, ilgili dosya tekrar okunana kadar kaybolur. Sadece sohbet ekranına yazdığınız şeyler, yalnızca özetleyici (summariser) bunları tutmaya karar verirse korunur. Bir kuralın tüm oturum boyunca geçerli olması gerekiyorsa, onu paths: ön bilgisi olmadan proje kök dizinindeki dosyaya ekleyin.

Bir kural ne zaman düz metin yerine bir kanca (hook) haline getirilmelidir?

Denetim deterministik olduğunda ve bir hatanın maliyeti küçük bir betik yazmanın maliyetinden yüksek olduğunda. Dosya yolu kısıtlamaları, commit öncesi zorunlu komutlar ve yasaklanmış araç çağrılarının tümü bu kapsama girer. 2 durum koduyla sonlanan bir PreToolUse kancası, araç çağrısını doğrudan engeller ve stderr metninizi neden olarak modele geri iletir; böylece kural bağlamın herhangi bir yerinde olsa da olmasa da geçerliliğini korur. Bir biçimlendiricinin (formatter) veya linter aracının karar verebileceği her şey o araca devredilmeli ve talimat dosyasından tamamen silinmelidir.