KI-Agenten sind gut darin, Code zu erzeugen, aber ohne Struktur neigen sie zur Improvisation. Der AI Unified Process (AIUP) gibt der KI eine vordefinierte Kette von Artefakten vor, die jeweils den Lösungsraum für den nächsten Schritt einengen.
Wenn Sie bei /use-case-implement ankommen, hat die KI bereits eine Vision, eine Use-Case-Spezifikation, ein Entitätsmodell und eine Stack-Datei, die für jede Schicht den Skill benennt, an denen sie sich orientieren kann; der erzeugte Code wurzelt in Ihrer Domäne, nicht in einer generischen Vorlage.
Startkette, einmal pro Projekt:
Use-Case-Kette, für jeden Use Case:
Am Ende eines Release schreibt /release-notes die fachlichen Release Notes aus den Use Cases, die Done erreicht haben.
Starten Sie für jeden Skill-Lauf eine neue Claude-Code-Session: Jeder Skill liest, was er braucht, aus den Dateien in docs/, und eine lange Session, die ihren Kontext mehrmals komprimiert, verliert Details und wird langsam.
Was Sie brauchen, bevor Sie die Kette starten:
Die Book Library kombiniert Flyway, jOOQ, Spring Boot und Vaadin Flow und braucht deshalb neben aiup-core ein Plugin pro Schicht:
Noch mit dem kombinierten Plugin aiup-vaadin-jooq unterwegs? Es ist abgekündigt und wird mit aiup-core 4.0.0 entfernt. Layer-Plugins erklärt den Umstieg und ordnet die alten Befehle den neuen zu.
Abgesehen von der Vision, die Sie zuerst prüfen, und dem Testlauf am Schluss entspricht jeder Schritt einem Slash-Befehl in Claude Code. Führen Sie sie der Reihe nach aus; jeder Schritt baut auf den Artefakten des vorherigen auf.
Die Vision ist das einzige Artefakt, das Sie selbst schreiben. Alles Weitere wird daraus generiert.
Für dieses Tutorial liegt die Vision bereits unter docs/vision.md bereit; öffnen Sie sie und lesen Sie sie, bevor Sie weitermachen. Sie ist die Quelle der Wahrheit für jeden folgenden Schritt. Halten Sie sie kurz; eine Seite reicht: das Problem, die Lösung, die Zielnutzer, die Ziele und die Nicht-Ziele.
Dieser Skill liest docs/vision.md, stellt bis zu fünf Rückfragen, wo die Vision eine Entscheidung offenlässt, und produziert einen strukturierten Anforderungskatalog in docs/requirements.md sowie die Fachbegriffe in docs/glossary.md. Der Katalog enthält:
Prüfen Sie den Katalog, bevor Sie weitermachen; das ist Ihre letzte Gelegenheit, kostengünstig nachzusteuern. Jeder spätere Schritt baut auf dieser Liste auf.
Aus den Anforderungen identifiziert der Skill die Domänenentitäten und schreibt docs/entity_model.md: ein Mermaid-ER-Diagramm der Entitäten, ihrer Beziehungen und Kardinalitäten sowie eine Attributtabelle pro Entität mit Datentypen, Länge oder Genauigkeit und Validierungsregeln (Pflichtfelder, Längen, Eindeutigkeit).
Für die Book Library erwartet Sie etwa Folgendes:
Die Entität AppUser (id, username, password_hash, role, created_at) gehört zum Starterprojekt und muss nicht im Entitätsmodell auftauchen; behandeln Sie sie als externe Grenze.
Vor der ersten Zeile Code hält der Skill fest, welcher Layer-Skill jede technische Schicht baut und testet. Er erkennt Flyway, jOOQ, Spring Boot und Vaadin an der pom.xml und am Quellbaum des Starterprojekts und schreibt die Stack-Datei nach docs/architecture/stack.md. Die Stack-Datei enthält:
Das Starterprojekt bringt bereits ein docs/architecture.md mit seinen Package-Konventionen mit; der Skill liest es als Eingabe und lässt es, wo es ist; die Stack-Datei liegt neben dem Architekturdokument des Teams. Diesen Schritt führen Sie einmal pro Projekt aus und danach nur, wenn sich eine Schicht ändert. Prüfen Sie die Datei wie jedes andere Artefakt: Die Schritte zum Implementieren und Testen lesen sie.
Der Skill erzeugt aus den Anforderungen ein PlantUML-Use-Case-Diagramm unter docs/use_cases.puml. Es zeigt die beiden Akteure (Member, Librarian) und die Use Cases, an denen sie beteiligt sind:
UC-001Katalog durchsuchenUC-002Buch ausleihenUC-003Buch zurückgebenUC-004Aktive Ausleihen ansehen (Librarian)UC-005Katalog verwalten (Librarian)UC-006Mitglieder verwalten (Librarian)UC-007Meine Ausleihen ansehenNutzen Sie das Diagramm zur Abdeckungsprüfung: Jede Anforderung sollte mindestens einem Use Case zugeordnet sein, und jeder Use Case sollte auf eine Anforderung zurückführbar sein.
Wählen Sie den Use Case, der die anderen freischaltet, zuerst. Für die Book Library ist das UC-001 Katalog durchsuchen; er hat keine Vorbedingungen, gibt dem Mitglied sofort etwas zu tun und liefert die Datenstrukturen, die UC-002 braucht.
Der Skill schreibt docs/use_cases/UC-001-search-catalog.md mit primärem und sekundären Akteuren, Auslöser, den verknüpften Anforderungen, Vorbedingungen, dem Hauptablauf als nummerierte Schritte, Alternativabläufen, Nachbedingungen für Erfolg und Misserfolg und Geschäftsregeln (BR-001, …). Sie beginnt mit Status: Draft.
Hier zahlt sich die Kette aus. Der Skill liest die Use-Case-Spezifikation, die verlinkten Anforderungen, das Entitätsmodell und die Stack-Datei, fragt Lücken in der Spezifikation in einer Runde ab und führt dann die Layer-Skills von unten nach oben aus. Jede Schicht übergibt die Typen und Methoden, die sie angelegt hat, an die nächste:
BookRepository) gegen die Klassen, die jOOQ aus der Migration generiert, und projiziert die Ergebnisse in Java-Records.SearchCatalogView), an MainLayout angebunden und direkt mit dem Service verbunden.Zwischendurch führt der Skill den Build aus, damit die jOOQ-Klassen aktuell sind, bevor das Repository entsteht. Tests schreibt er keine. Starten Sie die App über TestApplication aus Ihrer IDE oder mit ./mvnw spring-boot:test-run auf der Kommandozeile, melden Sie sich als alice / alice an und öffnen Sie den Katalog. Er ist noch leer: Kein Use Case legt bisher Bücher an, und die produktiven Migrationen enthalten keine Demodaten, deshalb sehen Sie die Leer-Meldung aus der Spezifikation. Die Bücher kommen mit den Testdaten des nächsten Schritts.
Der Skill testet den Use Case einmal, in der Integrationsschicht. Bei Vaadin Flow ist das die UI, also schreibt /vaadin-flow-ui-test unter src/test/java die Klasse UC001SearchCatalogTest, die die AbstractBrowserlessTest des Starters erweitert, einen SpringBrowserlessTest mit der Testcontainers-Datenbank. Sie steuert die View ohne Browser, aber gegen den echten Service und die echte Datenbank: zur View navigieren, Suchfeld und Grid finden, eine Anfrage eintippen, prüfen, dass das Grid die erwarteten Zeilen zeigt, und jeden Alternativablauf und jede Geschäftsregel der Spezifikation abdecken. Jede Testmethode trägt @UseCase(id = "UC-001"), die Testdaten landen in einer wiederholbaren Migration, src/test/resources/db/migration/R__uc001_search_catalog.sql, die Flyway ohne Profil und ohne @TestPropertySource neben den Produktionsmigrationen findet. Sobald diese Testdaten den Katalog füllen, lässt sich der Ablauf mit leerem Katalog mit ihnen nicht mehr herstellen; seine Testmethode ist deshalb mit @Transactional annotiert, löscht die Bücher innerhalb der Testtransaktion und prüft die Meldung für den leeren Katalog; der Rollback stellt die Testdaten wieder her.
Mit dem E2E-Umfang Use cases and test cases endet derselbe Lauf mit der E2E-Schicht und schreibt auch gleich den End-to-End-Test des nächsten Schritts.
Weil diese Tests durch alle darunterliegenden Schichten laufen, bekommen Repository und Service keine eigenen Tests. Ausführen mit ./mvnw test. Die Tests sind schnell, unter einer Sekunde pro Test, und bilden die innere Feedback-Schleife beim Iterieren an der View.
Starten Sie TestApplication jetzt erneut (oder ./mvnw spring-boot:test-run): Sie läuft auf dem Test-Classpath und lädt deshalb dieselben Testdaten aus src/test/resources/db/migration, also können Sie eine Suchanfrage eingeben, die Filterung des Grids sehen und die Ergebnisse so sortiert vorfinden, wie es die Spezifikation verlangt.
Mit dem E2E-Umfang Use cases and test cases hat der /use-case-test-Lauf aus Schritt 8 den Browsertest bereits geschrieben: /vaadin-e2e-test hat einen Playwright + Drama Finder Test erzeugt, UC001SearchCatalogIT, der AbstractBasePlaywrightIT erweitert. Er bootet die komplette Spring-Boot-App auf einem zufälligen Port und steuert einen echten Browser durch den Use Case: App mit frischer Datenbank starten, über die Login-View anmelden, Katalogseite öffnen, Suchanfrage eintippen und prüfen, dass die sichtbaren Zeilen der Spezifikation entsprechen. Der Ablauf mit leerem Katalog bekommt keinen Browsertest: Die laufende App hat einen einzigen Datensatz, und der Browserless-Test deckt ihn bereits ab.
./mvnw verify führt die Browserless-Tests und danach die Integrationstests aus. Das ist Ihre äussere Feedback-Schleife: langsamer als die Browserless-Tests, beweist aber, dass JavaScript, CSS, Routing und Datenbank zusammenspielen. Um nur den Browsertest zu schreiben oder abzugleichen, etwa nach einer Änderung an der View, führen Sie /use-case-test UC-001 e2e aus; mit dem E2E-Umfang Test cases only verlangen Sie so überhaupt erst einen Browsertest für einen Use Case.
Nach dem vollständigen Durchlauf für UC-001 haben Sie eine dokumentierte Vision und einen Anforderungskatalog, ein Entitätsmodell und ein Use-Case-Diagramm für die ganze App sowie eine Stack-Datei der Schichten und für den ersten Use Case eine Spezifikation, eine Migration, eine Implementierung über vier Schichten, Browserless-Tests in der Integrationsschicht und einen End-to-End-Test.
Für einen neuen Use Case benötigen Sie nur die Schritte 6, 7, 8, 9; Anforderungen, Entitätsmodell, Diagramm und Stack-Datei decken die ganze App ab und müssen nicht neu erstellt werden. Braucht ein Use Case neue Tabellen oder Spalten, ergänzt /use-case-implement als erste Schicht eine neue V003__...-Migration.
Ein neues Feature, eine Änderung oder ein Bug landen alle am selben Ort: Spezifikation anpassen, dann die Schritte 7, 8 und 9 erneut ausführen. /use-case-implement findet die bestehende View, den Service und das Repository und ändert nur, was die Spezifikation jetzt verlangt; /use-case-test aktualisiert die bestehenden Testklassen, statt zweite anzulegen. Braucht die Änderung eine neue Spalte, entsteht eine neue Migration; bereits angewendete Migrationen werden nie bearbeitet.
Workshops und massgeschneiderte Einführungen des AI Unified Process für Ihr Team und Ihren Stack. Vereinbaren Sie einen Termin, um zu besprechen, wie der AI Unified Process zu Ihrem Projekt passt.