Modul 7

Codebase & Projektorganisation

Tag 3 · ca. 75 Minuten

Lernziel Modul 7

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

Drei Worte, drei Folienstrecken. Alles andere in diesem Modul ist Werkzeug für eines dieser drei Ziele.

Inhalt

Agent-ready Codebases

Was ein Agent an eurem Repo tatsächlich braucht

Clean Codebase & Project

Ordnung als Kontext-Ersparnis

CLAUDE.md & Pitfalls

Das wichtigste Dokument im Repo — und wie man es ruiniert

RFCs als Planungsartefakt

Warum und Wie, bevor Code entsteht

GitHub Issues & Tickets

Spezifikation und Arbeitseinheit im Gleichschritt

Context Resets & Handoffs

Zwischenstand aufschreiben, bevor er weg ist

Agent-ready CI/CD

Feedback, das schnell und lesbar zurückkommt

Verifiable Codebase

Der Agent braucht ein Orakel

Agent-ready Codebases

Die Leitfrage des Moduls

Was macht eine Codebase für einen Agenten gut bearbeitbar?
1Navigierbar — er findet die richtige Stelle, ohne das halbe Repo zu lesen.
2Verifizierbar — er kann selbst feststellen, ob seine Änderung trägt.
3Saubere 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

Was ein neuer Kollege in Woche 1 fragt, muss im Repo beantwortet sein — nicht im Kopf des Seniors.

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

WhatCommand
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

Derselbe Tisch deckt Mensch und Agent ein.

Clean Codebase & Project

Kostet den Agenten Kontext

Auskommentierte Code-Leichen und toter Code — er 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 ihm 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

Modul 1: das Modell ist stateless — Gedächtnis entsteht dadurch, dass bei jedem Aufruf alles wieder mitgeschickt wird.

CLAUDE.md ist genau das: repo-verankertes Gedächtnis, das automatisch in jeden Aufruf gerät. Was hier steht, muss niemand mehr in den Chat tippen.

Und genau deshalb ist jede Zeile Dauerkosten: sie wird in jeder Session mitbezahlt — auch in den 90 %, in denen sie nichts beiträgt.
Ablageorte, Verschachtelung (Projekt / Unterordner / Benutzer) und Import- Mechanik von CLAUDE.md ändern sich mit den Tool-Versionen. Aktuellen Stand vor dem Kurs gegen die offizielle Dokumentation prüfen und live in der Session zeigen. — geprüft am 2026-07-21

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

PitfallWarum es weh tutGegenmittel
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:

AbschnittFunktion
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.

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. Lehre: erst grep in docs/, dann das Inhaltsverzeichnis lesen — nicht nur den Dateinamen.
1Grep first. Gibt es zum Thema schon etwas? Titel reicht nicht — Inhaltsverzeichnis öffnen.
2Erweitern schlägt duplizieren. Ein neues 200-Zeilen-Dokument zersplittert die Auffindbarkeit.
3Neues Dokument → sofort verlinken. Im gleichen Commit an den Workflow-Schritt hängen, der es braucht.

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-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. Lehre: 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?

SituationArtefakt(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

RFC = Warum und Wie

Liegt im Repo, wird mit dem Code versioniert und mit ihm zusammen reviewt.

Beantwortet: welches Problem, welche Lösung, was wurde verworfen, wann ist es fertig.

Ticket = Arbeitseinheit

Liegt außerhalb (GitHub Issue, Jira): offen / in Arbeit / geschlossen, Zuständigkeit, Diskussion.

Beantwortet: wer macht es, wann, in welchem Zustand ist es gerade.

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

1Ziel. Was soll am Ende wahr sein? Ein Satz, prüfbar formuliert.
2Stand. Was ist fertig, was ist angefangen, welche Dateien sind angefasst, welcher Branch, welche Version.
3Nächster Schritt. Genau einer, konkret — nicht „weitermachen".
4Offene Entscheidungen. Was noch niemand entschieden hat — inklusive der Frage an den Menschen.
5Fallstricke. 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 ErkenntnisZielort
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 er 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

1Navigierbar: Was ein neuer Kollege in Woche 1 fragt, steht im Repo — Befehle, Struktur, Regeln.
2Verifizierbar: Ein Befehl baut, ein Befehl testet, das Ergebnis ist objektiv und kommt schnell.
3Handoffs: RFC, Ticket, Handoff-Datei und lessons.md tragen den Stand über jeden Reset hinweg.
4Gepflegt: 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.1.0