Zurück zum Blog

Der Spec-First-Entwicklungsworkflow fuer Claude Code

Der Spec-First-Entwicklungsworkflow fuer Claude Code

Es gibt eine wachsende Kluft zwischen Entwicklern, die zuverlaessigen Output von Claude Code bekommen, und Entwicklern, die den halben Tag damit verbringen, rueckgaengig zu machen, was der Agent gerade gebaut hat. Der Unterschied liegt nicht an Talent, Erfahrung oder irgendeinem geheimen Prompt-Engineering-Trick. Es ist eine Frage der Methodik. Die Entwickler, die mit KI-Agents Produktionssoftware ausliefern, sind auf ein Muster konvergiert, ob sie es so nennen oder nicht: definiere, was du willst, bevor der Agent anfaengt, Code zu schreiben.

Dieser Artikel gibt diesem Muster einen Namen. Spec-first-Entwicklung ist eine Methodik fuer KI-gestuetzte Softwareentwicklung. Keine vage "Best Practice." Ein strukturierter, wiederholbarer Lebenszyklus mit definierten Phasen, klaren Checkpoints und konkreten Artefakten bei jedem Schritt. Wenn du nach einem Weg gesucht hast, Claude Code Output vorhersagbar genug zu machen, um deinen Release-Zeitplan darauf zu setzen, dann ist dies das Framework.

Die Grenze des Vibe Coding

"Vibe Coding" tauchte Anfang 2025 im Sprachgebrauch auf. Das Versprechen: beschreibe in natuerlicher Sprache, was du willst, lass die KI es schreiben, iteriere, bis es passt. Fuer Prototypen, Wochenendprojekte und einmalige Skripte funktioniert Vibe Coding. Man bekommt schnell etwas Funktionales, und wenn es spaeter kaputtgeht, sind die Einsaetze gering.

Produktionssoftware unterliegt anderen Einschraenkungen. Der Code muss sich in eine bestehende Codebase integrieren, spezifische Anforderungen erfuellen und den Kontakt mit anderen Menschen ueberstehen, die ihn warten werden. Wenn Vibe Coding auf diese Einschraenkungen trifft, sind die Fehlermodi vorhersehbar.

Das erste Versagen ist Drift. Du beschreibst ein Feature vage, der Agent implementiert seine Interpretation, du korrigierst, der Agent implementiert seine korrigierte Interpretation neu. Drei Iterationen spaeter hast du funktionierenden Code, der keine deiner urspruenglichen Anforderungen erfuellt, weil jede Iteration das Ziel verschoben hat. Du konvergierst auf das, was der Agent glaubt, dass du willst, nicht auf das, was du tatsaechlich brauchst.

Das zweite Versagen sind unsichtbare Entscheidungen. Jede Luecke in deiner Beschreibung ist eine Entscheidung, die der Agent stillschweigend trifft. Datenbankschema, Fehlerbehandlungsstrategie, API-Form, Validierungsregeln, Bibliothekswahl. Du entdeckst diese Entscheidungen beim Code-Review oder, schlimmer noch, in Produktion. Der Agent hat keine schlechten Entscheidungen getroffen. Er hat unbeauftragte Entscheidungen getroffen, und du hattest keinen Mechanismus, sie zu erwischen, bevor sie in die Implementierung eingebacken waren.

Das dritte Versagen ist Review-Lahmung. Ein 600-Zeilen-Diff, bei dem der Agent die Architektur, das Datenmodell, die Fehlercodes und die Edge-Case-Behandlung gewaehlt hat, ist nicht im traditionellen Sinne reviewbar. Du reviewst keinen Code gegen eine Spec. Du rekonstruierst die Spec aus dem Code und entscheidest dann, ob du damit einverstanden bist. Das dauert laenger als das Schreiben der Spec gedauert haette.

Vibe Coding stoesst an eine Grenze, weil es zwei unterschiedliche Aktivitaeten vermischt: entscheiden, was gebaut werden soll, und es bauen. Spec-first-Entwicklung trennt sie.

Spec-First als Methodik

Spec-first-Entwicklung ist ein Vier-Phasen-Lebenszyklus. Jede Phase produziert ein konkretes Artefakt. Jeder Uebergang hat eine klare Gate-Bedingung. Die Methodik funktioniert mit jedem KI-Coding-Agent, aber die Beispiele in diesem Artikel verwenden Claude Code, weil dort die Community am schnellsten iteriert.

Phase 1: Brainstorming

Du und der Agent (oder nur du) erkunden den Problemraum. Was sind die Einschraenkungen? Welche Ansaetze gibt es? Was sind die Kompromisse? Das ist konversationell. Du verpflichtest dich zu nichts. Du kartierst das Terrain.

Die Gate-Bedingung: Du hast einen bevorzugten Ansatz und kannst erklaeren, warum dieser Ansatz und nicht die Alternativen.

Brainstorming mit Claude Code ist wertvoll, weil der Agent breites Wissen ueber Muster und Bibliotheken hat. Der Fehler ist, vom Brainstorming direkt zum Code zu springen. Das Brainstorming zeigt Optionen auf. Es waehlt nicht zwischen ihnen. Das tust du.

Phase 2: Spec

Du schreibst die Entscheidung nieder. Das ist der Vertrag, gegen den der Agent implementieren wird. Eine Spec ist keine User Story, kein Jira-Ticket, kein Prosa-Absatz. Es ist ein strukturiertes Dokument mit:

  • Problembeschreibung: was kaputt ist oder fehlt, in konkreten Begriffen
  • Vorgeschlagener Ansatz: die gewaehlte Loesung aus der Brainstorming-Phase
  • Betroffene Dateien: welche Dateien der Agent anfassen soll (und implizit, welche nicht)
  • Akzeptanzkriterien: testbare Bedingungen, die "fertig" definieren
  • Ausserhalb des Umfangs: was der Agent explizit vermeiden soll

Die Akzeptanzkriterien sind das wichtigste Element. Jedes muss eine konkrete Aktion mit einem beobachtbaren Ergebnis sein. "Authentifizierung sollte funktionieren" ist kein Kriterium. "Gueltige Anmeldedaten ergeben eine 200 mit Session-Token; ungueltige Anmeldedaten ergeben eine 401 ohne Token" ist eines.

Der Ausserhalb-des-Umfangs-Abschnitt verhindert Gold-Plating. Ohne ihn werden Agents angrenzenden Code "verbessern", Dateien refactoren, die ihnen unordentlich aufgefallen sind, oder Features hinzufuegen, die verwandt scheinen. Jede Minute, die der Agent mit nicht angeforderter Arbeit verbringt, ist eine Minute, die du mit dem Review nicht angeforderter Arbeit verbringst.

Die Gate-Bedingung: Jemand, der nicht beim Brainstorming dabei war, koennte diese Spec lesen und das Richtige bauen.

Phase 3: Implementierung

Der Agent arbeitet gegen die Spec. Nicht gegen ein Gespraech. Nicht gegen eine Erinnerung an das, was ihr besprochen habt. Gegen ein konkretes Dokument mit testbaren Kriterien.

Bevor er Code schreibt, erstellt der Agent einen Plan: eine nummerierte Liste der Aenderungen, die er vornehmen will, welche Dateien er aendern wird und wie er das Ergebnis verifizieren wird. Dieser Plan ist ein Zwei-Minuten-Checkpoint. Du liest ihn, bestaetigst, dass er deiner Absicht entspricht, und gibst gruenes Licht fuer die Implementierung. Oder du erkennst ein Missverstaendnis und korrigierst es. So oder so hast du zwei Minuten statt zwanzig investiert.

Das Plan-vor-Code-Muster ist keine Buerokratie. Es ist die einzelne Intervention mit dem hoechsten Hebel im gesamten Workflow. Die meisten Implementierungsfehler sind keine Coding-Fehler. Es sind Verstaendnisfehler: Der Agent hat die Spec missverstanden. Einen Verstaendnisfehler in einem Plan zu erkennen kostet zwei Minuten. Ihn in einem 400-Zeilen-Diff zu erkennen kostet zwanzig. Ihn in Produktion zu erkennen kostet einen Tag.

Die Gate-Bedingung: Der Agent hat einen Abschlussbericht mit spezifischen Aussagen darueber gepostet, was gebaut wurde und wie es verifiziert wurde.

Phase 4: Verifikation

Du oder ein QA-Prozess bestaetigst die Implementierung gegen die Spec. Nicht "sieht es richtig aus?" sondern "erfuellt es jedes Akzeptanzkriterium?"

Verifikation ist mechanisch. Du nimmst jedes Kriterium aus der Spec, fuehrst den Test aus (Befehl ausfuehren, Browser oeffnen, Event ausloesen) und protokollierst das Ergebnis: bestanden oder durchgefallen. Kriterien, die durchfallen, gehen zurueck zu Phase 3. Die Verifikation wird neben der Implementierung dokumentiert, sodass jeder, der die Aufgabe in sechs Monaten liest, genau sehen kann, was getestet wurde.

Die Gate-Bedingung: Jedes Akzeptanzkriterium hat ein protokolliertes Bestanden/Durchgefallen-Ergebnis.

Das ist der vollstaendige Lebenszyklus. Vier Phasen, vier Artefakte (Ansatz-Begruendung, Spec, Implementierungsplan, Verifikationsprotokoll), vier Gate-Bedingungen. Die Phasen sind sequenziell, aber leichtgewichtig. Fuer ein mittelgrosses Feature brauchen Phase 1 und 2 15-20 Minuten. Phase 3 dauert so lange wie die Implementierung. Phase 4 braucht 5-10 Minuten.

Warum das bei Agents wichtiger ist als bei Menschen

Jedes Argument fuer das Schreiben von Specs gibt es schon vor KI. "Schreib Anforderungen vor Code" ist ein Ratschlag, seit bevor die meisten von uns geboren wurden. Warum also das als etwas spezifisch fuer KI-gestuetzte Entwicklung darstellen?

Weil Agents die Kostenfunktion veraendern.

Ein menschlicher Entwickler, der eine vage Anforderung erhaelt, wird anhalten und Fragen stellen. "Meinst du Passwort-Auth oder SSO?" "Soll das auf Mobilgeraeten funktionieren?" "Was passiert, wenn der Token ablaeuft?" Jede Frage ist ein Mini-Checkpoint, der die Implementierung in Richtung des korrekten Ziels schiebt. Die Kosten einer vagen Spec bei einem menschlichen Entwickler sind ein paar Slack-Threads und vielleicht ein Nachmittag Nacharbeit.

Ein Agent, der eine vage Anforderung erhaelt, wird nicht anhalten. Er wird jede mehrdeutige Entscheidung stillschweigend treffen, sich auf einen Ansatz festlegen und dir eine fertige Implementierung praesentieren. Die Kosten einer vagen Spec bei einem Agent sind eine fertige Implementierung, die moeglicherweise komplett falsch ist, plus die Zeit, die du brauchst, um zu entdecken, dass sie falsch ist, plus die Zeit fuer die Nacharbeit.

Die Asymmetrie ist deutlich. Agents sind schneller in der Ausfuehrung und schlechter im Urteilsvermoegen als menschliche Entwickler. Jede Mehrdeutigkeit in der Spec ist eine Urteilsentscheidung, und jede Urteilsentscheidung, die der Agent ohne Anleitung trifft, ist ein Muenzwurf, ob das Ergebnis deiner Absicht entspricht. Eine Spec eliminiert Muenzwuerfe.

Es gibt einen zweiten, subtileren Grund. Agents widersprechen nicht. Ein Senior-Entwickler, der eine schlechte Spec erhaelt, wird sagen "das ergibt keinen Sinn wegen X." Ein Agent wird eine schlechte Spec treu implementieren und treu falschen Output produzieren. Spec-first-Entwicklung zwingt dich, dein eigenes Denken zu ueberpruefen, bevor du es an eine Entitaet uebergibst, die es ohne Frage ausfuehren wird. Die Spec ist nicht nur fuer den Agent. Sie ist fuer dich.

Das ist das Problem, das Beadbox loest.

Echtzeit-Ueberblick ueber alles, was Ihre Agent-Flotte gerade tut.

Kostenlos testen waehrend der Beta →

Der Plan-vor-Code-Checkpoint

Wenn du eine einzige Praxis aus diesem Artikel mitnimmst und den Rest ignorierst, nimm diese.

Bevor der Agent Code schreibt, verlange, dass er einen Implementierungsplan postet. Keinen Code. Kein Diff. Eine strukturierte Gliederung dessen, was er vorhat.

Ein Plan sieht so aus: nummerierte Schritte in Ausfuehrungsreihenfolge, zu aendernde Dateien, Logik-Aenderungen in jeder Datei und der Verifikationsansatz. Der Agent produziert das in etwa dreissig Sekunden. Du liest es in etwa zwei Minuten. In diesen zwei Minuten kannst du erkennen:

  • Scope-Verletzungen: Der Agent plant, Dateien zu aendern, die nicht in der Spec stehen
  • Architektur-Konflikte: Der Agent hat einen Ansatz gewaehlt, der mit bestehenden Mustern kollidiert
  • Fehlende Schritte: Der Plan adressiert ein Akzeptanzkriterium nicht
  • Overengineering: Der Agent plant Abstraktionen, die nicht gerechtfertigt sind

Das 2-Minuten-Plan-Review ersetzt das 20-Minuten-Diff-Review, bei dem du diese Probleme entdeckst, nachdem sie bereits gebaut sind. Es ist das guenstigste Quality Gate in der Softwareentwicklung.

Ich habe eine ausfuehrliche Anleitung zum Plan-vor-Code-Muster in Spec-getriebene Entwicklung mit Claude Code geschrieben, einschliesslich Spec-Vorlagen und Abschlussberichtsformaten. Dieser Artikel konzentriert sich darauf, warum das Muster funktioniert; jener darauf, wie man es implementiert.

Verifikation als vollwertiger Schritt

Die am meisten vernachlaessigte Phase im Workflow der meisten Entwickler ist Verifikation. Der Agent sagt "fertig." Der Entwickler ueberfliegt das Diff. Der Merge passiert. Der Bug taucht zwei Tage spaeter auf, wenn ein Benutzer Edge Case Nummer drei aus den Akzeptanzkriterien trifft.

Spec-first-Entwicklung behandelt Verifikation als formalen Schritt mit eigenen Artefakten. Der Abschlussbericht ordnet jedes Akzeptanzkriterium einem konkreten Check zu:

  • Kriterium: "Workspace-Wechsel stellt den gespeicherten Filterzustand wieder her."
  • Check: App oeffnen, Filter in Workspace A setzen, zu Workspace B wechseln, zurueck zu Workspace A, beobachten, dass Filter wiederhergestellt sind.
  • Ergebnis: Bestanden.

Das ist kein Overhead. Das ist der Schritt, der bestimmt, ob die Implementierung tatsaechlich die Spec erfuellt. Ohne ihn ist die Spec eine Wunschliste und die Akzeptanzkriterien sind aspirativ.

Das Verifikationsprotokoll loest auch ein nachgelagertes Problem: Code-Review. Wenn ein Reviewer den Pull Request oeffnet, liest er die Spec, das Verifikationsprotokoll und reviewt das Diff mit vollem Kontext. Die Review-Zeit sinkt, weil der Reviewer eine verifizierte Aussage bestätigt, nicht eine Untersuchung durchfuehrt.

Wenn du mehrere Agents parallel laufen laesst, jeder eine andere Spec implementierend, ist Verifikationsdisziplin der Unterschied zwischen einer kontrollierten Pipeline und einem Haufen Code, der "wahrscheinlich funktioniert." Jede Spec hat Kriterien. Jede Implementierung hat einen Abschlussbericht. Jeder Abschlussbericht ordnet Kriterien Checks zu. Nichts wird ohne protokollierte Verifikation ausgeliefert.

Einwaende und ehrliche Kompromisse

Spec-first-Entwicklung ist nicht kostenlos. Die Einwaende sind real und verdienen eine direkte Antwort.

"Specs schreiben bremst mich aus." Isoliert betrachtet, ja. Eine Spec fuer ein Feature zu schreiben dauert 15-20 Minuten. Aber du holst diese Zeit (und mehr) in den Implementierungs- und Review-Phasen zurueck. Ein Agent mit einer klaren Spec produziert haeufiger eine korrekte Implementierung als ein Agent mit einem vagen Prompt. Weniger Iterationen, weniger Nacharbeit, kuerzere Reviews. Der Nettoeffekt fuer Features von Substanz ist schnellere Auslieferung, nicht langsamere.

Fuer triviale Aenderungen (Variable umbenennen, Tippfehler beheben, Version erhoehen) sind Specs unnuetiger Overhead. Spec-first ist fuer Arbeit, bei der die Implementierung Entscheidungen erfordert. Wenn die Aenderung mechanisch und eindeutig ist, ueberspringe die Spec.

"Mein Agent ist gut genug ohne Specs." Fuer manche Aufgaben wahrscheinlich wahr. Claude Code ist bemerkenswert faehig, Absichten aus kurzen Beschreibungen abzuleiten. Die Frage ist nicht, ob der Agent guten Output aus vagen Anweisungen produzieren kann. Es ist, ob er es zuverlaessig tut. Wenn du mit gelegentlicher Nacharbeit und unvorhersehbaren Review-Zeiten leben kannst, mag Vibe Coding fuer deinen Anwendungsfall ausreichen. Spec-first zahlt sich aus, wenn Konsistenz und Vorhersagbarkeit zaehlen: wenn das Feature komplex ist, wenn der Code in Produktion geht, wenn jemand anderes ihn warten wird.

"Specs veralten." Berechtigter Einwand. Eine Spec, die waehrend des Brainstormings geschrieben wurde, ueberlebt vielleicht den Kontakt mit der Realitaet nicht. Die Loesung ist nicht, Specs zu ueberspringen. Es ist, die Spec zu aktualisieren, wenn der Plan neue Informationen offenbart. Wenn der Plan des Agents zeigt, dass der Ansatz in der Spec nicht funktionieren wird, ueberarbeite die Spec, bevor du fortfaehrst. Die Spec ist ein lebendes Dokument fuer die Dauer der Implementierung. Sie wird nach der Verifikation zum historischen Dokument.

"Das ist doch nur Waterfall." Nein. Waterfalls Versagen waren grosse Specs fuer grosse Projekte mit langen Feedback-Zyklen. Spec-first-Entwicklung operiert auf Task-Ebene: eine Spec pro Feature oder Fix, in 15-20 Minuten geschrieben, in Stunden implementiert, am selben Tag verifiziert. Die Feedback-Schleife ist eng. Die Investition pro Spec ist klein. Wenn die Spec falsch ist, merkst du es waehrend des Plan-Reviews, nicht sechs Monate spaeter.

Tooling fuer den Spec-First-Lebenszyklus

Die Methodik funktioniert mit jedem Task-System: GitHub Issues, Linear, Notion, einfache Textdateien. Entscheidend ist, dass Spec, Plan, Implementierungsnotizen und Verifikationsergebnisse an einem Ort leben, an eine Aufgabe angehaengt.

Wenn du ein System suchst, das fuer diesen Workflow konzipiert ist: beads ist ein Open-Source, Git-nativer Issue-Tracker, der den vollstaendigen Lebenszyklus abbildet. Jedes "Bead" traegt eine Beschreibung (deine Spec), einen Kommentar-Thread (Plaene und Abschlussberichte), einen Status (open, in_progress, ready_for_qa, done) und Metadaten wie Abhaengigkeiten und Prioritaeten. Das bd CLI arbeitet vom Terminal aus, was bedeutet, dass Agents Specs lesen, Plaene posten und Fertigstellungen melden koennen, ohne ihre Arbeitsumgebung zu verlassen.

bd create --title "Persist filter state across workspaces" \
  --description "## Problem ..." --type feature --priority p2

bd update bb-a1b2 --claim --actor eng1
bd comments add bb-a1b2 --author eng1 "PLAN: ..."

# After implementation:
bd comments add bb-a1b2 --author eng1 "DONE: ... Commit: a1b2c3d"
bd update bb-a1b2 --status ready_for_qa

Der gesamte Lebenszyklus findet im CLI statt. Sechs Monate spaeter liefert bd show bb-a1b2 die vollstaendige Historie dessen, was spezifiziert, geplant, gebaut und verifiziert wurde.

Wenn du einen Agent durch diesen Lebenszyklus fuehrst, reicht das CLI. Wenn du fuenf oder zehn parallel laufen laesst, jeder in einem anderen Stadium der Spec-Implement-Verify-Pipeline, musst du den Zustand der Pipeline auf einen Blick sehen koennen. Beadbox ist ein Echtzeit-Dashboard, das zeigt, welche Specs offen sind, welche Plaene auf Review warten, welche in Arbeit sind, welche blockiert sind und welche zur Verifikation bereit sind. Es ueberwacht dieselbe beads-Datenbank, in die die Agents schreiben, und aktualisiert sich live, wenn sich Status aendern.

Du brauchst Beadbox nicht, um Spec-first-Entwicklung zu praktizieren. Die Methodik ist werkzeugunabhaengig. Aber wenn parallele Arbeitsstroeme deine Pipeline in eine Aufgabenliste verwandeln, die du nicht mehr im Kopf behalten kannst, veraendert die visuelle Ebene, wie schnell du reviewen, entblocken und ausliefern kannst.

Der breitere Wandel

Spec-first-Entwicklung ist keine Reaktion darauf, dass KI-Coding-Agents schlecht sind. Es ist die Erkenntnis, dass sie ohne Anleitung in den falschen Dingen gut sind. Agents sind ausserordentlich faehige Ausfuehrer. Sie schreiben korrekte Syntax, folgen Mustern, erledigen Boilerplate und produzieren ein Volumen, das kein Mensch erreichen kann. Was ihnen fehlt, ist der Kontext, um gute Entscheidungen darueber zu treffen, was gebaut werden soll. Dieser Kontext kommt von dir, und die Spec ist das Mittel.

Die Entwickler, die in der KI-gestuetzten Entwicklung erfolgreich sein werden, sind nicht diejenigen, die die besten Prompts schreiben. Es sind diejenigen, die die besten Specs schreiben. Prompts sind fluechtig. Specs sind dauerhaft. Prompts optimieren fuer eine einzelne Interaktion. Specs optimieren fuer einen Lebenszyklus: Brainstorming, Definieren, Implementieren, Verifizieren.

Das ist kein voruebergehender Workaround, bis Agents schlauer werden. Selbst wenn Modelle besser werden, bleibt die fundamentale Asymmetrie: Der Mensch weiss, was das Business braucht; der Agent weiss, wie man Code schreibt. Eine Spec verbindet die beiden. Bessere Modelle werden Specs schneller ausfuehren, aber der Bedarf an der Spec selbst verschwindet nicht. Er wird wichtiger mit der Skalierung, weil mehr Agents mit vagen Anweisungen divergenteren Output produzieren.

Wenn du Claude Code Agents betrieben hast und die Ergebnisse inkonsistent findest, oder zu viel Zeit fuer Review aufwendest, oder Schwierigkeiten hast, parallele Arbeitsstroeme zu koordinieren, versuche dies: Bevor du das naechste Feature angehst, nimm dir 15 Minuten, um eine Spec mit testbaren Akzeptanzkriterien zu schreiben, verlange vom Agent einen Plan vor dem Coding, und verifiziere den Output Kriterium fuer Kriterium. Ein Zyklus wird dir den Unterschied zeigen.

Wenn du Workflows wie diesen baust, gib Beadbox einen Stern auf GitHub.

Like what you read?

Beadbox is a real-time dashboard for AI agent coordination. Free during the beta.

Share