Wie ich ohne Entwickler-Vergangenheit Produkte baue
Bevor eine Zeile Code entsteht, lasse ich ein Arbeitspaket nach meiner Vorlage definieren: Hypothese, Akzeptanzkriterien und was ausdrücklich nicht dazugehört.
Bei bonwise sind so über hundert Arbeitspakete entstanden, jedes erst nach meiner Freigabe umgesetzt.
- Playbooks
- Arbeitspakete
- Prüfstrecke
- Stand
- September 2026
- In Betrieb
- 2 Anwendungeneine Beta, ein Live-Produkt
- Tech Stack
- Claude Code · GitHub · VS Code · Vercel
Auf einen Blick
Projekt-Setup — einmal je Projekt
Aus einem Deep Research leite ich Entscheidungen und Projektregeln ab.
- Deep Research
- Playbooks
- Entscheidungen und Regeln
Als bonwise Multi-User-fähig werden sollte, brauchte die App eine Datenbank, meine erste. Mir war bewusst: Bei der Sicherheit von Daten darf kein Fehler passieren. Statt direkt mit der Einrichtung zu beginnen, startete ich Deep-Research-Aufträge: Stärken und Schwächen verschiedener Datenbank-Anbieter, bewährte Standards, typische Fehler, Sicherheitsrisiken.
Bei einem neuen Thema lese ich zuerst, woran andere gescheitert sind.


- aus den Berichten destilliert: die Playbooks

- Wann greift Claude auf welches Playbook zu?
Damit stand die Grundlage für die Einrichtung meiner ersten Datenbank: Best Practices, Anti-Patterns und die Regeln, die für das Projekt gelten sollten.
Was ein Playbook festhält
- Best Practices: Standards, die für das Projekt gelten
- Entscheidungslogiken: wann welche Option die richtige ist
- Anti-Patterns: Lösungswege, die nicht angewandt werden dürfen
- Risiken: Fehler, die typischerweise begangen werden
So beginnt jedes Thema, das ich zum ersten Mal anfasse: erst der Deep Research, dann die Playbooks, dann die Entscheidungen. Was für das Projekt gilt, übernehme ich als Regel in die CLAUDE.md, die Datei, die Claude Code in jeder Session mitliest. Andere Regelwerke stehen in separaten Dateien, etwa das Design-System oder das Deploy-Runbook; die CLAUDE.md verweist darauf und legt fest, wann welches Regelwerk gelesen wird.
- CLAUDE.mdRegeln, die Claude Code in jeder Session mitliest
- design-system.mdFarben, Typografie, Komponenten, ein Wortlaut für alle Screens
- R0-1-backup-routine.mdEin Arbeitspaket: Hypothese, Scope, Slices, Akzeptanzkriterien
- 001-ADR.mdEine Architekturentscheidung mit Optionen und Begründung
- DSGVO_
compliance.mdWarum Kassenbons Gesundheitsdaten sind und was daraus folgt - teststrategie.mdWas wann geprüft wird: Unit, E2E, Mess-Harnesse
- nutzerfeedback_
playbook.mdNutzerfeedback erfassen, clustern, priorisieren - deploy-runbook.mdStaging, Risikostufe, Rollback, Migration
Arbeitszyklus — je Arbeitspaket
Zwischen Auftrag und Code stehen Auftaktrunde, Arbeitspaket und meine Freigabe.
- Auftaktrunde
- Arbeitspaket
- Freigabe
- Mockup
- Code
- Akzeptanzkriterien
Zu Beginn eines Auftrags steht eine Auftaktrunde: Claude Code lädt den Kontext und skizziert in Stichpunkten das eigene Verständnis des Auftrags, die Optionen und die offenen Fragen. Erst wenn dieses Verständnis mit meinem übereinstimmt, lasse ich das Arbeitspaket ausformulieren: Hypothese, Scope und Akzeptanzkriterien.
User-Interfaces iteriere ich zunächst über Mockups, von Skeleton bis High-Fidelity. Arbeitspakete werden in Slices umgesetzt, jeder einzeln abschließbar und committbar.
Architektur-Entscheidungen halte ich als ADRs fest (Architecture Decision Records): die Optionen, die Entscheidung und das Verworfene samt Begründung. So sieht ein Entwickler später nicht nur, was gebaut wurde, sondern warum.
Was ein Arbeitspaket definiert
- User Story oder Hypothese
- Ist-Stand am Code geprüft
- Optionen mit Vor- und Nachteilen
- Scope in und Scope out
- Slices: Schritte, die einzeln umsetzbar und committbar sind
- Akzeptanzkriterien: messbar oder eindeutig prüfbar
Abgeschlossen ist ein Paket erst, wenn seine Akzeptanzkriterien abgehakt sind.
Nicht jeder Auftrag wird so ausführlich geplant: Eine Stufe von S bis L regelt in der Auftaktrunde, wie detailliert das Paket wird. Berührt der Auftrag Datenbank oder Live-Betrieb, gilt Stufe L; reine Hygiene kommt ohne Paket aus. Jedes größere Paket endet mit einem Lehr-Teil in einfacher Sprache.
Absicherung im Betrieb — je Merge
Für den Merge auf main habe ich eine Prüfstrecke gebaut.
- /finish
- Risikostufe
- Tests gegen Staging
- Linter und Tests
- CI
- Merge
- DB-Migration
Bei bonwise erfassen echte Nutzer ihre Kassenbons, während ich weiterentwickle. Ein Fehler, den ich auf main merge, landet bei ihnen auf dem Handy. Pflicht-Prüfungen vor dem Merge bietet GitHub für ein privates Repository erst im Bezahlplan. Diese Rolle übernimmt bei mir ein eigener Befehl.
Der Befehl heißt /finish. Er stellt drei Fragen: Ändert der Code, wie Daten gespeichert werden? Wer sie sehen darf? Kann er etwas löschen? Aus den Antworten wird eine Risikostufe. Grün heißt: CI genügt. Rot heißt: erst auf der Staging-Umgebung mit eigener Datenbank testen, Nachweis im Pull Request. Fehlt der Nachweis, stoppt der Befehl und fragt mich.
Gemergt wird erst, wenn die CI bestanden ist: Typprüfung, Unit-Tests, Build, Secret-Scan. Automatisch geschieht das nie. Eine Datenbank-Migration läuft getrennt vom Merge, erst auf Staging, dann auf Produktion.

- drei Fragen entscheiden die Stufe
Eine meiner Regeln: Komponenten über 150 Zeilen werden gesplittet. Beim Nachmessen fand ich 36 Dateien darüber; die längste Funktion hatte 294 Zeilen. Bemerkt hatte das niemand, ich lese Code nicht Zeile für Zeile. Heute prüft der Linter die Regeln bei jedem Commit. Den Altbestand hält eine Baseline als Zähler fest, und der darf nur sinken. Steigt er, blockt der Push und nennt die Datei.
Code-Qualität ist ein Messwert, keine Ermessensfrage.
| Regel | 5. Sep | 25. Sep |
|---|---|---|
| Funktionen länger als 50 Zeilenmax-lines-per-function | 183 | |
| Funktionen mit mehr als 12 Verzweigungencomplexity | 90 | |
| Wenn-dann-Ausdrücke ineinander verschachteltno-nested-ternary | 82 | |
| Funktionen mit mehr als 3 Parameternmax-params | 55 | |
| Fehlende Typangabe an der Modulgrenzeexplicit-module-boundary-types | 0 |
454 → 425
darf nur sinken
Resümee
Claude Code schreibt den Code, die Entscheidungen treffe ich.
Jedes Ergebnis lese ich, bevor es weitergeht: den Plan, das Arbeitspaket, den fertigen Text. Darin finde ich regelmäßig Logikfehler und falsche Annahmen, die später teuer geworden wären.
Claude Code schlägt vor, was es am häufigsten gesehen hat. Überlasse ich ihm jede Weiche, entsteht ein Produkt wie jedes andere. Deshalb bringe ich an jeder Entscheidung meine Erfahrung und meine Meinung ein.
Wer alles dem Modell überlässt, bekommt den Durchschnitt.
Im Deutschen schreibt Claude Code gern abstrakt und verschachtelt. Einfache Sätze muss ich einfordern, und es erklärt gern mehr, als notwendig wäre. Ob eine Lösung im Alltag des Nutzers taugt, etwa das Fotografieren eines langen Kassenbons in der Hand, daran denkt Claude Code selten.
Aus Sicht der Nutzer zu denken, bleibt meine Arbeit.
So sind bonwise und callmeunicorn.de entstanden. Was dabei entschieden wurde und was schiefging, steht auf ihren Produktseiten: bonwisecallmeunicorn.de


