TL;DR
- Acht beliebte Claude-Code-Repos wurden auf einer echten Codebasis im Projekt-Scope installiert und gemessen: Tokens beim Sessionstart, Output-Tokens bei drei Coding-Aufgaben und was jedes Repo außerhalb des Projekts schreibt.
- Nur eines der acht hat ein Ergebnis verändert: anti-slop, als Linter eingesetzt, fand in allen 3 T3-Läufen denselben unsicheren Cast, für +95 Session-Tokens und null pro Turn.
- Regelwerke für knappe Ausgaben hielten bei Arbeit mit Tools nicht stand: Chisles beworbene 52% der Baseline wurden zu 94% der Baseline-Output-Tokens, und sein Arm kostete bei zwei von drei Aufgaben mehr als die Baseline, sobald man den Input mitzählt.
- Die drei MCP-Server wurden in 63 Läufen kein einziges Mal aufgerufen. Installiert ist nicht dasselbe wie benutzt.
- Der Stack ist additiv: alle acht zusammen fügten beim Sessionstart +6,804 Tokens hinzu, 63 Tokens weniger als die Summe der Einzelteile.
- Zwei Installationen griffen über das Projekt hinaus. Ein Codemod trug sich in die globalen Konfigurationen von 8 weiteren Agents ein; ein Tool hardcodet
--dangerously-skip-permissionsund kopiert die Credentials-Datei, weshalb es nie ausgeführt wurde.
Was die Messungen sagen
Tokens beim Sessionstart sind reproduzierbar, Dollarkosten nicht: Jede Bedingung lieferte in beiden Läufen dieselbe Input-Token-Summe, während die Kosten derselben Bedingung je nach Prompt-Cache-Zustand von $0.0183 bis $0.0035 schwankten. Deshalb ist die Token-Zahl durchgehend die Metrik. Das Baseline-Projekt startet bei 17,378 Tokens s4.
MCP-Tool-Schemas werden in dieser Claude-Code-Version verzögert geladen, und die Kosten skalieren jetzt mit der Anzahl der Tool-Namen, die ein Server meldet, nicht mit der Schemagröße. Die 39 Tools von ouroboros kosteten +1,642 Tokens, die 19 von reticle +895, die 2 von ui-skills +37: etwa 42 bis 47 Tokens pro Tool-Namen. Standardmäßig werden alle MCP-Tools verzögert und bei Bedarf geladen, und der Modus auto von ENABLE_TOOL_SEARCH verzögert sie, sobald ihre Definitionen 10% des Kontextfensters erreichen s4.
img2threejs liefert eine 32,902 Byte große SKILL.md und 352 Dateien mit und kostet beim Sessionstart +107 Tokens, weil nur die Beschreibung im Frontmatter geladen wird. Die Skills-Doku begrenzt jede gelistete Beschreibung auf 1,536 Zeichen und kürzt Beschreibungen auf ein Listing-Budget, wenn es viele Skills gibt; nach der Kompaktierung werden aufgerufene Skills mit je 5,000 Tokens in einem gemeinsamen Budget von 25,000 Tokens wieder angehängt s5. Dieses Listing-Budget ist der Grund, warum 40 Skills in einem Setup, das keinen davon aufruft, 3,060 Tokens pro Turn kosten können s10, und warum Beschreibungen gekürzt werden, statt Skills wegzulassen s11.
Chisles UserPromptSubmit-Hook fügt in jedem Turn 287 Byte additionalContext hinzu; über eine Aufgabe mit 22 Turns erklärt das, warum sein Arm bei T3 gegenüber der Baseline +41,539 Input-Tokens insgesamt kostete. caveman, als Referenz gemessen, injiziert nichts, solange der Prompt nicht mit /caveman beginnt. Wenn mehrere Hooks desselben Events jeweils additionalContext zurückgeben, erhält Claude alle verkettet, mit einer Obergrenze von 10,000 Zeichen pro Hook s15. Mit Chisle, caveman und ouroboros zusammen gab es 3 Registrierungen auf SessionStart, 3 auf UserPromptSubmit und 2 auf PostToolUse, für +4,269 Tokens beim Start s15.
Chisles README behauptet eine Rechnung über 20 Aufgaben bei 52% der Baseline, und das README selbst begrenzt diese Zahl auf Single-Turn-Prompts ohne Tools s3. Bei drei Aufgaben gegen ein echtes Repo, je 3 Läufe, lagen Chisles summierte Output-Mittelwerte bei 9,007 Tokens gegenüber einer Baseline von 9,615, also 94%; die von caveman bei 10,820, also 113%, auf einer Stichprobe, deren T3-Streuung 2,014 Tokens betrug, sodass keine der beiden Richtungen das Rauschen überwindet s3. Chisles Output-Kompressor schrieb in 63 Läufen nie einen Einsparungseintrag.
anti-slop, in tools/oxlint/ vendort mit allen 18 generischen Regeln plus oxc/no-accumulating-spread, fand 109 Probleme im unveränderten Projekt mit 4,775 Zeilen, 83% davon aus zwei Hausstil-Regeln (require-readable-spacing 50, require-safety-comment-for-type-assertion 41) s8. Im von Claude geschriebenen Code fand es maxLength={field.maxLength as number} in allen 3 T3-Läufen: Claude kopierte den unsicheren Cast der Codebasis selbst s8. Das Plugin ist ESM, das Host-Projekt braucht also "type": "module", sonst scheitert oxlint mit Cannot use import statement outside a module.
Reticles init-Codemod, ausgeführt mit gesetztem RETICLE_STATE_DIR und ausgeschalteter Telemetrie, meldete, dass er den MCP-Server bei 8 weiteren Agents registriert hat (VS Code User-Scope, GitHub Copilot CLI, Warp, Factory Droid, Kiro, Amazon Q Developer CLI, Cline CLI, Amp) und seine Tools in Gemini CLI vorab freigegeben hat; das Pairing scheiterte danach mit ERR_OSSL_EVP_UNSUPPORTED s6. Caliper wurde abgelehnt: claude_code.py:106 hardcodet --dangerously-skip-permissions, und seed_files() kopiert ~/.claude/.credentials.json mit Keychain-Fallback s2. Der UserPromptSubmit-Hook von ouroboros beantwortet einen gewöhnlichen Prompt wie write prd for reading time mit REQUIRED SKILL: /ouroboros:setup, einem Schritt, den eine Installation im Projekt-Scope nicht erfüllen kann s7.
Eine Studie über 2,545 Trajektorien mit Bibliotheken von 52, 102 und 202 Skills berichtet gepoolte Einbrüche der Erfolgsrate von .08, .14 und bis zu 21%, wobei sich ähnliche Beschreibungen gegenseitig verdecken und einen wachsenden Anteil des Verlusts ausmachen s20.
Messungen
Protokoll: ein echtes TypeScript-Projekt, jedes Repo nur im Projekt-Scope installiert. Sessionstart: der Prompt Reply with OK im -p-JSON-Modus mit identischen Flags, 2 Läufe pro Bedingung, Wert = input_tokens + cache_creation_input_tokens + cache_read_input_tokens des ersten Turns. Ablation: drei Coding-Aufgaben (T1 kurz, T2 mittel, T3 lange UI-Aufgabe) mit Pass-Checks und Type-Check-Gate, 3 Läufe pro Zelle, Bedingungen = Baseline, jedes Always-on-Repo einzeln, alle acht gestapelt. anti-slop: oxlint 1.78.0 mit dem vendorten Regelwerk über dem unveränderten Projekt und über dem Code aus den 9 Baseline-Läufen.
| Repo | im Projekt-Scope installiert | beim Sessionstart hinzugefügte Tokens | Kosten pro Turn |
|---|---|---|---|
| baseline | nichts | 17,378 | keine |
| Chisle | 4 Skills, 4 Commands, 3 Hooks | +3,496 | +287 Byte additionalContext in jedem Turn |
| ouroboros | MCP-Server, 39 Tool-Namen | +1,642 | bedingte Injektion |
| reticle | MCP-Server, 19 Tool-Namen | +895 / +903 | keine beobachtet |
| fwc-swiftui-skills | 2 Skills | +304 | keine |
| caliper | 2 Skills | +172 | keine |
| img2threejs | 1 Skill, 352 Dateien, SKILL.md = 32,902 B |
+107 | keine |
| anti-slop | 1 Skill + vendortes Regelwerk | +95 | keine |
| ui-skills | Remote-MCP, 2 Tools | +37 | keine |
| alle acht gestapelt | alles oben | +6,804 | nur Chisles pro Turn |
| caveman (Referenz) | 4 Skills, 2 Hooks | +744 | 0 |
| Aufgabe | Bedingung | bestanden | neue Type-Fehler | Output-Tok Mittel | Output min bis max | Input gesamt Mittel | Kosten Mittel | Turns | MCP-Aufrufe |
|---|---|---|---|---|---|---|---|---|---|
| T1 | baseline | 3/3 | 0 | 1,668 | 1,619 bis 1,739 | 95,462 | $0.0519 | 7.0 | 0 |
| T1 | Chisle | 3/3 | 0 | 1,434 | 1,341 bis 1,502 | 106,001 | $0.0576 | 7.7 | 0 |
| T1 | ui-skills | 3/3 | 0 | 1,756 | 1,644 bis 1,885 | 96,279 | $0.0535 | 7.3 | 0 |
| T1 | reticle | 3/3 | 0 | 1,899 | 1,653 bis 2,177 | 107,263 | $0.0594 | 8.0 | 0 |
| T1 | ouroboros | 3/3 | 0 | 1,729 | 1,655 bis 1,787 | 97,166 | $0.0549 | 7.0 | 0 |
| T1 | stack | 3/3 | 0 | 1,462 | 1,460 bis 1,465 | 128,221 | $0.0646 | 7.7 | 0 |
| T2 | baseline | 3/3 | 0 | 2,128 | 2,105 bis 2,164 | 74,286 | $0.0540 | 9.0 | 0 |
| T2 | Chisle | 3/3 | 0 | 2,184 | 2,150 bis 2,230 | 87,462 | $0.0624 | 10.0 | 0 |
| T2 | ui-skills | 3/3 | 0 | 2,348 | 2,224 bis 2,504 | 74,869 | $0.0604 | 10.0 | 0 |
| T2 | reticle | 3/3 | 0 | 2,614 | 2,312 bis 2,824 | 78,664 | $0.0635 | 10.7 | 0 |
| T2 | ouroboros | 3/3 | 0 | 2,441 | 2,152 bis 2,815 | 80,819 | $0.0622 | 10.0 | 0 |
| T2 | stack | 3/3 | 0 | 2,136 | 2,015 bis 2,216 | 89,378 | $0.0661 | 9.7 | 0 |
| T3 | baseline | 3/3 | 0 | 5,819 | 5,423 bis 6,063 | 198,217 | $0.1551 | 22.0 | 0 |
| T3 | Chisle | 3/3 | 0 | 5,389 | 5,206 bis 5,500 | 239,756 | $0.1565 | 20.3 | 0 |
| T3 | ui-skills | 3/3 | 0 | 5,279 | 4,860 bis 5,567 | 214,691 | $0.1477 | 21.0 | 0 |
| T3 | reticle | 3/3 | 0 | 4,664 | 4,008 bis 5,776 | 198,740 | $0.1293 | 19.0 | 0 |
| T3 | ouroboros | 3/3 | 0 | 5,456 | 4,324 bis 7,093 | 232,763 | $0.1544 | 21.0 | 0 |
| T3 | stack | 3/3 | 0 | 5,331 | 4,787 bis 5,843 | 241,576 | $0.1591 | 19.7 | 0 |
63/63 Läufe bestanden und 0/63 führten einen neuen Type-Fehler ein. Nur zwei Zellen überwinden ihre eigene Streuung zwischen den Läufen: Chisle bei T1 (−234, −14.0%) und der Stack bei T1 (−206, −12.3%). Bei T2 und T3 liegt jedes Delta innerhalb der Streuung; die T3-Läufe von ouroboros reichten bei identischem Prompt von 4,324 bis 7,093 Output-Tokens, eine Schwankung von 64%.
| Repo | Urteil | Beleg |
|---|---|---|
| anti-slop | hat den Output verändert, als Check | fand denselben unsicheren Cast in 3/3 T3-Läufen, +95 Tokens, 0 pro Turn |
| Chisle | nichts Messbares, kostete mehr | 94% des Baseline-Outputs gegenüber einer Angabe von 52%; +3,496 beim Start, +287 Byte pro Turn |
| ui-skills | hat nichts verändert | 0 Tool-Aufrufe in 9 Läufen, +37 Tokens |
| reticle | Konflikt | init schrieb in ~/.claude/settings.json und die Konfigurationen von 8 weiteren Agents; Pairing nie abgeschlossen |
| ouroboros | Konflikt | verlangt /ouroboros:setup bei gewöhnlichen Prompts; 39 Tool-Namen, 0 Aufrufe |
| caliper | nicht ausgeführt | hardcodetes --dangerously-skip-permissions, kopiert die Credentials-Datei |
| img2threejs | außerhalb des Stacks | +107 Tokens, nichts, womit es kollidieren könnte |
| fwc-swiftui-skills | außerhalb des Stacks | +304 Tokens, statisches Markdown |
Das machst du am Montag
- Führe
/context allin einer frischen Session deines Hauptprojekts aus und notiere die Startzahl. - Führe
claude plugin details <name>für jedes installierte Plugin aus; die Always-on-Zeile ist die einzige Zahl, die in jedem Turn berechnet wird. - Liste deine Hooks pro Event auf. Jeder Hook, der bei
UserPromptSubmitfür jeden PromptadditionalContextzurückgibt, ist eine Steuer pro Turn; behalte nur die, die auf ein Stichwort oder einen Matcher hin greifen. - Zähle die Tool-Namen, die jeder MCP-Server meldet, rechne grob mit 42 bis 47 Tokens pro Name und prüfe dann in deinen Transkripten, wie viele davon je aufgerufen wurden.
- Bevor du etwas mit einem
init- oder Setup-Skript installierst, lies es auf Schreibzugriffe außerhalb des Repos:~/.claude/settings.json, Konfigurationsverzeichnisse anderer Agents, Credential-Dateien,--dangerously-skip-permissions. - Binde Qualitätsprüfungen für generierten Code als Linter in den Verify-Schritt ein, nicht als Skill im Kontext: Eine Lint-Regel kostet pro Turn nichts.
- Bevor du einer Token-Spar-Behauptung traust, führe dieselbe Aufgabe 3 Mal mit und ohne das Tool aus und vergleiche das Delta mit deiner eigenen Streuung von Minimum bis Maximum.
- Archiviere, was du entfernst, statt es zu löschen, damit ein Workflow, der danach greift, es zurückbekommen kann.
Weiterlesen
- Das Skill-Listing-Budget und die Obergrenze von 1,536 Zeichen pro Beschreibung erklären, warum ein überladenes Setup schlechter wird, ohne dass ein Skill nicht lädt. Lies die Abschnitte "Skill descriptions are cut short" und "Skill content lifecycle" s5.
- Der
/skill-doctor-Artikel zeigt 40 Skills, die 3,060 Tokens pro Turn kosten, und welche man zuerst streicht; sein blinder Fleck, teure Skills in einem Plugin, das in Benutzung ist, bleibt einem Folgeartikel überlassen s10. - Die Studie hinter der Faustregel "mehr als 30 Skills": 2,545 Trajektorien über Bibliotheken mit 52, 102 und 202 Skills, mit isoliertem Shadowing-Effekt s20, und die gut lesbare Zusammenfassung, die sie bekannt gemacht hat s12.
- Hook-Verkettung und die Obergrenze von 10,000 Zeichen für
additionalContext, dazu die Matcher-Syntax, mit der ein Hook nur beiWrite|Editfeuert s15. - Der Thread über die Entfernung von 63%, darunter ein hardcodetes Bearer-Token in einer entfernten MCP-Konfiguration, ein Sicherheits-Nebenschauplatz, den das Video ausgelassen hat s13.
- Chisles eigenes README, Zeilen 229 und 262, begrenzt die 52% auf Single-Turn-Prompts ohne Tools und überlässt die Zelle mit kurzem Coding caveman. Lies das Kleingedruckte, bevor du die Schlagzeile zitierst s3.
- Die beiden Repos außerhalb des Stacks wurden nicht bewertet, weil sie manuell aufgerufen werden und beim Start nichts kosten: img2threejs für Three.js-Szenen s21 und fwc-swiftui-skills für Liquid-Glass-Oberflächen s22.
Quellen
- Plugins reference, Claude Code docs. Warum lesen:
plugin details, Installations-Scopes und das verzögerte Laden von MCP-Tools, das die Zahl der Tool-Namen zu den echten Kosten macht. - Extend Claude with skills, Claude Code docs. Warum lesen: das Beschreibungslimit, das Listing-Budget und das Re-Attach-Budget nach der Kompaktierung auf einer Seite.
- Hooks reference, Claude Code docs. Warum lesen: was passiert, wenn zwei Hooks beim selben Event injizieren, und wie Matcher einen Hook aus den meisten Turns heraushalten.
- dmmulroy/anti-slop, GitHub. Warum lesen: das einzige der acht Repos, das ein Ergebnis verändert hat; die Regeln vendoren, den Skill weglassen.
- JayPokale/Chisle, GitHub. Warum lesen: ein README, das seine eigene 52%-Behauptung ehrlich eingrenzt, wenn man über die Schlagzeile hinaus liest.
- edonadei/caliper, GitHub. Warum lesen: ein Skill-Evaluator, den man kennen sollte, und eine Lektion darin,
claude_code.pyzu lesen, bevor man irgendetwas ausführt. - reticlehq/reticle, GitHub. Warum lesen: der
init-Codemod ist das klarste Beispiel für einen Installer, der weit außerhalb deines Projekts schreibt. - Q00/ouroboros, GitHub. Warum lesen: ein Hook-getriebener Workflow, der nur global installiert Sinn ergibt, mit einem Setup-Schritt, den eine Projektinstallation nicht erfüllen kann.
- ibelick/ui-skills, GitHub. Warum lesen: die günstigste Installation hier mit +37 Tokens, und kein einziges Mal aufgerufen.
- /skill-doctor: 40 skills, 3,060 tokens a turn, dev.to. Warum lesen: eine Kostenaufschlüsselung pro Skill an einem echten Setup.
- Too many Claude Code skills? How the listing budget decides, dev.to. Warum lesen: der Mechanismus, durch den Beschreibungen gekürzt werden.
- Why More Than 30 Skills Kill Your AI Agent, dev.to. Warum lesen: die gut lesbare Version der Shadowing-Studie.
- Skill shadowing paper, arXiv. Warum lesen: die gepoolten Einbrüche der Erfolgsrate nach Bibliotheksgröße, mit Konfidenzintervallen.
- I removed 63% of my Claude Code setup, Reddit r/ClaudeCode. Warum lesen: ~235 Komponenten reduziert auf ~87, archiviert statt gelöscht.
- My fresh Claude Code sessions were starting at ~35K tokens, Reddit r/ClaudeCode. Warum lesen: ein Audit mit sieben Schritten per
/context all, das du noch heute Nachmittag übernehmen kannst. - img2threejs/img2threejs, GitHub. Warum lesen: der Beweis, dass eine 32,902 Byte große
SKILL.md107 Tokens kostet, bis du sie aufrufst. - FloWritesCode/fwc-swiftui-skills, GitHub. Warum lesen: statische Markdown-Skills, die Form einer Installation, die mit nichts kollidieren kann.
FAQ
Kostet ein MCP-Server beim Start immer noch tausende Tokens für Schemas?
Nicht in der gemessenen Version. Schemas werden verzögert geladen, und die Kosten skalieren mit der Zahl der gemeldeten Tool-Namen, etwa 42 bis 47 Tokens pro Name. Ein Server mit 39 Tools kostete +1,642 Tokens; einer mit 2 Tools +37.
Warum kostete Chisle mehr als die Baseline, obwohl es weniger Output-Tokens erzeugte?
Sein Regelwerk wird beim Sessionstart geladen (+3,496 Tokens), und sein Hook injiziert in jedem Turn 287 Byte. Bei T2 und T3 überwog dieser Input-Overhead eine Output-Ersparnis, die das Rauschen zwischen den Läufen nie überwand.
AIDive