Bir başka faydalı hook
Another useful hook
Bu derste neler öğreneceksin
- SessionStart hook'u ile her oturuma bağlam yüklemek
- Stop hook'u ile oturum sonunda otomatik özet/log
- Recursion ve performans tuzaklarına son bir kez bakmak
Bu derste SessionStart ve Stop event’leriyle çalışıp oturum sınırlarını yakalayan iki güçlü kalıbı işliyoruz.
1. SessionStart — her oturuma context yükle
Hedef: oturum açıldığında son commit, açık PR’ların durumu, son hata log’u otomatik enjekte edilsin.
.claude/scripts/session-context.sh:
#!/usr/bin/env bash
set -euo pipefail
cd "$CLAUDE_PROJECT_DIR"
LAST_COMMIT=$(git log -1 --pretty=format:"%h %s — %an, %ar" 2>/dev/null || echo "yok")
BRANCH=$(git branch --show-current 2>/dev/null || echo "?")
STATUS=$(git status --short 2>/dev/null | head -20)
cat <<EOF
{
"additionalContext": "Branch: $BRANCH\nSon commit: $LAST_COMMIT\nDeğişen dosyalar:\n$STATUS"
}
EOF
.claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/scripts/session-context.sh"
}
]
}
]
}
}
Her açılışta Claude “Branch nerede, son ne yaptım” sorusunu sormaz — biliyor.
2. Stop — oturum sonu özeti
Hedef: Claude bir turdaki cevabı bitirdiğinde kısa bir log’a yaz.
.claude/scripts/turn-log.sh:
#!/usr/bin/env bash
set -euo pipefail
INPUT=$(cat)
SESSION=$(echo "$INPUT" | jq -r '.session_id')
TS=$(date -Iseconds)
LOG="$CLAUDE_PROJECT_DIR/.claude/audit/turns-$(date +%Y-%m-%d).log"
mkdir -p "$(dirname "$LOG")"
echo "[$TS] session=$SESSION turn-end" >> "$LOG"
exit 0
.claude/settings.json:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/scripts/turn-log.sh"
}
]
}
]
}
}
Burada çok agresif olma — Stop her turun sonunda tetiklenir. Performansa dikkat.
3. SubagentStop — paralel iş takibi
Bir subagent görevini bitirdiğinde tetiklenir. Tipik kullanım: subagent süresini logla veya çıktıyı parent’a hazırla.
"SubagentStop": [
{
"hooks": [
{ "type": "command", "command": "$CLAUDE_PROJECT_DIR/.claude/scripts/subagent-done.sh" }
]
}
]
4. Pratikten en sık kullanılan kombinasyon
Birçok takımın .claude/settings.json minimum seti şu üçünden oluşur:
| Event | Amaç |
|---|---|
| PostToolUse (Edit|Write) | Auto-format |
| PreToolUse (Bash) | Tehlikeli komut bloğu |
| SessionStart | Branch + son commit context’i |
Bu üçü ile takımın hem güvenliği hem verimi %30+ artar; bedeli neredeyse sıfır.
5. Doğrulama
Şimdi:
claude
Yeni oturum aç. Status bar’da SessionStart hook’u tetiklendi mi? Bir Edit yap → format çalıştı mı? rm -rf dene → bloklandı mı?
Üçü de doğrulandıysa hook stack’in production-ready.
Özet
- SessionStart: oturum açılışında context enjeksiyonu
- Stop: tur sonu (dikkat, hafif tut)
- SubagentStop: subagent görev sonu
- En kritik üçlü: PostToolUse format + PreToolUse Bash guard + SessionStart context
Sırada ne var?
Modül 4’ün son dersi: Claude Code SDK — Claude Code’u headless ve programatik çağırmak.