persona-as-code
Synchronisiere Personas als YAML+Markdown-Dateien mit einem Git-Repository. Pull, Push oder bidirektional, gebunden an einen Base-Pfad, mit Last-Write-Wins-Konflikterkennung über Git-Blob-SHA. Ab Team-Tarif.
Das Problem
Für Teams, die Prompts, Markenstimmen oder Charakterbibeln bereits als Code pflegen, ist Moonborns UI die falsche Source of Truth. Designerinnen iterieren im Produkt; Engineers wollen Diffs in Pull Requests; Release-Managerinnen wollen, dass jede Änderung dieselbe Review-Pipeline durchläuft wie Code.
persona-as-code schließt die Schleife: Die Persona-Definition liegt in deinem Git-Repository, der Moonborn-Workspace bleibt synchronisiert, und Änderungen aus beiden Richtungen laufen zusammen.
Wie der Sync aussieht
Jede Persona wird zu einer einzelnen YAML-Datei unter einem konfigurierbaren Base-Pfad (Default personas/):
---
id: p-mert-001
name: Mert Aksoy
version: 4
layer: Soul
desire: to build something the world can't ignore
fear: being seen as ordinary
wound: a parent who measured love in achievement
growth_arc: from approval-seeking to self-trusting
---
Mert spent his twenties in the Istanbul tech scene. His first company sold
to a Turkish telco — a quiet exit that he still describes as "fine." …Das YAML-Frontmatter trägt die strukturierten Schichten (Soul, Self, Mask, Surface); der Markdown-Body ist die narrative Erdung. Der Serializer emittiert beim Push die exakte Form, und der Parser liest sie beim Pull wieder ein. Jede Datei trägt einen Git-Blob-SHA — er bildet die Basis für die Konflikterkennung.
Sync-Modi
Konfiguriert über integrations.git.sync_direction:
pull— Git → Moonborn. Sinnvoll, wenn das Repo die kanonische Quelle ist.push— Moonborn → Git. Sinnvoll, wenn das Produkt die kanonische Quelle ist und Git die audit-Spur.bidirectional— beide Richtungen, mit Konfliktauflösung.
Die Commit-Strategie (integrations.git.commit_strategy) steuert die Granularität:
per_change— ein Commit pro geänderter Persona.batched— ein Commit pro Sync-Lauf.manual— gibt einen Draft-Batch aus; der Commit wird vom Operator getrieben.
Konfliktauflösung
Moonborn verwendet Last-Write-Wins mit expliziter Ablehnung — kein Three-Way-Merge, kein CRDT. Die Strategie wird über integrations.git.conflict_resolution gesetzt:
remote_wins— Pulls überschreiben lokale Änderungen im Konfliktfall.local_wins— Pushes überschreiben Remote-Änderungen im Konfliktfall.error— Konflikt sichtbar machen, Sync anhalten, zurück an den Operator.
Konflikte werden über eine Git-Blob-SHA-Abweichung zwischen der Datei, die Moonborn zuletzt gesehen hat, und dem aktuellen Stand im Repo erkannt. Bei error löst der Sync einen PersonaFileSyncConflictError mit den betroffenen Persona-IDs aus.
Unterstützte Hosts
- GitHub
- GitLab
- Bitbucket
Jeder Provider ist unabhängig tier-gated (integrations.git.providers.github, .gitlab, .bitbucket), alle ab Team+.
Status — Vorschau-Phase
Die Domain- und Application-Schichten sind implementiert; die HTTP-API und das Operator-UI landen in einem späteren Release. Wenn du persona-as-code jetzt verdrahten willst, melde dich — wir nehmen dich in die Vorschau-Kohorte auf und führen dich durch den Pfad der Direkt-Integration.
Was bereits drin ist:
PullPersonasFromGitUseCaseundPushPersonasToGitUseCase— die beiden Kernoperationen.- Das YAML+Markdown-Dateiformat mit Git-Blob-SHA-Konflikterkennung.
- Die
IGitProviderGateway-Abstraktion über GitHub / GitLab / Bitbucket. - Tier-gated Konfigurationselemente unter
integrations.git.*.
Was noch auf der Roadmap steht:
- Eine REST-Endpunkt-Oberfläche unter
/v1/integrations/git/*(noch keine öffentliche API). - Ein Setup-Flow im Produkt-UI (OAuth-Onboarding für GitHub / GitLab / Bitbucket).
- Ein Webhook-Trigger, der Sync bei
git push-Events ausführt. - Ein Konfliktauflösungs-UI für die
error-Strategie. - Automatische audit-Log-Integration — die Git-Historie ist heute der De-facto-Change-Log; das sollte auf das immutable Moonborn-audit-Log aufsetzen.
Ehrliche Abgrenzung
persona-as-code ist die Sync-Oberfläche. Angrenzende Ideen, die nicht im Scope liegen:
- Eine Moonborn-CLI für lokale Git-Workflows.
- Generierte Pull Requests von Moonborn → GitHub zur Review.
- CI-Hooks, die deinen Build scheitern lassen, wenn der audit-Score einer Persona unter einen Schwellenwert fällt (die Quality Pipeline läuft als Runtime-Gate — siehe Quality Pipeline).
Tarif
Ab Team. Jeder Git-Provider ist unabhängig schaltbar, sodass du dich auf den Host festlegen kannst, den deine Engineering-Org bereits nutzt.
Weiter
- Konzept-Grundlagen: Soul, Self, Mask, Surface.
- Companion-Runtime-Gate: Quality Pipeline.