Claude · End to end: vom Issue zum gemergten Pull Request
Ein Junior-Entwickler, der ein Ticket übernimmt, einen Fix schreibt und ohne Aufsicht einen saubere Pull Request ererDas Verhältnis von Interaktionen (Likes, Kommentare, Shares) zur Reichweite eines Inhalts. Zeigt, wie stark die Zielgruppe reagiert, gemessen an der Zahl der Personen, die den Inhalt gesehen haben.Vollständige Definition ansehen →öffnet, ist wertvoll. Claude Code kann genau diesen Loop ausführen, und die Fähigkeit, die Sie brauchen, ist nicht „Prompting“, sondern das Orchestrieren eines disziplinierten Developer-Workflows, in dem die KI tippt und Sie das Gate bleiben.
Diese Lektion führt ein realistisches Issue vom Öffnen bis zum Merge. Wir nutzen Claude Code, Anthropics terminalbasierten Coding-Agenten, plus die GitHub-Integration. Die Mechanik lässt sich übertragen, aber worum es geht, ist die Disziplin.
Das Setup: GitHub-Zugang in Claude Code
Claude Code liest und schreibt Ihr lokales 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 Ähnliches 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 vom Terminal aus, damit Sie jeden Schritt mitverfolgen kkDie durchschnittliche Zahl neuer Nutzer, die jeder bestehende Nutzer über Empfehlungen generiert. Über 1,0 verstärkt sich das Wachstum selbst und wird exponentiell.Vollständige Definition ansehen →önnen.
Neuer Begriff: Ein managed agent ist ein von Anthropic gehosteter Agent, der in der Cloud läuft statt 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 können.
Schritt 1: Issue übernehmen und Claude es neu formulieren lassen
Holen Sie das Issue zuerst in den Kontext. Nicht hineinkopieren. 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 wiederkehrenden Kunden doppelt angewendet“ und Claudes Zusammenfassung von Steuerrundung spricht, haben Sie einen Lesefehler erwischt, bevor eine einzige Zeile geändert wurde.
Das ist die günstigste Stelle zum Korrigieren. Nehmen Sie sich hier Zeit.
Schritt 2: Branch-Hygiene vor jedem Code
Ein sauberer Branch pro Issue ist nicht verhandelbar. Er hält Ihren Diff eng, macht Review möglich und erlaubt es, die Arbeit günstig wegzuwerfen, 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: einmal festschreiben, damit Sie es nie wieder eintippen. Claude Code liest eine CLAUDE.md im Repo-Root als dauerhafte Anweisungen für jede Session. Legen Sie die Regeln Ihres Teams dort ab.
## 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. Denken Sie an die README, an die sich der Agent tatsächlich hält. Sie ist die Datei mit der größten Hebelwirkung in einem agentischen Repo.
Die Regel „stop and ask, wenn der Diff ~150 Zeilen überschreitet“ ist wichtiger, als sie aussieht. Kleine Diffs sind keine Stilfrage; sie sind die einzigen Diffs, die ein Mensch wirklich reviewen kann. Ein 600-Zeilen-PR aus KI-Feder ist ein Rubber Stamp, der nur darauf wartet, passiert zu sein.
Schritt 3: Implementieren, mit Tests als Vertrag
Jetzt lassen Sie Claude arbeiten. Der entscheidende Zug: Tests sind die Spezifikation, 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 das wirksamste GuardrailGuardrailRegeln und Kontrollen, die ein KI-System in sicheren, rechtskonformen und markengerechten Grenzen halten und unerwünschte Ausgaben blockieren.Vollständige Definition ansehen → 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 Vibes.
Claude wird typischerweise:
- Einen Test schreiben, der den Double-Discount-Bug reproduziert, und ihn fehlschlagen sehen.
- Die Rabattlogik anpassen.
- Die Suite erneut laufen lassen, bis sie grün ist.
- Berichten, was geändert wurde und warum.
Beobachten Sie den Loop. Wenn Claude anfängt, unbeteiligte Dateien zu bearbeiten oder Dinge zu „verbessern“, um die Sie nicht gebeten haben, unterbrechen Sie (Esc) und verengen Sie den Scope. So werden aus kleinen Diffs nicht reviewbare.
Claude Code: agentic coding in the terminal
Schritt 4: Den Diff selbst reviewen, lokal
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 im Issue verlangt wurde, und nichts anderes?
- 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 sinnvoll, oder prüft er etwas trivial Wahres?
Claude ist gut darin, plausiblen Code zu produzieren. Plausibel ist nicht korrekt. Das Diff-Review ist die Stelle, an der Sie aus „sieht richtig aus“ ein „ist richtig“ machen. 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: Committen und den PR eröffnen
Sobald der Diff Ihr Review passiert hat, committen Sie mit einer Message, die das Issue referenziert, und erö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: Der Body erklärt das *Warum* und die Verifikation, nicht nur das *Was*. Der Diff zeigt bereits, was geändert wurde. Eine gute PR-Beschreibung sagt dem Reviewer, was er prüfen soll.
Wissenscheck
1. Was ist laut Lektion die entscheidende Fähigkeit, um mit Claude Code einen Issue-to-PR-Loop effektiv zu fahren?
2. Warum bestehen die Autoren darauf, Claude Issue #214 mit gh abrufen zu lassen, statt den Text selbst hineinzukopieren?
3. Was ist der didaktische Zweck, 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 in der Lektion genannten Gründe, für jedes Issue einen sauberen Branch zu erstellen.
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. Hier melden sich Teamkollegen und CI, und Sie sollten ihn als zweites, unabhängiges Gate behandeln.
Wenn Sie die @claude-GitHub-App installiert haben, kö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 approven zu lassen. KI-Review von KI-Code findet mechanische Probleme (Off-by-one, unbehandelte Nulls, fehlende Test-Branches). Es findet nicht „dieser ganze Ansatz ist für unsere Domäne falsch“. Dieses Urteil bleibt menschlich.
Lassen Sie CI laufen. Ist die PipelinePipelineAlle aktiven Verkaufschancen über die Phasen des Vertriebsprozesses hinweg, zusammen mit ihrem gesamten potenziellen Wert und ihrer Abschlusswahrscheinlichkeit.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 approved und CI grün ist, mergen Sie. Bevorzugen Sie einen Squash-Merge, damit die unordentliche Iterationshistorie des Branches in einen 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 automatisch, dank der Zeile Closes #214. Ihr lokales main ist aktuell. Der Feature-Branch ist weg, lokal und remote. Sie sind bereit für das nächste Ticket, ohne Restzustand.
Dieses letzte 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 leistungsfähigen Coding-Agenten ist, die Checkpoints zu entfernen: ein riesiger Prompt, ein riesiger Diff, ein Merge. In der Demo funktioniert das, in der Produktion scheitert es, denn der Failure Mode von LLMLLMEin Large Language Model ist ein KI-System, das auf riesigen Textmengen trainiert wurde, um Sprache vorherzusagen und zu erzeugen. Damit sind Aufgaben wie Schreiben, Zusammenfassen und Beantworten von Fragen möglich.Vollständige Definition ansehen →-Code ist nicht „kaputt und offensichtlich“, sondern „plausibel und subtil falsch“.
Der Loop, den Sie gerade gefahren haben, begegnet dem mit Struktur, nicht mit Vertrauen:
- Die Neuformulierung des Issues fängt Missverständnisse vor dem Code ab.
- Die Small-Diff-Regel hält die Änderung reviewbar.
- Der erst fehlschlagende, dann bestehende Test macht Korrektheit überprüfbar statt angenommen.
- Das menschliche Diff-Review ist das Gate, das das Modell nicht selbst passieren kann.
Schreiben Sie das in CLAUDE.md fest, und es gilt automatisch für jede Session. Die Disziplin wird zu Infrastruktur statt zu Willenskraft.
Für die tieferen Automatisierungsmuster (diesen Loop unbeaufsichtigt in CI laufen lassen, mehrstufige Agenten, eigene Tools über MCPMCPEin offener Standard, mit dem KI-Assistenten einheitlich und kontrolliert an die Werkzeuge und Daten des Unternehmens angebunden werden, statt jede Integration einzeln zu bauen.Vollständige Definition ansehen →) 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 einer harten Diff-Größengrenze, die Claude zwingt, anzuhalten und zu fragen. Dauerhafte Anweisungen schlagen PromptingPromptingPrompt Engineering ist die Praxis, Texteingaben so zu gestalten und zu verfeinern, dass große Sprachmodelle präzise, relevante und verlässliche Ergebnisse liefern.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 approven 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 niemals das Modell approven, 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