Phát triển Hook cho Claude Code
Skill hướng dẫn thiết kế, cấu hình và gỡ lỗi hook của Claude Code (PreToolUse, Stop, SessionStart...) theo cả kiểu prompt và kiểu command.
Lập trìnhTrung cấp★ 514⑂ 46Điểm AI 8/10Cập nhật lần cuối: 23 thg 7, 2026
Làm được gì
- Tóm tắt đầy đủ 9 sự kiện hook (PreToolUse, PostToolUse, Stop, SubagentStop, UserPromptSubmit, SessionStart, SessionEnd, PreCompact, Notification) kèm bảng "khi nào dùng".
- Phân biệt hook dạng prompt (LLM tự suy luận, linh hoạt) và hook dạng command (bash, tất định, nhanh).
- Chỉ rõ khác biệt giữa định dạng plugin
hooks/hooks.json(có wrapperhooks) và.claude/settings.json(không wrapper). - Cung cấp đặc tả JSON đầu vào/đầu ra, mã thoát 0/2,
permissionDecision,decision: approve|block,systemMessage. - Hướng dẫn matcher regex (
Read|Write|Edit,mcp__.*), dùng${CLAUDE_PLUGIN_ROOT}để đường dẫn di động, timeout mặc định, đặc điểm chạy song song và các quy tắc bảo mật (chặn path traversal, file.env, luôn quote biến bash). - Mẫu bật/tắt hook tạm thời bằng flag file hoặc file cấu hình, cùng quy trình gỡ lỗi với
claude --debug.
Dành cho ai
- Lập trình viên xây plugin Claude Code hoặc chuẩn nội bộ cho team.
- Team lead muốn tự động chặn lệnh bash nguy hiểm hay việc sửa file bí mật.
- Người muốn dùng Stop hook để buộc kiểm tra test/build trước khi kết thúc.
- Người muốn nạp context dự án và biến môi trường ngay khi mở session.
Ví dụ sử dụng
- "Tạo hook PreToolUse chặn path traversal và file .env" → sinh
hooks.jsonvới matcherWrite|Editvà script kiểm tra. - "Không cho agent dừng khi test chưa chạy" → hook Stop dạng prompt trả về
decision: blockkèm lý do. - "Khi mở session, phát hiện loại dự án và lưu vào biến môi trường" → hook SessionStart ghi export vào
$CLAUDE_ENV_FILE.
· · · 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/tzachbon/smart-ralph/HEAD/.agents/skills/Hook Development/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 .agents/skills/Hook Development từ repo GitHub tzachbon/smart-ralph vào ~/.claude/skills/hook-development/ 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/tzachbon/smart-ralph.git && mkdir -p ~/.claude/skills && cp -r "smart-ralph/.agents/skills/Hook Development" ~/.claude/skills/hook-development⚠ Đâ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 và vào thư mục làm việc bạn muốn.
- Clone repo:
git clone https://github.com/tzachbon/smart-ralph.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy toàn bộ thư mục skill (cần cả references/, examples/, scripts/):
cp -r "smart-ralph/.agents/skills/Hook Development" ~/.claude/skills/hook-development - Kiểm tra đã có
~/.claude/skills/hook-development/SKILL.mdvà các thư mục con. - Cài
jqnếu chưa có (jq --version; macOS:brew install jq, Ubuntu:sudo apt install jq). - Khởi động lại Claude Code, rồi thử yêu cầu: "tạo hook PreToolUse để chặn lệnh nguy hiểm".
- Lưu ý: mỗi lần sửa cấu hình hook bạn phải thoát và mở lại Claude Code; dùng
claude --debugđể xem log nạp hook.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT