AIDive

Video-Paket

Acht Claude-Code-Repos an einem Projekt gemessen: Kosten, Ablationstabellen, Urteile

13 Min. Lesezeit

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-permissions und 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 all in 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 UserPromptSubmit für jeden Prompt additionalContext zurü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 bei Write|Edit feuert 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.py zu 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.md 107 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.