Commit'ten önce testleri çalıştıran hook
git commit çağrısını yakalayıp testleri çalıştırır; testler düşerse commit'i engeller. Claude'un 'testleri sonra çalıştırırım' deme ihtimalini ortadan kaldırır.
Kaynak: Claude Code dokümantasyonu
git commit çağrısını yakalayıp testleri çalıştırır; testler düşerse commit'i engeller. Claude'un 'testleri sonra çalıştırırım' deme ihtimalini ortadan kaldırır.
Kaynak: Claude Code dokümantasyonu
curl -sL https://www.antrophiclove.com/api/kaynak/commit-ten-once-testleri-calistiran-hook/rawBu içerik mevcut dosyaya elle harmanlanmalı: .claude/settings.json
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "if": "Bash(git commit *)", "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/pre-commit-test.sh", "timeout": 300, "statusMessage": "Testler çalışıyor..." } ] } ] } }
#!/bin/bash cd "$CLAUDE_PROJECT_DIR" || exit 0
OUT=$(npm test --silent 2>&1) if [ $? -ne 0 ]; then echo "Testler düştü, commit engellendi:" >&2 echo "$OUT" | tail -40 >&2 exit 2 fi
exit 0
CLAUDE.md bir talimattır; Claude uyabilir de uymayabilir de. Hook, Claude ne karar verirse versin çalışır. "Her seferinde şu olsun" diyorsan doğru yer hook'tur.
"if": "Bash(git commit *)" ile hook yalnızca commit çağrılarında çalışır; matcher "Bash" olsa bile diğer komutlarda testi boşuna çalıştırmaz.