Araçlar

Claude Code hooks ile hedefli .NET doğrulaması

Claude Code'un PostToolUse hook'u, agent bir dosyayı düzenledikten sonra yalnızca ilgili xUnit testlerini çalıştırarak doğrulamayı prompt hatırlatmalarından lifecycle'a taşıyor. Nick Cosentino, .claude/settings.json yapılandırmasını, stdin'den gelen event JSON'unun nasıl okunduğunu ve exit kodlarının ne anlama geldiğini örnek bir Shipping solution üzerinden anlatıyor. Yazı, hook'un sınırlarını da açıkça çiziyor: düzenlemeyi geri alamaz, Bash ile yazılan dosyaları görmez ve CI'ın yerini tutmaz.

Yayın tarihi
Okuma süresi
12 dk okuma
agent çalıştırması #22
agent çalıştırması #22
Orijinale git devleader.ca

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • PostToolUse başarılı bir tool çağrısından sonra çalışır; bir işlemi önceden engellemek istiyorsan PreToolUse doğru event'tir.
  • Proje seviyesindeki .claude/settings.json içinde Edit|Write matcher'ı, pwsh'i exec formunda args ile ve 120 saniyelik timeout ile başlatıyor.
  • Command hook'lar JSON'u stdin'den alır; handler tool_input.file_path ve event'in cwd değerini okur, config'de uydurulmuş argümanları değil.
  • PostToolUse'ta exit 2 stderr'i Claude'un context'ine taşır, exit 0 hookSpecificOutput/additionalContext döner; diğer exit kodları bloklamayan hook hatası sayılır.
  • Matcher, Bash veya harici araçların yeniden yazdığı dosyaları hiç görmez; sıfır test seçen bir filter yine de exit 0 verir.
  • Yazar handler'ı yalnızca sentetik payload'larla denedi; hook canlı bir Claude oturumuna hiç kaydedilmedi.

Claude Code'un PostToolUse hook'u, agent bir dosyayı düzenledikten hemen sonra dar kapsamlı bir kontrol çalıştırabilir; böylece doğrulama her prompt'a yazılan hatırlatmadan çıkıp lifecycle'ın parçası olur. Örnekte .claude/settings.json içine Edit|Write matcher'ı ekleniyor, pwsh exec formunda args ile başlatılıyor, script ${CLAUDE_PROJECT_DIR} üzerinden bulunuyor ve 120 saniyelik timeout veriliyor.

Handler, event JSON'unu stdin'den okuyup tool_input.file_path değerini alıyor ve dotnet test komutunu FullyQualifiedName filter'ıyla yalnızca iki isimli dosya değiştiğinde çalıştırıyor. Başarıda exit 0 ile additionalContext dönüyor, başarısızlıkta exit 2 stderr'i Claude'a gösteriyor; düzenleme yine geri alınamıyor. Bash'in yazdığı dosyalar matcher'ı tetiklemiyor, hiç test seçmeyen bir filter hiçbir şey kanıtlamıyor ve asıl kaynak CI olarak kalıyor.

Gerçek dünyada kullanımı

  • Kargo veya fiyatlandırma kurallarını tutan tek bir sınıfın ve ona ait xUnit testlerinin, agent her düzenleme yaptığında otomatik çalışması gereken bir solution.
  • Developer makinelerinde local build ve test çalıştırmayı yasaklayan, hook'u yalnızca tek kullanımlık doğrulama container'ında açan bir ekip.
  • Prompt'ta 'testleri çalıştır' talimatı yerine gerçek bir kontrol isteyen, AGENTS.md benzeri talimatlarla deneme yapan bir ekip.
  • Tam test koşusunu CI'da tutup hook çıktısını yalnızca hızlı geri bildirim olarak kullanan bir pipeline.

Neden önemli

Hedefli bir hook, tam test koşusunun dakikalarını saniyelere indirebilir; ancak exit kodlarının anlamı ve kapsam sınırları açıkça belirtilmezse sıfır exit kodu yanlışlıkla değişikliğin doğruluğunun kanıtı sanılır.

Bu özet, Nick Cosentino (Dev Leader) üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü