Modül 3 · Hooks and the SDK · ⏱ 4 dakika

Hooks'a giriş

Introducing hooks

Türkçe dublaj (Microsoft Edge Neural TTS). İngilizce orijinali için Skilljar'daki ders'ine bak.

Hook’lar, Claude bir tool çalıştırmaya çalışmadan önce veya sonra komutlar çalıştırmanıza olanak tanır. File edit’lerinden sonra code formatter çalıştırmak, dosyalar değiştiğinde testleri yürütmek veya belirli dosyalara erişimi engellemek gibi otomatik iş akışlarını uygulamak için inanılmaz derecede faydalıdırlar.

Hook’lar Nasıl Çalışır

Hook’ları anlamak için önce Claude Code ile etkileşime girdiğinizdeki normal akışı gözden geçirelim. Claude’a bir şey sorduğunuzda, sorgunuz tool tanımlarıyla birlikte Claude modeline gönderilir. Claude formatlı bir yanıt sağlayarak bir tool kullanmaya karar verebilir, ardından Claude Code o tool’u çalıştırır ve sonucu döner.

Hook’lar bu sürece kendilerini ekler ve tool çalıştırılmadan hemen önce veya hemen sonra kod yürütmenize olanak tanır.

Hook'ların tool akışına nasıl eklendiğini gösteren diyagram

En yaygın iki hook türü aşağıdadır (sonraki bir derste diğer hook’ları da göreceksiniz):

  • PreToolUse hooks - Bir tool çağrılmadan önce çalışır
  • PostToolUse hooks - Bir tool çağrıldıktan sonra çalışır

Hook Konfigürasyonu

Hook’lar Claude settings dosyalarında tanımlanır. Şunlara ekleyebilirsiniz:

  • Global - ~/.claude/settings.json (tüm projeleri etkiler)
  • Project - .claude/settings.json (ekiple paylaşılır)
  • Project (commit edilmeyen) - .claude/settings.local.json (kişisel ayarlar)

Hook’ları bu dosyalara elle yazabilir veya Claude Code içinde /hooks komutunu kullanabilirsiniz.

Claude Code içindeki /hooks komutu ekranı

Konfigürasyon yapısı iki ana bölüm içerir:

Hook konfigürasyon yapısının iki ana bölümünü gösteren görsel

PreToolUse Hooks

PreToolUse hook’ları, bir tool çalıştırılmadan önce çalışır. Hangi tool türlerini hedefleyeceğinizi belirten bir matcher içerirler:

"PreToolUse": [
  {
    "matcher": "Read",
    "hooks": [
      {
        "type": "command",
        "command": "node /home/hooks/read_hook.js"
      }
    ]
  }
]

‘Read’ tool’u çalıştırılmadan önce, bu konfigürasyon belirtilen komutu çalıştırır. Komutunuz, Claude’un yapmak istediği tool çağrısı hakkında ayrıntılar alır ve şunları yapabilirsiniz:

  • Operasyonun normal şekilde devam etmesine izin verin
  • Tool çağrısını engelleyin ve Claude’a bir hata mesajı geri gönderin

PostToolUse Hooks

PostToolUse hook’ları, bir tool çalıştırıldıktan sonra çalışır. İşte write, edit veya multi-edit operasyonlarından sonra tetiklenen bir örnek:

"PostToolUse": [
  {
    "matcher": "Write|Edit",
    "hooks": [
      {
        "type": "command", 
        "command": "node /home/hooks/edit_hook.js"
      }
    ]
  }
]

Tool çağrısı zaten gerçekleştiğinden, PostToolUse hook’ları operasyonu engelleyemez. Ancak şunları yapabilirler:

  • Takip eden operasyonlar çalıştırma (yeni edit edilmiş bir dosyayı formatlamak gibi)
  • Tool kullanımı hakkında Claude’a ek geri bildirim sağlama

PostToolUse hook'ların edit sonrası tetiklenmesini gösteren görsel

Pratik Uygulamalar

İşte hook’ları kullanmanın bazı yaygın yolları:

  • Code formatting - Claude dosyaları edit ettikten sonra otomatik olarak formatla
  • Testing - Dosyalar değiştiğinde testleri otomatik olarak çalıştır
  • Access control - Claude’un belirli dosyaları okumasını veya edit etmesini engelle
  • Code quality - Linter veya type checker çalıştır ve Claude’a geri bildirim sağla
  • Logging - Claude’un eriştiği veya değiştirdiği dosyaları takip et
  • Validation - Naming convention’ları veya coding standard’ları kontrol et

Buradaki temel içgörü, hook’ların kendi tool ve süreçlerinizi iş akışına entegre ederek Claude Code’un yeteneklerini genişletmenize olanak tanımasıdır. PreToolUse hook’ları size Claude’un ne yapabileceği üzerinde kontrol verirken, PostToolUse hook’ları Claude’un yaptıklarını geliştirmenize olanak tanır.