Claude Code hooks'ları kullanarak tehlikeli git komutlarını (push, reset --hard, clean, branch -D, vb.) çalıştırılmadan önce engelleyin. Kullanıcılar yıkıcı git işlemlerini önlemek, git güvenlik hooks'ları eklemek veya Claude Code'da git push/reset'i engellemek istediğinde kullanın.
cd ~/.claude/skills
git clone https://github.com/mattpocock/skills.git skills mkdir -p ~/.claude/skills/git-guardrails-claude-code
curl -fsSL https://raw.githubusercontent.com/mattpocock/skills/HEAD/skills/misc/git-guardrails-claude-code/SKILL.md \
-o ~/.claude/skills/git-guardrails-claude-code/SKILL.md Claude tarafından çalıştırılmadan önce tehlikeli git komutlarını kesip engelleyen bir PreToolUse hook'u kurar.
git push (tüm varyantlar, --force dahil)git reset --hardgit clean -f / git clean -fdgit branch -Dgit checkout . / git restore .Engellendiğinde, Claude bu komutlara erişim yetkisinin olmadığını belirten bir mesaj görür.
Kullanıcıya sorun: bu proje için (.claude/settings.json) mi yoksa tüm projeler için (~/.claude/settings.json) mi kurmak istediğini?
Paketlenmiş script şurada bulunur: scripts/block-dangerous-git.sh
Kapsamı temel alarak hedef konuma kopyalayın:
.claude/hooks/block-dangerous-git.sh~/.claude/hooks/block-dangerous-git.shchmod +x ile çalıştırılabilir hale getirin.
İlgili ayarlar dosyasına ekleyin:
Proje (.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
Global (~/.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
Ayarlar dosyası zaten mevcutsa, hook'u mevcut hooks.PreToolUse array'ine birleştirin — diğer ayarları üzerine yazmayın.
Kullanıcıya engellenen listeden herhangi bir pattern'i eklemek veya çıkarmak isteyip istemediğini sorun. Kopyalanan script'i buna göre düzenleyin.
Hızlı bir test çalıştırın:
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
2 çıkış koduyla çıkmalı ve stderr'e bir BLOCKED mesajı yazdırmalıdır.
2 veya daha fazla bağımsız görevin paralel olarak yürütülebileceği ve aralarında state paylaşımı ya da sıralı bağımlılık olmadığı durumlarda kullanın.
Ayrı bir oturumda inceleme kontrol noktaları ile yürütülecek yazılı bir uygulama planınız olduğunda kullanın.
Mevcut oturumda bağımsız görevlerle uygulama planlarını yürütürken kullanın
Herhangi bir hata, test başarısızlığı veya beklenmeyen davranışla karşılaştığınızda, çözüm önerisi sunmadan önce kullanın.
Herhangi bir feature ya da bugfix uygulamaya başlamadan önce kullanın.
Yeni beceriler oluştururken, mevcut becerileri düzenlerken veya dağıtımdan önce becerileri doğrularken kullanın.