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:
| Event | Ne zaman çalışır |
|---|---|
| PreToolUse | Bir tool çağrılmadan önce |
| PostToolUse | Bir tool çağrısı bittikten sonra |
| UserPromptSubmit | Kullanıcı prompt yolladığında, Claude işlemeden önce |
| Stop | Claude bir turdaki cevabını bitirdiğinde |
| SubagentStop | Bir subagent kendi turunu bitirdiğinde |
| Notification | Claude sana bildirim gönderdiğinde |
| SessionStart / SessionEnd | Oturum açılış/kapanışında |
Bu kursta en çok PreToolUse, PostToolUse ve UserPromptSubmit’i kullanacağız.
3. Hook nerede tanımlanır?
settings.json (üç seviyede):
| Konum | Kapsam |
|---|---|
~/.claude/settings.json | User — tüm projeler |
.claude/settings.json (repo) | Project — takımla paylaşılır |
.claude/settings.local.json | Kiş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ü.