← BLOG
Tutorial

Otomatisasi Workflow Pengembangan Anda dengan Claude Code Hooks

Hooks memungkinkan Anda menjalankan perintah shell kustom ketika Claude Code mengambil tindakan tertentu. Auto-format saat menyimpan, blokir edit berbahaya, atau injeksi konteks secara otomatis.

Claude Code Hooks adalah perintah shell yang dieksekusi secara otomatis sebagai respons terhadap event. Ketika Claude Code mengedit file, menjalankan perintah, atau memulai sesi, hooks Anda aktif. Ini memungkinkan Anda membangun pagar pembatas, menegakkan standar, dan mengotomatisasi setup berulang tanpa intervensi manual.

Event hook apa yang tersedia?

EventKapan aktifKasus penggunaan umum
PreToolUseSebelum Claude mengeksekusi toolBlokir operasi berbahaya, validasi input
PostToolUseSetelah Claude mengeksekusi toolAuto-format file yang diedit, jalankan linter
NotificationKetika Claude mengirim notifikasiCatat ke file, kirim ke Slack
SessionStartKetika sesi baru dimulaiInjeksi konteks, cek lingkungan
ConfigChangeKetika pengaturan berubahValidasi konfigurasi

Bagaimana cara membuat hook?

Gunakan menu interaktif atau edit settings.json langsung:

bash
# Setup hook interaktif
claude /hooks

# Atau edit settings.json langsung
# Proyek: .claude/settings.json
# Global: ~/.claude/settings.json

Berikut settings.json dengan hooks yang dikonfigurasi:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx prettier --write "$CLAUDE_FILE_PATH"",
        "description": "Auto-format file yang diedit dengan Prettier"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "echo $CLAUDE_FILE_PATH | grep -q \.env && echo 'BLOCKED: Tidak bisa mengedit file .env' && exit 1 || exit 0",
        "description": "Blokir edit pada file .env"
      }
    ],
    "SessionStart": [
      {
        "command": "cat .claude/context-injection.md",
        "description": "Injeksi konteks tambahan saat sesi dimulai"
      }
    ]
  }
}

Apa hook yang paling berguna?

1. Auto-format saat edit

Jalankan Prettier, Black, atau gofmt setiap kali Claude Code mengedit file:

json
// Hook PostToolUse
{
  "matcher": "Edit|Write",
  "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
}

2. Blokir edit file sensitif

Cegah Claude Code dari memodifikasi file environment, secret, atau konfigurasi kritis:

json
// Hook PreToolUse
{
  "matcher": "Edit|Write",
  "command": "echo $CLAUDE_FILE_PATH | grep -qE \"\.env|\.secret|credentials\" && exit 1 || exit 0"
}

3. Injeksi ulang konteks setelah compaction

Ketika Claude Code mengompaksi jendela konteksnya, detail penting bisa hilang. Hook dapat menginjeksi ulang informasi kritis:

json
// Hook PostToolUse untuk compaction
{
  "matcher": "Compact",
  "command": "cat .claude/critical-context.md"
}
TIP

Mulai dengan hook auto-format. Ini adalah hook bernilai tertinggi dengan risiko terendah. Setelah Anda nyaman, tambahkan proteksi file dan injeksi konteks.

Pertanyaan yang sering diajukan

Bisakah hook memblokir Claude Code dari melakukan sesuatu?+
Ya. Hook PreToolUse bisa exit dengan kode 1 untuk memblokir tindakan. Claude Code akan melihat pesan blokir dan mencoba pendekatan lain. Ini adalah cara Anda membuat pagar pembatas untuk operasi sensitif.
Apakah hooks berfungsi dalam mode headless?+
Ya. Hooks dieksekusi di semua mode termasuk headless (CI/CD). Ini membuatnya berguna untuk menegakkan standar dalam pipeline otomatis di mana tidak ada manusia yang meninjau setiap tindakan.
Variabel lingkungan apa yang tersedia di hooks?+
Hooks menerima konteks melalui variabel lingkungan seperti $CLAUDE_FILE_PATH (file yang sedang diedit), $CLAUDE_TOOL_NAME (tool yang digunakan), dan $CLAUDE_SESSION_ID. Variabel yang tersedia tergantung pada tipe event.
Bisakah hooks memperlambat Claude Code?+
Ya, jika perintah hook lambat. Jaga hooks tetap cepat (di bawah 1 detik). Hindari hooks yang membuat permintaan jaringan atau menjalankan build berat. Gunakan logging async jika Anda perlu melacak tindakan tanpa memblokir.
ALL POSTSSTART FREE COURSE →