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

Hooks'a giriş

Introducing hooks

Bu derste neler öğreneceksin

  • Hooks'un Claude Code'un yaşam döngüsüne nasıl bağlandığını kavramak
  • Hook'un prompt talimatından farkını (deterministik vs en iyi çaba) anlamak
  • 7 hook event'inin ne olduğunu listeleyebilmek

Hook, Claude Code’un yaşam döngüsünde belirli bir noktada otomatik çalışan komuttur. Prompt’a “her şu olduğunda şunu yap” yazmaktan tamamen farklıdır:

  • Prompt = tavsiye. Çoğu zaman tutar, bazen kaçar.
  • Hook = zorunluluk. Her zaman, istisnasız çalışır.

1. Neden hook?

Prompt-only çözümlerin zayıflığı: Claude prompt’a uymayı seçer. Genelde uyar, bazen unutur. Eğer bir kural “%100 her tetiklenmede çalışmak zorunda” ise prompt yanlış araçtır.

Tipik kullanım senaryoları:

  • Auto-format her dosya değişiminden sonra
  • Lint check her dosya yazımından sonra
  • Commit yasağı main branch’inde
  • Yasaklı path koruması (örn: secrets/ altına yazılamaz)
  • Audit log her çalıştırılan komutta

2. Hook event’leri

Claude Code 7 event noktası sunar:

EventNe zaman çalışır
PreToolUseBir tool çağrılmadan önce
PostToolUseBir tool çağrısı bittikten sonra
UserPromptSubmitKullanıcı prompt yolladığında, Claude işlemeden önce
StopClaude bir turdaki cevabını bitirdiğinde
SubagentStopBir subagent kendi turunu bitirdiğinde
NotificationClaude sana bildirim gönderdiğinde
SessionStart / SessionEndOturum açılış/kapanışında

Bu kursta en çok PreToolUse, PostToolUse ve UserPromptSubmit’i kullanacağız.

3. Hook nerede tanımlanır?

settings.json (üç seviyede):

KonumKapsam
~/.claude/settings.jsonUser — tüm projeler
.claude/settings.json (repo)Project — takımla paylaşılır
.claude/settings.local.jsonKişisel override, git-ignored

Bir event için birden çok hook tanımlanabilir; hepsi sırayla çalışır.

4. Hook’un anatomisi

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          { "type": "command", "command": "$CLAUDE_PROJECT_DIR/.claude/scripts/format.sh" }
        ]
      }
    ]
  }
}
  • Event (PostToolUse)
  • Matcher (hangi tool’lar) — opsiyonel
  • Komut (ne çalışacak)

5. Deterministik kontrolün gücü

Bir hook’un en güçlü yanı: Claude bilse de bilmese de çalışır. Yeni bir Claude versiyonu çıksa, model farklı davransa, prompt değişse — hook yine de tetiklenir. Bu, takım kurallarını koda dönüştürmek demektir.

Özet

Hook = Claude Code yaşam döngüsündeki deterministik çalışma noktası. 7 event var; en sık PostToolUse / PreToolUse / UserPromptSubmit kullanılır. settings.json’da tanımlanır.

Sırada ne var?

Sonraki derste bir hook’u nasıl tanımladığımızı adım adım göreceğiz: matcher’lar, exit code anlamları ve JSON çıktı protokolü.