Claude Code'u git add -A çalıştırmaktan nasıl durduracaksın?
Claude Code ile çalışırken bir sorun var: AI aracı bazen talimatları görmezden geliyor. Özellikle uzun oturumlar sırasında, CLAUDE.md dosyasında "dosyaları adıyla ekle, git add -A kullanma" yazsa bile, Claude bazen tüm değişiklikleri bir kerede commit etmeyi tercih ediyor. yarım kalan refactor ile başka bir görev birbirine karışabiliyor ve geçmiş iyice karmaşıyor.
Sorunu çözmek için bir pre-commit hook yazabilirsin. Claude Code, bir script çalıştırmadan önce bir hook'u tetikler. Script exit code 2 ile çıkarsa, komut iptal edilir ve stderr'deki mesaj Claude'a geri gönderilir. AI bunu okur ve başka bir yol dener.
Clemens Cozijn'in çözümü tam da bunu yapıyor. Bir Python script'i git komutlarını regex ile kontrol ediyor. Eğer komut içinde `git add` ve `-A` bayrağı varsa, script hata mesajı göstererek işlemi durdurur:
1#!/usr/bin/env python32import json, re, sys34event = json.load(sys.stdin)5cmd = (event.get("tool_input") or {}).get("command", "")67if re.search(r"\bgit\b[^;&|\n]*\badd\b[^;&|\n]*-A", cmd):8print("git add -A is not allowed. Add files by name.", file=sys.stderr)9sys.exit(2)Script'i `.claude/hooks/pre_tool_call.py` dosyasına koyup çalıştırılabilir yapman yeterli. Claude Code'un hook desteği sayesinde, her git komutundan önce bu kontrol geçer. Böylece AI, -A yerine belirli dosyaları adlandırmaya zorlanır.
Bu yaklaşım, prompt kurallarından daha güçlü. Kurallar bağlama göre zayıflayabilir ama bir hook her zaman çalışır. Eğer Claude Code'u uzun oturumlarda kullanıyorsan ve commit geçmişini temiz tutmak istiyorsan, bu hook'u kurmak pratik bir koruma katmanı ekler.
0 yorum