← Alle Lessons | Agent-Ready Codebase – warum der größte Hebel im Repository liegt

Agent-Ready Codebase – warum der größte Hebel im Repository liegt

Schritt 1 von 8

Einführung

Warum ein Agent dein Projekt anders liest als du

Eine Werkzeugwand mit aufgemalten Umrissen, jedes Werkzeug an seinem Platz, von einer Arbeitslampe beleuchtet

Du kennst dein Projekt. Wenn du eine Änderung machst, weißt du, welche drei Dateien betroffen sind, welcher Test seit Monaten rot ist und warum der eine Ordner so heißt, wie er heißt. Nichts davon steht irgendwo geschrieben. Es steht in deinem Kopf.

Ein Agent startet jeden Lauf ohne dieses Wissen. Er sucht es sich über Werkzeugaufrufe zusammen: Verzeichnisse auflisten, Dateien lesen, Muster erraten. Jeder dieser Schritte kostet Token, füllt das Kontextfenster und ist eine Gelegenheit, das Falsche zu schließen.

💡
Der Unterschied in einem Satz: Ein Mensch überfliegt und ignoriert. Ein Agent liest und bezahlt. Was du beim Scrollen überspringst, landet bei ihm vollständig im Kontext.

Developer Experience und Agent Experience

Codebases wurden über Jahrzehnte für menschliche Leser optimiert. Für Agenten gelten teilweise dieselben, teilweise andere Anforderungen. Der Unterschied zeigt sich bei vier Fragen.

Frage Bei einem Menschen Bei einem Agenten
Wo steht die Regel?Im Kopf der erfahrenen Leute im TeamIn einer Datei, sonst existiert sie nicht
Wie finde ich den richtigen Code?Ich weiß, wo ich schaueSuchen kostet bei jedem Lauf neu
Woher weiß ich, dass es hält?Ich schaue drüberEin Kommando sagt grün oder rot, sonst rät er
Was ist gerade irrelevant?Ich scrolle vorbeiMuss ausgeschlossen werden, sonst liest er es

Beides schließt sich nicht aus. Fast alles, was ein Repository für Agenten gut macht, macht es auch für neue Kolleginnen und Kollegen gut. Der Unterschied ist, dass ein Agent gnadenlos vorführt, was undokumentiert geblieben ist.

Wo diese Lesson ansetzt

In Prompts, die halten geht es darum, wie du einen Coding-Agenten briefst. Diese Lesson dreht die Richtung um: Was du wiederholt in jeden Prompt schreibst, gehört nicht in den Prompt, sondern ins Repository. Wer den Agenten immer weiter briefen muss, hat meistens ein Strukturproblem und kein Formulierungsproblem.

🔗
Anschluss nach unten: Von Vibe Coding zu Agentic Coding führt den Harness-Begriff ein, also die Welt um das Modell herum. Diese Lesson arbeitet genau den Teil des Harness aus, der im Dateisystem liegt.

Was du nach dieser Lesson kannst

  • Die Lokalität deines Repos messen und benennen, was sie kostet
  • Eine Agenten-Doku schreiben, die anweist statt beschreibt
  • Eine Architekturkarte anlegen, die teure Erkundung ersetzt
  • Festlegen, was ein Agent programmatisch nie lesen darf
  • Den Zustand eines Laufs aus dem Kontextfenster auf die Platte verlagern
  • Den Beweis vom Prompt in das Projekt verschieben
⚠️
Diese Lesson ist Handwerk, keine Architekturdoktrin. Der Schlussschritt priorisiert alle Maßnahmen nach Aufwand und Wirkung. Wer mit dem Umbau der Architektur beginnt, kommt nie zum Nutzen.
Schritt 2 von 8

Lokalität

Schritt 1 – Die wichtigste Kennzahl deines Repositorys

Eine geöffnete Werkzeugschublade mit Fächern, in einem Fach liegt alles für einen Handgriff beisammen

Es gibt eine Zahl, die mehr über die Agententauglichkeit eines Projekts aussagt als jede Architekturbeschreibung.

📏
Die Kennzahl: Wie viele Dateien, Module und Schichten muss ein Agent anfassen, um eine einzige fachliche Änderung umzusetzen?

Wenn Geschäftslogik über Hilfsklassen, Orchestrierungsschichten und geteilte Helfer verstreut ist, muss er das alles in den Kontext laden, bevor er die erste Zeile ändern kann. Das kostet doppelt: linear zur Dateigröße in Token, und überproportional in Genauigkeit, weil wichtige Anweisungen im Rauschen untergehen.

Schichten gegen Scheiben

Der übliche Zuschnitt organisiert Code nach technischen Schichten. Der agentenfreundliche Zuschnitt organisiert ihn nach fachlichen Anwendungsfällen. Dieselbe Änderung sieht in beiden Welten völlig anders aus.

Nach Schichten
src/
├── controllers/     OrderController.ts, RefundController.ts, ...
├── services/        OrderService.ts, RefundService.ts, ...
├── repositories/    OrderRepo.ts, RefundRepo.ts, ...
├── validators/      refundSchema.ts, ...
└── tests/           refund.test.ts, ...

Eine Aenderung an "Rueckerstattung" beruehrt fuenf Ordner.
In jedem davon sieht der Agent auch die Nachbarn.
Nach Anwendungsfällen
src/
└── billing/
    ├── refundPayment/
    │   ├── command.ts
    │   ├── handler.ts
    │   ├── schema.ts
    │   └── handler.test.ts
    └── capturePayment/
        └── ...

Eine Aenderung an "Rueckerstattung" beruehrt einen Ordner.
Alles, was dazugehoert, liegt beieinander.
Nach Schichten Nach Anwendungsfällen
Für eine Änderung nötigJe eine Datei pro Schicht, verteilt über das RepoEin Ordner
Was der Agent zusätzlich lädtDie Nachbarn in jeder SchichtNichts
Woran er scheitertEr übersieht eine SchichtEr verwechselt zwei Anwendungsfälle
Reichweite eines FehlersGeteilte Helfer betreffen andere Fälle mitBleibt im Ordner

Die Reichweite von Seiteneffekten

Der zweite Begriff neben Lokalität ist die Reichweite: Wie weit strahlt eine Änderung an einer isolierten Stelle aus? Explizite Schnittstellen und durchgesetzte Abhängigkeitsregeln halten sie klein, und zwar mechanisch. Eine Regel, die nur in einer Absprache existiert, hält einen Agenten nicht auf.

⚠️
Der Umbau auf Anwendungsfälle ist die teuerste Maßnahme in dieser Lesson und die falsche erste. Sie steht hier am Anfang, weil sie erklärt, warum alles Weitere nötig ist, nicht weil du morgen damit anfangen solltest. Die Priorisierung steht im Schlussschritt.
Übung: Lokalität zählen

Aufgabe: Nimm eine echte Änderung, die du in den letzten zwei Wochen gemacht hast. Keine ausgedachte.

  1. Zähl die Dateien, die du geändert hast.
  2. Zähl die Dateien, die du gelesen hast, ohne sie zu ändern. Das ist die Zahl, die für Agenten zählt.
  3. Wie viele davon lagen in einem gemeinsamen Ordner?

Die zweite Zahl ist meistens die größere und wird beim Aufräumen fast immer übersehen. Sie ist das, was ein Agent bei derselben Aufgabe bezahlt.

Zeitaufwand: ~10 Minuten

Takeaway
Regel 1: Miss dein Repository an der Zahl der Dateien, die eine einzige fachliche Änderung berührt. Was zusammen geändert wird, gehört zusammen abgelegt.
Schritt 3 von 8

AGENTS.md

Schritt 2 – Was in die Agenten-Doku gehört und was nicht

Ein Werkzeugkoffer mit Schaumeinlage, in die für jedes Werkzeug eine passgenaue Aussparung geschnitten ist

Für Agenten-Anweisungen hat sich ein offenes Dateiformat durchgesetzt: AGENTS.md im Wurzelverzeichnis, bei Bedarf zusätzlich in Unterordnern. Der Agent nimmt jeweils die nächstgelegene Datei im Verzeichnisbaum.

📅
Verbreitung, Stand Juli 2026. Über 60.000 Open-Source-Projekte nutzen das Format, darunter Apache Airflow und das Java-SDK von Temporal. Unterstützt wird es unter anderem von GitHub Copilot, VS Code, Cursor und der Gemini CLI. Verschachtelte Dateien sind ausdrücklich vorgesehen: Das Hauptrepository von OpenAI hatte zum Erhebungszeitpunkt 88 davon. Quelle: agents.md.

Eine README beschreibt, eine AGENTS.md weist an

Das ist der ganze Unterschied, und er entscheidet über den Nutzen. Prosa über die Philosophie des Projekts hilft einem Agenten nicht. Ausführbare Kommandos und harte Grenzen helfen ihm.

Satz aus einer README Fassung für Agenten
Wir setzen auf strikte Typisierung.TypeScript Strict Mode nicht deaktivieren, auch nicht vorübergehend. pnpm typecheck muss grün sein.
Tests liegen neben dem Code.Test zu einer Datei: gleicher Ordner, Suffix .test.ts. Einzeln ausführen mit pnpm test <pfad>.
Das Projekt nutzt pnpm.Nur pnpm. Kein npm, kein yarn. Das Lockfile nicht neu erzeugen.
Einige Legacy-Tests sind kaputt.Tests in packages/legacy sind bekannt rot und werden nicht repariert. Verzeichnis nicht anfassen.

Die rechte Spalte ist in jeder Zeile länger und konkreter. Das ist kein Zufall. Der Wert einer Agenten-Anweisung liegt genau in der Konkretheit, die eine README bewusst weglässt, weil ein Mensch sie sich denken kann.

Der Junior-Test

Die Prüfmethode, mit der du herausfindest, was fehlt: Könnte jemand, der neu im Projekt ist, diese Aufgabe ohne eine einzige Rückfrage erledigen? Jede Stelle, an der die Antwort nein lautet, ist eine Zeile für die Datei.

Was dabei zuverlässig auftaucht, ist das ungeschriebene Wissen, das im Team niemand mehr für erwähnenswert hält.

  • Welche Tests bekannt rot sind und ignoriert werden dürfen
  • In welcher Reihenfolge Pakete gebaut werden müssen
  • Welches Build-Flag lokal nötig ist und in der Pipeline nicht
  • Welcher Ordner generiert wird und deshalb nie von Hand geändert werden darf
  • Welche Bibliothek für einen Zweck gesetzt ist, obwohl drei im Projekt liegen
⚠️
Der häufigste fehlende Inhalt ist der unangenehme. Nicht die schöne Konvention, sondern die Ausnahme, für die sich das Team ein bisschen schämt. Genau daran scheitern Agenten, weil sie die naheliegende Lösung wählen und nicht die historisch gewachsene.

Eine erste Fassung

AGENTS.md
# AGENTS.md

## Kommandos
Install    pnpm install
Build      pnpm build
Test       pnpm test <pfad>
Typecheck  pnpm typecheck
Lint       pnpm lint --fix

## Harte Grenzen
- Nur pnpm. Kein npm, kein yarn. Lockfile nicht neu erzeugen.
- TypeScript Strict Mode nicht deaktivieren, auch nicht temporaer.
- Keine neuen Abhaengigkeiten ohne Ruecksprache.
- packages/legacy nicht anfassen. Tests dort sind bekannt rot.
- src/generated/ wird erzeugt. Nie von Hand aendern.

## Konventionen
- Test liegt neben der Datei, Suffix .test.ts
- Datenvalidierung ausschliesslich mit zod
- Neuer Fall als eigener Ordner: src/<domaene>/<anwendungsfall>/

## Vor der Uebergabe
pnpm check muss gruen sein.
Ohne diese Ausgabe gilt die Aufgabe als offen.
Eine Bildschirmseite ist die Obergrenze, nicht das Ziel. Die Datei wird bei jedem Lauf gelesen und bezahlt. Alles, was nicht in jedem Lauf gebraucht wird, gehört in eine Datei daneben, auf die von hier verwiesen wird. Wie das aussieht, steht im nächsten Schritt.
💡
Zum Nebeneinander der Formate: Es gibt AGENTS.md als werkzeugübergreifendes Format und daneben werkzeugspezifische Dateien wie CLAUDE.md. Die pragmatische Lösung ist, den Inhalt einmal zu schreiben und die zweite Datei darauf verweisen zu lassen. Zwei gepflegte Wahrheiten werden zu zwei ungepflegten.
Übung: Beschreibend wird anweisend

Aufgabe: Nimm die README deines aktuellen Projekts und geh sie mit dem Junior-Test durch.

  1. Markiere jeden Satz, aus dem eine konkrete Handlung folgt.
  2. Schreib jeden markierten Satz in eine Anweisung um: Kommando, Grenze oder Konvention mit Beispiel.
  3. Notier separat, was du beim Lesen ergänzen wolltest, weil es nirgends steht. Das ist der wertvollste Teil.

Ziel ist eine Bildschirmseite. Wenn du deutlich darüber liegst, hast du Erklärungen mitgeschrieben statt Anweisungen.

Zeitaufwand: ~25 Minuten

Takeaway
Regel 2: Agenten-Doku beschreibt nicht, sie weist an. Was ein neuer Mensch erfragen müsste, muss der Agent lesen können, besonders die Ausnahmen.
Schritt 4 von 8

Die Karte

Schritt 3 – Warum eine vorgefertigte Übersicht die Erkundung ersetzt

Eine aufgefaltete technische Zeichnung auf der Werkbank, daneben ein Messingzirkel

Ohne Karte rekonstruiert jeder Lauf die Struktur des Projekts neu. Verzeichnisse auflisten, Dateien öffnen, aus Namen auf Zuständigkeiten schließen. Das Ergebnis dieser Arbeit wird am Ende der Sitzung weggeworfen und beim nächsten Lauf noch einmal erzeugt.

Eine Architekturkarte ist die vorgefertigte Antwort auf diese Erkundung: eine statische Übersicht, die einmal erzeugt und danach gelesen wird.

Was hineingehört

  • Modulgrenzen: welche Bereiche es gibt und wofür jeder zuständig ist
  • Abhängigkeitsrichtung: wer darf wen benutzen, und wer ausdrücklich nicht
  • Wo was liegt: Einstiegspunkte, Konfiguration, generierte Bereiche
  • Konventionen mit einem Beispiel statt mit einer Erklärung
  • Bekannte Fallstricke: die Stellen, an denen schon dreimal jemand hereingefallen ist
⚠️
Die Karte hat einen Preis: sie kann veralten. Eine falsche Karte ist schlechter als keine, weil der Agent ihr glaubt. Zwei Gegenmittel: grob halten, damit sie selten falsch wird, und ihre Aktualisierung an dieselbe Stelle hängen, an der Struktur ohnehin geändert wird.

Das Prinzip dahinter kennst du bereits

🔗
Progressive Disclosure. In Agent Skills steht es auf der Ebene einer einzelnen Fähigkeit: Die Hauptdatei bleibt schlank, Referenzdateien werden geladen, wenn ihr Schritt dran ist. Hier ist es dasselbe Prinzip eine Ebene höher. Neu ist nur der Gegenstand: das Repository statt einer Fähigkeit.

Praktisch heißt das: Der Einstiegspunkt bleibt klein und verweist. Die Karte kommt dazu, wenn Struktur gebraucht wird. Eine Entscheidungsbegründung kommt dazu, wenn jemand sie infrage stellt. Nichts davon wird vorsorglich geladen.

Wie das in einem echten Projekt aussieht

Diese Website liegt in einem Arbeitsbereich mit rund zehn Projekten nebeneinander. Die Agenten-Doku dafür ist auf vier Ebenen verteilt.

Ebene Datei Umfang Inhalt
ArbeitsbereichCLAUDE.md in der Wurzel~100 ZeilenWelche Projekte nebeneinander liegen, wo was produziert wird, Namensregeln
Projektlernen-diy/CLAUDE.md~80 ZeilenStack, Befehle, und ausdrückliche Abweichungen von der Wurzel
Thema.claude/rules/*.md50 bis 85 Zeilen jeVier Dateien: Komponenten, Content, Styling, TypeScript
Aufgabe.claude/skills/nach BedarfWiederkehrende Arbeitsabläufe als eigene Fähigkeiten

Zusammen sind das gut vierhundert Zeilen. Als eine einzige Datei wären sie unbrauchbar, weil jeder Lauf alles lesen müsste. Aufgeteilt liest ein Agent, der an einer Farbdefinition arbeitet, die Styling-Regeln und nicht die Content-Regeln.

Ein Beispiel aus derselben Ablage, das den Nutzen zeigt: Diese Website ist ein Port eines Schwesterprojekts, aber im Hellmodus statt im Dunkelmodus. In der Projektdatei steht das als ausdrücklicher Override, zusammen mit der Anweisung, ältere Dunkelmodus-Angaben zu ignorieren. Ohne diesen Satz bauen Agenten zuverlässig das Falsche, weil die alten Angaben plausibel aussehen und im Repo noch auffindbar sind.

Das ist der eigentliche Wert der lokalen Datei: Sie überschreibt, was weiter oben steht. Ein Agent, der im Projektordner arbeitet, bekommt die Projektwahrheit und nicht die Wurzelwahrheit.

Übung: Die erste Karte

Aufgabe: Lass dir die Karte erzeugen, statt sie zu schreiben.

  1. Öffne eine Sitzung im Wurzelverzeichnis deines Projekts.
  2. Beauftrage eine Übersicht: Modulgrenzen, Abhängigkeitsrichtung, Einstiegspunkte, generierte Bereiche. Maximal zwei Bildschirmseiten.
  3. Lies sie und streich alles, was du für falsch hältst. Diese Streichungen sind der Ertrag der Übung, denn an genau diesen Stellen hat der Agent bisher geraten.
  4. Korrigier die Stellen und leg die Datei ab.

Wiederhol den Lauf danach in einer frischen Sitzung mit der Karte im Kontext und vergleich, wie viele Dateien er diesmal öffnet.

Zeitaufwand: ~30 Minuten

Takeaway
Regel 3: Einstiegspunkt klein halten und verweisen. Was Struktur beschreibt, gehört einmal in eine Karte statt in jedem Lauf neu erkundet zu werden.
Schritt 5 von 8

Ausschließen

Schritt 4 – Was der Agent gar nicht erst lesen soll

Ein Werkstattregal, dessen hintere Fächer mit einem Rollladen verschlossen sind, nur der offene Teil ist beleuchtet

Dieser Hebel wird am häufigsten übersehen, weil er nichts hinzufügt. Er nimmt weg. Und er ist der einzige in dieser Lesson, der an einem Vormittag fertig ist.

Drei Maßnahmen

  1. Ausschlussregeln konfigurieren. Build-Artefakte, generierter Code, Abhängigkeitsverzeichnisse und fremde Pakete gehören programmatisch gesperrt.
  2. Im richtigen Verzeichnis starten. Eine Sitzung, die logisch nur ein Teilpaket betrifft, gehört nicht in die Wurzel eines Monorepos.
  3. Nur auschecken, was gebraucht wird. Über eingeschränkte Arbeitskopien lässt sich der Dateibaum verkleinern, sodass die Suchwerkzeuge des Agenten gar nicht erst auf Irrelevantes stoßen.
⚠️
Der Unterschied zwischen "bitte lies node_modules nicht" im Prompt und einer Ausschlussregel in der Konfiguration ist der Unterschied zwischen einer Bitte und einer Wand. Das Erste hält, bis der Kontext voll wird. Das Zweite hält immer.

Der Monorepo-Fall

Der typische Fehlermodus ist gut beobachtbar: Der Agent arbeitet an einem Backend-Dienst, liest dabei die Konventionen aus einem Frontend-Paket und produziert Code, der im falschen Stil geschrieben ist und die falschen Bibliotheken benutzt. Das ist kein Modellfehler. Das ist ein Kontextfehler.

Daraus wird oft der Schluss gezogen, Monorepos seien für Agenten ungeeignet. Das trifft es nicht. Ein Monorepo ist unproblematisch, wenn die Isolation konfiguriert ist, und problematisch, wenn nicht. Ein Polyrepo erzwingt dieselbe Isolation durch physische Trennung und bezahlt sie mit Aufwand an anderer Stelle.

Symptom Ursache Maßnahme
Falscher Stil, falsche BibliothekKonventionen aus dem Nachbarpaket im KontextEigene Agenten-Doku pro Paket
Agent liest hunderte KonfigurationsdateienSitzung in der Wurzel gestartetIm Zielpaket starten
Kontext läuft ständig vollDer ganze Baum ist sichtbarArbeitskopie auf die relevanten Pfade beschränken
Änderung bricht ein anderes PaketAbhängigkeiten nur per Absprache geregeltAbhängigkeitsregeln im Werkzeug erzwingen

Die Liste, die du fast sicher zu kurz schreibst

  • Abhängigkeitsverzeichnisse und mitgelieferte Fremdbibliotheken
  • Build-Ausgaben und Zwischenverzeichnisse
  • Generierter Code: Schnittstellen-Clients, Migrationen, Typdefinitionen aus Schemas
  • Große Testdaten, Momentaufnahmen und Fixtures
  • Lockfiles
  • Binärdateien und Assets
  • Pakete, an denen gerade nicht gearbeitet wird
  • Archivordner, die aus Sentimentalität liegen geblieben sind
Faustregel für die Prüfung: Gibt es einen Grund, warum ein Agent diese Datei bei einer normalen Aufgabe öffnen sollte? Wenn dir keiner einfällt, gehört sie auf die Liste. Der Zweifelsfall gehört ebenfalls darauf, weil du ihn im Bedarfsfall gezielt öffnen kannst.
Übung: Die Ausschlussliste

Aufgabe: Zwei Durchgänge, der zweite ist der wichtige.

  1. Schreib aus dem Kopf auf, welche Verzeichnisse ein Agent in deinem Projekt nie lesen soll.
  2. Lass dir jetzt die zehn größten Verzeichnisse deines Repos ausgeben, gemessen an Dateianzahl.
  3. Vergleich beide Listen. Was in der zweiten steht und in der ersten fehlt, ist der Teil, den du bisher mitbezahlt hast.
  4. Trag die Regeln in die Konfiguration ein, nicht in den Prompt.

Zeitaufwand: ~20 Minuten

Takeaway
Regel 4: Sperren schlägt bitten. Was ein Agent bei einer normalen Aufgabe nicht öffnen muss, gehört programmatisch ausgeschlossen, und die Sitzung startet dort, wo die Arbeit liegt.
Schritt 6 von 8

Arbeitsgedächtnis

Schritt 5 – Warum der Agent seinen Stand mitschreiben muss

Ein Klemmbrett mit einem leeren Blatt und einem Stift, an einem Nagel neben der Werkbank

Das Kontextfenster ist flüchtig. Wird es voll, fasst das Werkzeug den bisherigen Verlauf zusammen und arbeitet mit der Zusammenfassung weiter. Was in dieser Verdichtung wegfällt, ist verloren, und es fällt genau das weg, was nach Detail aussieht: Dateinamen, Zahlen, der Grund für eine Entscheidung.

Ein Agent, der seinen Zustand nur im Kontext hält, verliert bei jeder Verdichtung den Faden. Er liest die Dateien erneut ein, das Fenster füllt sich wieder, die nächste Verdichtung folgt. Diese Schleife ist teuer und ihr Ergebnis wird mit jedem Durchlauf schlechter.

Auslagern statt behalten

Die Gegenmaßnahme ist einfach: Der Agent führt eine Zustandsdatei. Was erledigt ist, was offen ist, was als Nächstes kommt. Die Datei liegt auf der Platte und überlebt jede Verdichtung.

Zustandsdatei
# Stand: Rechnungsexport

## Ziel
Export der Rechnungen als CSV, Spalten nach docs/adr/012.

## Erledigt
- Datenmodell um exportedAt erweitert
- Migration geschrieben und lokal ausgefuehrt

## Offen
- Betragsformat (Punkt oder Komma) ist ungeklaert
- Test fuer leeren Zeitraum fehlt

## Naechster Schritt
Formatfrage aus docs/adr/012 klaeren, dann Serializer schreiben.
🔗
Das ist dasselbe Muster wie das Übergabedokument aus Token-Ökonomie, nur mit vertauschten Rollen. Dort schreibst du es für die nächste Sitzung. Hier führt der Agent es für sich selbst, während er arbeitet.

Damit das passiert, muss es in der Agenten-Doku stehen. Eine Anweisung wie "Führe während der Arbeit eine Zustandsdatei und aktualisiere sie nach jedem abgeschlossenen Teilschritt" genügt, wenn sie an einer Stelle steht, die jeder Lauf liest.

⚠️
Zustandsdateien gehören nicht ins Repository. Sie sind Arbeitsstand, nicht Ergebnis. Ein festes temporäres Verzeichnis, in der Ignore-Liste eingetragen, mit der Anweisung, nach Abschluss aufzuräumen. Sonst sammeln sich Notizen aus dreißig Läufen im Projekt, die niemand mehr zuordnen kann.

Lesen delegieren

Der zweite Hebel gehört in dieselbe Familie: Der Hauptlauf liest keine großen Dateien und keine langen Ausgaben selbst. Er beauftragt einen Teilagenten, der in seinem eigenen, leeren Kontext analysiert und nur das Ergebnis zurückgibt. Als Größenordnung für die Rückgabe nennt Anthropic ein- bis zweitausend Token.

💡
Ehrliche Einschränkung: Delegation kostet selbst Token, und ein Teilagent, der die Frage falsch verstanden hat, liefert eine saubere Zusammenfassung von etwas Falschem. Das Muster lohnt sich bei großen Lesevorgängen, nicht bei jeder Kleinigkeit. Das Handwerk dazu steht in Agent Skills, die Frage, wann sich mehrere Agenten überhaupt lohnen, in Der Agent-Design-Space.
Übung: Einen Lauf mitschreiben lassen

Aufgabe: Nimm eine Aufgabe, die mehr als zwanzig Minuten Agentenarbeit bedeutet.

  1. Ergänz in deiner Agenten-Doku die Anweisung, eine Zustandsdatei zu führen und nach jedem Teilschritt zu aktualisieren.
  2. Lass den Lauf durchlaufen und lies die Datei danach.
  3. Prüf: Könntest du mit dieser Datei allein weiterarbeiten, ohne den Verlauf zu kennen?
  4. Was fehlt, ergänzt du als Vorgabe in der Anweisung, nicht in der Datei.

Der vierte Punkt ist der Ertrag. Aus einer einmaligen Korrektur wird eine Vorlage für alle künftigen Läufe.

Zeitaufwand: ~20 Minuten plus Laufzeit

Takeaway
Regel 5: Was der Agent wissen muss, um weiterzuarbeiten, gehört auf die Platte und nicht ins Kontextfenster. Große Lesevorgänge gehen an einen Teilagenten und kommen als kurzes Ergebnis zurück.
Schritt 7 von 8

Beweispflicht

Schritt 6 – Aus einer Bitte im Prompt wird eine Eigenschaft des Projekts

Eine Messing-Wasserwaage auf einem Balken, die Libelle steht exakt zwischen den Marken

In Prompts, die halten steht das Prinzip: Ohne Beweis ist nichts fertig, und du verlangst den Beweis im Prompt. Dieser Schritt geht eine Ebene tiefer. Wenn das Repository den Beweis erzwingt, musst du ihn nicht mehr erbitten.

Planen, Ausführen, Prüfen

Der Zyklus ist bekannt: Ziel und Grenzen festlegen, dann ändern, dann verifizieren. Der dritte Schritt ist der, der in der Praxis fehlt, und ohne ihn bricht der Rest zusammen.

⚠️
Ohne maschinelle Prüfebene kann ein Agent nicht wissen, ob seine Änderung trägt. Er behauptet dann, dass sie trägt. Das ist kein Fehlverhalten, sondern die einzige verfügbare Antwort, wenn es keine unbestechliche Instanz gibt, die widerspricht.

Drei Hebel

Hebel Was er bewirkt Was er kostet
Striktes TypsystemDer Compiler zwingt den Agenten, alle abhängigen Stellen mitzuziehen. Ein Compilerfehler ist der präziseste Prompt, den es gibt.Bei Bestandscode Wochen, deshalb schrittweise
Gezielte, schnelle TestsRückmeldung in Sekunden statt in zwanzig Minuten. Nur ausführen, was von der Änderung betroffen ist.Einrichtung, danach Ersparnis
Formatierung nach dem SchreibenEin Haken, der nach jeder Dateiänderung Formatierer und Linter laufen lässt.Eine Stunde

Der dritte Hebel ist der wirtschaftlich unterschätzte. Er verhindert, dass das Modell Ausgabe-Token für Einrückungen, Anführungszeichen und Importreihenfolgen erzeugt. Ausgabe ist die teure Seite der Rechnung, und Formatierung ist deterministisch. Sie gehört der lokalen Maschine, nicht dem Modell.

🔗
Warum Ausgabe die teure Seite ist, rechnet Token-Ökonomie durch. Kurzfassung: Ausgabe-Token kosten ein Mehrfaches der Eingabe, und alles, was ein Modell schreibt statt liest, schlägt entsprechend stärker durch.

Ein Kommando statt fünf

Damit der Agent überhaupt prüfen kann, braucht er einen Einstiegspunkt. Fünf einzelne Kommandos in der Doku bedeuten, dass er drei davon vergisst.

check
#!/usr/bin/env bash
set -e

pnpm typecheck        # Typen
pnpm lint             # Stil und offensichtliche Fehler
pnpm test --changed   # nur betroffene Tests
pnpm knip             # toter Code, ungenutzte Exporte

echo "OK"

Der Wert liegt nicht im Skript, sondern darin, dass es genau ein Kommando gibt, das eine eindeutige Antwort liefert, und dass dieses Kommando in der Agenten-Doku als Abgabebedingung steht. Dasselbe Skript läuft danach als Haken vor jedem Commit und in der Pipeline. Drei Orte, eine Wahrheit.

Der Satz, der den Unterschied macht, steht in der AGENTS.md aus Schritt 2 ganz unten: Ohne die Ausgabe dieses Kommandos gilt die Aufgabe als offen. Damit ist "sieht fertig aus" kein zulässiger Endzustand mehr.
Übung: Wer erzeugt die Formatierung?

Aufgabe: Zwei Teile, beide messbar.

  1. Nimm den letzten größeren Agentenlauf und sieh dir das Diff an. Schätz, welcher Anteil der geänderten Zeilen reine Formatierung war: Einrückung, Anführungszeichen, Importreihenfolge, Leerzeilen.
  2. Richte einen Formatierungs-Haken ein, der nach jeder Dateiänderung läuft.
  3. Wiederhol eine vergleichbare Aufgabe und sieh dir das Diff erneut an.

Wenn der Anteil im ersten Durchgang unter fünf Prozent lag, hast du das Problem nicht und kannst dir den Haken sparen. Bei den meisten Projekten liegt er deutlich darüber.

Zeitaufwand: ~20 Minuten

Takeaway
Regel 6: Ein Kommando, das grün oder rot sagt, ersetzt jede Bitte um Sorgfalt. Was deterministisch erzeugt werden kann, erzeugt die Maschine und nicht das Modell.
Schritt 8 von 8

Zusammenfassung

Die sechs Regeln, die richtige Reihenfolge und dein nächster Zug

Sechs Werkzeuge hängen in einer Reihe an einer Werkzeugwand, jedes an seinem Platz

Die sechs Regeln

# Regel Kern
1Lokalität ist die KennzahlWas zusammen geändert wird, gehört zusammen abgelegt
2Anweisen statt beschreibenBesonders die Ausnahmen, für die sich das Team schämt
3Einstiegspunkt klein halten und verweisenStruktur einmal in eine Karte, nicht in jeden Lauf
4Sperren schlägt bittenAusschlussregeln in die Konfiguration, nicht in den Prompt
5Zustand gehört auf die PlatteWas eine Verdichtung überleben muss, darf nicht im Kontext liegen
6Ein Kommando sagt grün oder rotDer Beweis wird Eigenschaft des Projekts statt Bitte im Prompt

Die Reihenfolge

Alle sechs Regeln gleichzeitig anzugehen ist der zuverlässigste Weg, keine davon umzusetzen. Nach Aufwand und Wirkung sortiert ergibt sich eine klare Folge.

Maßnahme Aufwand Wirkung
Agenten-Doku mit Kommandos und harten GrenzenEin NachmittagSofort spürbar
Ausschlussregeln setzenEine StundeSofort spürbar
Formatierungs-Haken einrichtenEine StundeSchnell, direkt auf der teuren Seite
Ein Prüfkommando bündelnEin halber TagBeendet das Raten über Fertigsein
Zustandsdatei anweisenZehn Minuten plus GewöhnungGroß bei langen Läufen
Architekturkarte erzeugen und pflegenEin Tag plus PflegeDeutlich bei großen Projekten
Sitzungen im richtigen Verzeichnis startenGewohnheitsänderungDeutlich bei Monorepos
Typsystem verschärfenWochen bei BestandscodeGroß, aber langsam
Umbau auf AnwendungsfälleMonateAm größten, und trotzdem zuletzt
Die ersten vier Zeilen sind zusammen etwa ein Tag Arbeit und decken den größten Teil des Nutzens ab. Die letzte Zeile ist die, mit der die meisten anfangen wollen. Genau deshalb kommen sie nie bei den ersten vier an.

Der Selbsttest

  • Wie viele Dateien liest ein Agent bei einer typischen Änderung, ohne sie zu ändern?
  • Welche Regel schreibst du regelmäßig von Hand in Prompts, obwohl sie immer gilt?
  • Welches ungeschriebene Wissen würde eine neue Person am ersten Tag erfragen?
  • Welche Verzeichnisse deines Repos hat ein Agent zuletzt gelesen, ohne dass es einen Grund gab?
  • Gibt es ein einziges Kommando, das eindeutig sagt, ob eine Änderung trägt?

Was bleibt

Der Befund dieser Lesson ist unbequem und praktisch zugleich. Wer mit Agenten arbeitet und unzufrieden ist, sucht den Fehler meistens beim Modell oder beim Prompt. In den seltensten Fällen liegt er dort. Er liegt in dem, was das Projekt über sich selbst nicht sagt.

🔗
Von hier aus weiter: Prompts, die halten für die Prompt-Seite derselben Arbeit. Token-Ökonomie für die Frage, was Kontext kostet und wie er verfällt. Der Stack hinter einer KI-App für die Werkzeuge, mit denen gebaut wird. Agent Skills für wiederkehrende Arbeitsabläufe als eigene Fähigkeiten.
Übung: Ein Tag Agent-Ready

Aufgabe: Die ersten vier Zeilen der Reihenfolge an einem Projekt umsetzen, in genau dieser Folge.

  1. Agenten-Doku auf einer Bildschirmseite: Kommandos, harte Grenzen, Konventionen mit je einem Beispiel.
  2. Ausschlussliste in die Konfiguration, nicht in den Prompt.
  3. Formatierungs-Haken nach jeder Dateiänderung.
  4. Ein Prüfkommando, das alles bündelt, plus den Satz in der Doku, dass ohne dessen Ausgabe nichts fertig ist.

Danach dieselbe Art Aufgabe wie letzte Woche noch einmal an den Agenten geben und zwei Dinge vergleichen: wie viele Dateien er öffnet und wie oft du korrigierend eingreifst.

Zeitaufwand: ~4 Stunden

Takeaway
Der Kern: Ein Repository ist für einen Agenten kein Ort, sondern ein Prompt. Was es über sich selbst sagt, bestimmt, was er darin leisten kann. Der Umbau der Architektur ist dabei die letzte Maßnahme, nicht die erste.
Rico Loschke

Rico Loschke

KI-Stratege & Übersetzer zwischen Tech und Business

15+ Jahre Digitalisierung, 4+ Jahre KI. Ich übersetze zwischen Technologie und Unternehmensstrategie, berate und trainiere Organisationen auf ihrem KI-Weg. Hier teile ich, was ich dabei lerne.

loschke.ai. Visionen, Konzepte, Meinungen →
unlearn.how

Diese Lessons gibt es auch als Team-Training.

Workshops, Seminare und Begleitung für Unternehmen, die KI nicht nur verstehen, sondern anwenden wollen.

Mehr erfahren →