Kontrolleri Kancalarla Otomatikleştirme

Claude Code ile Yazılım Geliştirme

Dani Zysman

AI Curriculum Manager @ DataCamp

Manuel Sorun

recraft: half: Masada yorgun görünen bir geliştirici, aynı komutu tekrar tekrar manuel çalıştırıyor

  • Claude belirli bir işlem yaptığında kancalar tetiklenir
  • Kancalar otomatik çalışır: tekrarlı işler için ideal
  • Kancalar bir süreçte adım atlamanı önler
Claude Code ile Yazılım Geliştirme

Kanca Nedir?

  • Araçlar:
    • Dosya okuma/yazma
    • Komut çalıştırma
  • Kancalar:

    • Otomatik çalışan kullanıcı tanımlı shell komutları
    • .claude/settings.json içinde yapılandırılır
    • Claude Code için "şu olursa, bunu yap" gibidir

    Aktif olanları listelemek için /hooks kullan

Claude Code ile Yazılım Geliştirme

Projede Son Durum

music-analytics-api/
  app.py
  routes.py
  test_routes.py    
  CLAUDE.md
  .claude/
    agents/
    skills/
    settings.json    # <- Hook yapılandırması
Claude Code ile Yazılım Geliştirme

Kanca Türleri ve İş Akışı

Kanca iş akışı diyagramı

PreToolUse: araç çalışmadan önce tetiklenir → Tehlikeli işlemleri incelemek ya da engellemek için kullan

PostToolUse: araç tamamlandıktan sonra tetiklenir → Test, lint kontrolü veya günlükleme için kullan

Claude Code ile Yazılım Geliştirme

Bir Kancayı Yapılandırma

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "cd $CLAUDE_PROJECT_DIR && python -m pytest --tb=short -q"
          }
        ]
      }
    ]
  }
}
Claude Code ile Yazılım Geliştirme

Kanca Çıktısını Yakalama

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    passed = len(terminalreporter.stats.get('passed', []))
    failed = len(terminalreporter.stats.get('failed', []))

    if failed:
        title = "pytest FAILED"
        message = f"{failed} failed {passed} passed"
    else:
        title = "pytest PASSED"
        message = f"All {passed} tests passed!"

    with open("/tmp/pytest_results.log", "a") as f:
        f.write(f"{title}: {message}\n")
Claude Code ile Yazılım Geliştirme

Kanca Çıktı Günlüğü

[23:07:35] pytest FAILED: ❌; 2 failed, 15 passed

[23:07:38] pytest PASSED: ✅ All 17 tests passed!

[23:08:09] pytest PASSED: ✅ All 17 tests passed!

[23:08:12] pytest PASSED: ✅ All 17 tests passed!

Claude Code ile Yazılım Geliştirme

Kancaları Ne Zaman Kullanmalı

Kanca kullanma zamanı için karar akış şeması

  • İyi adaylar:
    • Dosya düzenlemelerinden sonra testler
    • Lint kontrolleri
    • Güvenlik engelleri
Claude Code ile Yazılım Geliştirme

Bölüm 2 Özeti

Özellik Çağırma Liste Yapılandırma Yolu
Agents @agent-name /agents .claude/agents/name.md
Skills /skill-name /skills .claude/skills/name/SKILL.md
Hooks (otomatik) /hooks .claude/settings.json
Claude Code ile Yazılım Geliştirme

Hadi pratik yapalım!

Claude Code ile Yazılım Geliştirme

Preparing Video For Download...