Dieses Tutorial zeigt dir den vollständigen Plattform-Workflow gegen den echten Claude-Code-Adapter — vom API-Key bis zum bestandenen Quality Gate. Plane etwa 45 Minuten ein. Wenn du die Plattform noch gar nicht installiert hast, mach erst den Schnellstart und komm zurück.
http://localhost:8080, du bist als admin eingeloggt.claude-sonnet-4-6 oder claude-opus-4-7. Den Key generierst du unter console.anthropic.com. Ein Key kostet pro Token, also für ein erstes Tutorial reichen ein paar Euro Guthaben.claude als Subprozess auf. Installation siehe Claude-Code-Dokumentation. Prüfe mit claude --version.mvn verify) braucht ein lokales JDK. Prüfe mit java -version.mvn -v. Alternativ kann der Wrapper ./mvnw aus dem generierten Workspace genutzt werden.Du hast zwei Wege, den Key in die Plattform zu bekommen:
sk-ant-...) ein und speichere.Der Key wird mit AES-GCM unter dem Master-Key aus deiner .env verschlüsselt in der Datenbank gespeichert. Im Klartext sieht ihn niemand mehr.
Wenn du den Key als Env-Var setzen willst (z.B. für Air-Gap-Setups), füge in deine .env hinzu:
SOFTWAREFABRIK_ANTHROPIC_API_KEY=sk-ant-...
Dann: docker compose down && docker compose up -d. Die UI-Variante ist aber sauberer, weil sie einen Audit-Log-Eintrag erzeugt.
claudecode stellenDamit du nicht bei jedem Run den Adapter manuell wählen musst, setzt du den globalen Default:
claudecode.claude-sonnet-4-6 (gutes Preis-Leistungs-Verhältnis für die meisten Tasks). Für tiefere Architektur-Aufgaben ist claude-opus-4-7 stärker, aber teurer.Die Änderung wirkt sich nach maximal 5 Minuten aus (TTL-Cache). Wenn du es sofort sehen willst, kannst du in der UI auf "Cache jetzt invalidieren" klicken — der Knopf liegt unten auf der Settings-Seite.
audit_event. Du siehst in der Settings-UI direkt unter dem Wert, wer ihn zuletzt geändert hat (User-Subject + Timestamp).Klick auf "Neues Projekt mit Assistent anlegen" oder navigiere zu /wizard:
Du landest im Projekt-Editor mit allen Feldern bereits sinnvoll vorbelegt. Der Wizard hat aus deinen Antworten u.a. Folgendes gemacht:
technologyPreferences: "Java 21, Spring Boot 3.x, Maven, Postgres 16"architecturePreferences: "Hexagonale Architektur (domain / application / web / infrastructure)"qualityGates: "ArchUnit-Layer-Tests, OWASP Dependency-Check"wizard_draft gespeichert. Beim nächsten Aufruf von /wizard bietet die Plattform "Entwurf fortsetzen" an.Klick im Projekt-Editor auf "Markdown-Artefakte generieren". Die Plattform erzeugt sechs Dateien. Lies sie einmal durch:
PROJECT.md — die Charta. Ist die Vision klar? Stimmt die Zielgruppe?INSTRUCTIONS.md — die konkrete Arbeitsanweisung an den Agenten. Das ist die wichtigste Datei. Wenn hier Tippfehler oder Doppeldeutigkeiten drin sind, übernimmt der Agent sie eins zu eins.AGENTS.md — die Rollenbeschreibung des Teams. Bei Bedarf preferredModel pro Rolle anpassen.WORKFLOW.md — Phasenmodell und Approval-Punkte.DEFINITION_OF_DONE.md — wann ist der Run fertig?README.md — Lese-Einstieg für den Agenten in den Workspace.Korrigiere alles, was unklar ist. Beispiel: Wenn in INSTRUCTIONS.md steht "erstelle CRUD-Endpoints", ergänze konkret welche Felder eine Person hat (Name, Telefonnummer, E-Mail). Je präziser, desto kleiner die Wahrscheinlichkeit für Halluzinationen.
Halte den ersten Run klein. Klick auf "Neuer Run" oder navigiere zu /runs/new:
Lege das initiale Maven-Projekt mit Spring Boot 3.x an. Erzeuge: - pom.xml mit spring-boot-starter-web, spring-boot-starter-data-jpa, postgresql, h2 (test) - Application-Klasse mit @SpringBootApplication - application.yml mit Postgres-Config (lokal) und H2 (test-Profil) - ein einfaches Person-Entity mit id, name, phone - ein PersonRepository als Spring Data JPA Repository - einen REST-Controller mit GET /persons (return all) - Smoke-Test mit @SpringBootTest, der den Context lädt - README mit "wie starte ich das" und "wie teste ich das"
Der Run ist im Status DRAFT. Klick "Auf READY setzen", dann "Run starten".
Während der Run läuft, durchläuft er fünf Hauptphasen. Bei kritischen Übergängen wartet die Plattform auf deine bewusste Freigabe:
| Phase | Was passiert | Approval? |
|---|---|---|
PROMPT_ASSEMBLY | Plattform liest PROJECT.md + INSTRUCTIONS.md und baut den Initial-Prompt. | Nein, läuft automatisch. |
WORKSPACE_PREPARATION | Workspace-Verzeichnis anlegen, git init, Artefakte hineinkopieren, initialer Commit. | Nein, automatisch. |
EXECUTION | Plattform startet claude --print <prompt> im Workspace. Agent schreibt Files, macht Commits. | Ja (Default-Policy). Du klickst "Freigeben", bevor der Agent loslegt. |
VALIDATION | Plattform startet mvn verify im Workspace. Build und Tests laufen. | Nein, automatisch. |
COMPLETION | Bei grünem Build: Status COMPLETED. Bei rotem Build: NEEDS_CORRECTION. | Ja. Du bestätigst, ob das Ergebnis akzeptabel ist. |
Approval-Knöpfe erscheinen rechts neben der aktuellen Phase. Du kannst Freigeben oder Ablehnen klicken — bei Ablehnung wird der Run auf CANCELED gesetzt.
Während der EXECUTION-Phase strömen die Claude-Code-Outputs live in den Log-Bereich. Achte auf:
Auf der rechten Seite siehst du die Git-Ansicht mit Branches, Commits und einem Diff-Viewer. Klick auf einen Commit, um den Diff zu sehen. Das ist die ehrlichste Sicht auf das, was der Agent tatsächlich gemacht hat — keine Marketingsprache, nur Code.
Nach COMPLETION klick auf den Reiter "Quality Gate". Du startest die fünf Reviewer:
Pro Reviewer siehst du Findings mit Severity (LOW / MEDIUM / HIGH / CRITICAL) und Confidence-Score. Das aggregierte Verdict ist eines von:
Sonderregeln: SECURITY/HIGH und ARCHITECTURE/CRITICAL sind immer blockierend, unabhängig von der Policy-Einstellung. Reviewer-Crashes erscheinen als ERROR — sie werden nicht verschluckt, sondern gemeldet.
Typische Findings beim ersten Run:
${POSTGRES_PASSWORD} referenzieren.Ein Mega-Run, der alles auf einmal macht, geht in der Praxis selten gut. Viel besser: kleine, fokussierte Folge-Runs. Auf der Run-Liste siehst du oben den Knopf "Neuer Run aus letztem Setup". Drei Klicks, dann:
Jeder dieser Runs nutzt denselben Workspace und schreibt in denselben Git-Branch. Du kannst nach jedem Run-Ende den Quality Gate erneut starten, um zu sehen, ob die Findings weniger werden.
Der Workspace liegt unter ./workspaces/<run-id>/ (oder dem in den Settings konfigurierten Pfad). Wechsle dorthin und schau dir an, was der Agent gebaut hat:
cd ./workspaces/<run-id> ls -la git log --oneline -20 git diff HEAD~5 HEAD
Du kannst von hier aus weiterarbeiten — eigene Commits machen, in einen Remote pushen, branchen, mergen. Die Plattform fasst diesen Workspace nicht mehr an, solange du nicht einen weiteren Run startest.
Wenn dir das Ergebnis gefällt, kannst du den Workspace exportieren:
# in ein neues GitHub-Repo schieben: cd ./workspaces/<run-id> git remote add origin git@github.com:dein-user/telefonbuch-api.git git push -u origin main
| Symptom | Ursache | Lösung |
|---|---|---|
claude: command not found | Plattform findet die CLI nicht im PATH. | Setze in den Settings unter Adapter den absoluten Pfad: /usr/local/bin/claude (Linux/macOS) oder C:\Users\<user>\AppData\Local\claude\claude.exe (Windows). Alternativ Env-Var SOFTWAREFABRIK_CLAUDECODE_COMMAND. |
Run hängt in EXECUTION | Claude wartet auf interaktive Eingabe (z.B. weil Login nötig). | Logs prüfen. Meist hilft: einmal manuell claude im Terminal starten und dort einloggen. |
mvn verify scheitert sofort | Agent hat kein Maven-Projekt erzeugt oder eine wirre pom.xml. | Im Workspace per Hand reinschauen, Fehler verstehen, Folge-Run mit Korrektur-Ziel. |
Quality Gate sagt ERROR | Reviewer ist gecrasht (z.B. weil Aider-CLI fehlt). | Im Quality-Gate-Detail siehst du pro Reviewer den Fehler. Fehlende CLIs in den Settings auf "deaktiviert" stellen. |
| Token-Budget erschöpft | Plattform blockiert neue Runs ab 100 % Tagesbudget. | Settings → Budget. Cap erhöhen oder warten bis Mitternacht (Reset). |
Run gecancelt mit WORKSPACE_LOCKED | Voriger Run hat Lock nicht freigegeben (Plattform-Crash). | Workspace-Verzeichnis löschen, Run neu anlegen. Ist ein bekannter Edge Case. |