Willi Krappen

Plainy

Rekursive Planning-Pipeline aus acht typisierten Anthropic-Agenten: aus einem Satz wird ein TypeScript-vertragsbasierter TaskBrief, den Claude Code direkt in lauffähigen Code übersetzt.

Schlüsselentscheidung

Capture/Replay statt Demo-Mode. Jede Live-Sitzung ist aufnehmbar; Replays sind nur ein Cursor über der Fixture mit Auto-Resolve. Kein paralleler Demo-Code-Pfad, kein Drift-Risiko zwischen Demo und Live. Preis: 'Entscheide du'-Antworten müssen vorberechnet sein, damit Replays deterministisch laufen. Bezahlt sich aus, weil jede Live-Demo automatisch zur ewig-spielbaren Demo wird.

Acht spezialisierte Anthropic-Agenten (Einstieg, Architekt, Skeptiker, Vertragsdesigner, Stack, Plan-Zusammenfasser, Architektur-Coach, Polish) — jeder ein eigener Tool-Call mit Zod-validiertem Schema; der Architekt streamt sein Tool-Use-JSON inkrementell, ein Klammer-Scanner extrahiert fertige Kind-Objekte und schickt sie als SSE-Events. Ein einzelner Satz wird Schritt für Schritt zu einem Baum aus Arbeitseinheiten, TypeScript-Verträgen (kein `any`, kein `unknown` — hart per Prompt verboten und per Zod nachvalidiert) und sichtbar geloggten Entscheidungen verdichtet. Das Endprodukt — ein Markdown-TaskBrief — wird in eine Claude-Code-Session eingefügt und liefert lauffähigen Code. Capture/Replay statt Demo-Modus: jede Live-Sitzung ist aufnehmbar, Replays laufen deterministisch ohne Anthropic-Call.

Der vollständige Loop — Plan zu lauffähiger App

Die These in einem Satz: plainy zerlegt vage Produktideen in Artefakte, aus denen eine Coding-KI direkt lauffähigen Code baut.

Ideeplainy-ReplayResultierende App
'Eine App, die mir Skat beibringt.'Replay öffnenskat.prototyp.ms
'Ein Gewohnheits-Tracker für mich selbst.'Replay öffnenhabits.prototyp.ms

Demo in 60 Sekunden

  1. 1

    Tipp eine Idee in einem Satz.

  2. 2

    Beantworte 3–4 Einstiegsfragen — oder lass 'entscheide du' antworten.

  3. 3

    Der Baum wächst auf: 2–5 Arbeitseinheiten pro Knoten, automatisch vertieft bis Tiefe 2.

  4. 4

    Parallel laufen Skeptiker (ein Risiko) und Vertragsdesigner (TypeScript-Vertrag pro Blatt).

  5. 5

    Stack-Karte: 2–3 Optionen mit Pros/Cons, jede gebündelte Entscheidung wandert sichtbar ins Log.

  6. 6

    Export-Modal mit Markdown-TaskBrief — ein Klick, in Claude Code einfügen, Build beginnt.

Architektur — 8 spezialisierte Agenten

Jeder Agent ist ein eigener Anthropic-Tool-Call mit Zod-validiertem Schema. Mehrere laufen parallel; der Architekt streamt.

AgentModellAufgabe
Einstieg / IntakeSonnet 4.6Wandelt einen Ein-Satz-Wunsch in 3–4 schärfende Pills / Multi-Selects.
Architekt / ArchitectSonnet 4.6 · StreamTeilt einen Knoten in 2–5 Kinder; markiert, was weiter vertieft werden soll.
Skeptiker / SkepticSonnet 4.6Sucht ein echtes v1-Risiko und rahmt es als Entscheidung. Schweigen ist Default.
Vertragsdesigner / Contract designerOpus 4.7Pro Blatt ein TypeScript-Vertrag — domänen-spezifische Typen, kein any, kein unknown.
StackSonnet 4.62–3 alltagssprachliche Stack-Optionen mit Pros/Cons; bündelt stille Entscheidungen.
Plan-Zusammenfasser / Plan summariserHaiku 4.52–3 Sätze zum fertigen Projekt plus eine kleine Non-Goals-Liste.
Architektur-CoachSonnet 4.6Identifiziert 1–5 Grundmodule, die quer durch Blätter benutzt werden — vor der Blatt-Implementierung.
PolishHaiku 4.5Glättet Freitext-Antworten zu 1–2 sauberen Sätzen, ohne Intent zu verändern.

Validierung & Robustheit

Streaming-Architekt

Der Architekt streamt sein Tool-Use-JSON; ein Klammer-Scanner extrahiert fertige Kind-Objekte und schickt sie als SSE-Events — Knoten erscheinen inkrementell im Baum.

Zod + Retry-Eskalation

Jede Antwort durchläuft ein Zod-Schema. Schlägt die Validierung fehl, eskaliert ein generischer Retry-Helper automatisch auf Opus und gibt den Fehler als Korrekturhinweis mit.

Re-Entry-Guard

Verhindert die Race, bei der Skeptiker-Decomposition und Auto-Recursion gleichzeitig denselben Knoten anfassen.

Modell-Mix nach Bedarf

Haiku für hochfrequente Mikrotexte, Sonnet für strukturelle Arbeit, Opus dort, wo Präzision zählt (Verträge). Dispatch zentral in server/models.ts, austauschbar pro (Agent, Operation).

Designentscheidungen, kurz

Zwei Schichten, eine Datenquelle

PM-Sprache vorne (Titel, Zusammenfassung, Entscheidungen), Ingenieur-Sicht als optionale Projektion derselben Nodes (Verträge, Abnahmekriterien). Kein zweiter Code-Pfad, nur andere Slots.

'Entscheide du' als Vertrauensmechanismus

Jede Frage hat eine vorberechnete KI-Antwort. Wird sie genutzt, landet sie sichtbar im Entscheidungslog mit Begründung — keine stillen Entscheidungen, auch nicht bei der Stack-Wahl.

Capture / Replay statt Demo-Mode

Jede Live-Sitzung ist aufnehmbar; Replays sind nur ein Cursor über der Fixture mit Auto-Resolve. Kein paralleler Demo-Code-Pfad. Karten lösen sich mit Pause + Highlight + Pause auf.

Verträge ohne any

Der Vertragsdesigner-Prompt verbietet any, unknown und leere Interfaces hart; Zod validiert nach. Für Skat heißt es SkatCard, Reizen, Spitzen — nicht Card, Bidding, Bonus.

Deployment

Live auf einem DigitalOcean-VPS mit PM2 (kein Cold-Start). nginx reverse-proxied /api/* auf 127.0.0.1:4747, liefert dist/ statisch aus, mit proxy_buffering off auf /api/agent/stream — sonst kommt der SSE-Stream gepuffert beim Client an und die Streaming-Animation ist tot. TLS via certbot/Let's Encrypt mit Auto-Renew. Der Live-Modus ist über einen X-Plainy-Auth-Header gegen eine env-Var abgesichert; der Replay-Pfad bleibt davon unberührt, weil er nie das Netzwerk anfasst.