Modul 4
Praktische Arbeit mit Claude Code
Tag 2 · ca. 105 Minuten
Lernziel Modul 4
Der Teilnehmer beherrscht den täglichen iterativen Arbeitszyklus inkl. Review-Loops, Approvals und Session-Management.
- In kleinen Schritten arbeiten — ein iterativer Zyklus statt einem Riesen-Auftrag; jeder Schritt bleibt überprüfbar (Verifiable Outputs).
- Jeden Schritt abnehmen — Review-Loops und Approvals bewusst setzen (Human in the Loop) und merken, wann ständiges Bestätigen zur „Approval Fatigue" wird.
- Die Session bewusst führen —
--continue/--resume, /compact//clear, Token-Budget und Prompt-Caching im Blick.
„Beherrscht" heißt hier Bedienkompetenz, nicht nur Verständnis — deshalb ist Modul 4 das mit dem höchsten Live-Demo-Anteil.
Der tägliche Zyklus
Die Schleife selbst kennt ihr aus dem Chat.
Geändert hat sich, was am Ende herauskommt: kein Text zum Überfliegen, sondern ein Artefakt (Datei, Test, RFC) — und das kostet Prüfzeit statt Lesezeit.
eine Iteration — bis es passt
Daten
Promptwas du willst
Prozess
Claude arbeitetCode · Diff · Testlauf
Daten
ArtefaktRFC · Java · Test
Antwortwas gemacht wurde
passt nicht? — Refinement-Prompt zurück zum Anfang · passt? — fertig
Prozess
Daten
Die richtige Iterationsgröße:
a) Ergebnis in 2 Minuten beurteilbar — genau richtig.
b) Dauert es länger — zu großer Schritt, zu viel des Guten (aufteilen).
Zuschnitt einer Iteration
Zwei Hebel machen einen Schritt abnehmbar: der Zuschnitt bestimmt die Größe, die Formulierung nennt die konkreten Abnahmebedingungen.
Zu groß — nicht abnehmbarImplement booking cancellation for the seminar API.
Eine Iteration — abnehmbarAdd a failing test for cancelling a booking that is
already cancelled. It must expect HTTP 409 and the
message "booking already cancelled".
Do not touch BookingService yet.
Run `mvn test -Dtest=BookingCancelTest` and show
me the failure output.
Ein abnehmbarer Zuschnitt nennt drei der fünf Bausteine (Modul 3):
- Was genau — das Ziel, klein gehalten (ein Test, kein ganzes Feature).
- Was ausdrücklich nicht — die Randbedingung: „Do not touch BookingService yet".
- Woran man Fertig sieht — das Abnahmekriterium: HTTP 409, Test-Output.
Kopierfertig: Anhang · Vorlagen
AI Self-Check, Review Loops & Human in the Loop
Was der Agent selbst prüfen kann
Vier Selbstprüfungen, absteigend nach Objektivität.
Die ersten drei nutzt jeder; der stärkste Hebel ist der vierte — und er fehlt in der Praxis fast immer.
- Kompilieren und Tests laufen lassen — der objektivste Self-Check überhaupt: das Ergebnis kommt nicht vom Modell.
- Den eigenen Diff nochmal lesen — „Read your own diff and list anything that doesn't belong" findet erstaunlich viel: Debug-Ausgaben, halbe Umbenennungen, vergessene TODOs.
- Gegen eine Checkliste prüfen — eine Liste im Repo schlägt eine Liste im Kopf: sie ist bei jedem Lauf dieselbe.
- Einen frischen Reviewer ansetzen — ein Subagent ohne die Vorgeschichte sieht den Code, nicht die Begründung dafür. Er ist nicht auf die Lösung eingeschworen, weil er sie nicht mitentwickelt hat (Modul 8).
Grenze aller vier: Wer den Code geschrieben hat, hat auch die Annahme geschrieben, unter der er richtig aussieht.
Selbstprüfung findet Schlampigkeit — nicht Missverständnisse.
Definierte Punkte statt permanenter Kontrolle
„Human in the Loop" heißt nicht danebensitzen und zusehen — wer dauernd zusieht, hat keinen Produktivitätsgewinn und wird trotzdem unaufmerksam.
- Vor dem Losgehen — ist das überhaupt die richtige Aufgabe? Der teuerste Fehler ist der perfekt umgesetzte falsche Plan.
- Beim Abbiegen — der Agent nimmt einen Weg, den ihr nicht wolltet. Sofort stoppen, nicht „mal schauen, wo der Agent rauskommt".
- Vor dem Wirksamwerden — Commit, Push, Deploy, Migration, Datenlöschung. Alles, was außerhalb eures Rechners Folgen hat.
vor dem Losgehen
der Agent arbeitet
beim Abbiegen
der Agent arbeitet weiter
vor dem Wirksamwerden
Commit · Push · Deploy
orange: hier steht ein Mensch — dazwischen nicht
Dazwischen darf der Agent arbeiten.
In Modul 5 werden aus diesen drei Punkten formale Gates — dieselben Stellen, nur aufgeschrieben.
Den Diff lesen — die Mindestpflicht
Was nicht reicht
„Tests sind grün, passt."
Die Zusammenfassung des Agenten lesen statt den Diff.
400 geänderte Zeilen durchscrollen und nicken.
Was reicht
Jede geänderte Datei einmal angesehen — warum ist sie geändert?
Jede Datei, die euch überrascht, ist ein Fund.
Änderungen, die nicht zur Aufgabe gehören, gehören raus.
Die Zusammenfassung des Agenten ist generierter Text über den Code, nicht der Code.
Beides klingt gleich überzeugend (Modul 1).
Approvals & Approval Fatigue
Permissions sind eine Vertrauensgrenze
Bevor der Agent ein Werkzeug benutzt, entscheidet eine Regel: erlaubt, nachfragen oder verboten.
allow
Läuft ohne Rückfrage. Für alles Harmlose und Häufige: lesen, suchen, Tests laufen lassen.
ask
Der Standardfall. Der Agent hält an und fragt — das ist die Voreinstellung für Unbekanntes.
deny
Wird gar nicht erst angeboten. Für alles, was ihr nie bestätigen wollt.
Die Regeln liegen als Konfiguration im Repo — damit sind sie versioniert, reviewbar und für das ganze Team gleich (Modul 10).
checked am 2026-07-21 gegen claude --help
Approval Fatigue
Was tatsächlich passiert
Minute 1–5: jede Rückfrage wird gelesen.
Minute 5–20: überflogen.
Ab Minute 20: Enter, Enter, Enter.
Die Rückfrage, auf die es ankam, war Nummer 47.
Die Gegenmaßnahme
Die Zahl der Rückfragen so weit senken, dass jede einzelne wieder Aufmerksamkeit verdient.
Das Harmlose freigeben, das Gefährliche verbieten — nicht abfragen.
Wer alles einzeln bestätigen muss, bestätigt nach 20 Minuten blind.
Das ist gefährlicher als weniger Rückfragen — weil es sich sicher anfühlt.
Wege aus der Rückfrage-Flut
Weniger Rückfragen bekommt ihr auf drei Arten — und sie unterscheiden sich darin, wer die Entscheidung trifft.
/permissions
Regeln vorab
ihr entscheidet, einmalschriftlich und nachlesbar
Harmloses erlauben, Gefährliches verbieten — der Standardweg
acceptEdits
ihr entscheidet, pro Diffnur Dateien; Befehle fragen weiter
gut, solange ihr ohnehin jeden Diff lest
auto-Modus
ein Klassifikator entscheidetprüft im Hintergrund, statt zu fragen
bequem — aber die Entscheidung ist nicht mehr nachlesbar
bypassPermissions
niemand entscheidetkein Weg aus der Flut, sondern der Verzicht auf die Grenze
Modul 9
von oben nach unten wandert die Entscheidung von euch weg
Regeln sind Entscheidungen, die stehen bleiben; ein Klassifikator ist eine Einschätzung pro Fall.
Für alles, was unumkehrbar ist, wollt ihr die Entscheidung — nicht die Einschätzung.
checked am 2026-07-26 gegen code.claude.com/docs/permission-modes
Echtes Beispiel: das Gefährliche verbieten
Ausschnitt aus einem produktiv genutzten Projekt (cgsit-finance) — .claude/settings.json.
{
"permissions": {
"allow": [ "Read(**)", "Write(**)", "Bash(**)" ],
"deny": [
"Bash(rm -rf /)",
"Bash(git push --force *)",
"Bash(git reset --hard*)",
"Bash(git clean -fd*)",
"Bash(docker compose down -v*)",
"Bash(*DROP TABLE*)",
"Bash(aws rds delete-db-instance*)",
"Bash(aws s3 rm*--recursive*)",
"Bash(*pastebin*)", "Bash(*transfer.sh*)"
]
}
}
Breit erlauben, gezielt verbieten.
Die deny-Liste ist kurz, lesbar und beantwortet die Frage: „Was darf hier nie passieren?"
Die Grenze schriftlich ziehen
„Push & Deploy Policy" aus CLAUDE.md desselben Projekts.
| Aktion |
Regelung |
| Lokale Builds, Tests, Commits | autonom, keine Rückfrage |
| CI-Status abfragen, Logs lesen, Backups ziehen | autonom, nur ankündigen |
git push origin main | autonom, wenn Commits fertig sind |
git push --no-verify (Hook übergehen) | vorher fragen |
| Deploy auf Produktion | immer fragen |
git push --force, alles Destruktive | immer fragen |
Die Entscheidung fällt einmal — nicht bei jeder Rückfrage neu.
Beendet ist nicht abgeschlossen
Beide Sätze heißen „fertig" — aber sie kommen aus verschiedenen Quellen, und nur eine davon ist überprüfbar.
beendet
der Agenthört auf zu arbeiten
„Done“
eine Aussage des Modells
über sich selbst
abgeschlossen
der Agentliefert einen Stand ab
Test · Build · Endpoint
grün
eine Aussage der Welt
über den Code
links urteilt der Beurteilte selbst
Ohne objektives Abnahmekriterium ist eine Agentenaufgabe nicht abgeschlossen, sondern nur beendet.
Modul 1: Der Weg ist nicht-deterministisch — also darf nur das
Ergebnis das Abnahmekriterium sein, nie der Weg dorthin.
Das Abnahmekriterium gehört in den Prompt
Ein Test
Der stärkste Kandidat — und der einzige, der beim nächsten Mal automatisch wieder prüft.
Ein Build
Kompiliert, verlinkt, gepackt. Fängt halluzinierte APIs sofort ab.
Ein laufender Endpoint
curl gegen die gestartete Anwendung: erwarteter Status, erwartete Antwort.
Ein gelesener Diff
Schwächer, aber legitim — und für Doku oder Konfiguration oft das einzig Mögliche.
Eine Suche mit Erwartung
„grep auf das alte Symbol liefert null Treffer" — perfekt für Aufräumarbeiten.
Nicht geeignet
„Sieht gut aus." — „Der Agent sagt, es funktioniert." — „Keine Fehlermeldung."
Kriterium in den Auftrag schreiben
Done when: `mvn test -Dtest=BookingCancelTest` passes,
`mvn clean compile` is green, and `git diff --stat` touches
only BookingService.java and its test. Show me all three outputs.
Long-running & Recurring Tasks
Was passiert, wenn niemand zusieht
Long-running & Recurring Tasks
Long-running
Große Migration, Testsuite nachrüsten, Abhängigkeiten heben.
Läuft lange, produziert viel.
Regeln: in Etappen mit eigenem Abnahmekriterium
zerlegen · Zwischenstand ins Repo schreiben, nicht in die Session
· laute Ausgaben (Test-Logs, Builds) in einen Subagenten auslagern.
Ohne offenes Fenster: claude --bg startet neu,
/bg verschiebt die laufende Sitzung, /fork dupliziert sie.
Verwaltet wird alles mit claude agents.
Vorsicht: der Freigabe-Modus wandert mit. Wer
vorher auf acceptEdits geschaltet hat, lässt die Sitzung
unbeaufsichtigt so weiterarbeiten.
Recurring
Immer gleich, immer wieder: Security-Review vor dem Release,
Doku-Abgleich, Abhängigkeits-Check.
Regeln: nicht jedes Mal neu formulieren —
als Command oder Skill ins Repo legen (Modul 8) und, wo möglich,
in die CI hängen (Modul 9).
Zwei Taktgeber: /loop 5m /befehl wiederholt
lokal in dieser Sitzung; /schedule legt einen
entfernten Agenten auf Cron-Basis an.
Ein langer Lauf ist vor allem ein Kontext-Problem: Die Session, in der er endet, ist nicht mehr die, in der er begann.
checked am 2026-07-27 gegen CLI 2.1.220 (--bg, claude agents)
Session & Context-Lebenszyklus
Die Session ist ein Budget
Aus Modul 1: Sessions wachsen nur — Systemprompt, CLAUDE.md, jede gelesene Datei und jede Testausgabe bleiben drin und fahren bei jedem weiteren Schritt mit.
System + CLAUDE.md
gelesene Dateien
Tool-Ausgaben, Tests, Logs
Verlauf
frei
Wer den Füllstand nicht kennt, merkt das Problem erst an der schlechter werdenden Antwortqualität.
Dann ist es zu spät.
checked am 2026-07-21 gegen Doku
Die Hebel beim Token-Sparen
Erst messen lassen, dann eingreifen: /context rechnet vor, wohin die Tokens gehen — und schlägt die Korrektur gleich mit vor.
- Gezielt lesen statt ganze Dateien — der mit Abstand größte Posten in langen Sessions.
- Große Ausgaben auslagern: Testläufe und Log-Analysen an einen Subagenten (Modul 8) — nur dessen Ergebnis kommt zurück.
- Hooks als Vorfilter: ein Hook grept die Fehlerzeilen heraus, statt 10.000 Zeilen Log durchzureichen.
- CLI statt MCP, wo es geht; ungenutzte Server abschalten (Modul 8b).
- CLAUDE.md schlank halten — Spezialwissen in Skills, das lädt erst bei Bedarf.
- Aufgabenwechsel =
/clear; /compact mit Fokus-Anweisung statt blind.
/context
System prompt 4.2k (0.4%)
System tools 18.4k (1.8%)
Memory files 10.9k (1.1%)
Skills 2.0k (0.2%)
Messages 519.6k (52.0%)
Free space 444.8k (44.5%)
Suggestions
Read results using 3.4m tokens (336%)
-> save ~1m
Use offset and limit to read only the
sections you need.
checked am 2026-07-26 gegen code.claude.com/docs/costs
Welches Werkzeug wann
Zwei wirken innerhalb der laufenden Sitzung, zwei sind Startoptionen am Terminal.
Das ist die häufigste Verwechslung — und die rechte Spalte ist die eigentliche Entscheidung.
| Werkzeug |
Was passiert |
Wann ihr es nehmt |
/clear | Neue Session mit leerem Kontext; die alte bleibt gespeichert | Themenwechsel — immer. Der alte Kontext hilft nicht, er kostet und lenkt ab. |
/compact | Der Verlauf wird durch eine Zusammenfassung ersetzt | Gleiches Thema, Kontext wird eng — erst den Zwischenstand ins Repo, dann kompaktieren. |
claude --continue | Die letzte Unterhaltung in diesem Verzeichnis läuft weiter | Terminal war zu, morgen genau da weiter. |
claude --resume | Auswahl einer früheren Unterhaltung (Picker oder Session-ID) | „Welche von den fünfen war das nochmal?" |
/compact ist verlustbehaftet — aus dem Verlauf wird generierter Text, und niemand sagt euch, was gefehlt hat.
Zweimal hintereinander komprimiert ihr die Zusammenfassung einer Zusammenfassung: dann lieber Handoff schreiben und /clear.
checked am 2026-07-21 gegen Doku
Vor dem /compact: extrahieren
Aus der Praxis
In der Session wurde eine Konvention vereinbart, ein Fehlschlag analysiert und eine Architektur-Entscheidung begründet. Nach dem /compact stand in der Zusammenfassung: „Diverse Verbesserungen besprochen."
Was nur im Verlauf lebt, überlebt die Kompaktierung nicht. Es muss vorher in eine Datei.
| Was in der Session entstanden ist |
Wohin es gehört |
| Projektweite Regel, Policy, Workflow | CLAUDE.md |
| Konvention für einen bestimmten Bereich | Rules-Datei im Projekt |
| Architektur-Entscheidung mit Begründung | docs/<thema>.md bzw. RFC |
| Stand der laufenden Aufgabe | Handoff-Datei (nächste Folie) |
| Nichts davon — nur Rauschen | darf verschwinden |
Vorbild: docs/compaction-checklist.md aus einem produktiven Projekt.
Der Handoff
Ein Handoff ist das, was ihr einem Kollegen hinlegen würdet, der die Aufgabe morgen ohne euch zu Ende bringt — genau das ist die nächste Session auch.
Prompt vor dem Context-Reset
Write HANDOFF.md before we reset the context. Include:
1. Goal — what we are building, in two sentences
2. State — what is done, what is not, which files changed
3. Decisions — what we chose and what we rejected, with the reason
4. Verification — the exact commands that must pass when it is done
5. Next step — the single next action for a fresh session
Facts only. No summary prose. Anything not written down is lost.
Der Test für einen guten Handoff: Die frische Session macht damit weiter — ohne dass ihr etwas nacherzählen müsst.
Wo Kosten und Kontext-Hygiene sich widersprechen
Dieses Modul gibt euch zwei Ratschläge, die gegeneinander ziehen: Eine lange stabile Session ist billiger, weil der unveränderte Anfang wiederverwendet statt neu verarbeitet wird — und jeder Themenwechsel gehört trotzdem in ein /clear.
Beides stimmt.
- Der Konflikt ist echt, nicht scheinbar — ein
/clear wirft den wiederverwendbaren Anfang weg. Ihr zahlt ihn beim nächsten Schritt noch einmal.
- Auflösung: Qualität gewinnt. Sobald die Antworten schlechter werden, ist der Kontext teurer als der Cache. Tokenkosten sind fast immer kleiner als eine Stunde Entwicklerzeit für einen Fehllauf.
- Was beide Ziele bedient: Modell, Aufwandsstufe und Werkzeuge vor der Arbeit festlegen. Ein Wechsel mittendrin zerreißt den Anfang, ohne dass ihr etwas dafür bekommt.
Wie der Cache technisch funktioniert — Präfix-Prinzip, was ihn zerreißt, wie lange er hält: Modul 3.
Hier zählt nur die Konsequenz für den Arbeitstag.
checked am 2026-07-26 gegen code.claude.com/docs/prompt-caching
Daily AI Usage
Ein realistischer Tag — und die Zusammenfassung
Daily AI Usage — ein realistischer Tag
1Session starten, Kontext setzen. Im Projektverzeichnis, damit CLAUDE.md und Regeln greifen. Erste Frage: Was ist der Stand?
2Aufgabe zuschneiden. Ein Ticket, nicht ein Projekt. Abnahmekriterium vorher festlegen und in den Prompt schreiben.
3Iterieren. Arbeiten lassen, Diff lesen, verifizieren, korrigieren. Zwei Minuten pro Abnahme.
4Commit als Wasserstandsmarke. Kleine Commits sind der billigste Rückwärtsgang — und die einzige Stelle, an der der Agent nichts kaputtmachen kann.
5Themenwechsel = /clear. Nicht „ich mach im selben Fenster noch schnell was anderes".
6Bei langen Aufgaben: Zwischenstand ins Repo, dann kompaktieren oder neu starten. Nie ungesichert weiterlaufen lassen.
7Tagesende: aufräumen. Gelerntes in CLAUDE.md oder docs/, offener Stand in den Handoff, Commits gepusht.
Modul 4 in fünf Sätzen
- Arbeitet in Iterationen, die ihr in zwei Minuten abnehmen könnt.
- Der Self-Check des Agenten findet Schlampigkeit — Missverständnisse findet nur der Mensch.
- Konfiguriert Permissions bewusst: das Gefährliche verbieten, statt das Harmlose einzeln zu bestätigen.
- Ohne objektives Abnahmekriterium ist eine Aufgabe beendet, nicht abgeschlossen.
- Führt die Session bewusst: extrahieren, dann
/compact oder /clear — und alles Wichtige liegt im Repo, nicht im Verlauf.
Das sind die fünf Handgriffe für Montag.
Modul 5 macht daraus einen durchgehenden Phasen-Workflow mit Gates und Artefakten.
Übung 4 — über einen Context-Reset hinweg
Aufgabe
Beginnt in seminar-api eine Aufgabe mit klarem Abnahmekriterium
— zum Beispiel: Stornieren einer bereits stornierten Buchung liefert
HTTP 409 mit einer verständlichen Meldung, abgesichert durch einen Test.
Arbeitet bis etwa zur Hälfte.
Dann: HANDOFF.md schreiben lassen /clear
in der frischen Session nur mit dem Handoff weiterarbeiten.
Keine Nacherzählung aus dem Kopf.
Verifizierbares Ergebnis: Der Test ist grün und
der Handoff hat gereicht — ihr könnt benennen, welche Information
gefehlt hat und in welchen der fünf Abschnitte sie gehört hätte.
Dauer ca. 30 Minuten · Einzel- oder Paararbeit
© 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 4 · v0.11.5