Modul 7

Codebase & Projektorganisation

Tag 3 · ca. 75 Minuten

Inhalt

Lernziel Modul 7

Der Teilnehmer kann eine Codebase „agent-ready" machen — navigierbar, verifizierbar, mit sauberen Handoff-Artefakten.

  1. Navigierbar — Struktur, Befehle und Konventionen stehen im Repo, damit der Agent nicht raten muss.
  2. Verifizierbar — es gibt ein Orakel, an dem der Agent selbst merkt, ob er danebenlag.
  3. Handoff-Artefakt — der Zwischenstand überlebt den Context-Reset, weil er als Datei vorliegt.
Drei Worte, drei Folienstrecken — alles andere in diesem Modul ist Werkzeug für eines dieser drei Ziele.

Agent-ready Codebases

Die Leitfrage des Moduls

Was macht eine Codebase für einen Agenten gut bearbeitbar?
  1. Navigierbar — der Agent findet die richtige Stelle, ohne das halbe Repo zu lesen.
  2. Verifizierbar — der Agent kann selbst feststellen, ob seine Änderung trägt.
  3. Saubere Handoffs — der Stand überlebt das Ende einer Session.

Die Antwort steht wörtlich im Lernziel. Mehr braucht es nicht.

„Agent-ready" ganz konkret

Eindeutige Einstiegspunkte

Ein Ort, an dem steht, was dieses Projekt ist und wo es anfängt.

Sprechende Namen

Ordner, Module, Klassen, Tests. Der Agent sucht über Namen — wie ihr.

Ein Befehl, der alles baut

Nicht sieben Schritte aus dem Confluence-Artikel von 2023.

Ein Befehl, der alles testet

Und der auf einem frisch geklonten Rechner grün ist.

Schnelles Feedback

Ein 40-Minuten-Build ist für einen iterierenden Agenten unbrauchbar.

Keine ungeschriebenen Regeln

„Das machen wir hier immer so" steht nirgends — also gilt es nicht.

Der Woche-1-Test

Beleg aus einem echten Projekt: cgsit-finance beginnt seine CLAUDE.md mit einer Quick-Reference-Tabelle — genau die Fragen der ersten Woche, in Befehlsform.

Was ein neuer Kollege in Woche 1 fragt, muss im Repo beantwortet sein — nicht im Kopf des Seniors.
What Command
Compile backendmvn clean compile
Backend unit testsmvn test
Frontend unit testsnpx ng test --watch=false
Local dev DB up / seed / reset./scripts/dev-db.sh up | seed | reset
Prod version checkcurl .../auth/version

Dieselbe Tabelle versorgt Mensch und Agent.

Clean Codebase & Project

Kostet den Agenten Kontext

Auskommentierte Code-Leichen und toter Code — der Agent liest sie als gültig.

Drei Konfigurationswege für dasselbe, zwei davon veraltet.

Generierte Artefakte im Repo, die bei jeder Suche mittreffen.

Ordnernamen wie utils2, new, tmp.

Spart dem Agenten Kontext

Eine Wahrheit pro Sache — ein Build, ein Testbefehl, ein Config-Ort.

Löschen statt aufheben. Git erinnert sich, der Agent nicht.

Konsistente Struktur: gleiche Schichtung in jedem Modul.

Ein .gitignore, das Generiertes wirklich draußen hält.

Jede Unordnung ist ab jetzt doppelt teuer: sie verwirrt Menschen und sie verbraucht Tokens (Modul 1).

CLAUDE.md & Pitfalls

Warum diese Datei anders ist

Das Modell ist stateless (Modul 1) — CLAUDE.md ist das repo-verankerte Gedächtnis, das automatisch in jeden Aufruf gerät: Was hier steht, muss niemand mehr in den Chat tippen.

Session am Montag
Kontextfenster
CLAUDE.md
Bugfix im Import
frei
Session am Dienstag
Kontextfenster
CLAUDE.md
neuer Endpunkt
frei
Session am Mittwoch
Kontextfenster
CLAUDE.md
Doku aufräumen
frei
blau: dieselbe Datei, dreimal bezahlt — grau: der Rest der Sitzung
Und genau deshalb ist jede Zeile Dauerkosten: sie wird in jeder Session mitbezahlt — auch in den 90 %, in denen sie nichts beiträgt.
checked am 2026-07-21 gegen Doku

Was hineingehört

Befehle

Bauen, testen, starten, deployen — kopierfertig, nicht beschrieben.

Grobarchitektur

Welche Module gibt es, wer darf wen aufrufen, wo liegt was.

Harte Regeln

Was verboten ist und warum — besonders die teuer gelernten.

Der Workflow

In welcher Reihenfolge gearbeitet wird, wo die Gates sitzen.

Verweise auf Details

Zeiger nach docs/ statt Volltext — der wichtigste Trick.

Konventionen mit Ort

Nicht „wir testen viel", sondern „Tests liegen hier, so benannt".

Was nicht hineingehört

Selbstverständlichkeiten

„Schreibe guten, wartbaren Code" — steuert nichts, kostet Tokens.

Duplikate zu docs/

Zwei Wahrheiten driften auseinander. Verlinken statt kopieren.

Geheimnisse

Passwörter, Tokens, Prod-Zugänge. Die Datei ist im Repo — für alle.

Tutorials

Wie Spring/Quarkus funktioniert, weiß das Modell besser als euer Text.

Projekthistorie

Was 2022 mal war, gehört ins Changelog, nicht in den Systemkontext.

Persönliche Notizen

Session-Zustand und Privates gehören nicht in ein Team-Artefakt.

Die typischen Pitfalls

Pitfall Warum es weh tut Gegenmittel
Zu langNiemand liest es — das Modell auch nicht wirklich. Bei voller Datei verlieren einzelne Regeln ihre Wirkung.Kürzen, verlinken, auslagern
SelbstverständlichkeitenVerwässert die echten Regeln, kostet in jeder Session TokensStreichen ohne Reue
Veraltete AngabenSchlimmer als keine — der Agent befolgt sie zuverlässig und läuft in die falsche RichtungSame-Commit-Mandate (gleich)
Duplikate zu docs/Zwei Wahrheiten, eine driftet — und niemand merkt, welcheVerweis statt Volltext
GeheimnisseLandet im Git-Verlauf, in Forks, in jedem KlonEnv-Vars, Secret-Store
WunschdenkenBeschreibt, wie das Projekt sein sollte, nicht wie es istIst-Zustand dokumentieren
Der gefährlichste ist veraltet: eine fehlende Regel merkt man beim Review.
Eine falsche Regel wird befolgt.

Ein echtes Exemplar

cgsit-finance/CLAUDE.md — gewachsen über ein Jahr Projektarbeit, 1246 Zeilen.
Was drinsteht:

Abschnitt Funktion
Quick ReferenceAlle Befehle in einer Tabelle
Local EnvironmentEine wiederkehrende Fehlannahme ein für alle Mal ausgeräumt
RFC Planning DisciplineWann ein RFC entsteht, wie er zerlegt werden darf
Development Workflow15 nummerierte Schritte, jeder mit Pflichtlektüre verlinkt
Same-Commit Documentation MandatesTrigger-Tabelle Code Doku
Project DocumentationNur Verweise — ~30 Links nach docs/
Auto-Loaded Rules / SkillsWas sich wann von selbst lädt, was man rufen muss
Ehrliche Einordnung: 1246 Zeilen sind an der Obergrenze des Sinnvollen. Genau deshalb arbeitet die Datei mit Verweisen statt Volltext — die Tiefe liegt in docs/, die Datei ist der Wegweiser dorthin.

CLAUDE.md pflegen

Die Datei verrottet wie jede Doku.
Für die Pflege gibt es ein Plugin von Anthropic aus dem offiziellen Marktplatz — zwei Werkzeuge, zwei Zeitpunkte.

  1. Prüfen: claude-md-improver findet alle CLAUDE.md im Repo, bewertet sie gegen eine Punkte-Rubrik, schreibt einen Bericht — und ändert erst nach eurer Freigabe.
  2. Nachtragen: revise-claude-md geht die laufende Session nach Erkenntnissen durch (Befehle, Stolpersteine, Konventionen) und ergänzt sie.
  3. Die Rubrik ist der eigentliche Wert: Befehle · Architektur-Klarheit · nicht-offensichtliche Muster · Knappheit · Aktualität · Umsetzbarkeit. Das ist eine Checkliste, auch ohne Werkzeug.
  4. Freigabe bleibt bei euch: Der Skill darf schreiben — er fragt vorher. Genau die Grenze aus Modul 4.
/plugin install claude-md-management@claude-plugins-official
/reload-plugins

# danach als namensraum-gebundene Befehle:
/claude-md-management:claude-md-improver
/claude-md-management:revise-claude-md

# im Plugin steckt beides:
skills/claude-md-improver/SKILL.md 179 Zeilen
  references/quality-criteria.md die Rubrik
  references/templates.md
  references/update-guidelines.md
commands/revise-claude-md.md
Nebenbei ein Musterbeispiel für Modul 8: ein Bündel aus Skill und Command, im Namensraum des Plugins — und das Referenzmaterial liegt neben der SKILL.md, lädt also erst bei Bedarf.
checked am 2026-07-26 gegen claude-md-management v1.0.0 (claude-plugins-official)

Doc-Discipline: erweitern statt duplizieren

2026-05-18 Der Agent legte ein neues Dokument docs/test-data-strategy.md an — weil er den Verweis auf docs/testing.md in der CLAUDE.md zwar sah, die Datei aber nie öffnete. Die vorhandene 600-Zeilen-testing.md enthielt das Kapitel bereits. Ergebnis: ein verschwendeter Commit, danach zusammenführen und löschen. erst grep in docs/, dann das Inhaltsverzeichnis lesen — nicht nur den Dateinamen.
  1. Grep first. Gibt es zum Thema schon etwas? Titel reicht nicht — Inhaltsverzeichnis öffnen.
  2. Erweitern schlägt duplizieren. Ein neues 200-Zeilen-Dokument zersplittert die Auffindbarkeit.
  3. Neues Dokument sofort verlinken. Im gleichen Commit an den Workflow-Schritt hängen, der es braucht.
so ging es schief
Verweis gesehen,
Datei nie geöffnet
testing.md
test-data-strategy.md
so geht es
grep, dann
Inhaltsverzeichnis
testing.md
Kapitel ergänzt
rot: das Dokument, das es schon gab

Same-Commit Documentation Mandates

Eine Tabelle im Repo: „Änderst du X, aktualisierst du Doku Y im GLEICHEN Commit." Auszug aus cgsit-finance:

Wenn du änderst… MUSST du im selben Commit aktualisieren
security*-Tabellenschemadocs/securities-domain-model.md
portfolio*-Tabellenschemadocs/portfolio-domain-model.md
Scheduler-Eintrag oder @Scheduleddocs/schedulers.md + Manifest-Builder
Neue Asset-Klassedocs/asset-types.md + AssetTypeRegistry
Neue/gedroppte CREATE TABLE-Migrationdocs/data-model-index.md
Neue Backend-Env-Variabledrei Stellen: .env.example + docker-compose.yml + docs/deployment.md
Begründung im Original Kein „Follow-up-Doku-Pull-Request (PR)". Der Erfahrung nach passiert das Follow-up nie — und die Doku verrottet binnen Wochen. Genau das war die Ursache eines Datenfehlers im Mai 2026: das Domänenmodell-Dokument war veraltet, jemand handelte danach, der Fehler landete in Produktion. Doku-Schulden werden nie zurückgezahlt — also darf man sie gar nicht erst aufnehmen.
Prüfbar gemacht: vor dem Commit git diff --staged --name-only gegen die Trigger-Spalte halten.
Treffer = Doku-Update jetzt.

RFCs & Tickets als Planungsartefakt

Der RFC: Warum und Wie, vor dem Code

Ein RFC ist ein Markdown-Dokument im Repo — eine Datei pro Vorhaben, fortlaufend nummeriert, mit Index.
Pflichtfelder aus dem Template:

RFC-Type

Feature | Refactor | Migration | Cleanup — entscheidet, ob in Phasen geliefert werden darf.

Done-Definition

Nicht „Checkliste abgehakt", sondern „die versprochene Eigenschaft existiert in Prod" — plus der Beweis.

Problem Statement

Welches Problem — nicht welche Lösung.

Alternatives Considered

Was verworfen wurde und warum. Das ist der Teil, den man später sucht.

Design-Freigabe

Ein Haken. Davor: null Zeilen Code.

Implementation Checklist

Der Arbeitsstand — und damit ein natürliches Handoff-Artefakt.

Status-Modell: Draft Accepted In Progress Done — der Statuswechsel ist jeweils ein Gate.

RFC + Ticket oder nur Ticket?

Situation Artefakt(e) Warum
Neues Feature, neues Modul, ArchitekturänderungRFC + TicketEntscheidungen müssen dokumentiert und reviewbar sein
Mehrschrittige Umsetzung (> 1 Tag, mehrere PRs)RFC + Sub-TicketsEin RFC, mehrere Arbeitseinheiten
Übergreifendes RefactoringRFC + TicketViele Dateien betroffen, die Begründung zählt
Neuer Endpoint mit nicht-trivialem KontraktRFC + TicketKontrakt vor dem Code festhalten
DB-Migration mit DatenformänderungRFC + TicketMigrationsplan muss reviewbar sein
Bugfix, klarer Scope, < wenige StundenNur TicketTitel + Beschreibung reichen
UI-Politur, Textänderung, kleiner CSS-TweakNur TicketKein Spec-Dokument wert
Reine Doku-ÄnderungKein ArtefaktEinfach committen
Hotfix im IncidentNur TicketTempo zuerst — RFC ggf. später nachziehen
Im Zweifel RFC + Ticket: 30 Zeilen RFC sind billig — die Design-Absicht später aus der Commit-Historie zu rekonstruieren, ist teuer.

Zwei Artefakte im Gleichschritt

Der RFC hält fest, warum und wie; das Ticket hält fest, wer und wann.
Getrennt gehalten, weil das eine mitversioniert wird und das andere nicht.

im Repo, mit dem Code versioniert
docs/rfcs/README.mdder Index: eine Zeile je RFC
mit Status und Ticket-Link
RFCwelches Problem, welche Lösung,
was verworfen wurde, wann fertig
verweisen
aufeinander
außerhalb: GitHub, Jira
Ticketwer macht es, wann,
in welchem Zustand
die Rahmen sind die Grenze: was mitversioniert wird und was nicht
Beide referenzieren einander.
Der docs/rfcs/README.md ist der Index: eine Zeile pro RFC mit Status, betroffenen Modulen und Ticket-Link — die Landkarte aller offenen Vorhaben, die der Agent lesen kann.

Context Resets & Markdown Handoffs

Der Agent vergisst planbar

Modul 1: stateless.
Modul 4: /compact und /clear sind Werkzeuge, keine Notbremsen — beides zusammen ergibt eine einfache Regel:

Arbeiten
Handoff
schreiben
Reset
Handoff
lesen
Weiter
Der Zwischenstand wird in eine Markdown-Datei geschrieben — bevor zurückgesetzt wird.
Danach ist er nicht mehr da, um geschrieben zu werden.

Was in einen guten Handoff gehört

  1. Ziel. Was soll am Ende wahr sein? Ein Satz, prüfbar formuliert.
  2. Stand. Was ist fertig, was ist angefangen, welche Dateien sind angefasst, welcher Branch, welche Version.
  3. Nächster Schritt. Genau einer, konkret — nicht „weitermachen".
  4. Offene Entscheidungen. Was noch niemand entschieden hat — inklusive der Frage an den Menschen.
  5. Fallstricke. Was in dieser Session schiefging und beim nächsten Anlauf wieder schiefgehen würde.
Handoff-Skelett — docs/handoff/2026-07-21-booking-cancel.md # Ziel Stornierung einer Buchung gibt den Seminarplatz frei. Nachweis: BookingCancelTest gruen. # Stand - BookingResource.cancel() implementiert, kompiliert - SeminarService.releaseSeat() fehlt noch - Branch feature/booking-cancel, 3 Commits, nicht gepusht # Naechster Schritt releaseSeat() in SeminarService implementieren, dann `mvn test -Dtest=BookingCancelTest` # Offene Entscheidungen - Storno nach Seminarbeginn: erlaubt oder 409? -> Fachbereich fragen # Fallstricke - Testcontainers braucht laufenden Docker-Daemon, sonst 3 Min Timeout ohne Fehlermeldung

Vor /compact oder /clear: extrahieren

Nicht alles aus einer Session ist Zwischenstand — manches ist dauerhaftes Wissen und gehört an einen festen Platz:

Art der Erkenntnis Zielort
Projektweite Regel, Workflow, PolicyCLAUDE.md
Konvention für einen bestimmten Pfad.claude/rules/<thema>.md
Architekturentscheidung, Begründungdocs/<thema>.md
Spezifikation, Arbeitsplandocs/rfcs/NNN-*.md
Stolperstein aus einer Debug-Sessiontasks/lessons.md
Reiner ArbeitsstandHandoff-Datei
Geheimnisse, ZugangsdatenNicht ins Repo — Secret-Store
tasks/lessons.md ist das Langzeitgedächtnis für Fallstricke: ein datierter Abschnitt pro Erkenntnis — was passierte, was die verallgemeinerte Lehre ist, was konkret zu tun ist.

Verifiable Codebase & Agent-ready CI/CD

Der Agent braucht ein Orakel

Modul 1: „Der Compiler ist der beste Halluzinationsdetektor." Verallgemeinert gilt das für alles, was objektiv grün oder rot ist.

Compiler

Erfundene Methoden und falsche Signaturen sterben sofort.

Tests

Das einzige Werkzeug, das fachliche Korrektheit prüft.

Linter & Formatter

Konventionen, die man nicht mehr im Review erklären muss.

Architektur-Tests

„Modul A darf B nicht aufrufen" — als roter Test statt als Satz in der Doku.

CI

Die unabhängige Zweitmeinung: sauberer Rechner, echte Umgebung.

Laufende Anwendung

Der Endpoint antwortet — oder eben nicht.

Ohne Orakel produziert der Agent etwas Plausibles.
Mit Orakel produziert der Agent etwas Richtiges — weil er selbst merkt, wann er danebenlag.

Agent-ready CI/CD

Agent-freundlich

Lokal zuerst. Der schnelle Lauf am eigenen Rechner ist die Iterationsschleife, die CI ist das Sicherheitsnetz am Ende.

Kompakte Ausgabe. Am Ende steht, was rot ist — nicht 800 Zeilen Log davor.

Ein Befehl pro Absicht. Bauen, testen, deployen — je einer.

Ergebnis abfragbar. Der Agent kann den Zustand des letzten Laufs selbst nachsehen.

Agent-feindlich

Nur in der CI testbar. Jede Iteration kostet einen Push und zehn Minuten Wartezeit.

Riesige Logs im Kontext. Ein Testlauf frisst mehr Fenster als die eigentliche Aufgabe (Modul 1).

Handgeschriebene Deploy-Schritte. Sieben Kommandos in der richtigen Reihenfolge, dokumentiert im Kopf.

Flaky Tests. Ein Orakel, das würfelt, ist kein Orakel.

Praktischer Trick: lange Läufe in einen Subagenten auslagern — er liest die 800 Zeilen, zurück kommt nur „grün" oder „3 Fehler in X".
Umsetzung in Modul 8.

Modul 7 in vier Sätzen

  1. Navigierbar: Was ein neuer Kollege in Woche 1 fragt, steht im Repo — Befehle, Struktur, Regeln.
  2. Verifizierbar: Ein Befehl baut, ein Befehl testet, das Ergebnis ist objektiv und kommt schnell.
  3. Handoffs: RFC, Ticket, Handoff-Datei und lessons.md tragen den Stand über jeden Reset hinweg.
  4. Gepflegt: Doku im gleichen Commit wie der Code — sonst ist sie in Wochen falsch, und falsch ist schlimmer als leer.
Nichts davon ist AI-spezifisch.
Neu ist nur, dass es sich jetzt sofort und messbar auszahlt.

Übung 7 — seminar-api agent-ready machen

Aufgabe

Schritt 0 — Messpunkt setzen: Stellt in einer frischen Session eine konkrete Aufgabe an seminar-api, z. B. „Füge dem Buchungs-Endpoint eine Stornierung hinzu, inklusive Test." Notiert: Wie viele Rückfragen? Welche falschen Annahmen? Wie oft musstet ihr eingreifen?

Schritt 1: Schreibt eine CLAUDE.md — Befehle, Struktur, Testkonventionen, die drei Regeln, die euch beim ersten Lauf gefehlt haben. Maximal 60 Zeilen, keine Selbstverständlichkeiten.

Schritt 2: Lasst den Agenten am Ende eine Handoff-Datei schreiben (Ziel, Stand, nächster Schritt, offene Entscheidungen, Fallstricke) und prüft sie.

Schritt 3 — nachmessen: Dieselbe Aufgabe, wieder frische Session, jetzt mit CLAUDE.md.

Verifizierbares Ergebnis: CLAUDE.md und Handoff-Datei liegen im Repo — und ihr könnt die Wirkung konkret benennen: welche Rückfrage entfiel, welche falsche Annahme trat nicht mehr auf, welcher Eingriff war nicht mehr nötig.

Dauer ca. 30 Minuten · Zweiergruppen

© 2026 CGS IT Solutions GmbH

Alle Rechte vorbehalten

Diese Schulungsunterlagen sind urheberrechtlich geschützt. Vervielfältigung, Weitergabe oder kommerzielle Nutzung — auch in Auszügen — nur mit ausdrücklicher schriftlicher Genehmigung der CGS IT Solutions GmbH.

cgsit-claude-training · Modul 7 · v0.11.5