App öffnen
Moonborn — Developers

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:

  • PullPersonasFromGitUseCase und PushPersonasToGitUseCase — 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