Free

המדריך המלא ל-Claude Code Hooks: שלוט בכל פעולה של Claude

ניתוח מלא של מנגנון Claude Code Hooks: חמישה סוגי אירועים, בקרת קודי יציאה וארבעה תצורות אמיתיות להפיכת פעולות AI לניתנות לביקורת, עצירה ואוטומציה.


בכל פעם ש-Claude Code קורא קובץ, כותב קוד או מריץ פקודה, מערכת אירועים פועלת ברקע. Hooks הם הממשק להתחבר למערכת זו — ניתן להזריק לוגיקה משלך בכל עת: להריץ linters אוטומטית, לתעד פעולות, לחסום פעולות מסוכנות, או להפעיל כל פקודת shell.

מאמר זה מכסה באופן מלא את מנגנון ה-Hooks, הגדרתם ושימוש מעשי בהם.


מה הם Hooks

Hooks הם פקודות shell המוגדרות ב-settings.json ש-Claude Code מריץ אוטומטית כאשר מתרחשים אירועים ספציפיים.

האנלוגיה הישירה ביותר: git hooks. ל-git יש יכולת להפעיל סקריפטים לפני ואחרי פעולות כמו commit ו-push. Claude Code Hooks פועלים בדיוק אותו אופן — ההבדל הוא שנקודות ההפעלה הן קריאות לכלים של ה-AI.

למה זה חשוב?

ככל ש-Claude Code הופך לחזק יותר, כך יש צורך גדול יותר בשכבת שליטה דטרמיניסטית. Hooks מספקים:
- ערבויות הרצה שאינן תלויות ב-prompt (Claude עשוי להתעלם מהוראות, אך hook תמיד יורץ)
- יומני פעולות הניתנים לביקורת
- בדיקות איכות אוטומטיות


חמישה סוגי Hook

סוג מפעיל שימוש טיפוסי
PreToolUse לפני קריאה לכלי חסימת פעולות מסוכנות
PostToolUse אחרי קריאה לכלי Auto-lint, הרצת בדיקות
PreCompact לפני דחיסת הקשר שמירת snapshot של המצב
Notification כאשר Claude שולח התראה התראות desktop, Slack
Stop כאשר Claude מסיים תגובה סיכום לוגים

פורמט הגדרה

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{"type": "command", "command": "npm run lint --silent"}]
      }
    ]
  }
}

שלושה שדות מרכזיים: matcher — regex לשמות כלים; type — רק "command"; command — כל פקודת shell.


קודי יציאה

קוד משמעות
0 הצלחה, המשך ביצוע
2 חסימה: בטל קריאה לכלי, שלח stderr ל-Claude
אחר שאינו אפס תעד שגיאה, המשך

ארבע הגדרות אמיתיות

עיצוב אוטומטי לאחר כתיבת קבצים — PostToolUse על Write|Edit, מריץ rubocop לקבצי .rb.

מניעת מחיקת תיקיות — PreToolUse על Bash, מחזיר קוד 2 בזיהוי rm .*/migrations.

יומן ביקורת — PostToolUse על Write|Edit|Bash, מוסיף ל-~/.claude/audit.log.

התראה בסיום — Stop hook, מריץ osascript או notify-send.


גלובלי vs. רמת פרויקט

גלובלי (~/.claude/settings.json): כללים לכל הפרויקטים. רמת פרויקט (.claude/settings.json): בדיקות ספציפיות. שני הסטים מתמזגים ורצים יחד. מומלץ לבצע commit ל-settings.json של הפרויקט ב-git.


דיבאג

  1. בדוק רישיות ב-matcher — Write זה לא write
  2. הרץ את הפקודה בנפרד בטרמינל
  3. בדוק stderr בפלט של Claude Code
  4. התחל עם echo "triggered" >> /tmp/hook.log

סיכום

הערך המרכזי של Hooks הוא חיבור התנהגות AI בלתי-צפויה עם תקנים הנדסיים דטרמיניסטיים. התחל עם hook אחד: auto-lint לאחר כתיבת קבצים.