מדריך קלוד קוד בעברית

תיעוד 95

דוגמאות לקובצי הגדרות

קובצי settings.json מציאותיים עבור מפתח, צוות וארגון: העתק אחד, שמור את המפתחות הרצויים ושנה את הערכים.

דף זה כולל שלוש דוגמאות לקובצי settings.json, אחת עבור כל מקום שבו שומרים הגדרה:

  • קובץ ~/.claude/settings.json של מפתח
  • קובץ .claude/settings.json של צוות, שנשמר במאגר (committed to the repository)
  • קובץ managed-settings.json של ארגון

כל אחד מהם הוא קובץ סביר עבור אותו קהל יעד, כך שתוכל לראות את המבנה ולהעתיק את החלקים הרצויים לך. אף אחד מהם אינו קו בסיס מומלץ. כל ערך מגיע מהרשומה של המפתח בתוך מדריך ההגדרות, שבו מפורטים הסוג שלו, ערך ברירת המחדל והיכן ניתן להגדיר אותו.

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

#ההגדרות שלך

הגדרות אישיות של מפתח יחיד. הקובץ בוחר מודל ורמת מאמץ, מתאים את הטרמינל ומאשר מראש פקודה אחת לקריאה בלבד וקריאה של קובץ יחיד. כל מה שלא מופיע ברשימה שומר על ערך ברירת המחדל שלו. קובץ כזה נשמר בנתיב ~/.claude/settings.json, ושם הוא חל על כל פרויקט שאתה פותח.

#קובץ הגדרות להעתקה

שמור קובץ זה בתור ~/.claude/settings.json. זהו JSON תקין ללא הערות, כך שתוכל להדביק אותו כפי שהוא ולמחוק את המפתחות שאינך מעוניין בהם.

{
  "model": "claude-sonnet-5",
  "effortLevel": "xhigh",
  "editorMode": "vim",
  "theme": "light-daltonized",
  "statusLine": {
    "type": "command",
    "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
    "padding": 2
  },
  "spinnerTipsEnabled": false,
  "preferredNotifChannel": "terminal_bell",
  "permissions": {
    "allow": [
      "Bash(git diff *)",
      "Read(~/.zshrc)"
    ]
  },
  "autoUpdatesChannel": "stable",
  "cleanupPeriodDays": 20
}

#מה כל מפתח עושה

אותו קובץ עם הערה מעל כל מפתח. קרא אותו כאן: העתק מהחלק הקודם, מכיוון ש-Claude Code אינו מקבל הערות בקובץ הגדרות.

{
  // התחל כל הפעלה עם Sonnet 5
  "model": "claude-sonnet-5",
  // בצע הסקת מסקנות עמוקה יותר מרמת ברירת המחדל high במודלים ללא רמה שמורה: /effort שומר רמה לכל מודל, ו-effort-- קובע רמה עבור הפעלה בודדת
  "effortLevel": "xhigh",
  // קיצורי מקשים של Vim בשורת הקלט
  "editorMode": "vim",
  // ערכת הנושא הבהירה המותאמת לעיוורי צבעים
  "theme": "light-daltonized",
  // שורת מצב מתחת לשורת הקלט: שם המודל וניצול חלון ההקשר
  "statusLine": {
    "type": "command",
    "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
    "padding": 2
  },
  // הסתרת הטיפים המתחלפים מתחת לספינר
  "spinnerTipsEnabled": false,
  // השמעת צלצול טרמינל עבור התראות, כגון משימה שהסתיימה או בקשת הרשאה שממתינה
  "preferredNotifChannel": "terminal_bell",
  // מתן אפשרות ל-Claude Code להריץ git diff ולקרוא את ה-zshrc. שלך בלי לשאול
  "permissions": {
    "allow": [
      "Bash(git diff *)",
      "Read(~/.zshrc)"
    ]
  },
  // קבלת עדכונים מערוץ stable
  "autoUpdatesChannel": "stable",
  // מחיקת תמלילי הפעלות ונתוני הפעלה מקומיים אחרים שגילם מעל 20 יום
  "cleanupPeriodDays": 20
}

#הגדרות משותפות של צוות

הגדרות משותפות של צוות אחד, שנשמרות במאגר הקוד כך שכל מי שמשכפל אותו מקבל את אותן ההרשאות, ה-hooks, נתוני הטלמטריה וחנות התוספים (plugin marketplace). שמור קובץ כזה בנתיב .claude/settings.json בתיקייה הראשית של המאגר. שלושה דברים שחשוב לדעת לפני ששומרים קובץ כזה במאגר:

  • גם הפעלות ענן קוראות אותו. הפעלת ענן ב-Claude Code ברשת מתחילה משכפול של המאגר, ולכן הקובץ שנשמר במאגר חל גם שם.
  • כללי אישור ממתינים למתן אמון. כללי אישור ורשומות של extraKnownMarketplaces נכנסים לתוקף רק לאחר שכל אדם נותן אמון בתיקייה זו עצמה, ולא רק בתיקיית אב שלה: כללי דחייה ובקשת אישור חלים בכל הפעלה, בין אם ניתן בה אמון ובין אם לא.
  • ה-hook הוא סקריפט בתוך המאגר. ה-hook של קובץ זה מריץ את .claude/hooks/block-rm.sh: הפרק כיצד hook מפענח נתיבים מסביר כיצד לכתוב אותו.

#קובץ הגדרות להעתקה

שמור קובץ זה בתור .claude/settings.json בתיקייה הראשית של המאגר ובצע לו commit. זהו JSON תקין ללא הערות, כך שתוכל להדביק אותו כפי שהוא ולמחוק את המפתחות שאינך מעוניין בהם.

{
  "permissions": {
    "allow": [
      "Bash(npm run *)"
    ],
    "ask": [
      "Bash(git push *)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
          }
        ]
      }
    ]
  },
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  },
  "enabledPlugins": {
    "code-formatter@acme-tools": true
  },
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": [
        "/tmp/build"
      ]
    },
    "network": {
      "allowedDomains": [
        "registry.npmjs.org",
        "*.example.com"
      ]
    }
  },
  "plansDirectory": "./plans"
}

#מה כל מפתח עושה

אותו קובץ עם הערה מעל כל מפתח. קרא אותו כאן: העתק מהחלק הקודם, מכיוון ש-Claude Code אינו מקבל הערות בקובץ הגדרות.

{
  "permissions": {
    // הרצת סקריפטים של npm ללא צורך באישור
    "allow": [
      "Bash(npm run *)"
    ],
    // תמיד בקש אישור לפני ביצוע git push
    "ask": [
      "Bash(git push *)"
    ],
    // לעולם אל תקרא קובצי env או את תיקיית secrets
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  // שליחת מדדי OpenTelemetry אל אספן המדדים (collector) של הצוות באמצעות gRPC: החלף את נקודת הקצה בכתובת ה-URL של האספן שלך
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"
  },
  // לפני כל פקודת Bash, הרץ סקריפט מתוך המאגר שיכול לחסום אותה
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
          }
        ]
      }
    ]
  },
  // רישום חנות התוספים של הצוות בכל שכפול של המאגר
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  },
  // הפעלת תוסף אחד מחנות זו: תוסף ממקור חיצוני כגון מאגר GitHub עדיין מחייב כל אדם להתקין אותו פעם אחת
  "enabledPlugins": {
    "code-formatter@acme-tools": true
  },
  // הפעלת פקודות בארגז חול: תיקיית build ניתנת לכתיבה: npm ו-example.com מאושרים מראש, שרתים מארחים אחרים עדיין יציגו בקשת אישור
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": [
        "/tmp/build"
      ]
    },
    "network": {
      "allowedDomains": [
        "registry.npmjs.org",
        "*.example.com"
      ]
    }
  },
  // שמירת קובצי תוכניות בתוך המאגר
  "plansDirectory": "./plans"
}

#הגדרות מנוהלות של ארגון

קובץ managed-settings.json שמציג את המבנה של המפתחות המנוהלים, עם ערך סביר אחד לכל אחד מהם. זו אינה מדיניות מומלצת: בחר את המפתחות שמתאימים לדרישות שלך וקבע את הערכים שלך. הדוגמה מגדירה את המפתחות הבאים:

  • forceLoginMethod ו-forceLoginOrgUUID מקבעים את שיטת ההתחברות ואת הארגון
  • availableModels ו-enforceAvailableModels מגבילים באילו מודלים הפעלות יכולות להשתמש
  • permissions.deny חוסם שתי קריאות של קבצים ואת curl, ו-disableBypassPermissionsMode מסיר את מצב עקיפת ההרשאות
  • allowManagedPermissionRulesOnly ו-allowManagedMcpServersOnly קובעים שרשימות ההיתרים המנוהלות של ההרשאות ושל שרתי MCP יהיו היחידות שתקפות
  • allowedMcpServers מקבע את שרת ה-MCP לפי כתובת URL
  • strictKnownMarketplaces מאפשר חנות תוספים אחת בלבד
  • sandbox מפעיל פקודות בארגז חול עם רשימת היתרי רשת קבועה וללא ניסיון חוזר מחוץ לארגז החול
  • requiredMinimumVersion קובע גרסת מינימום נדרשת של Claude Code
  • cleanupPeriodDays מקצר את זמן שמירת תמלילי ההפעלות ונתונים מקומיים אחרים לשבעה ימים
  • companyAnnouncements מציג הודעה בעת ההפעלה

מנהלי מערכת פורסים קובץ כזה בתור managed-settings.json, או את אותו מבנה JSON דרך MDM או דרך הגדרות מנוהלות שרת. קובץ שנפרס חל על כל מחשב או חשבון שאליהם הוא מגיע. כדי לתת לקבוצה מסוימת ערכים שונים, יש לפרוס קובץ או פרופיל שונה לאותה קבוצה, מכיוון שהגדרות מנוהלות שרת אינן תומכות עדיין במדיניות לפי קבוצות.

#קובץ הגדרות להעתקה

פרוס קובץ זה בתור managed-settings.json, או את אותו JSON דרך MDM או דרך ממשק הניהול של claude.ai. זהו JSON תקין ללא הערות: החלף את ה-UUID לדוגמה של הארגון, את כתובת ה-URL של השרת ואת חנות התוספים בערכים משלך, ומחק את המפתחות שאינך מעוניין בהם.

{
  "forceLoginMethod": "claudeai",
  "forceLoginOrgUUID": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  ],
  "availableModels": [
    "opus",
    "sonnet"
  ],
  "enforceAvailableModels": true,
  "permissions": {
    "deny": [
      "Bash(curl *)",
      "Read(./.env)",
      "Read(./secrets/**)"
    ],
    "disableBypassPermissionsMode": "disable"
  },
  "allowManagedPermissionRulesOnly": true,
  "allowedMcpServers": [
    {
      "serverUrl": "https://api.githubcopilot.com/*"
    }
  ],
  "allowManagedMcpServersOnly": true,
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "acme-corp/approved-plugins"
    }
  ],
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false,
    "network": {
      "allowedDomains": [
        "registry.npmjs.org",
        "github.com"
      ],
      "allowManagedDomainsOnly": true
    }
  },
  "requiredMinimumVersion": "2.1.150",
  "cleanupPeriodDays": 7,
  "companyAnnouncements": [
    "Welcome to Acme Corp! Review our code guidelines at docs.example.com"
  ]
}

#מה כל מפתח עושה

אותו קובץ עם הערה מעל כל מפתח. קרא אותו כאן: העתק מהחלק הקודם, מכיוון ש-Claude Code אינו מקבל הערות בקובץ הגדרות.

{
  // התחברות דרך claude.ai בלבד, ורק בארגון זה
  "forceLoginMethod": "claudeai",
  "forceLoginOrgUUID": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  ],
  // מודלים מסוג Opus ו-Sonnet בלבד: עם enforceAvailableModels, אפשרות ברירת המחדל (Default) מצייתת גם היא לרשימה
  "availableModels": [
    "opus",
    "sonnet"
  ],
  "enforceAvailableModels": true,
  "permissions": {
    // חסימת curl, קובץ ה-env. של הפרויקט ותיקיית secrets שלו בכל מחשב
    "deny": [
      "Bash(curl *)",
      "Read(./.env)",
      "Read(./secrets/**)"
    ],
    // הסרת מצב עקיפת הרשאות מכל הפעלה
    "disableBypassPermissionsMode": "disable"
  },
  // התעלמות מכללי הרשאות של המשתמש, הפרויקט וההגדרות המקומיות
  "allowManagedPermissionRulesOnly": true,
  // שרת ה-MCP של GitHub בלבד, מותאם לפי כתובת URL ולא לפי שם, מכיוון שמשתמש יכול לקרוא לכל שרת בשם github. שרתים שאינם תואמים לא ייטענו, כולל כל שרת stdio כאשר הרשימה מכילה רשומות URL בלבד: הנעילה למטה הופכת רשימה מנוהלת זו לרשימת ההיתרים היחידה שנחשבת
  "allowedMcpServers": [
    {
      "serverUrl": "https://api.githubcopilot.com/*"
    }
  ],
  "allowManagedMcpServersOnly": true,
  // תוספים יכולים להגיע רק מחנות תוספים זו
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "acme-corp/approved-plugins"
    }
  ],
  // הפעלת ארגז חול עבור כל פקודה ש-Claude מריץ, סירוב להתחיל אם לא ניתן להגדיר את ארגז החול, ולעולם לא לאפשר לפקודה שנחסמה לנסות שוב מחוץ לארגז החול: הגישה לרשת מוגבלת ל-npm ול-GitHub, ומשתמשים אינם יכולים להוסיף דומיינים
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false,
    "network": {
      "allowedDomains": [
        "registry.npmjs.org",
        "github.com"
      ],
      "allowManagedDomainsOnly": true
    }
  },
  // סירוב לפעול בגרסאות ישנות יותר מ-2.1.150
  "requiredMinimumVersion": "2.1.150",
  // מחיקת תמלילי הפעלות ונתוני הפעלה מקומיים אחרים לאחר 7 ימים
  "cleanupPeriodDays": 7,
  // הודעה שכל משתמש רואה בעת ההפעלה
  "companyAnnouncements": [
    "Welcome to Acme Corp! Review our code guidelines at docs.example.com"
  ]
}