Claude Code हर दिन आपसे झूठ बोलता है। बनावटी फंक्शन, नकली इम्पोर्ट, "टेस्ट पास" जब कुछ चला ही नहीं। इसका समाधान एक 4-लेयर सेटअप है जो झूठ बोलना महंगा बना देता है।
Claude आपको बताता है कि बग ठीक हो गया। दो घंटे बाद पता चलता है कि जिस फंक्शन को उसने कॉल किया था, वह कभी अस्तित्व में ही नहीं था।
ज़्यादातर डेवलपर हर चीज़ की दोबारा जाँच करना और मॉडल को दोष देना सीख जाते हैं। असली समाधान हर झूठ को आपकी मशीन छोड़ने से पहले ही पकड़ लेता है।
यह रहा पूरा ईमानदारी सेटअप 👇

Claude पहली जगह में चीज़ें क्यों गढ़ता है
Claude एक टेक्स्ट प्रेडिक्टर है। जब वह कुछ नहीं जानता, तो वह ऐसा टेक्स्ट प्रेडिक्ट करता है जो सही लगता है। बनावटी फंक्शन नाम असली फंक्शन नामों जैसे लगते हैं। आत्मविश्वास से दी गई बकवास, आत्मविश्वास से दी गई सच्चाई की तरह ही पढ़ी जाती है।
आप तब तक अंतर नहीं बता सकते जब तक आपका कोड दो घंटे बाद इस तरह से नहीं टूटता कि उसे डीबग करने में एक और घंटा लग जाता है।
समाधान कोई समझदार मॉडल नहीं है। यह Claude के आउटपुट को रियल टाइम में जाँचने योग्य बनाना और "मुझे नहीं पता" को अनुमान लगाने से सस्ता बनाना है।
नीचे 4 लेयर हैं। साथ मिलकर ये फैब्रिकेशन को लगभग शून्य कर देते हैं।

लेयर 1: CLAUDE.md ईमानदारी नियम
पहली लेयर CLAUDE.md में नियमों का एक सेट है जो Claude को बताता है कि वास्तव में कब और कैसे अनिश्चितता स्वीकार करनी है। इसे अपने प्रोजेक्ट रूट में डालें:
1## ईमानदारी नियम (हर बार पढ़ें)23यह दावा करने से पहले कि कोई फंक्शन, क्लास, या इम्पोर्ट मौजूद है, फ़ाइल पढ़कर या grep चलाकर इसे सत्यापित करें। कभी भी सिंबल न गढ़ें।45यदि आप किसी चीज़ को सत्यापित नहीं कर सकते, तो स्पष्ट रूप से कहें "मैंने इसे सत्यापित नहीं किया है"। ऐसा कोड न लिखें जो असत्यापित दावे पर निर्भर हो।67यदि कोई कार्य आपसे किसी ऐसी लाइब्रेरी का उपयोग करने के लिए कहता है जिसे आपने इस प्रोजेक्ट में कभी संदर्भित नहीं देखा, तो इसे जोड़ने से पहले पूछें।89यदि किसी कार्य में टेस्ट या बिल्ड शामिल थे, तब तक सफलता का दावा न करें जब तक कि आपने वास्तव में इस सत्र में टेस्ट या बिल्ड कमांड नहीं चलाया हो।1011कभी भी एरर मैसेज, API रिस्पॉन्स, या स्टैक ट्रेस न गढ़ें। यदि आपने उन्हें नहीं देखा, तो ऐसा कहें।1213जब आप वास्तव में नहीं जानते, तो सही उत्तर है "मुझे नहीं पता" या "मुझे पहले जाँच करनी होगी।" दोनों ही एक आत्मविश्वासपूर्ण अनुमान से बेहतर हैं।
ये नियम स्पष्ट लगते हैं।
लेकिन हैं नहीं, क्योंकि डिफ़ॉल्ट रूप से Claude मददगार दिखने के लिए ऑप्टिमाइज़ किया गया है, और "मुझे नहीं पता" तब तक अनहेल्पफुल लगता है जब तक आप इसे स्पष्ट अनुमति न दें।
आखिरी पंक्ति सबसे महत्वपूर्ण है। यह "मुझे नहीं पता" का लाइसेंस है, और ज़्यादातर लोग इसे कभी नहीं देते।
लेयर 2: लिखने से पहले सत्यापन पैटर्न
दूसरी लेयर Claude को लिखने से पहले सत्यापन करने के लिए मजबूर करती है। इसे CLAUDE.md में ईमानदारी नियमों के नीचे जोड़ें:
1## सत्यापन प्रोटोकॉल23किसी सिंबल (फंक्शन, क्लास, टाइप, कॉन्स्टेंट) का उपयोग करने वाला कोड लिखने या संपादित करने से पहले, इनमें से एक करें:451. वह फ़ाइल पढ़ें जहाँ इसे परिभाषित किया गया है और सिग्नेचर की पुष्टि करें62. `grep -r "symbolName" .` चलाएँ या इसे खोजने के लिए Glob टूल का उपयोग करें73. डिपेंडेंसी के लिए package.json, requirements.txt, Cargo.toml, या समकक्ष जाँचें89यदि आप सत्यापन छोड़ते हैं, तो कोड के आगे एक कमेंट लगाएँ:10`// असत्यापित: मैंने पुष्टि नहीं की है कि यह सिंबल मौजूद है`1112एक से अधिक फ़ाइल को छूने वाले किसी भी कार्य के लिए प्लान-देन-एक्ज़ीक्यूट मोड पसंदीदा है। शुरू करने से पहले प्लान मोड में जाने के लिए Shift+Tab का उपयोग करें।
इससे Claude को प्रति सत्र कुछ अतिरिक्त टूल कॉल खर्च करने पड़ते हैं। यह आपको उन घंटों से बचाता है जो आप नकली फंक्शन कॉल को डीबग करने में बिताते।
लेयर 3: वे हुक जो रियल टाइम में झूठ पकड़ते हैं
तीसरी लेयर settings.json में हुक हैं जो हर बार जब Claude कोई फ़ाइल लिखता है तो टाइप चेकर या लिंटर चलाते हैं। यदि Claude ने कोई इम्पोर्ट गढ़ा है, तो चेकर तुरंत विफल हो जाता है, और Claude को कार्य पूरा होने का दावा करने से पहले इसे ठीक करना होता है।
1{2 "hooks": {3 "PostToolUse": [4 {5 "matcher": "Write(*.ts|*.tsx)|Edit(*.ts|*.tsx)",6 "hooks": [7 { "type": "command", "command": "npx tsc --noEmit --pretty false 2>&1 | head -20" }8 ]9 },10 {11 "matcher": "Write(*.py)|Edit(*.py)",12 "hooks": [13 { "type": "command", "command": "ruff check --quiet $file && pyright $file 2>&1 | head -20" }14 ]15 },16 {17 "matcher": "Write(*.rs)|Edit(*.rs)",18 "hooks": [19 { "type": "command", "command": "cargo check --message-format=short 2>&1 | head -20" }20 ]21 }22 ]23 }24}
हुक आउटपुट संदर्भ के रूप में Claude के पास वापस जाता है। यदि tsc कहता है "Cannot find module 'foo'", तो Claude इसे तुरंत देखता है और गढ़े गए इम्पोर्ट को ठीक करता है। कोई भी गढ़ा गया कोड PostToolUse जाँच से नहीं बच पाता।
टेस्ट से जुड़े कार्यों के लिए, एक Stop हुक जोड़ें जो Claude के सत्र समाप्त घोषित करने से पहले सूट चलाता है:
1"Stop": [2 {3 "hooks": [4 { "type": "command", "command": "npm test 2>&1 | tail -30" }5 ]6 }7]
अब Claude वास्तव में उन्हें चलाए बिना "हो गया, टेस्ट पास" नहीं कह सकता। हुक उन्हें चलाता है।
परिणाम Claude के पास वापस जाता है। यदि वे विफल होते हैं, तो Claude को उन्हें ठीक करना होगा या स्वीकार करना होगा कि वे पास नहीं होते।
लेयर 4: फैक्ट-चेकर सबएजेंट
चौथी लेयर एक सबएजेंट है जिसका एकमात्र काम Claude के दावों की समीक्षा करना है, इससे पहले कि वे शिप हों।
इसे .claude/agents/fact-checker.md में डालें:
1---2name: fact-checker3description: इस एजेंट का उपयोग तब करें जब Claude ने कोड के बारे में, कौन से टेस्ट पास हुए, या कोई लाइब्रेरी क्या सपोर्ट करती है, इस बारे में दावे किए हों। किसी भी कमिट से पहले, किसी भी उपयोगकर्ता-सामना वाले सारांश से पहले, और किसी भी ऐसे कार्य के बाद जिसमें नई डिपेंडेंसी शामिल थी, इसे लागू करें।4tools: Read, Grep, Glob, Bash5model: sonnet6---78आप दावों को सत्यापित करते हैं, आप कोड नहीं लिखते।910जब लागू किया जाए, तो यह करें:11121. हाल की बातचीत में हर तथ्यात्मक दावे की पहचान करें। उदाहरण:13 "फंक्शन X Y करता है", "टेस्ट पास होते हैं", "लाइब्रेरी Z W को सपोर्ट करती है",14 "यह इम्पोर्ट सही है"।15162. प्रत्येक दावे के लिए, इसे स्वतंत्र रूप से सत्यापित करें:17 - कोड दावे: वास्तविक फ़ाइल पढ़ें और पुष्टि करें18 - टेस्ट दावे: स्वयं टेस्ट चलाएँ19 - लाइब्रेरी दावे: वास्तविक पैकेज या उसके दस्तावेज़ जाँचें20 - इम्पोर्ट दावे: पुष्टि करें कि पैकेज डिपेंडेंसी मेनिफेस्ट में है21223. एक रिपोर्ट तैयार करें:23 - सत्यापित: दावा, सबूत (फ़ाइल:लाइन या कमांड आउटपुट)24 - गलत: दावा, वास्तव में क्या सच है25 - असत्यापनीय: दावा, आप इसे क्यों नहीं जाँच सके2627कभी भी "मुझ पर भरोसा करें" दावों को स्वीकार न करें। कभी भी अपने स्वयं के दावे न करें। यदि आप सत्यापित नहीं कर सकते, तो सही आउटपुट असत्यापनीय है।
कमिट से पहले या अपनी टीम के साथ परिणाम साझा करने से पहले इस एजेंट को लागू करें। यह उन झूठों को पकड़ता है जो अन्य 3 लेयर से छूट गए थे।

"मुझे नहीं पता" का लाइसेंस
Claude को मददगार बनने के लिए प्रशिक्षित किया गया था, और अज्ञानता स्वीकार करना अनहेल्पफुल लगता है। इसलिए यह अनुमान लगाता है, और अनुमान सही लगता है।
समाधान न जानने की अनुमति देना है। CLAUDE.md इसका आधा हिस्सा है। आपकी प्रतिक्रिया दूसरा आधा है। "मैंने इसे सत्यापित नहीं किया है" को धैर्य से पुरस्कृत करें और आपको हर सत्र में ईमानदार Claude मिलेगा। इसे निराशा से दंडित करें और Claude अनुमान लगाने पर वापस चला जाता है।
कोई कॉन्फ़िग नहीं, एक आदत है। स्टैक में सबसे कम सराहा गया फिक्स।
कैसे बताएं कि यह वास्तव में काम कर रहा है
आपके दैनिक सत्रों में तीन संकेत।
Claude डिपेंडेंसी जोड़ने से पहले पूछता है। चुपचाप npm install करने के बजाय "क्या मुझे X जोड़ना चाहिए या stdlib का उपयोग करना चाहिए?"
Claude मौजूदा कोड के बारे में बात करते समय फ़ाइल:लाइन का संदर्भ देता है। "validateToken फंक्शन Y करता है" कहने के बजाय "src/auth/middleware.ts:47 में validateToken Y करता है" कहता है।
tsc और आपका लिंटर चिल्लाना बंद कर देते हैं। हुक दुर्लभ फैब्रिकेशन को तुरंत पकड़ लेते हैं और Claude स्वयं सुधार करता है, इसलिए जब तक आप देखते हैं, झूठ चले गए होते हैं।
एक-दो दिन बाद ये नहीं दिख रहे? एक लेयर लोड नहीं हुई है। आमतौर पर CLAUDE.md, गलत स्थान या गलत नाम।

सामान्य गलतियाँ जो Claude को झूठ बोलते रहने देती हैं
CLAUDE.md बहुत लंबा है। Claude पहला भाग पढ़ता है और बाकी को स्किम करता है। पहली 50 पंक्तियों में ईमानदारी के नियम रखें।
हुक चुपचाप लॉग होते हैं। यदि आउटपुट stdout तक नहीं पहुँचता, तो Claude को पता नहीं चलता कि उसने झूठ बोला। सुनिश्चित करें कि हुक आउटपुट सत्र में वापस जाए।
आप प्लान मोड छोड़ देते हैं। यह वह जगह है जहाँ Claude लिखने से पहले गलत धारणाओं को उजागर करता है। इसे छोड़ें और आप झूठ पकड़ने का सबसे सस्ता पल चूक जाते हैं।
आप फैक्ट-चेकर को कॉल नहीं करते। एक सबएजेंट तभी काम करता है जब आप वास्तव में इसे लागू करते हैं। @fact-checker को अपने कमिट फ्लो का हिस्सा बनाएं।
आप "मुझे नहीं पता" पर बुरी प्रतिक्रिया देते हैं। एक बार ईमानदारी को दंडित करें और Claude अनुमान लगाने पर वापस चला जाता है। इसके बिना अन्य 3 लेयर टिकती नहीं हैं।

5 मिनट का ईमानदारी ऑडिट
1 मिनट: CLAUDE.md ईमानदारी नियमों और सत्यापन प्रोटोकॉल को अपने प्रोजेक्ट रूट में कॉपी करें।
1 मिनट: हुक ब्लॉक को ~/.claude/settings.json या .claude/settings.json में कॉपी करें।
2 मिनट: ऊपर दिए गए टेम्पलेट के साथ .claude/agents/fact-checker.md बनाएं।
1 मिनट: एक ऐसा कार्य चलाएँ जिसकी आप सामान्य रूप से दोबारा जाँच करते। tsc आउटपुट के Claude के पास वापस आने पर ध्यान दें। पुष्टि करें कि Claude स्पष्ट रूप से "सत्यापित" या "मैंने इसे सत्यापित नहीं किया है" कहता है।
हो गया। फैब्रिकेशन "हर दूसरे सत्र" से घटकर "दुर्लभ और तुरंत पकड़ा गया" हो जाता है। मॉडल समझदार नहीं हुआ। आपका सेटअप हुआ।
पढ़ने के लिए धन्यवाद!






