Modul 3
Prompting & Context Engineering
Tag 1 · ca. 105 Minuten
Lernziel Modul 3
Der Teilnehmer kann Prompts strukturieren, den Context
bewusst kuratieren und Qualitätsverfall bei vollem
Context-Window erkennen und vermeiden.
Drei Verben: strukturieren, kuratieren, erkennen. Das dritte ist das, was die
meisten Teams nie lernen — und das teuerste.
Inhalt
Prompt-Strukturierung
Vom Zuruf zum Auftrag
Context Engineering & Context Gathering
Was in die Session darf — und was nicht
Context Window & Context Degradation
Lost in the Middle / „Context Rot"
LLM Knowledge Gaps & Hallucinations
Die Lücke, die selbstsicher klingt
Autoregressive Generierung
„Make the Next Token Obvious"
Instruktions-Überladung vermeiden
„Overshooting Prompts"
QRSPI-Prinzipien
Prompting als Haltung, nicht als Formel
Prompt-Strukturierung — fünf Bausteine
Ziel
Was soll am Ende anders sein? Ein Satz, im Ergebnis formuliert — nicht in Tätigkeiten.
Kontext
Wo im Projekt? Welche Dateien, welche Konvention, welches Vorwissen fehlt ihm?
Randbedingungen
Was er nicht anfassen darf. Grenzen sind wertvoller als Wünsche.
Abnahmekriterium
Woran messen wir Erfolg? Test grün, Endpoint antwortet, Build läuft.
Ergebnisform
Diff? Plan? Antwort mit Belegstelle? Sag es, sonst rät er.
Prüffrage: Könnte ein neuer Kollege mit genau diesem Text loslegen,
ohne zurückzufragen? Wenn nein, fehlt einer der fünf Bausteine.
Paar 1 — vom Zuruf zum Auftrag
VorherSomething is wrong with the bookings, seats don't add up. Can you fix it?
NachherGoal: a seminar must never be overbooked.
Context: BookingResource -> BookingService -> BookingRepository.
Seat capacity lives on Seminar.maxSeats. We suspect a race
between two concurrent POST /bookings for the last seat.
Constraints: do not change the REST contract, do not add
new dependencies, stay inside the booking package.
Acceptance: a new test that fails on main and passes after
the fix, plus `mvn test` green.
Output: first a short diagnosis (max 10 lines) with file
and line references. Wait for my OK before changing code.
Der Prompt darf länger sein als die Aufgabe
1Ergebnis vor Tätigkeit. „Ein Seminar darf nicht überbucht werden" schlägt „prüf mal die Kapazität".
2Einstiegspunkt nennen. Eine Klasse, ein Endpoint, ein Testname — das spart ihm zehn Suchläufe und euch die Tokens dafür.
3Negative Grenzen setzen. „Nicht das Schema ändern" verhindert mehr Schaden als drei positive Wünsche.
4Zwischenstopp einbauen. Erst Diagnose, dann Code. Ein falscher Plan kostet 30 Sekunden, ein falscher Umbau eine Stunde.
Zwei Minuten Prompt schreiben ist billiger als zwanzig Minuten Diff lesen,
der in die falsche Richtung geht.
Context Engineering & Context Gathering
Der Prompt ist nur ein Teil der Eingabe
Was beim Modell ankommt, ist weit mehr als das, was ihr getippt habt.
Alles davon konkurriert um dasselbe Fenster:
System
CLAUDE.md
Gelesene Dateien, Tool-Ausgaben, Historie
Prompt
frei
Prompt Engineering ist das Formulieren einer Nachricht.
Context Engineering ist die Entscheidung, was überhaupt
im Fenster liegt — und was rausbleibt.
Context Gathering — wie Kontext hineinkommt
Ihr liefert
Dateien nennen, Ausschnitte einfügen, Fehlermeldung reinkopieren. Präzise, aber Handarbeit.
Er sucht selbst
Grep, Dateibaum, Lesen. Bequem — und die häufigste Quelle für unbemerkt vollgelaufene Fenster.
Werkzeuge liefern
Build-, Test- und Git-Ausgaben. Ein einziger roter Build kann tausende Tokens bedeuten.
Das Repo liefert
CLAUDE.md fährt bei jedem Aufruf mit — der einzige Kontext, der nie vergessen wird (Modul 7).
Kuratieren heißt: das Wenigste hineingeben, mit dem die
Aufgabe lösbar ist — nicht das Meiste, das hineinpasst.
Paar 2 — Kontext einsammeln lassen
VorherRead the whole project and explain how the booking flow works.
NachherQuestion: what happens between POST /bookings and the row
being written to the database?
Start at BookingResource. Follow only the call chain, do not
read tests, do not read the frontend module.
Answer in at most 12 lines, one line per hop, each with
file:line as evidence. If a hop is unclear, say so instead
of guessing.
Nicht „lies alles" — sondern Startpunkt, Suchrichtung,
Abbruchkriterium und Antwortlänge.
Context Window & Context Degradation
Das Fenster ist eine Obergrenze — kein Ziel
Jedes Modell hat ein maximales Fenster in Tokens. Zwei Missverständnisse
sind weit verbreitet:
Mythos
„Großes Fenster = ich kann alles reinkippen."
„Solange nichts abgeschnitten wird, ist alles gleich gut nutzbar."
„Volles Fenster ist nur ein Kostenproblem."
Realität
Die Aufmerksamkeit verteilt sich über alles, was drin liegt.
Je mehr Irrelevantes, desto mehr Konkurrenz für das Relevante.
Volles Fenster ist ein Qualitätsproblem — die Rechnung ist nur der sichtbare Teil.
Konkrete Fenstergrößen stehen bewusst nicht auf dieser Folie — sie ändern
sich pro Modellgeneration. Aktuellen Stand vor dem Kurs in der offiziellen
Dokumentation prüfen und mündlich ergänzen; die Auslastung der laufenden Session
lässt sich in Claude Code live zeigen. — geprüft am 2026-07-21
Lost in the Middle / „Context Rot"
Information am Anfang und am Ende des
Kontexts wird zuverlässiger verwertet als Information in der
Mitte. Der Effekt heißt Lost in the Middle.
Anfang des KontextsMitteEnde
„Context Rot": Je voller und je länger eine Session läuft,
desto mehr verrottet der Kontext — Vorgaben aus der Mitte verlieren
ihre Wirkung, ohne dass irgendetwas sichtbar abgeschnitten wird.
Woran ihr „Context Rot" erkennt
Wiederholungen
Er erklärt dieselbe Sache nochmal, schlägt eine bereits verworfene Lösung erneut vor, dreht sich im Kreis.
Vergessene Vorgaben
Die Regel von vor einer Stunde („keine neuen Dependencies") gilt plötzlich nicht mehr.
Alte Dateiversionen
Er argumentiert mit einem Stand, den ihr längst geändert habt — die alte Fassung liegt noch im Kontext.
Erfindungen
Methoden und Felder, die es im Projekt nicht gibt. Je voller das Fenster, desto häufiger.
Zähe Antworten
Längere Wartezeiten bei kleiner werdenden Fortschritten.
Themendrift
Er beantwortet eine Frage von vor zehn Schritten statt der aktuellen.
Zwei dieser Symptome hintereinander sind kein Prompt-Problem
— sie sind das Signal, die Session zu schneiden.
Gegenmittel — Kontext-Hygiene
1Kurze Sessions pro Aufgabe. Eine Aufgabe, eine Session. Neu anfangen ist ein Werkzeug, kein Scheitern.
2Wichtiges nach vorn oder nach hinten. Dauerhafte Regeln ins Repo (fahren immer am Anfang mit), aktuelle Vorgaben in den letzten Prompt wiederholen.
3Große Ausgaben draußen halten. Volle Testläufe und Logs gehören gefiltert in die Session — oder in einen Subagenten (Modul 8).
4Schriftlicher Übergabepunkt. Vor dem Schnitt Stand und offene Punkte in eine Datei schreiben lassen — dann ist der Reset verlustfrei.
Die Werkzeuge dafür — /compact, /clear,
--continue, --resume — behandelt
Modul 4 im Detail. Hier zählt die Diagnose, dort die Bedienung.
LLM Knowledge Gaps & Hallucinations
Drei Lücken, ein Symptom
Zeitliche Lücke
Alles nach dem Trainingsstichtag: neue Library-Versionen, geänderte APIs (Modul 1).
Private Lücke
Euer Repo, eure Konventionen, eure Entscheidungen. Nie im Training gewesen.
Situative Lücke
Was in dieser Session nicht im Kontext liegt, existiert für ihn nicht — auch wenn es im Projekt steht.
Alle drei Lücken produzieren dasselbe Symptom: eine flüssige,
selbstsichere, plausible und falsche Antwort. Es gibt keinen
Tonfall-Unterschied zum richtigen Fall.
Paar 3 — Verifikation erzwingen
VorherAdd rate limiting to POST /bookings. Use the Quarkus
annotation for it.
NachherGoal: limit POST /bookings to 10 requests per minute
per client.
Step 1: check what is actually available in this project.
Read pom.xml and list the extensions we already have.
Do not assume an annotation exists - name the source
(dependency, config key or docs page) for whatever you
propose.
Step 2: if nothing suitable is present, say so and give me
two options with their cost, instead of inventing an API.
Only after my decision: implement, plus a test that proves
the 11th request within a minute is rejected.
Autoregressive Generierung verstehen
Ein Token nach dem anderen — und jedes zählt
Das Modell erzeugt keine Antwort als Ganzes. Es erzeugt
ein Token, hängt es an die Eingabe an und erzeugt daraus
das nächste. Autoregressiv heißt: die eigene Ausgabe wird
sofort wieder zur Eingabe.
Kontext
Verteilung über
nächstes Token
Token ziehen
anhängen
Zwei Konsequenzen: Ein früh gezogenes falsches Token
bleibt stehen und beeinflusst alles Weitere —
und ihr könnt die Verteilung nur über den Kontext beeinflussen.
„Make the Next Token Obvious"
Wenn ihr die Fortsetzung nicht erzwingen könnt, macht sie
naheliegend. Gebt dem Modell etwas, das nur noch
fortgesetzt werden muss:
Vorher — Prosa lässt alles offenWrite a method that checks whether a seminar still has
free seats. Make it clean and add a test.
Nachher — Anker statt ProsaImplement exactly this method in BookingService:
boolean hasFreeSeats(Long seminarId)
Follow the style of the existing method cancelBooking:
same transaction handling, same logging, same exception
type for "seminar not found".
Write the test first, in BookingServiceTest, named
hasFreeSeats_returnsFalse_whenSeminarIsFull.
Jeder Anker — Signatur, Nachbarklasse als Muster, Testname
— halbiert den Raum der plausiblen Fortsetzungen.
Instruktions-Überladung vermeiden
„Overshooting Prompts"
Der Reflex nach den ersten guten Erfahrungen: „Wenn Kontext hilft,
hilft mehr Kontext mehr." Also 15 Anweisungen in einen Prompt.
Was tatsächlich passiert:
1–3Die ersten Anweisungen werden erfüllt — sie stehen ganz oben.
4–12Die Mitte verwässert: teilweise erfüllt, teilweise stillschweigend übergangen. Niemand meldet das.
13–15Die letzten Anweisungen werden erfüllt — sie stehen direkt vor der Generierung.
Das ist Lost in the Middle im Kleinen — derselbe Effekt
wie beim vollen Fenster, nur innerhalb einer einzigen Nachricht.
Overshooting entschärfen — drei Schnitte
1Zerlegen. Fünfzehn Anweisungen sind meistens drei Aufgaben. Drei Prompts nacheinander schlagen einen Prompt mit fünfzehn Punkten.
2Verlagern. Was in jedem Prompt steht, ist keine Anweisung, sondern eine Konvention — ab damit ins Repo (CLAUDE.md, Modul 7).
3Sortieren. Was übrig bleibt: das Unverzichtbare an den Anfang und als kurze Abnahmeliste ans Ende. Die Mitte trägt nur Details.
Faustregel: Was nicht im Abnahmekriterium steht, wird vermutlich
nicht geprüft — weder von ihm noch von euch.
QRSPI-Prinzipien als Prompting-Haltung
QRSPI — die Phasenkette
QFrage — Was ist eigentlich das Problem? Offene Punkte klären, bevor irgendetwas gebaut wird.
RRecherche — Wie ist es heute im Code gelöst? Belegstellen sammeln statt aus dem Gedächtnis argumentieren.
SStructure — Was genau soll gelten? Abnahmekriterien und Struktur schriftlich, bevor es Code gibt.
PPlan — In welchen Schritten? Reviewbar, bevor eine Zeile geändert wird.
IImplement — Erst jetzt Code, gegen eine Struktur, die schon steht.
Questions → Research → Structure → Plan → Implement.
Modul 6 ordnet QRSPI im Vergleich zu BMAD und OpenSpec ein —
mit derselben Auflösung.
Haltung, nicht Formular
QRSPI ist an dieser Stelle kein Prozess, den man abarbeitet
— sondern die Frage, die man sich vor jedem Prompt stellt:
„In welcher Phase bin ich gerade?"
Phasen vermischt
„Finde raus, warum das langsam ist, und mach es schneller."
Recherche und Umsetzung in einem Zug — er baut um, bevor irgendwer die Ursache kennt.
Phasen getrennt
„Finde die drei wahrscheinlichsten Ursachen mit Belegstelle. Kein Code."
Danach entscheidet ihr, was spezifiziert und umgesetzt wird.
Der wirksamste Satz in eurem Prompt-Repertoire lautet:
„Kein Code, bevor wir uns einig sind."
Modul 3 in fünf Sätzen
1Ein Prompt braucht Ziel, Kontext, Grenzen, Abnahmekriterium und Ergebnisform — nicht Höflichkeit.
2Context Engineering schlägt Prompt-Formulierung: der getippte Text ist der kleinste Teil der Eingabe.
3Lost in the Middle / „Context Rot" ist erkennbar — an Wiederholungen, vergessenen Vorgaben, alten Dateiständen und Erfindungen.
4Autoregressiv heißt: „Make the Next Token Obvious" — Signatur, Muster und Testfall wirken stärker als Prosa.
5„Overshooting Prompts" zerlegen, Dauerregeln ins Repo verlagern, den Rest an Anfang und Ende sortieren.
Alles in diesem Modul folgt aus einem Satz: Das Modell arbeitet mit
dem, was im Fenster liegt — und mit sonst gar nichts.
Übung 3 — „Overshooting Prompt" entschärfen
Ausgangsprompt (absichtlich überladen)Please refactor the booking feature in seminar-api. Use constructor
injection everywhere. Also add validation. Rename BookingDto to
BookingRequest. Make sure a seminar cannot be overbooked. Add
javadoc to all public methods. Use records where possible. Also
switch the logging to structured logging. Write tests for
everything. Update the OpenAPI description. Make sure the code
is clean and readable. Don't break anything. Also check if the
repository queries are efficient. Add a cancellation endpoint.
Use English for all identifiers. And finally update the README.
Aufgabe
1. Lasst den Prompt einmal so in einer frischen Session laufen
und protokolliert, welche der Anweisungen tatsächlich umgesetzt wurden.
2. Baut ihn um: zerlegen, Dauerregeln verlagern, sortieren, Abnahmekriterium ergänzen.
3. Lasst die umgebaute Fassung in einer zweiten frischen Session laufen.
Verifizierbares Ergebnis: Eine Gegenüberstellung mit
Erfüllungsquote vorher/nachher (wie viele der Anweisungen wurden
nachweislich umgesetzt) plus eine schriftliche Begründung, was ihr entfernt,
verlagert oder umgestellt habt — und warum.
Dauer ca. 30 Minuten · 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 3 · v0.1.0