Hướng dẫn viết hook cho Claude Code
Skill dạy cách viết, kiểm thử, đăng ký và gỡ lỗi hook Claude Code (PreToolUse / PostToolUse / SessionStart / Stop) một cách an toàn.
Lập trìnhNâng cao★ 1,323⑂ 212Đ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 bị vi phạm lặp lại (chỉ ghi trong CLAUDE.md) thành rào chắn cứng bằng hook shell.
- Giải thích hợp đồng của từng loại hook: PreToolUse (exit 2 = chặn, stderr là thông điệp mô hình đọc), PostToolUse (chèn ngữ cảnh xác thực), SessionStart (luôn exit 0, chỉ health-check), Stop (loại duy nhất thấy được văn bản mô hình vừa sinh ra).
- Đóng gói các cạm bẫy đã trả giá thật: khớp theo token bằng
shlex.shlex(punctuation_chars=True)thay vì tách bằng awk; miễn trừ đoạngit commit; kiểm thửbash -n+ JSON event thật TRƯỚC khi đăng ký; SSOT + symlink chống mất hook khi cài lại~/.claude; hợp nhất nhiều profile; cổng phê duyệt phải do con người bấm; chọn hướng thất bại fail-open/fail-closed; chứng minh vòng lặp remediation kết thúc (loop variant V). - Có sẵn khung script chạy được trong
references/hook_patterns.mdvà bộ testscripts/test_hook.sh.
Phù hợp với ai
- Lập trình viên dùng Claude Code hằng ngày, muốn chặn thật sự các lệnh nguy hiểm (force push, xoá file, đẩy secret).
- Tech lead muốn quy tắc nhóm được cưỡng chế bằng cơ chế, không phải lời nhắc.
- Người đang bị hook báo sai (false-block) hoặc làm hỏng cả phiên làm việc mà chưa tìm ra nguyên nhân.
Ví dụ sử dụng
- "Chặn hẳn
git push --force" → viết hook PreToolUse cho Bash → test bằng JSON case trigger/lành tính → đăng ký trong settings.json. - "Không cho mô hình tự bịa tên chưa kiểm chứng" → chọn Stop hook (không phải UserPromptSubmit) và thiết kế thông điệp gói hết vi phạm trong một lần chặn.
- "Sau khi bật hook, mọi lệnh Bash đều lỗi lạ" → dùng
bash -nvà phát lại event thật để tìm hook làm 'nhiễm độc' phiên, kiểm tra symlink đứt bằng health-check SessionStart.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/daymade/claude-code-skills/HEAD/daymade-claude-code/claude-code-hooks/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
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 && mkdir -p ~/.claude/skills && cp -r claude-code-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.
- Mở terminal.
- Tải repo:
git clone https://github.com/daymade/claude-code-skills.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy riêng skill này:
cp -r claude-code-skills/daymade-claude-code/claude-code-hooks ~/.claude/skills/ - Kiểm tra:
ls ~/.claude/skills/claude-code-hooksphải thấy SKILL.md, references/, scripts/. - Khởi động lại Claude Code, rồi thử yêu cầu: "tạo hook chặn rm -rf".
- Trước khi đăng ký hook vào settings.json, luôn chạy
bash -nvàscripts/test_hook.sh— một hook PreToolUse lỗi sẽ phá cả phiên làm việc.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT