Auf einen Blick (Kurzfassung):

Warum Kontext das knappste Gut ist

Die Docs formulieren es als zentrale Beschränkung: „Die meisten Best Practices beruhen auf einer einzigen Randbedingung: Claudes Kontextfenster füllt sich schnell, und die Leistung nimmt ab, während es sich füllt."

Das ist nicht nur ein Kostenthema. Volle Kontexte lassen Claude frühere Instruktionen „vergessen" und mehr Fehler machen — Anthropic nennt das in seinem Context-Engineering-Artikel context rot: Modelle haben ein begrenztes Aufmerksamkeitsbudget, und jedes zusätzliche Token zehrt daran.

Das Ziel ist entsprechend nicht „so viel Kontext wie möglich", sondern die kleinstmögliche Menge an Tokens mit hohem Signalgehalt.

Was beim Start schon drin ist

Bevor du das erste Wort tippst, ist das Kontextfenster bereits belegt. Die interaktive Simulation in den Docs nennt für eine typische Session:

KomponenteTokensSichtbar?
System-Prompt4.200nein
Projekt-CLAUDE.md1.800nein
Auto-Memory (MEMORY.md)680nein
Skill-Beschreibungen450nein
~/.claude/CLAUDE.md320nein
Umgebungsinfos (cwd, Shell, OS, Git)280nein
MCP-Tool-Namen (deferred)120nein
Summe vor dem ersten Prompt≈ 7.850

Diese Zahlen sind Beispielwerte, aber die Größenordnungen sind aussagekräftig: Der Projekt-CLAUDE.md-Anteil ist der einzige große Posten, den du direkt kontrollierst. Auto-Memory lädt die ersten 200 Zeilen bzw. 25 KB, je nachdem was zuerst kommt.

Was Arbeit kostet

Aus derselben Simulation, für eine ganz normale Auth-Debugging-Sitzung:

AktionTokens
Dein Prompt45
Read src/api/auth.ts2.400
Read src/lib/tokens.ts1.100
Rule api-conventions.md (pfadgetriggert)380
Read middleware.ts1.800
Read auth.test.ts1.600
grep "refreshToken"600
npm test-Output1.200
Subagent-Rückgabe (Zusammenfassung)420

Die Lehre: Datei-Reads sind der dominante Posten. Vier Dateien kosten mehr als der gesamte Session-Start. Alles, was die Zahl der gelesenen Dateien reduziert, wirkt direkt.

Beachte den Subagent in der Tabelle: Er liest drei weitere Dateien, aber im Hauptkontext landen nur 420 Tokens Zusammenfassung. Das ist der Grund, warum Subagents das stärkste Kontextwerkzeug sind.

Hebel 1: CLAUDE.md schlank halten

CLAUDE.md wird bei jeder Session geladen und liegt in jedem Turn im Präfix. Anthropics Regel: unter ~200 Zeilen.

Für jede Zeile die Testfrage stellen: „Würde Claude ohne diese Zeile einen Fehler machen?" Wenn nein, streichen.

Gehört rein Gehört raus
Bash-Befehle, die Claude nicht raten kannAlles, was Claude durch Codelesen herausfindet
Code-Style-Regeln, die von der Norm abweichenStandardkonventionen der Sprache
Test-Anweisungen, bevorzugte Test-RunnerDetaillierte API-Doku (verlinken statt einbetten)
Repo-Etikette (Branch-Namen, PR-Konventionen)Häufig wechselnde Informationen
Projektspezifische ArchitekturentscheidungenDatei-für-Datei-Beschreibungen der Codebase
Eigenheiten der Dev-Umgebung (nötige Env-Vars)Selbstverständlichkeiten wie „schreibe sauberen Code"
Nicht offensichtliche FallstrickeLange Erklärungen und Tutorials

Ein aufgeblähtes CLAUDE.md ist schlimmer als ein kurzes. Die Docs sind hier eindeutig: Wenn Claude eine Regel trotz Anweisung dauerhaft ignoriert, ist die Datei vermutlich zu lang und die Regel geht im Rauschen unter. Und: Wenn Claude Fragen stellt, die in CLAUDE.md beantwortet sind, ist die Formulierung mehrdeutig.

Spezialwissen in Skills auslagern

Detailanweisungen für bestimmte Workflows — PR-Reviews, Datenbank-Migrationen, Deployment-Runbooks — gehören nicht in CLAUDE.md, weil sie sonst auch bei völlig anderer Arbeit im Kontext liegen. Skills laden bei Bedarf: im Startkontext liegen nur ihre Beschreibungen (im Beispiel oben 450 Tokens für alle zusammen).

Dasselbe Prinzip greift auch andersherum: Ein „codebase-overview"-Skill kann Architektur, Verzeichnisstruktur und Namenskonventionen beschreiben. Claude bekommt das auf einen Schlag, statt fünf Dateien zu lesen, um dasselbe herauszufinden.

Ergänzend: Verschachtelte CLAUDE.md-Dateien in Unterverzeichnissen und Rules mit paths:-Frontmatter laden erst, wenn Claude eine passende Datei anfasst.

Hebel 2: weniger lesen lassen

Präzise Prompts

„Was würdest du an dieser Datei verbessern?" ist ein legitimer Explorationsprompt — aber er löst breites Scannen aus. Für gezielte Arbeit: Datei, Szenario und Erwartung benennen.

StattBesser
„füge Tests für foo.py hinzu"„schreibe einen Test für foo.py, der den Fall abdeckt, dass der User ausgeloggt ist. Keine Mocks."
„behebe den Login-Bug"„Nutzer melden, dass Login nach Session-Timeout fehlschlägt. Prüfe den Auth-Flow in src/auth/, besonders Token-Refresh. Schreibe erst einen fehlschlagenden Test, der das reproduziert, dann fixe es."
„warum hat ExecutionFactory so eine seltsame API?"„Sieh dir die Git-History von ExecutionFactory an und fasse zusammen, wie die API entstanden ist."

Code-Intelligence-Plugins

Für typisierte Sprachen geben Code-Intelligence-Plugins Claude präzise Symbol-Navigation statt Textsuche. Ein einziges „go to definition" ersetzt ein Grep plus das Lesen mehrerer Kandidatendateien. Zusätzlich melden die Language-Server Typfehler nach Edits automatisch, ohne dass ein Compiler-Lauf im Kontext landet.

Subagents für Recherche

Nutze Subagents, um zu untersuchen, wie unser Auth-System
Token-Refresh handhabt und ob es OAuth-Utilities gibt,
die ich wiederverwenden sollte.

Auch für Verifikation: nutze einen Subagent, um diesen Code auf Edge Cases zu prüfen. Ein Reviewer in frischem Kontext sieht nur den Diff und die Kriterien, nicht die Argumentation, die zur Änderung geführt hat — und bewertet deshalb unabhängig.

Hooks als Vorfilter

Tool-Output ist oft riesig und größtenteils irrelevant. Ein PreToolUse-Hook kann Test-Kommandos umschreiben, sodass nur Failures durchkommen:

#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then
  filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
  echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"
else
  echo "{}"
fi

Aus Zehntausenden Tokens Logfile werden Hunderte. Prüfen mit /hooks oder claude --debug — im Debug-Log erscheint dann modified tool input keys: [command].

Hebel 3: MCP-Overhead reduzieren

Hebel 4: Kontext aktiv zurücksetzen

Siehe auch die Werkzeug-Tabelle in Artikel 3. Zusätzlich zwei Details:

Compaction steuern

Auto-Compaction fasst zusammen, wenn das Limit naht. Mit /compact <Anweisung> steuerst du, was erhalten bleibt:

/compact Fokus auf Code-Beispiele und API-Nutzung

Dauerhaft geht das über CLAUDE.md:

# Compact instructions

When you are using compact, please focus on test output and code changes

Nützlich sind Anweisungen wie „bewahre immer die vollständige Liste der geänderten Dateien und alle Test-Kommandos".

Teilweise zusammenfassen

Esc + Esc bzw. /rewind → Checkpoint wählen → Summarize from here (verdichtet ab dort nach vorne, früherer Kontext bleibt vollständig) oder Summarize up to here (verdichtet den früheren Teil, aktueller bleibt vollständig).

Die fünf klassischen Fehlermuster

MusterFix
Die Kitchen-Sink-Session — eine Aufgabe, dann etwas Unzusammenhängendes, dann zurück zur ersten/clear zwischen unzusammenhängenden Aufgaben
Endloses Korrigieren — Kontext füllt sich mit gescheiterten AnsätzenNach zwei Korrekturen /clear und besserer Prompt
Das überspezifizierte CLAUDE.md — Claude ignoriert die HälfteRigoros kürzen; was Claude ohnehin richtig macht, streichen oder in einen Hook überführen
Die Trust-then-verify-Lücke — plausibler Code, der Edge Cases nicht abdecktImmer Verifikation mitgeben: Tests, Skripte, Screenshots
Die endlose Exploration — „untersuch mal X" ohne Scope, Claude liest hunderte DateienEng scopen oder an Subagents delegieren

Was Kontext nicht kostet

Zwei nützliche Nicht-Kosten: