allow, deny, instruct כמו מדיניות מובנית.
דוגמה מהירה
שתי דרכים לטעון מדיניות מותאמת אישית
אפשרות 1: מבוססת קונוונציה (מומלץ)
זרוק קבצים*policies.{js,mjs,ts} לתוך .failproofai/policies/ והם נטענים באופן אוטומטי — אין צורך בדגלים או שינויי תצורה. זה עובד כמו git hooks: זרוק קובץ, זה פשוט עובד.
- שני הספריות של פרויקט ומשתמש נסרקים (union — לא first-scope-wins)
- קבצים נטענים בסדר אלפבתי בתוך כל ספריה. הוסף קידומת עם
01-,02-כדי לשלוט בסדר - רק קבצים התואמים
*policies.{js,mjs,ts}נטענים; קבצים אחרים מתעלמים - כל קובץ נטען באופן עצמאי (fail-open לכל קובץ)
- עובד לצד
--customמפורש ומדיניות מובנית
אפשרות 2: נתיב קובץ מפורש
policies-config.json כ-customPoliciesPath. הקובץ נטען בטרי בכל אירוע hook - אין caching בין אירועים.
שימוש בשניהם יחד
מדיניות קונוונציה וקובץ--custom מפורש יכולים להתקיים. סדר טעינה:
- קובץ
customPoliciesPathמפורש (אם מוגדר) - קבצי קונוונציה של פרויקט (
{cwd}/.failproofai/policies/, בסדר אלפבתי) - קבצי קונוונציה של משתמש (
~/.failproofai/policies/, בסדר אלפבתי)
API
Import
customPolicies.add(hook)
רושם מדיניות. קרא זאת כמו שרוצה פעמים רבות עבור מדיניות מרובה באותו קובץ.
עוזרי החלטות
deny(message) - ההודעה מופיעה ל-Claude עם קידומת "Blocked by failproofai:". ה-deny יחיד מקצר הערכה נוספת.
instruct(message) - ההודעה מצורפת להקשר של Claude לקריאת הכלי הנוכחי. כל הודעות instruct מצטברות ומועברות יחד.
הודעות allow אינפורמטיביות
allow(message) מאפשר את הפעולה וגם שולח הודעה אינפורמטיבית חזרה ל-Claude. ההודעה מועברת כ-additionalContext בתגובת stdout של מטפל ה-hook — אותו מנגנון המשמש ל-instruct, אך שונה מבחינה סמנטית: זה עדכון סטטוס, לא אזהרה.
מקרי שימוש:
- אישורי סטטוס:
allow("All CI checks passed.")— אומר ל-Claude שהכל ירוק - הסברי fail-open:
allow("GitHub CLI not installed, skipping CI check.")— אומר ל-Claude למה בדיקה דלגה כדי שיהיה לו הקשר מלא - הודעות מרובות מצטברות: אם כמה מדיניות כל אחת מחזירה
allow(message), כל ההודעות מחוברות עם עלינוליים ומועברות יחד
שדות PolicyContext
שדות SessionMetadata
סוגי אירועים
סדר הערכה
מדיניות מוערכת בסדר זה:- מדיניות מובנית (בסדר הגדרה)
- מדיניות מותאמת אישית מפורשת מ-
customPoliciesPath(בסדר.add()) - מדיניות קונוונציה מ-
.failproofai/policies/של פרויקט (קבצים אלפבתיים, סדר.add()בתוך) - מדיניות קונוונציה מ-
~/.failproofai/policies/של משתמש (קבצים אלפבתיים, סדר.add()בתוך)
ה-
deny הראשון מקצר את כל המדיניות הלאה. כל הודעות instruct מצטברות ומועברות יחד.ייבוא טרנזיטיבי
קבצי מדיניות מותאמים אישית יכולים לייבא מודולים מקומיים באמצעות נתיבים יחסיים:from "failproofai" לנתיב dist בפועל ויצירת קבצי .mjs זמניים כדי להבטיח תאימות ESM.
סינון סוג אירוע
השתמש ב-match.events כדי להגביל מתי מדיניות משתלחת:
match לחלוטין כדי להיות בעל יכולת בכל סוג אירוע.
טיפול בשגיאות ומצבי כשל
מדיניות מותאמת אישית היא fail-open: שגיאות לעולם לא חוסמות מדיניות מובנית או קורסות מטפל ה-hook.דוגמה מלאה: מדיניות מרובה
דוגמאות
ספרייהexamples/ מכילה קבצי מדיניות מוכנים להפעלה:

