AIDive

वीडियो पैक

एक project पर मापे गए आठ Claude Code repo: session cost, ablation tables, निष्कर्ष

13 मिनट पढ़ें

TL;DR

  • Claude Code के आठ लोकप्रिय repo को एक असली codebase पर project scope में install करके मापा गया: session शुरू होने पर tokens, तीन coding tasks पर output tokens, और हर एक ने project के बाहर क्या लिखा।
  • आठ में से सिर्फ एक ने नतीजा बदला: anti-slop को linter की तरह चलाने पर उसने T3 के तीनों runs में वही unsafe cast पकड़ा, कीमत +95 session tokens और प्रति turn कुछ नहीं।
  • Terse-output rulesets tools वाले काम में टिक नहीं पाए: Chisle का बताया हुआ 52% baseline असल में baseline के output tokens का 94% निकला, और input जोड़ने पर तीन में से दो tasks पर उसका arm baseline से महंगा रहा।
  • तीनों MCP servers 63 runs में एक बार भी call नहीं हुए। Install होना और use होना एक बात नहीं है।
  • Stack additive है: आठों साथ में session शुरू होने पर +6,804 tokens जोड़ते हैं, यानी हिस्सों के योग से 63 tokens कम।
  • दो installs project के बाहर पहुंचे। एक codemod ने खुद को 8 दूसरे agents की global configs में register कर लिया; एक tool --dangerously-skip-permissions hardcode करता है और credentials file कॉपी करता है, इसलिए उसे कभी चलाया नहीं गया।

माप क्या कहते हैं

Session शुरू होने पर tokens दोहराए जा सकते हैं, dollar cost नहीं: हर condition ने दोनों runs में बिल्कुल वही input token total दिया, जबकि उसी condition की cost prompt-cache की स्थिति के हिसाब से $0.0183 से $0.0035 के बीच झूलती रही, इसलिए पूरे समय token count ही metric है। Baseline project 17,378 tokens पर शुरू होता है s4।

Claude Code के इस version में MCP tool schemas deferred हैं, और cost अब इस पर निर्भर करती है कि server कितने tool names advertise करता है, schema के आकार पर नहीं। ouroboros के 39 tools की कीमत +1,642 tokens रही, reticle के 19 की +895, ui-skills के 2 की +37: लगभग 42 से 47 tokens प्रति tool name। डिफ़ॉल्ट रूप से सभी MCP tools deferred रहते हैं और ज़रूरत पड़ने पर load होते हैं, और ENABLE_TOOL_SEARCH का auto mode उन्हें तब defer करता है जब उनकी definitions context window के 10% तक पहुंच जाएं s4। img2threejs एक 32,902-byte SKILL.md और 352 files के साथ आता है, फिर भी session शुरू होने पर उसकी कीमत +107 tokens है, क्योंकि सिर्फ frontmatter description load होती है। Skills docs हर listed description को 1,536 characters पर सीमित करते हैं और बहुत से skills होने पर listing budget में फिट करने के लिए descriptions छोटी कर देते हैं; compaction के बाद invoke किए गए skills 25,000 tokens के साझा budget के भीतर 5,000 tokens प्रत्येक के हिसाब से दोबारा attach होते हैं s5। यही listing budget है जिसकी वजह से ऐसे setup में 40 skills प्रति turn 3,060 tokens खर्च कर सकते हैं जो उनमें से किसी को invoke नहीं करता s10, और यही वजह है कि skills हटाने की जगह descriptions काटी जाती हैं s11।

Chisle का UserPromptSubmit hook हर turn पर 287 bytes का additionalContext जोड़ता है; 22 turns के task में यही वजह है कि T3 पर baseline की तुलना में उसके arm का कुल input +41,539 tokens ज़्यादा रहा। caveman, जिसे reference के तौर पर मापा गया, तब तक कुछ inject नहीं करता जब तक prompt /caveman से शुरू न हो। जब एक ही event पर कई hooks additionalContext लौटाते हैं, तो Claude को वे सब जुड़े हुए मिलते हैं, हर hook पर 10,000 characters की सीमा के साथ s15। Chisle, caveman और ouroboros को साथ जोड़ने पर SessionStart पर 3 registrations, UserPromptSubmit पर 3 और PostToolUse पर 2 थे, और शुरुआत में +4,269 tokens s15।

Chisle का README 20-task के बिल को baseline के 52% पर बताता है, और README खुद इस आंकड़े को बिना tools वाले single-turn prompts तक सीमित करता है s3। असली repo के खिलाफ तीन tasks पर, हर एक के 3 runs में, Chisle के output का जोड़ा हुआ औसत 9,007 tokens रहा जबकि baseline 9,615 था, यानी 94%; caveman का 10,820 रहा, यानी 113%, ऐसे sample पर जिसमें T3 का फैलाव 2,014 tokens था, इसलिए किसी भी दिशा का अंतर noise से ऊपर नहीं निकलता s3। Chisle के output compressor ने 63 runs में एक बार भी savings record नहीं लिखा।

anti-slop को tools/oxlint/ में vendor करके, सभी 18 generic rules और oxc/no-accumulating-spread के साथ, बिना छुए 4,775-line project में 109 issues मिले, जिनमें से 83% दो house-style rules से थे (require-readable-spacing 50, require-safety-comment-for-type-assertion 41) s8। Claude के लिखे code पर उसने T3 के तीनों runs में maxLength={field.maxLength as number} पकड़ा, यानी Claude codebase के अपने ही unsafe cast की नकल कर रहा था s8। Plugin ESM है, इसलिए host project में "type": "module" होना चाहिए, वरना oxlint Cannot use import statement outside a module के साथ fail होता है।

Reticle के init codemod ने, RETICLE_STATE_DIR सेट और telemetry बंद रखकर चलाने पर, बताया कि उसने MCP server को 8 और agents में register किया (VS Code user scope, GitHub Copilot CLI, Warp, Factory Droid, Kiro, Amazon Q Developer CLI, Cline CLI, Amp) और Gemini CLI में उसके tools को पहले से approve कर दिया; इसके बाद pairing ERR_OSSL_EVP_UNSUPPORTED के साथ fail हो गई s6। Caliper को मना कर दिया गया: claude_code.py:106 में --dangerously-skip-permissions hardcoded है और seed_files() ~/.claude/.credentials.json को Keychain fallback के साथ कॉपी करता है s2। ouroboros का UserPromptSubmit hook write prd for reading time जैसे सामान्य prompt का जवाब REQUIRED SKILL: /ouroboros:setup से देता है, ऐसा कदम जिसे project-scoped install पूरा नहीं कर सकता s7।

एक paper, जिसमें 52, 102 और 202 skills की libraries पर 2,545 trajectories हैं, pooled pass-rate में .08, .14 और अधिकतम 21% तक की गिरावट बताता है, और नुकसान के बढ़ते हिस्से के रूप में मिलते-जुलते descriptions एक-दूसरे को ढकते हैं s20।

माप

Protocol: एक असली TypeScript project, हर repo सिर्फ project scope में install किया गया। Session start: -p JSON mode में prompt Reply with OK, एक जैसे flags के साथ, हर condition के 2 runs, आंकड़ा = पहले turn का input_tokens + cache_creation_input_tokens + cache_read_input_tokens। Ablation: तीन coding tasks (T1 छोटा, T2 मध्यम, T3 लंबा UI task), pass checks और type-check gate के साथ, हर cell के 3 runs, conditions = baseline, हर always-on repo अकेला, और आठों एक साथ। anti-slop: oxlint 1.78.0 vendored ruleset के साथ, बिना छुए project पर और 9 baseline runs में लिखे गए code पर।

repo project scope में install session शुरू होने पर जुड़े tokens प्रति turn cost
baseline कुछ नहीं 17,378 कोई नहीं
Chisle 4 skills, 4 commands, 3 hooks +3,496 हर turn +287 bytes का additionalContext
ouroboros MCP server, 39 tool names +1,642 शर्त पर आधारित injection
reticle MCP server, 19 tool names +895 / +903 कोई नहीं देखी गई
fwc-swiftui-skills 2 skills +304 कोई नहीं
caliper 2 skills +172 कोई नहीं
img2threejs 1 skill, 352 files, SKILL.md = 32,902 B +107 कोई नहीं
anti-slop 1 skill + vendored ruleset +95 कोई नहीं
ui-skills remote MCP, 2 tools +37 कोई नहीं
आठों एक साथ ऊपर सब कुछ +6,804 सिर्फ Chisle का प्रति turn
caveman (reference) 4 skills, 2 hooks +744 0
task condition pass नई type errors output tok औसत output न्यूनतम से अधिकतम कुल input औसत cost औसत turns MCP calls
T1 baseline 3/3 0 1,668 1,619 से 1,739 95,462 $0.0519 7.0 0
T1 Chisle 3/3 0 1,434 1,341 से 1,502 106,001 $0.0576 7.7 0
T1 ui-skills 3/3 0 1,756 1,644 से 1,885 96,279 $0.0535 7.3 0
T1 reticle 3/3 0 1,899 1,653 से 2,177 107,263 $0.0594 8.0 0
T1 ouroboros 3/3 0 1,729 1,655 से 1,787 97,166 $0.0549 7.0 0
T1 stack 3/3 0 1,462 1,460 से 1,465 128,221 $0.0646 7.7 0
T2 baseline 3/3 0 2,128 2,105 से 2,164 74,286 $0.0540 9.0 0
T2 Chisle 3/3 0 2,184 2,150 से 2,230 87,462 $0.0624 10.0 0
T2 ui-skills 3/3 0 2,348 2,224 से 2,504 74,869 $0.0604 10.0 0
T2 reticle 3/3 0 2,614 2,312 से 2,824 78,664 $0.0635 10.7 0
T2 ouroboros 3/3 0 2,441 2,152 से 2,815 80,819 $0.0622 10.0 0
T2 stack 3/3 0 2,136 2,015 से 2,216 89,378 $0.0661 9.7 0
T3 baseline 3/3 0 5,819 5,423 से 6,063 198,217 $0.1551 22.0 0
T3 Chisle 3/3 0 5,389 5,206 से 5,500 239,756 $0.1565 20.3 0
T3 ui-skills 3/3 0 5,279 4,860 से 5,567 214,691 $0.1477 21.0 0
T3 reticle 3/3 0 4,664 4,008 से 5,776 198,740 $0.1293 19.0 0
T3 ouroboros 3/3 0 5,456 4,324 से 7,093 232,763 $0.1544 21.0 0
T3 stack 3/3 0 5,331 4,787 से 5,843 241,576 $0.1591 19.7 0

63 में से 63 runs pass हुए और 63 में से 0 ने कोई नई type error जोड़ी। सिर्फ दो cells अपने run-to-run फैलाव से बाहर निकलते हैं: T1 पर Chisle (−234, −14.0%) और T1 पर stack (−206, −12.3%)। T2 और T3 पर हर अंतर फैलाव के भीतर है; एक ही prompt पर ouroboros के T3 runs 4,324 से 7,093 output tokens तक गए, यानी 64% का उतार-चढ़ाव।

repo निष्कर्ष प्रमाण
anti-slop output बदला, एक check के रूप में T3 के 3/3 runs में वही unsafe cast पकड़ा, +95 tokens, प्रति turn 0
Chisle कुछ मापने लायक नहीं, ऊपर से महंगा 52% के दावे के मुकाबले baseline के output का 94%; शुरुआत में +3,496, हर turn +287 bytes
ui-skills कुछ नहीं बदला 9 runs में 0 tool calls, +37 tokens
reticle टकराव init ने ~/.claude/settings.json और 8 दूसरे agents की configs में लिखा; pairing कभी पूरी नहीं हुई
ouroboros टकराव सामान्य prompts पर /ouroboros:setup मांगता है; 39 tool names, 0 calls
caliper चलाया नहीं गया hardcoded --dangerously-skip-permissions, credentials file कॉपी करता है
img2threejs stack से बाहर +107 tokens, टकराने के लिए कुछ नहीं
fwc-swiftui-skills stack से बाहर +304 tokens, static Markdown

सोमवार को यह करें

  • अपने मुख्य project के नए session में /context all चलाएं और शुरुआती संख्या लिख लें।
  • हर installed plugin पर claude plugin details <name> चलाएं; always-on वाली लाइन ही वह आंकड़ा है जो हर turn बिल होता है।
  • हर event के हिसाब से अपने hooks की सूची बनाएं। जो भी hook हर prompt पर UserPromptSubmit में additionalContext लौटाता है, वह प्रति turn का कर है; सिर्फ वही रखें जो keyword या matcher पर चलते हैं।
  • गिनें कि हर MCP server कितने tool names advertise करता है, प्रति name लगभग 42 से 47 tokens का budget मानें, फिर अपने transcripts में देखें कि उनमें से कितने कभी call हुए।
  • init या setup script वाली कोई भी चीज़ install करने से पहले उसे पढ़कर देखें कि वह repo के बाहर क्या लिखती है: ~/.claude/settings.json, दूसरे agents की config directories, credential files, --dangerously-skip-permissions।
  • Generated code की quality checks को verify step में linter के रूप में जोड़ें, context में skill के रूप में नहीं: lint rule की प्रति turn कोई कीमत नहीं होती।
  • किसी भी token-saving दावे पर भरोसा करने से पहले वही task tool के साथ और बिना tool के 3-3 बार चलाएं और अंतर को अपने min से max के फैलाव से तुलना करें।
  • जो हटाएं उसे delete करने की जगह archive करें, ताकि जिस workflow को उसकी ज़रूरत पड़े वह उसे वापस पा सके।

और आगे पढ़ें

  • Skill-listing budget और 1,536-character की description सीमा बताती है कि कोई skill load हुए बिना fail हुए भी भीड़ वाला setup क्यों बिगड़ता है। "Skill descriptions are cut short" और "Skill content lifecycle" sections पढ़ें s5।
  • /skill-doctor का write-up दिखाता है कि 40 skills प्रति turn 3,060 tokens खर्च करते हैं और पहले किन्हें हटाना चाहिए; इसका blind spot, यानी इस्तेमाल में आ रहे plugin के भीतर के महंगे skills, अगले follow-up के लिए छोड़ा गया है s10।
  • "30 से ज़्यादा skills" वाले अंगूठे के नियम के पीछे का paper: 52, 102 और 202 skills की libraries पर 2,545 trajectories, जिसमें shadowing effect को अलग करके देखा गया है s20, और उसका सरल सार जिसने इसे लोकप्रिय बनाया s12।
  • Hook concatenation और additionalContext की 10,000-character सीमा, साथ में वह matcher syntax जो hook को सिर्फ Write|Edit पर चलने देता है s15।
  • 63% हटाने वाला thread, जिसमें हटाए गए MCP config में hardcoded bearer token मिला, एक security विषयांतर जिसे video में शामिल नहीं किया गया s13।
  • Chisle का अपना README, lines 229 और 262, अपने 52% के आंकड़े को बिना tools वाले single-turn prompts तक सीमित करता है और छोटे coding cell में caveman को बेहतर मानता है। Headline उद्धृत करने से पहले बारीक अक्षर पढ़ें s3।
  • दो off-stack repos को score नहीं किया गया क्योंकि वे हाथ से invoke होते हैं और शुरुआत में कोई cost नहीं जोड़ते: Three.js scenes के लिए img2threejs s21 और Liquid Glass surfaces के लिए fwc-swiftui-skills s22।

स्रोत

  • Plugins reference, Claude Code docs. क्यों पढ़ें: plugin details, install scopes और deferred MCP tool loading, जिसकी वजह से tool names की गिनती ही असली cost है।
  • Extend Claude with skills, Claude Code docs. क्यों पढ़ें: description की सीमा, listing budget और compaction के बाद दोबारा attach होने का budget, एक ही पन्ने पर।
  • Hooks reference, Claude Code docs. क्यों पढ़ें: एक ही event पर दो hooks के inject करने पर क्या होता है, और matchers hook को ज़्यादातर turns से कैसे दूर रखते हैं।
  • dmmulroy/anti-slop, GitHub. क्यों पढ़ें: आठ में अकेला repo जिसने नतीजा बदला; rules को vendor करें, skill छोड़ दें।
  • JayPokale/Chisle, GitHub. क्यों पढ़ें: एक README जो headline से आगे पढ़ने पर अपने ही 52% के दावे की सीमा ईमानदारी से बताता है।
  • edonadei/caliper, GitHub. क्यों पढ़ें: जानने लायक एक skill evaluator, और कुछ भी चलाने से पहले claude_code.py पढ़ने का सबक।
  • reticlehq/reticle, GitHub. क्यों पढ़ें: init codemod इस बात का सबसे साफ उदाहरण है कि एक installer आपके project से कितनी दूर तक लिखता है।
  • Q00/ouroboros, GitHub. क्यों पढ़ें: hook-driven workflow जो सिर्फ global install में समझ आता है, एक ऐसे setup step के साथ जिसे project install पूरा नहीं कर सकता।
  • ibelick/ui-skills, GitHub. क्यों पढ़ें: यहां का सबसे सस्ता install, +37 tokens पर, और एक बार भी call नहीं हुआ।
  • /skill-doctor: 40 skills, 3,060 tokens a turn, dev.to. क्यों पढ़ें: असली setup पर प्रति skill cost का ब्योरा।
  • Too many Claude Code skills? How the listing budget decides, dev.to. क्यों पढ़ें: वह तंत्र जिससे descriptions काट दी जाती हैं।
  • Why More Than 30 Skills Kill Your AI Agent, dev.to. क्यों पढ़ें: shadowing paper का पढ़ने में आसान रूप।
  • Skill shadowing paper, arXiv. क्यों पढ़ें: library के आकार के हिसाब से pooled pass-rate में गिरावट, confidence intervals के साथ।
  • I removed 63% of my Claude Code setup, Reddit r/ClaudeCode. क्यों पढ़ें: ~235 components से ~87 तक, delete नहीं बल्कि archive।
  • My fresh Claude Code sessions were starting at ~35K tokens, Reddit r/ClaudeCode. क्यों पढ़ें: /context all का सात-चरणों वाला audit जिसे आप आज दोपहर ही कॉपी कर सकते हैं।
  • img2threejs/img2threejs, GitHub. क्यों पढ़ें: सबूत कि 32,902-byte का SKILL.md invoke करने तक सिर्फ 107 tokens खर्च करता है।
  • FloWritesCode/fwc-swiftui-skills, GitHub. क्यों पढ़ें: static Markdown skills, ऐसे install की बनावट जो किसी चीज़ से टकरा नहीं सकता।

FAQ

क्या MCP server अब भी startup पर हज़ारों tokens का schema खर्च करता है?

मापे गए version पर नहीं। Schemas deferred हैं और cost advertise किए गए tool names की संख्या के साथ बढ़ती है, लगभग 42 से 47 tokens प्रति name। 39 tools वाले server की कीमत +1,642 tokens रही; 2 tools वाले की +37।

Chisle कम output tokens बनाकर भी baseline से महंगा क्यों पड़ा?

उसका ruleset session शुरू होते ही load होता है (+3,496 tokens) और उसका hook हर turn पर 287 bytes inject करता है। T2 और T3 पर वह input overhead उस output बचत से भारी पड़ा जो run-to-run noise से कभी ऊपर नहीं निकली।