$ man how-to/how-to-setup-claude-code-hooks
כלי CLIintermediate
איך להגדיר Hooks ב-Claude Code
אוטומציה של תהליכי עבודה בכל שלב במחזור חיי הסוכן
by Shawn Tenam
מה זה Hooks
Hooks הם פקודות shell שרצות אוטומטית בנקודות ספציפיות במחזור החיים של Claude Code. הם נותנים לך שליטה דטרמיניסטית על ההתנהגות של הסוכן. במקום לקוות ש-Claude יזכור לפרמט קוד אחרי עריכה, hook מבטיח את זה.
מילת המפתח היא דטרמיניסטי. הוראות CLAUDE.md הן הצעות - המודל בדרך כלל עוקב אחריהן אבל אולי לא. Hooks הם ערבויות. hook מסוג pre-command שחוסם rm -rf תמיד יחסום אותו. hook מסוג post-edit שמריץ Prettier תמיד יפרמט את הקובץ.
Hooks מריצים את הקוד שלך, לא של Claude. הם מבצעים פקודות shell על המחשב שלך. זה הופך אותם לחזקים (אפשר לעשות כל דבר שסקריפט shell יכול) ומסוכנים (hook גרוע יכול לשבור את תהליך העבודה). התחל פשוט, הוסף מורכבות לפי הצורך.
PATTERN
סוגי Hooks ומחזור חיים
Claude Code תומך ב-hooks בנקודות מחזור החיים הבאות:
PreToolUse: רץ לפני ש-Claude מבצע כלי (עריכת קובץ, פקודת bash, וכו'). השתמש בזה כדי לחסום פקודות מסוכנות, לאמת נתיבי קבצים, או להזריק הקשר. אם ה-hook שלך מחזיר קוד יציאה שאינו אפס, קריאת הכלי נחסמת.
PostToolUse: רץ אחרי ש-Claude מבצע כלי. השתמש בזה כדי לפרמט קבצים ערוכים, להריץ linters, לשלוח התראות, או לרשום שינויים. קריאת הכלי כבר קרתה - אתה מגיב אליה.
Notification: רץ כש-Claude צריך קלט אנושי או רוצה להודיע לך. השתמש בזה כדי לשלוח הודעות Slack, לנגן צלילים, או להפעיל התראות מערכת כש-Claude מחכה לאישור.
Stop: רץ כש-Claude מסיים תגובה. השתמש בזה לניקוי, לוגים, או הפעלת תהליכי עבודה אחרי-תגובה.
כל hook מקבל הקשר על מה שהפעיל אותו: שם הכלי, נתיב הקובץ, הפקודה, או הודעת ההתראה. אתה משתמש בהקשר הזה כדי להחליט מה ה-hook שלך צריך לעשות.
CODE
הגדרת ה-Hook הראשון שלך
הרץ /hooks ב-Claude Code כדי לפתוח את קונפיגורציית ה-hooks האינטראקטיבית. או ערוך את ההגדרות ישירות.
Hooks חיים בהגדרות Claude Code שלך (ברמת הפרויקט ב-.claude/settings.json או ברמת המשתמש ב-~/.claude/settings.json). הפורמט הוא אובייקט JSON שממפה סוגי hooks למערכים של קונפיגורציות hooks.
לכל hook יש: matcher (איזה כלי או אירוע מפעיל אותו), command (מה להריץ), ואופציונלית timeout.
דוגמה: hook מסוג PostToolUse שמפרמט קבצי TypeScript אחרי עריכות.
ה-matcher בודק אם הכלי היה "Edit" או "Write" והקובץ מסתיים ב-.ts או .tsx. הפקודה מריצה Prettier על הקובץ הערוך. כל פעם ש-Claude עורך קובץ TypeScript, הוא מתפרמט אוטומטית.
דוגמה: hook מסוג PreToolUse שחוסם פקודות bash מסוכנות.
ה-matcher בודק אם הכלי הוא "Bash" והפקודה מכילה "rm -rf" או "drop table" או "force push." אם יש התאמה, ה-hook יוצא עם קוד 1 וחוסם את הפקודה. Claude רואה את החסימה ומתאים את הגישה שלו.
התחל עם שתי התבניות האלה: פורמט אוטומטי אחרי עריכות וחסימת פקודות מסוכנות. הן מספקות ערך מיידי עם מורכבות מינימלית.
PATTERN
תבניות Hook מהעולם האמיתי
סריקת אבטחה: hook מסוג PreToolUse שבודק קבצים ערוכים עבור סודות מקודדים קשיח (מפתחות API, סיסמאות, טוקנים) לפני שהעריכה נוחתת. משתמש בתבנית grep פשוטה מול התוכן החדש. חוסם את העריכה אם מזוהים סודות.
התראה בהמתנה: hook מסוג Notification ששולח התראת macOS או הודעת Slack כש-Claude מחכה לאישור. שימושי כשמריצים משימות ארוכות - אפשר לעבוד על משהו אחר ולקבל ping כש-Claude צריך אותך.
טסטים אוטומטיים: hook מסוג PostToolUse שמריץ את קובץ הטסט הרלוונטי אחרי כל עריכת קובץ מקור. אם עורכים src/auth.ts, ה-hook מריץ tests/auth.test.ts אוטומטית. Claude רואה את תוצאות הטסט בתור הבא שלו.
בטיחות Git: hook מסוג PreToolUse שמונע מ-Claude להריץ git push --force, git reset --hard, או git checkout . בלי אישור מפורש. אלה פקודות ה-git ההרסניות שיכולות לאבד עבודה.
הזרקת הקשר: hook מסוג PreToolUse שרץ בתחילת סשן ומוסיף את התאריך של היום, branch ה-git הנוכחי, והודעות commit אחרונות להקשר. Claude מתחיל כל סשן עם מודעות מצבית עדכנית.
PRO TIP
דיבוג ומלכודות
Hooks רצים באופן סינכרוני. hook איטי חוסם את Claude מלהתקדם. שמור hooks מהירים - מתחת ל-2 שניות. אם צריך להריץ משהו איטי (חבילת טסטים מלאה, build), עשה את זה ברקע ודווח תוצאות באופן אסינכרוני.
שגיאות hook גלויות ל-Claude. אם ה-hook שלך מדפיס ל-stderr או יוצא עם קוד שאינו אפס, Claude רואה את זה כמשוב. זה שימושי: hook שחוסם פקודה ומדפיס "Blocked: never force push to main" מלמד את Claude להימנע מהפקודה הזו בתורות עתידיים.
בדוק hooks מחוץ ל-Claude Code קודם. כתוב את פקודת ה-shell, הרץ אותה ידנית, ודא שהיא עובדת. אז הוסף אותה כ-hook. דיבוג hook שבור בתוך סשן פעיל של Claude Code הוא מתסכל.
Matchers הם התאמות מחרוזת, לא regex (בקונפיגורציה הבסיסית). השתמש בשדה command ללוגיקת התאמה מורכבת. סקריפט ה-hook שלך יכול לבדוק את ההקשר המלא ולהחליט אם לפעול או לעבור.
סדר ה-hooks חשוב. hooks מאותו סוג רצים לפי סדר המערך. אם יש לך שני hooks מסוג PreToolUse, הראשון רץ ראשון. אם הוא חוסם את הכלי, השני לעולם לא רץ.
knowledge guide
מדריכים קשורים