Claude Code Hooks: Tự Động Hoá Mọi Thứ Với Shell Commands

Claude Code Hooks: Tự Động Hoá Mọi Thứ Với Shell Commands

🔧 Claude Code Hooks Là Gì?

Hooks là shell commands tự động chạy khi Claude Code thực hiện actions. Bạn cài một lần, mọi thứ chạy tự động mỗi khi Claude edit file, gọi tool, hay hoàn thành task. Không cần nhớ format code, không cần chạy test bằng tay.

Bài này hướng dẫn bạn setup từ đầu, có code mẫu copy-paste luôn.

⚡ Bước 1: Mở Settings Để Thêm Hooks

Chạy lệnh này trong terminal:

claude config edit

File settings sẽ mở ra. Đây là nơi bạn thêm tất cả hooks. Format là JSON.

🎨 Ví Dụ 1: Auto-Format Code Sau Khi Claude Edit File

Mỗi lần Claude chỉnh sửa file, Prettier tự động format lại code cho bạn. Không bao giờ phải lo code xấu.

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
      }
    ]
  }
}

Giải thích:

  • PostToolUse = chạy SAU khi tool hoàn thành
  • matcher: "Edit|Write" = chỉ trigger khi Claude dùng tool Edit hoặc Write
  • $CLAUDE_FILE_PATH = biến môi trường chứa đường dẫn file vừa được chỉnh sửa

🧪 Ví Dụ 2: Chạy Tests Tự Động Sau Mỗi Code Change

Claude vừa sửa code xong, tests chạy ngay lập tức. Nếu fail, Claude thấy output và tự fix luôn.

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "cd $PROJECT_DIR && npm test --silent 2>&1 | tail -5"
      }
    ]
  }
}

Giải thích:

  • $PROJECT_DIR = thư mục gốc của project
  • npm test --silent = chạy test suite, ẩn output thừa
  • tail -5 = chỉ lấy 5 dòng cuối (kết quả pass/fail)
  • Output này hiển thị cho Claude, nên nếu test fail, Claude biết ngay và sửa tiếp

🔔 Ví Dụ 3: Notification Khi Claude Xong Task

Đang làm việc khác trong lúc Claude chạy? Nhận thông báo desktop khi Claude muốn báo cho bạn.

{
  "hooks": {
    "Notification": [
      {
        "command": "osascript -e 'display notification \"$CLAUDE_MESSAGE\" with title \"Claude Code\"'"
      }
    ]
  }
}

Giải thích:

  • Notification = hook type đặc biệt, trigger khi Claude muốn thông báo
  • osascript = lệnh macOS để hiển thị notification
  • $CLAUDE_MESSAGE = nội dung thông báo từ Claude

📋 3 Loại Hook Types Bạn Cần Biết

Hook TypeKhi Nào ChạyUse Case
PreToolUseTRƯỚC khi Claude dùng toolValidate input, block lệnh nguy hiểm, kiểm tra permissions
PostToolUseSAU khi tool hoàn thànhFormat code, chạy tests, lint, log changes
NotificationKhi Claude muốn thông báoDesktop alerts, Slack webhook, sound notification

PreToolUse đặc biệt hữu ích cho security. Ví dụ: block Claude khỏi xóa file quan trọng, hoặc validate trước khi chạy bash command.

💡 Tips Thực Chiến

  • Hook output hiển thị cho Claude. Nếu test fail, Claude đọc được output và tự sửa. Đây là vòng feedback loop cực mạnh.
  • Dùng matcher để filter tool cụ thể. Không cần chạy Prettier khi Claude đang search file, chỉ chạy khi Edit hoặc Write.
  • Hooks chạy với quyền user. Cẩn thận với destructive commands như rm -rf. Luôn test hook trên project nhỏ trước.
  • Kết hợp nhiều hooks. Bạn có thể có cả auto-format VÀ auto-test trong cùng PostToolUse array.
  • Debug hook: Thêm echo "Hook triggered for $CLAUDE_FILE_PATH" để kiểm tra hook có chạy đúng không.

🚀 Tổng Kết

Claude Code Hooks biến terminal AI thành một pipeline tự động hoàn chỉnh. Format code, chạy test, nhận thông báo, tất cả không cần bạn làm gì thêm. Setup một lần, dùng mãi mãi.

Bắt đầu với claude config edit, copy một trong ba ví dụ trên, và trải nghiệm workflow mới.

#ClaudeCode #Hooks #Tutorial #VibeAICoder #learnontiktok

Bài viết liên quan