मैंने अपना पूरा Claude Code सेटअप एक कमांड से डिलीट कर दिया। रिबिल्ड एक ऑडिट बन गया, और उस सब का एक पब्लिक टेम्पलेट जो असल में बच गया।
तीन दिन पहले मैंने अपने टर्मिनल में जानबूझकर rm -rf ~/.claude टाइप किया, क्योंकि मुझे लगा कि मैं सिर्फ कैश साफ़ कर रहा हूं। मैं कैश साफ़ नहीं कर रहा था। मैं अपनी पूरी Claude Code ऑपरेटिंग परत मिटा रहा था: ग्लोबल कॉन्फ़िगरेशन फ़ाइल, लगभग साठ जमा हुई मेमोरी फ़ाइलें, चार कस्टम एजेंट, हर वह स्लैश कमांड जो मैंने बनाया था, और एक हुक जो सेशनों को अपने आप मेरे नोट्स में फ़ाइल कर देता था। महीनों भर की जमा हुई ऑपरेटिंग नॉलेज, एंटर दबाने जितने समय में गायब।
मुझे उस वाक्य के बारे में सटीक होना है, क्योंकि “ऑपरेटिंग नॉलेज” तब तक अमूर्त लगती है जब तक आप उसे वाकई खो नहीं देते। यह दस्तावेज़ों का कोई फ़ोल्डर नहीं था। यह उस आकार का संचित रूप था जिसमें मैंने एक टूल को यह सिखाया था कि वह मेरे तरीके से कैसे काम करे: कौन सा काम कहां रूट होता है, मेरी बार-बार होने वाली गलतियां क्या हैं, हर हफ़्ते मैं जिस तरह के सवाल पूछता हूं उनके लिए एक अच्छा जवाब कैसा दिखता है। इसमें से कुछ भी किसी मॉडल वेट्स में नहीं है। यह सब उसी डायरेक्टरी में था। और मैंने इसका बैकअप कभी नहीं लिया था।
लेकिन कहानी का जो हिस्सा असल में मायने रखता है, वह डिलीशन नहीं है। वह यह है कि क्या बच गया।
दो चीज़ों ने मुझे सब कुछ पूरी तरह खोने से बचाया। पहला, दूसरी विंडो में मेरा एक Claude Code सेशन अभी भी खुला था, और उस सेशन ने डिलीशन से पहले ही मेरा मेमोरी इंडेक्स अपने कॉन्टेक्स्ट में लोड कर लिया था, इसलिए उन साठ मेमोरी फ़ाइलों की एक-लाइन समरी फ़ाइलें गायब हो जाने के बाद भी एक कन्वर्सेशन ट्रांसक्रिप्ट में मौजूद थीं। दूसरा, और ज़्यादा महत्वपूर्ण: वह टिकाऊ ज्ञान जिस ओर वे मेमोरी फ़ाइलें इशारा करती थीं, वह कभी ~/.claude में रहा ही नहीं था। वह एक साधारण-मार्कडाउन नोट्स वॉल्ट में रहता था। कॉन्फ़िगरेशन डायरेक्टरी बस एक पॉइंटर थी, एक इंडेक्स, असली चीज़ के ऊपर बैठी एक सुविधा-परत।
तो मेरे सेटअप का चतुर हिस्सा (मेमोरी फ़ाइलें, कस्टम एजेंट, स्लैश कमांड, यह सब खास तौर पर इसी टूल के लिए इंजीनियर किया गया) तुरंत और पूरी तरह मर गया। मूर्ख हिस्सा (फ़ोल्डरों में साधारण टेक्स्ट फ़ाइलें, कोई प्रोप्राइटरी फॉर्मेट नहीं, किसी खास सॉफ्टवेयर के अस्तित्व पर कोई निर्भरता नहीं) को पता तक नहीं चला। मैं ~/.claude को कक्षा से भी डिलीट कर देता, तो भी वह वॉल्ट मंगलवार सुबह वहीं बैठा होता, बेफ़िक्र।
यही वह असमानता है जिस पर मैं बार-बार लौटता हूं। किसी भी तरह का AI वर्कफ़्लो बनाने वाले ज़्यादातर लोग, चाहे वह कस्टम इंस्ट्रक्शन हों, मेमोरी सिस्टम हों, एजेंट कॉन्फ़िग हों, या महीने के टूल का जो भी नाम हो, अपने कोड को जुनूनी ढंग से वर्ज़न करते हैं और यह कभी नहीं सोचते कि उस परत को भी वर्ज़न किया जाए जो AI को बताती है कि उसे कैसे व्यवहार करना है। हमने “अपने कोड का बैकअप लें” को एक रिफ्लेक्स की तरह आत्मसात कर लिया है। “अपने AI की ऑपरेटिंग परत का बैकअप लें” को अभी तक किसी ने आत्मसात नहीं किया, क्योंकि टूलिंग इतनी नई है कि यह इन्फ्रास्ट्रक्चर जैसी महसूस नहीं होती। यह सेटिंग्स जैसी महसूस होती है। सेटिंग्स का बैकअप कोई नहीं लेता।
सिवाय इसके कि यह सेटिंग्स नहीं थीं। यह हर उस सेशन का संचयी नतीजा था जहां मैंने टूल को ठीक किया, उसे कोई पसंद सिखाई, या कोई नियम लिख दिया ताकि मुझे उसे दोहराना न पड़े। सेटिंग्स स्थिर होती हैं। यह जमा हुई थीं। और जमा हुई चीज़ें ठीक वही चीज़ें हैं जिनका वर्ज़न न करने का आपको पछतावा होता है, क्योंकि आप इन्हें किसी स्पेक से फिर से नहीं बना सकते; आपको हर उस सुधार को दोबारा जीना पड़ेगा जिसने इन्हें बनाया।
दूसरी बात जो मुझे उम्मीद नहीं थी: रिबिल्डिंग ने मुझे यह देखने पर मजबूर कर दिया कि मैंने असल में क्या बनाया था, न कि मैंने क्या माना था कि बनाया है। चुपचाप जमा होना सड़न को छुपा देता है। एक क्रैश आपको हर लाइन पढ़ने पर मजबूर करता है।
रीस्टोर की गई ग्लोबल कॉन्फ़िग फ़ाइल 8.5KB से घटकर 6.5KB हो गई, और इस प्रक्रिया में मैंने एक भी नियम नहीं खोया; मैंने बस उस पैडिंग को काटा जो असल काम करने वाले नियमों के इर्द-गिर्द थी। वह फ़ाइल अपने आकार से कहीं ज़्यादा मायने रखती है, क्योंकि यह एक बार लोड नहीं होती। यह हर एक सेशन के साथ जाती है जो मैं चलाता हूं। इसमें हर अतिरिक्त वाक्य हर बातचीत पर लगा एक टैक्स है, हमेशा के लिए, चाहे उस सेशन को उस नियम की ज़रूरत हो या न हो। ऐसी फ़ाइल में ब्लोट कोई एक बार की लागत नहीं है जिसे आप देखकर ठीक कर लें। यह एक बार-बार लगने वाला शुल्क है जो आपको किसी बिल में कभी नहीं दिखता, क्योंकि टोकन ओवरहेड किसी लाइन-आइटम की तरह नहीं दिखता; यह थोड़े बदतर, थोड़े धीमे जवाबों के रूप में दिखता है, सैकड़ों सेशनों में अदृश्य रूप से संचित होते हुए, जब तक आप आखिरकार बैठकर पूरी फ़ाइल शुरू से आखिर तक न पढ़ लें, जो कि उसे खो देने ने मुझसे ठीक करवाया।
स्किल्स ने अपनी खुद की सड़न सामने ला दी। उनमें से तीन ऐसे स्लैश कमांड्स का हवाला दे रही थीं जो अब मौजूद ही नहीं थे: मृत लिंक जिन्हें मैं शायद ना जाने कब से चुपचाप ढो रहा था, कभी ध्यान नहीं गया क्योंकि टूटे हवाले वाली स्किल कोई एरर नहीं फेंकती, वह बस चुपचाप कमज़ोर प्रदर्शन करती है। और मेरे कॉन्फ़िगरेशन में सीधे नाम लिए गए चार एजेंट डिस्क पर कहीं भी फ़ाइल के रूप में मौजूद नहीं थे। “ढूंढना मुश्किल” नहीं। मौजूद ही नहीं। पूरे आत्मविश्वास से हवाला दिया गया, नाम से बुलाया गया, और अनुपस्थित; और किसी ने कभी शिकायत नहीं की, क्योंकि सिस्टम में कुछ भी जांच नहीं कर रहा था।
इनमें से कुछ भी अपने आप सामने नहीं आता। मैं किसी चल रहे सेटअप का ऑडिट करने नहीं जा रहा था। चलती चीज़ों का ऑडिट नहीं होता; उन्हें तब तक अकेला छोड़ दिया जाता है जब तक वे टूट न जाएं, और जब तक वे टूटती हैं आप आमतौर पर भूल चुके होते हैं कि कुछ जांचने लायक था भी। डिलीशन ने वह ऑडिट मेरे लिए कर दिया, सबसे बुरे संभव समय पर, जो कि इकलौता समय है जब ऐसा ऑडिट वाकई होता है।
मैंने वही चीज़ दोबारा नहीं बनाई। मैंने तीन खास सुरक्षाएं फिर से बनाईं, हर एक इस घटना की किसी खास विफलता-प्रवृत्ति को लक्षित करते हुए।
पहली सबसे अच्छे अर्थ में उबाऊ है: पूरी कॉन्फ़िगरेशन डायरेक्टरी अब वर्ज़न-कंट्रोल्ड है, एक अलग किए गए (detached) git डायरेक्टरी का उपयोग करते हुए: एक तीन-लाइन रैपर स्क्रिप्ट जो डायरेक्टरी के अंदर बैठे सामान्य .git फ़ोल्डर की जगह git --git-dir=~/.claude/config.git --work-tree=~/.claude चलाती है। यह भेद जितना लगता है उससे कहीं ज़्यादा मायने रखता है। ~/.claude के अंदर एक सामान्य .git फ़ोल्डर के अन्य टूलिंग द्वारा किसी प्रोजेक्ट रिपो के रूप में उठा लिए जाने का, या इससे भी बुरा, किसी और रिपो के इग्नोर नियमों के अंदर नेस्ट होकर चुपचाप छूट जाने का जोखिम रहता है। अलग किया गया git डायरेक्टरी कॉन्फ़िग फ़ोल्डर को बाकी सबके लिए एक साधारण फ़ोल्डर जैसा दिखाता रहता है, जबकि पूरी तरह ट्रैक्ड रहता है। यह एक निजी GitHub रिपो में भी मिरर होता है। इसका पूरा मूल्य यही है कि अब एक rm -rf की कीमत सिर्फ एक git clone है, महीनों नहीं। मैंने कुछ भी परिष्कृत नहीं बनाया। मैंने सीटबेल्ट के बराबर कुछ बनाया।
दूसरा हिस्सा ग्लोबल कॉन्फ़िग के अंदर ही रहने वाला एक बजट डिस्पैच ट्री है: सख़्त रूटिंग नियम जो कोडिंग टास्क को एक सस्ते कोडिंग CLI पर, रिसर्च सवालों को एक ग्राउंडेड सर्च टूल पर, और लंबे ड्राफ्ट को फ्री-टियर मॉडलों पर भेजते हैं, और पेड Claude प्लान को खासतौर पर ऑर्केस्ट्रेशन और असल में कठिन तर्क के लिए बचाकर रखते हैं। इसके साथ ही, अब हर जवाब एक मॉडल-अट्रिब्यूशन फुटर के साथ खत्म होता है जो यह बताता है कि काम का कौन सा हिस्सा किस मॉडल ने किया, जिसमें उन दुर्लभ मौकों पर एक सेल्फ़-रिपोर्टेड फ्लैग भी शामिल है जब पेड मॉडल ने वह किया जो रूटिंग नियमों के हिसाब से ऑफलोड होना चाहिए था। बात बचत की नहीं है, हालांकि बचत होती है। बात यह है कि लागत-अनुशासन अब कुछ ऐसा नहीं रहता जो आप तीन हफ्ते बाद किसी मासिक बिलिंग डैशबोर्ड से अनुमान लगाएं, बल्कि यह हर एक जवाब में, रियल टाइम में स्पष्ट दिखता है, जहां आप संचित होने से पहले ही भटकाव पकड़ सकते हैं।
तीसरा एक SessionEnd हुक है जो हर सारगर्भित सेशन (पांच या ज़्यादा संदेश) को अपने आप वॉल्ट में फ़ाइल कर देता है: एक-लाइन का लॉग एंट्री और एक तारीख़ वाला नोट, एक फ्री-टियर मॉडल द्वारा सारांशित, मैनुअल राइट-अप्स के मुक़ाबले जांचा गया ताकि कुछ भी दोहराया न जाए, और इतनी सतर्कता से लिखा गया कि यह कभी सेशन को एग्ज़िट होने से रोक या क्रैश न कर सके। यह वह है जिसकी मुझे सबसे ज़्यादा परवाह है, ईमानदारी से, क्योंकि यह विफलता से बना असली लूप बंद करता है। नॉलेज बेस अब खुद अपने आप को फीड करता है। चीज़ें लिखना भूल जाना अब एक विफलता-प्रवृत्ति नहीं रही, क्योंकि सिस्टम अब मेरे याद रखने पर निर्भर नहीं है।
मैंने पूरे रिबिल्ट सिस्टम को साफ़ किया और उसे सार्वजनिक रूप से डाल दिया: claude-code-os। यह CLAUDE.md टेम्पलेट है, आठ स्किल्स (जिनमें से कई Matt Pocock के MIT-लाइसेंस्ड स्किल वर्क पर बनी हैं, रिपो में क्रेडिट दिया गया है), चार मॉडल-रूटेड एजेंट, SessionEnd हुक, और अलग किया गया git-dir रैपर स्क्रिप्ट। कोई प्रोडक्ट नहीं। तीन दिनों की महंगी सीख के बाद मैंने जो रिबिल्ड किया उसका एक रिकॉर्ड, यह बताते हुए कि मेरे सेटअप का कौन सा हिस्सा असली भार उठा रहा था और कौन सा सिर्फ़ सजावट था।
अगर इसमें से कुछ भी जाना-पहचाना लगता है, एक कॉन्फ़िग डायरेक्टरी जिसे आपने कभी वर्ज़न नहीं किया, एजेंट या कमांड जिन्हें आपने आधे-अधूरे याद करते हुए लिखा था और महीनों से जांचा नहीं, तो शायद आपके पास भी वही गैप है जो मेरे पास था, और शायद आपको तब तक इसका पता न चले जब तक कुछ आपको ऑडिट करने पर मजबूर न कर दे। आपको वह क्रैश ऑडिट करने के लिए ज़रूरी नहीं है। आप बस जाकर claude-code-os रिपो पढ़ सकते हैं और उन हिस्सों को उठा सकते हैं जो आपके पहले से मौजूद गैप को ठीक करते हैं।
वही Obsidian टेम्पलेट और पूरी प्रॉम्प्ट चेन, स्ट्रक्चर्ड इनटेक नोट, कंट्रास्ट प्रॉम्प्ट, और उकसावे की चेकलिस्ट। इसे अपने वॉल्ट में डालें और अपने अगले प्रॉस्पेक्ट को चालीस मिनट में इससे गुज़ारें।
कोई शेड्यूल नहीं। कोई भराव नहीं। कोई स्पॉन्सर्ड प्लेसमेंट नहीं। नया बिल्ड तभी भेजा जाता है जब यह आपके दस मिनट के लायक हो, आमतौर पर हर 2 से 4 हफ़्ते में।
"मैं आपको केवल वही भेजूंगा जो मैं तब भी लिखता जब मुझे कोई पैसे न देता। जिस दिन यह रुकता है, न्यूज़लेटर रुक जाता है।"