Mengotomatiskan Pemeriksaan dengan Hook

Pengembangan Perangkat Lunak dengan Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Masalah Manual

recraft: half: Seorang pengembang di meja tampak lelah, menjalankan perintah yang sama berulang kali

  • Hook dipicu saat Claude menjalankan aksi tertentu
  • Hook berjalan otomatis: ideal untuk tugas berulang
  • Hook mencegah langkah proses terlewat
Pengembangan Perangkat Lunak dengan Claude Code

Apa itu Hook?

  • Alat:
    • Membaca/menulis file
    • Menjalankan perintah
  • Hook:

    • Perintah shell buatan pengguna yang berjalan otomatis
    • Dikonfigurasi di .claude/settings.json
    • Anggap seperti "if this, then that" untuk Claude Code

    Gunakan /hooks untuk melihat yang aktif

Pengembangan Perangkat Lunak dengan Claude Code

Proyek Sejauh Ini

music-analytics-api/
  app.py
  routes.py
  test_routes.py    
  CLAUDE.md
  .claude/
    agents/
    skills/
    settings.json    # <- Hook configuration
Pengembangan Perangkat Lunak dengan Claude Code

Jenis Hook & Alur Kerja

Diagram alur kerja Hook

PreToolUse: berjalan sebelum alat dijalankan → Gunakan untuk memeriksa atau memblokir operasi berbahaya

PostToolUse: berjalan setelah alat selesai → Gunakan untuk menjalankan tes, pemeriksaan linter, atau mencatat hasil

Pengembangan Perangkat Lunak dengan Claude Code

Mengonfigurasi Hook

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "cd $CLAUDE_PROJECT_DIR && python -m pytest --tb=short -q"
          }
        ]
      }
    ]
  }
}
Pengembangan Perangkat Lunak dengan Claude Code

Mengambil Output Hook

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")
Pengembangan Perangkat Lunak dengan Claude Code

Log Output Hook

[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!

Pengembangan Perangkat Lunak dengan Claude Code

Kapan Menggunakan Hook

Bagan keputusan kapan menggunakan hook

  • Kandidat yang tepat:
    • Tes setelah penyuntingan file
    • Pemeriksaan linter
    • Blokir keamanan
Pengembangan Perangkat Lunak dengan Claude Code

Ringkasan Bab 2

Fitur Memanggil Daftar Lokasi Konfigurasi
Agents @agent-name /agents .claude/agents/name.md
Skills /skill-name /skills .claude/skills/name/SKILL.md
Hooks (otomatis) /hooks .claude/settings.json
Pengembangan Perangkat Lunak dengan Claude Code

Ayo berlatih!

Pengembangan Perangkat Lunak dengan Claude Code

Preparing Video For Download...