settings.json दस्तावेज़ीकरण
Apothem इकोसिस्टम के लिए Claude Code हुक निष्पादन, अनुमतियाँ, इवेंट, टाइमआउट, Python रनटाइम, सत्यापन और स्तरित सेटिंग्स प्राथमिकता कॉन्फ़िगर करें।
दायरा। यह दस्तावेज़ Claude Code एडॉप्टर की हुक वायरिंग फ़ाइल (
settings.json) का वर्णन करता है। अन्य harness अपने स्वयं के नेटिव सेटिंग्स सरफ़ेस का उपयोग करते हैं — प्रत्येक एडॉप्टर के समतुल्य कॉन्फ़िगरेशन एंट्री पॉइंट के लिएsite/content/docs/harnesses/<harness>.mdxदेखें।
अवलोकन
settings.json Apothem इकोसिस्टम के लिए Claude Code हुक निष्पादन को कॉन्फ़िगर करती है।
यह घोषित करती है कि कौन-से हुक किन इवेंट पर चलते हैं, उनके टाइमआउट, और शीर्ष-स्तरीय
अनुमति सरफ़ेस। Apothem एक ही कैनोनिकल टेम्पलेट भेजता है क्योंकि Claude Code
सभी समर्थित प्लेटफ़ॉर्म पर ~/.claude/settings.json लोड करता है।
केवल-Python रनटाइम
प्रत्येक कॉन्फ़िगर किया गया हुक Claude Code की exec-फ़ॉर्म कमांड संरचना का उपयोग करता है।
भेजा गया टेम्पलेट ${HARNESS_ROOT} टोकन रखता है:
{
"type": "command",
"command": "python",
"args": ["${HARNESS_ROOT}/apothem/hooks/dispatch.py", "PreToolUse", "pretooluse-write"]
}apothem install इस टोकन को harness रूट के निरपेक्ष पथ
(फ़ॉरवर्ड-स्लैश फ़ॉर्म, Windows, macOS और Linux पर मान्य) के रूप में रेंडर करता है, ताकि स्थापित
settings.json ~/.claude/.apothem/support/hooks/dispatch.py पर मटीरियलाइज़ किए गए
डिस्पैचर को सीधे आह्वान करे। डिस्पैचर और
कॉन्फ़ॉर्मिटी गेट (~/.claude/.apothem/support/conformity/gate.py, जिसके schema
फ़िक्स्चर इसके बगल में ~/.claude/.apothem/support/schemas/ पर हैं) दोनों स्टैंडर्ड-लाइब्रेरी
के स्वतंत्र स्क्रिप्ट हैं — होस्ट पर किसी इम्पोर्ट-योग्य apothem पैकेज की आवश्यकता नहीं है, और एक ही
टेम्पलेट प्रत्येक प्लेटफ़ॉर्म की सेवा करता है।
हुक कॉन्फ़िगरेशन Schema
अनुमतियाँ
"permissions": {
"allow": ["Read", "Glob", "Grep"]
}allow में नहीं आने वाले टूल को स्पष्ट प्रति-कॉल अनुमोदन या वर्कस्पेस-स्तरीय अनुमति की आवश्यकता होती है।
केवल-पढ़ने वाले टूल पूर्व-अनुमोदित हैं; लेखन संचालन (Write, Edit, NotebookEdit,
Bash) PreToolUse वैलिडेटर से होकर चलते हैं।
हुक इवेंट
टाइमआउट मान कैनोनिकल हुक-इवेंट बजट को प्रतिबिंबित करते हैं — नीचे दी गई तालिका पाठक की सुविधा के लिए उन्हें पुनः प्रस्तुत करती है; कैनोनिकल स्रोत मान्य रहता है।
| इवेंट | ट्रिगर | टाइमआउट | उद्देश्य | अधिदेश |
|---|---|---|---|---|
| SessionStart | नया Claude Code सत्र | 30 सेकंड | संदर्भ आरंभ करें, मेमोरी पढ़ें, प्लान स्थिति जाँचें | CM-14 |
| PreToolUse | Write/Edit/NotebookEdit/Bash से पहले | 10 सेकंड | CM-7 अनुपालन + frontmatter सत्यापित करें | CM-7, CM-22 |
| PreCompact | संदर्भ संघनन से पहले | 30 सेकंड | गैर-बाह्यीकृत स्थिति को बाह्यीकृत करें | CM-24 §2.3 |
| PostCompact | संदर्भ संघनन के बाद | 30 सेकंड | बाह्यीकृत स्थिति से पुनः बूटस्ट्रैप करें | CM-24 §6.2 |
| Stop | सत्र निकास | 60 सेकंड | सत्र-अंत बाह्यीकरण | CM-14/CM-22/CM-24/CM-26 |
dispatch.py अपनी इवेंट व्हाइटलिस्ट पर अतिरिक्त रूप से UserPromptSubmit और Notification को
स्वीकार करता है। भेजे गए टेम्पलेट में दोनों में से कोई वायर नहीं किया गया है; इसे सक्षम करने के लिए उसी
लोकेटर + डिस्पैच पैटर्न के साथ एक matcher ब्लॉक जोड़ें।
शीर्ष-स्तरीय फ़ील्ड
| फ़ील्ड | उद्देश्य | आवश्यक |
|---|---|---|
permissions | allow ऐरे वाली ऑब्जेक्ट जो पूर्व-अनुमोदित टूल नामों (डिफ़ॉल्ट रूप से केवल-पढ़ने वाले टूल) को सूचीबद्ध करती है | हाँ |
hooks | इवेंट नाम → {matcher, hooks[]} ब्लॉक के ऐरे का मानचित्र; नीचे हुक इवेंट देखें | हाँ |
model | होस्ट-समाधेय मॉडल चयनकर्ता। जब ऑपरेटर एक सेट करना चुनता है, तो एक उपनाम या पूर्ण पहचानकर्ता स्वीकार्य है। | वैकल्पिक |
defaultShell | टूल Bash कॉल के लिए डिफ़ॉल्ट शेल। Apothem इसे साझा टेम्पलेट में सेट नहीं करता। | वैकल्पिक |
autoUpdatesChannel | Claude Code अपडेट चैनल। Apothem इसे साझा टेम्पलेट में सेट नहीं करता। | वैकल्पिक |
effortLevel | डिफ़ॉल्ट तर्क प्रयास (low, medium, high, max) | वैकल्पिक |
सत्यापन
तीन वैलिडेटर बढ़ती कठोरता के साथ हुक सरफ़ेस को कवर करते हैं:
# संरचनात्मक + Python स्वच्छता (तेज़, ऑफ़लाइन)
python scripts/dev/validate_hooks.py
# पूर्ण इकोसिस्टम (संरचना + frontmatter + प्रत्यायोजित हुक जाँच)
python scripts/dev/validate_ecosystem.py
# प्रतिकूल स्वीप (प्रत्येक कॉन्फ़िगर किए गए हुक कमांड पर अवक्रमित इनपुट से प्रहार करता है)
python scripts/dev/chaos_pass.pyहुक या सेटिंग्स परिवर्तन कमिट करने से पहले तीनों को 0 के साथ निकलना चाहिए।
किसी एकल इवेंट का तदर्थ स्मोक टेस्ट:
python src/apothem/hooks/dispatch.py --event-name SessionStartअपेक्षित आउटपुट: hookSpecificOutput वाला एकल-पंक्ति JSON लिफ़ाफ़ा।
सामान्य समस्याएँ
SessionStart टाइमआउट हो जाता है
सबसे आम तौर पर find-python लोकेटर Microsoft Store शिम खोज रहा होता है और
एक वास्तविक इंटरप्रेटर हल करने में विफल हो रहा होता है। सत्यापित करें:
python src/apothem/hooks/dispatch.py --event-name SessionStartयदि कमांड एक वैध JSON लिफ़ाफ़ा प्रिंट करता है लेकिन Claude Code पैनल टाइमआउट दिखाता है,
तो settings.json में इवेंट के timeout को बढ़ाएँ। यदि कमांड शेल स्तर पर विफल होता है,
तो एक वास्तविक CPython 3.10+ स्थापित करें और सुनिश्चित करें कि यह PATH पर है या लोकेटर द्वारा खोज-योग्य है।
प्रत्येक Write/Edit अवरुद्ध है
PreToolUse harness इंस्टॉल रूट (Claude Code एडॉप्टर के लिए ~/.claude/) के बाहर लिखी जा रही सामग्री में प्लान-आंतरिक शब्दों को फ़्लैग कर रहा है।
सामग्री में CM-7 उल्लंघनों के लिए समीक्षा करें (देखें
src/apothem/rules/persistent-conventions-vigilance.md)। कोडबेस आर्टिफ़ैक्ट के लिए
केवल डोमेन भाषा।
settings.json लोड नहीं हुई
Claude Code ~/.claude/settings.json पढ़ता है। सत्यापित करें कि Apothem अपेक्षित
harness रूट में स्थापित हुआ है और फ़ाइल बदलने के बाद सत्र को पुनः आरंभ करें।
हुक चुपचाप no-op होते हैं
हुक अनुबंध है "हमेशा 0 के साथ निकलें, हमेशा वैध JSON उत्सर्जित करें"। यदि इंटरप्रेटर का
पता नहीं लगाया जा सकता तो लोकेटर खाली लौटाता है और कमांड no-op बन जाता है। यह पुष्टि करने के लिए
chaos_pass.py चलाएँ कि प्रत्येक कॉन्फ़िगर किया गया हुक एक वैध लिफ़ाफ़ा लौटाता है — यह अवक्रमित
समाधान पथों को पकड़ लेता है जिन्हें एक लाइव सत्र छिपा देगा।
स्तरित प्राथमिकता
Claude Code बढ़ती प्राथमिकता के क्रम में तीन परतों को संयोजित करके प्रभावी सेटिंग्स ऑब्जेक्ट को हल करता है:
| स्तर | स्थान | कमिट किया गया? | औचित्य |
|---|---|---|---|
| 1. सिस्टम | Claude Code में ही संकलित harness डिफ़ॉल्ट | लागू नहीं (विक्रेता-नियंत्रित) | निचला तल; प्रत्येक ऑपरेटर समान आधाररेखा का उत्तराधिकारी होता है। |
| 2. प्रोजेक्ट | <harness-root>/settings.json | ✅ कमिट किया गया | प्रोजेक्ट-साझा परिपाटियाँ: हुक, अनुमतियाँ, MCP सर्वर, स्टेटसलाइन वायरिंग। Apothem-स्रोत टेम्पलेट Claude Code एडॉप्टर की templates निर्देशिका के भीतर रहता है। |
| 3. उपयोगकर्ता-लोकल | <harness-root>/settings.local.json (gitignored) — रिपॉज़िटरी रूट पर settings.local.example.json के रूप में टेम्पलेट किया गया | ❌ Gitignored | ऑपरेटर-विशिष्ट ओवरराइड: API टोकन, मशीन-लोकल पथ, ऑप्ट-इन सुविधाएँ। |
उच्च-स्तरीय मान निम्न-स्तरीय मानों को लीफ़-की स्तर पर ओवरराइड करते हैं — जब
प्रोजेक्ट और उपयोगकर्ता-लोकल दोनों परतें एक permissions.allow प्रविष्टि घोषित करती हैं, तो
संघ लिया जाता है; जब दोनों theme जैसा कोई स्केलर घोषित करती हैं, तो उपयोगकर्ता-लोकल मान जीतता है।
सटीक प्रति-की मर्ज सिमैंटिक्स का स्वामित्व Claude Code harness के पास है।
उपयोगकर्ता-लोकल ओवरराइड बनाना
settings.local.example.json(रिपॉज़िटरी रूट) को<harness-root>/settings.local.jsonमें कॉपी करें।settings.local.jsonफ़ाइलनाम.gitignoreपैटर्न से मेल खाता है, इसलिए फ़ाइल कभी संस्करण नियंत्रण में नहीं उतरती।- लोकल कॉपी संपादित करें — केवल ओवरराइड करने वाली की रखें; harness परतों को संयोजित करता है, इसलिए अनुपस्थित की प्रोजेक्ट परत से उत्तराधिकार में मिलती हैं।
- सहेजने से पहले सत्यापित करें कि फ़ाइल वैध JSON के रूप में पार्स होती है — harness सत्र आरंभ पर विकृत JSON को अस्वीकार करता है।
सेटिंग्स
settings.json में Claude Code harness कॉन्फ़िगरेशन, जो टूल अनुमतियाँ, हुक वायरिंग, एनवायरनमेंट वेरिएबल, और स्टेटस-लाइन टेम्पलेट को कवर करता है।
नामकरण परंपराएँ
kebab-case फ़ाइल नाम, frontmatter कुंजी प्रारूप, टाइप उपसर्गों के साथ ब्रांच नामकरण, और क्रमबद्ध आर्टिफ़ैक्ट अनुक्रमों के लिए संख्यात्मक उपसर्ग शब्दार्थ निर्धारित करता है।