Claude Skill MartKhám phá skillSkill là gì?
Về danh sách

Hướng dẫn viết Hook cho Claude Code

Kỹ năng thực chiến để viết, kiểm thử, đăng ký và gỡ lỗi hook PreToolUse/PostToolUse/SessionStart/Stop của Claude Code.

Lập trìnhNâng cao1,323212Điểm AI 9/10Cập nhật lần cuối: 8 thg 8, 2026

Làm được gì

Biến những quy tắc mà Claude cứ vi phạm dù đã ghi trong CLAUDE.md thành một rào chắn cứng bằng cơ chế hook.

  • Giải thích rõ từng loại hook, thời điểm kích hoạt và hợp đồng exit code (0 = cho phép, 2 = chặn)
  • Bộ khung PreToolUse Bash guard và các pattern chạy được (references/hook_patterns.md)
  • Kỹ thuật khớp theo token bằng shlex để tránh chặn oan các lệnh lành tính (tuyệt đối không tách bằng awk)
  • Quy trình kiểm thử bash -n + JSON event thật trước khi đăng ký, kèm script test harness
  • Mô hình SSOT + symlink để cài lại ~/.claude không làm mất guard
  • Đồng bộ nhiều profile và cổng phê duyệt bắt buộc có con người (hộp thoại osascript, gõ YES vào /dev/tty)
  • Phương pháp chứng minh vòng lặp Stop hook sẽ kết thúc (loop variant V)

Phù hợp với ai

  • Lập trình viên muốn chặn Claude Code chạy lệnh nguy hiểm (force push, xoá file, commit secret)
  • Trưởng nhóm đã nhắc quy tắc bằng prompt nhiều lần nhưng vẫn bị vi phạm lặp lại
  • Người đã viết hook nhưng bị chặn oan hoặc session hỏng mà không rõ nguyên nhân
  • Người vận hành cần triển khai guardrail đồng nhất trên nhiều profile/máy

Ví dụ sử dụng

  1. "Tạo hook chặn git push --force" → sinh guard PreToolUse kiểm tra vị trí lệnh, đồng thời cho phép các trường hợp chỉ nhắc tên lệnh như grep hay trong nội dung commit.
  2. "Hook mới của tôi chặn cả lệnh bình thường" → chẩn đoán lỗi tách chuỗi bằng awk và thay bằng walker dựa trên shlex.shlex(punctuation_chars=True).
  3. "Ngăn Claude tưởng là đã commit" → thiết kế hook PostToolUse đọc lại git HEAD thật và tiêm sự thật đó vào ngữ cảnh.

· · · Hướng dẫn cài đặt · · ·

Cài vào ứng dụng Claude (không cần terminal)
  1. Tải tệp ZIP bằng nút bên dưới.
  2. Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
  3. Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Tải ZIP
Cài vào Claude Code

Để Claude làm — dán câu dưới đây vào Claude Code

Hãy cài skill mình tìm thấy trên Claude Skill Mart.
Copy thư mục daymade-claude-code/claude-code-hooks từ repo GitHub daymade/claude-code-skills vào ~/.claude/skills/claude-code-hooks/ của mình.
Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.

Cài bằng lệnh thủ công

git clone https://github.com/daymade/claude-code-skills.git /tmp/daymade-skills && mkdir -p ~/.claude/skills && cp -r /tmp/daymade-skills/daymade-claude-code/claude-code-hooks ~/.claude/skills/

Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.

  1. Mở terminal.
  2. Tạo thư mục skills: mkdir -p ~/.claude/skills
  3. Clone repo về thư mục tạm: git clone https://github.com/daymade/claude-code-skills.git /tmp/daymade-skills
  4. Copy đúng skill này: cp -r /tmp/daymade-skills/daymade-claude-code/claude-code-hooks ~/.claude/skills/
  5. Kiểm tra: ls ~/.claude/skills/claude-code-hooks (thấy SKILL.md, references/, scripts/ là ổn)
  6. Mở lại Claude Code và yêu cầu ví dụ "viết hook chặn rm -rf" — skill sẽ tự được gọi.
  7. Quan trọng: luôn chạy bash -n hook.shscripts/test_hook.sh trước khi đăng ký hook. Một hook PreToolUse sai có thể làm lỗi mọi lệnh Bash trong session.
  8. Muốn hoàn tác, xoá mục hook tương ứng trong ~/.claude/settings.json.