End to end: vom Issue zum gemergten Pull Request
# End to end: vom Issue zum gemergten Pull Request
Ein Junior Engineer, der ein Ticket übernimmt, einen Fix schreibt und ohne Aufsicht einen saubereren Pull Request ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen →öffnet, ist wertvoll. Claude Code kann genau diesen Loop durchlaufen, und die Fähigkeit, die Sie dafür brauchen, ist nicht „PromptingPromptingPrompt engineering is the practice of designing and refining text inputs to guide large language models toward accurate, relevant, and reliable outputs.Vollständige Definition ansehen →“, sondern das Orchestrieren eines disziplinierten Developer-Workflows, in dem die KI tippt und Sie das Gate bleiben.
Diese Lektion begleitet ein realistisches Issue von der ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen →öffnung bis zum Merge. Wir nutzen Claude Code, Anthropics terminalbasierten Coding-Agenten, plus die GitHub-Integration. Die Mechanik lässt sich übertragen, aber der Punkt ist die Disziplin.
Das Setup: GitHub-Zugriff in Claude Code
Claude Code liest und schreibt in Ihrem lokalen Repo. Um den Loop zu GitHub zu schließen (Issues, PRs, Reviews), verbinden Sie es mit Ihrem Remote.
Der sauberste Weg ist die GitHub CLI (gh), die Claude Code direkt als Tool aufrufen kann. Einmal authentifizieren:
gh auth login
cd ~/projects/checkout-service
claudeJetzt kann Claude Code gh issue view, gh pr create und Verwandte in Ihrem Namen ausführen. Es gibt außerdem eine offizielle GitHub-App, @claude, die Sie in einem Repo installieren, um Claude in Issue- und PR-Kommentaren zu erwähnen und direkt in GitHub antworten zu lassen. Für diese serverseitige Variante siehe die Claude Code GitHub Actions Docs. In dieser Lektion steuern wir alles aus dem Terminal, damit Sie jeden Schritt mitverfolgen kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen.
> Neuer Begriff: Ein managed agent ist ein von Anthropic gehosteter Agent, der in der Cloud läuft und nicht auf Ihrem Laptop. Der lokale Claude-Code-Loop, den wir hier fahren, hat dieselbe Form, läuft nur auf Ihrer Maschine, wo Sie ihn unterbrechen kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen.
Schritt 1: Issue übernehmen und Claude es neu formulieren lassen
Holen Sie das Issue zunächst in den Kontext. Kopieren Sie es nicht hinein. Lassen Sie Claude es abrufen, damit der Agent den Retrieval-Schritt selbst verantwortet.
> Read issue #214 with gh. Summarize the bug, the expected
behavior, and what files you'd likely touch. Don't write code yet.Claude führt gh issue view 214 aus, liest es und antwortet mit einem Plan. Diese Neuformulierung ist Ihr erster Checkpoint. Wenn im Issue steht „Rabatte werden bei Bestandskunden doppelt angewendet“ und Claudes Zusammenfassung von Steuerrundung spricht, haben Sie ein Missverständnis erkannt, bevor eine einzige Zeile geändert wurde.
Hier ist Kurskorrektur am günstigsten. Nehmen Sie sich die Zeit.
Schritt 2: Branch-Hygiene vor jeder Codezeile
Ein sauberer Branch pro Issue ist nicht verhandelbar. ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → hält Ihren Diff eng, macht Review möglich und erlaubt es, Arbeit günstig aufzugeben, wenn der Ansatz falsch ist.
Sagen Sie Claude die Konvention beim ersten Mal explizit:
> Create a branch off main named fix/214-double-discount.
We branch from updated main, one branch per issue, never commit
to main directly.Besser: Halten Sie das einmal fest, damit Sie es nie wieder eintippen. Claude Code liest eine CLAUDE.md im Repo-Root als dauerhafte Instruktionen für jede Session. Schreiben Sie die Regeln Ihres Teams dorthin.
## Workflow rules
- Branch from updated `main`, one branch per issue.
- Branch names: `fix/<issue>-<slug>` or `feat/<issue>-<slug>`.
- Never commit to `main`. Never force-push shared branches.
- Keep diffs small. If a change exceeds ~150 lines, stop and ask.
- Every behavior change ships with a test.> Neuer Begriff: CLAUDE.md ist eine einfache Markdown-Datei, die Claude Code automatisch als Projektkontext lädt. Betrachten Sie sie als das README, dem der Agent tatsächlich folgt. Sie ist die Datei mit dem größten Hebel in einem agentischen Repo.
Die Regel „stoppen und fragen, wenn der Diff ~150 Zeilen überschreitet“ ist wichtiger, als sie aussieht. Kleine Diffs sind keine Stilfrage; sie sind die einzigen Diffs, die ein Mensch tatsächlich reviewen kann. Ein 600-zeiliger KI-generierter PR ist ein Abnicken, das nur darauf wartet, zu passieren.
Schritt 3: Implementieren, mit Tests als Vertrag
Jetzt lassen Sie Claude arbeiten. Der entscheidende Schritt ist, Tests zur Spezifikation zu machen, nicht Prosa.
> Reproduce #214 with a failing test first, then make it pass.
Run the suite after each change. Show me the failing test before
you fix anything.Das ist Test-Driven Development, und es ist das wirksamste Guardrail für KI-geschriebenen Code. Der fehlschlagende Test beweist, dass Claude den Bug verstanden hat. Der bestehende Test beweist, dass der Fix funktioniert. Sie reviewen Verhalten, nicht Bauchgefühl.
Claude wird typischerweise:
1. Einen Test schreiben, der den Double-Discount-Bug reproduziert, und ihn fehlschlagen sehen.
2. Die Rabattlogik anpassen.
3. Die Suite erneut laufen lassen, bis sie grün ist.
4. Berichten, was geändert wurde und warum.
Beobachten Sie den Loop. Wenn Claude anfängt, unbeteiligte Dateien zu editieren oder Dinge zu „verbessern“, um die Sie nicht gebeten haben, unterbrechen Sie (Esc) und verengen den Scope. Scope Creep ist der Weg, auf dem kleine Diffs zu nicht reviewbaren werden.
Claude Code: agentic coding in the terminal
Schritt 4: Den Diff selbst lokal reviewen
Bevor irgendetwas GitHub berührt, lesen Sie den Diff. Das ist das menschliche Gate und der Teil des Loops, den Sie niemals delegieren dürfen.
> Show me the full diff with git diff. Walk me through each hunk.Und dann lesen Sie ihn wirklich. Sie achten auf drei Dinge:
- Korrektheit: Tut die Änderung, was das Issue verlangt hat, und nichts sonst?
- Scope: Gibt es heimliche Edits? Ein neu formatierter Import-Block, eine umbenannte Variable in einer unangetasteten Funktion, ein gelöschter Kommentar, der wichtig war?
- Tests: Ist der neue Test aussagekräftig, oder prüft ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → etwas trivial Wahres?
Claude ist gut darin, plausiblen Code zu produzieren. Plausibel ist nicht korrekt. Das Diff-Review ist der Punkt, an dem Sie „sieht richtig aus“ in „ist richtig“ überführen. Wenn Sie einen Hunk nicht verstehen, lassen Sie ihn sich von Claude erklären und entscheiden dann selbst, ob die Erklärung trägt.
Schritt 5: Commit und PR ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen →öffnen
Sobald der Diff Ihr Review passiert hat, committen Sie mit einer Message, die das Issue referenziert, und ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen →öffnen dann den PR.
> Commit with a conventional message referencing #214. Then open
a PR against main. In the body: a one-line summary, what changed,
how it was tested, and "Closes #214".Die Zeile Closes #214 leistet echte Arbeit: GitHub schließt das Issue automatisch, wenn der PR gemergt wird. Claude schreibt einen Body wie diesen:
## Summary
Returning customers no longer receive the loyalty discount twice.
## Changes
- `discount.py`: guard against re-applying loyalty tier in
`apply_discounts()` when one is already present.
- Added regression test `test_loyalty_applied_once`.
## Testing
Full suite green (142 passed). New test fails on `main`, passes here.
Closes #214Beachten Sie, dass der Body das *Warum* und die Verifikation erklärt, nicht nur das *Was*. Der Diff zeigt schon, was geändert wurde. Eine gute PR-Beschreibung sagt dem Reviewer, was ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → prüfen soll.
Wissenscheck
1. Was ist laut Lektion die wesentliche Fähigkeit, um mit Claude Code einen Issue-zu-PR-Loop wirksam zu fahren?
2. Warum besteht die Lektion darauf, Claude Issue #214 mit gh abrufen zu lassen, statt den Text selbst hineinzukopieren?
3. Welchen didaktischen Zweck hat es, Claude das Issue neu formulieren zu lassen (Bug und erwartetes Verhalten zusammenfassen), bevor Code geschrieben wird?
4. Wählen Sie ALLE korrekten Aussagen zur Unterscheidung zwischen einem managed agent und dem in der Lektion beschriebenen lokalen Claude-Code-Loop.
Wählen Sie alle richtigen Antworten aus.
5. Wählen Sie ALLE Gründe, die die Lektion für einen sauberen Branch pro Issue nennt.
Wählen Sie alle richtigen Antworten aus.
Schritt 6: Der PR ist eine zweite Review-Fläche, nutzen Sie sie
Der Pull Request ist keine Formalität. Dort melden sich Teamkollegen und CI, und Sie sollten ihn als zweites, unabhängiges Gate behandeln.
Wenn Sie die @claude GitHub-App installiert haben, kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen Sie einen KI-Review-Durchgang direkt im PR anfordern:
@claude review this PR for edge cases around discount stacking and
suggest any missing test cases.Claude postet Review-Kommentare am Diff. Das ist als *zweites Paar Augen* wirklich nützlich, aber widerstehen Sie der Versuchung, dasselbe Modell, das den Code geschrieben hat, auch freigeben zu lassen. KI-Review von KI-Code fängt mechanische Probleme (Off-by-one, unbehandelte Nulls, fehlende Test-Branches). Es fängt nicht „dieser gesamte Ansatz passt nicht zu unserer Domäne“. Dieses Urteil bleibt beim Menschen.
Lassen Sie CI laufen. Ist die PipelinePipelineAll active sales opportunities across the stages of the sales process, together with their combined potential value and probability of closing.Vollständige Definition ansehen → rot, geben Sie den Fehler zurück:
> CI failed on the lint stage. Pull the logs with gh run view,
fix the issue, and push to the same branch.Claude korrigiert und pusht. Der PR aktualisiert sich an derselben Stelle. Das ist der realistische Rhythmus: implementieren, reviewen, CI, fixen, wiederholen, alles auf einem engen Branch.
Schritt 7: Mergen und aufräumen
Wenn der Diff freigegeben und CI grün ist, mergen Sie. Bevorzugen Sie einen Squash Merge, damit die unordentliche Iterationshistorie des Branches zu einem sauberen Commit auf main zusammenfällt.
> Squash-merge the PR with gh, delete the remote branch, then
switch local back to main and pull.gh pr merge 214 --squash --delete-branch
git checkout main
git pullIssue #214 schließt sich dank der Zeile Closes #214 automatisch. Ihr lokales main ist aktuell. Der Feature-Branch ist weg, lokal und remote. Sie sind bereit für das nächste Ticket, ohne Reststand.
Dieses abschließende Aufräumen ist die Gegenbuchstütze der Branch-Hygiene. Veraltete Branches sammeln sich schnell an, wenn ein Agent sie in Sekunden erzeugen kann. Machen Sie das Löschen zum Teil des Merges, nicht zur Irgendwann-Aufgabe.
Warum dieser Loop unter Druck hält
Die Versuchung bei einem fähigen Coding-Agenten ist, die Checkpoints zu entfernen: ein riesiger Prompt, ein riesiger Diff, ein Merge. In der Demo funktioniert das, in Produktion scheitert es, denn der Failure Mode von LLMLLMA Large Language Model is an AI system trained on vast text data to predict and generate language, enabling tasks like writing, summarizing, and answering questions.Vollständige Definition ansehen →-Code ist nicht „kaputt und offensichtlich“, sondern „plausibel und subtil falsch“.
Der Loop, den Sie gerade gefahren haben, hält dem mit Struktur entgegen, nicht mit Vertrauen:
- Die Neuformulierung des Issues fängt Missverständnisse vor dem Code.
- Die Small-Diff-Regel hält die Änderung reviewbar.
- Der erst fehlschlagende, dann bestehende Test macht Korrektheit überprüfbar, nicht angenommen.
- Das menschliche Diff-Review ist das Gate, das das Modell nicht selbst passieren kann.
Schreiben Sie das in CLAUDE.md, und es gilt automatisch für jede Session. Die Disziplin wird Infrastruktur statt Willenskraft.
Für die tieferen Automatisierungsmuster (diesen Loop unbeaufsichtigt in CI laufen lassen, mehrstufige Agenten, eigene Tools via MCP) sind die Claude Agent SDK Docs die nächste Station. Aber unbeaufsichtigt ist ein Ziel, kein Startpunkt. Verdienen Sie es sich, indem Sie den beaufsichtigten Loop fahren, bis Sie jedem Checkpoint vertrauen.
Key Takeaways
- Schreiben Sie Ihre Workflow-Regeln in `CLAUDE.md`, inklusive Branch-Benennung, der Regel keine direkten Commits auf main und einem harten Diff-Größenlimit, das Claude zum Stoppen und Fragen zwingt. Dauerhafte Instruktionen schlagen PromptingPromptingPrompt engineering is the practice of designing and refining text inputs to guide large language models toward accurate, relevant, and reliable outputs.Vollständige Definition ansehen → pro Session.
- Machen Sie Tests zum Vertrag. Lassen Sie Claude einen fehlschlagenden Test schreiben, der das Issue reproduziert, *bevor* es gefixt wird. Sie reviewen dann überprüfbares Verhalten statt plausibel aussehenden Code.
- Halten Sie Diffs klein genug, um sie wirklich zu lesen. Ein Diff, den ein Mensch nicht reviewen kann, ist ein Diff, den ein Mensch nicht freigeben kann. Unterbrechen Sie Scope Creep, sobald Sie ihn sehen.
- Das menschliche Diff-Review ist das nicht verhandelbare Gate. Lassen Sie Claude (oder
@claude) einen zweiten Durchgang für mechanische Probleme machen, aber nie das Modell freigeben, das den Code geschrieben hat. - Machen Sie Branch-Cleanup zum Teil des Mergens. Squash-Merge, Branch löschen,
mainpullen, damit Sie jedes Ticket aus einem sauberen Zustand starten.
Was Sie aus dieser Lektion umsetzen
Diese Maßnahmen sind im Playbook der Rolle zusammengefasst.
- Eine CLAUDE.md anlegen mit Test-Befehl, Konventionen und Off-limits-Verzeichnissen