Communitygithub.com

replica-architect

Plant den Stack, das Datenbankschema und die API für einen App-Klon, basierend auf der Recon-Karte von replica-recon. Es wählt „langweilige“, gemanagte Technologien aus, wandelt das abgeleitete Datenmodell in echtes SQL mit Indizes und Zugriffsregeln um, listet jeden Endpunkt nach Flow auf und ordnet den Build zuerst als dünnen vertikalen Schnitt an.

Was ist replica-architect?

Das Skill `replica-architect` fungiert als dein technischer Co-Pilot für das Reverse-Engineering einer existierenden App. Es liest die von `replica-recon` erstellte Recon-Karte (`replica/recon.md` und `replica/features.csv`) und generiert daraus eine vollständige Architektur-Spezifikation (`replica/architecture.md`). Der Skill zwingt dich, einen bewährten Satz an „langweiligen“, aber zuverlässigen und kostengünstigen Technologien zu verwenden (z. B. Next.js, Postgres auf Supabase/Neon, Drizzle/Prisma, Stripe, Vercel). Er entwirft das vollständige SQL-Datenbankschema mit Primärschlüsseln, Indizes und Row-Level-Security, definiert jeden API-Endpunkt oder Server-Action pro Flow (mit Zugriffskontrolle, Ein- und Ausgaben), identifiziert knifflige Produktionsfälle wie Zeitzonen und Idempotenz und erstellt schließlich eine priorisierte Build-Reihenfolge mit einem vertikalen Schnitt als erstem Schritt. Das Skill ist für Agenten wie Claude Code, Cursor und Codex optimiert und setzt zwingend die vorherige Ausführung von `/replica-recon` voraus.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/silasroliver-hue/replica-skill-cursor/tree/HEAD/.cursor/skills/replica-architect

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht replica-architect?

Liest replica/recon.md und replica/features.csv. Schreibt replica/architecture.md (Vorlage: architecture.md in diesem Ordner).

Wenn es keine Recon-Karte gibt, anhalten und zuerst /replica-recon ausführen. Einen Klon aus dem Gedächtnis zu planen, wie eine App funktioniert, ist der sicherste Weg, die Hälfte zu übersehen.

Schritt 1: Der Stack

Verwende, was der Benutzer bereits kennt, wenn er einen Stack hat. Ansonsten die Voreinstellung, denn jeder Teil ist gemanagt, dokumentiert und bei null Benutzern günstig:

EbeneStandardAustausch gegen
Web-AppNext.js (App Router) + TypeScriptRemix, SvelteKit, Rails
StylingTailwind, Tokens von replica-designCSS Modules
MobilExpo (React Native)SwiftUI, Kotlin
DatenbankPostgres auf Supabase oder NeonPlanetScale, SQLite (Turso)
ORMDrizzle oder Prismareines SQL
AuthentifizierungSupabase Auth oder Auth.jsClerk
ZahlungenStripe Checkout + BillingLemon Squeezy, Paddle
E-MailResend oder PostmarkSES
JobsVercel Cron, Inngest oder Trigger.devein Worker auf Fly
DateienSupabase Storage oder Cloudflare R2S3
HostingVercelNetlify, Fly, Render

Schreibe jede Wahl mit einer Zeile Begründung. Eine Datenbank. Keine Microservices. Der Klon braucht nicht die Architektur des Originals, er braucht seine Funktionen.

Schritt 2: Das Schema

Wandle das abgeleitete Datenmodell in SQL um. Für jede Tabelle:

  • id uuid primary key default gen_random_uuid(), created_at, updated_at
  • eine Besitzerspalte (user_id oder org_id) für alles, was einem Benutzer gehört
  • Fremdschlüssel mit einer festgelegten on delete-Regel, nicht dem Standardwert
  • Indizes auf jedem Fremdschlüssel und jeder Spalte, nach der du filterst oder sortierst
  • Enums oder Check-Constraints für Statusfelder
  • Zeiten als timestamptz, immer, gespeichert in UTC
  • Geld als Integer-Cents plus eine Währungsspalte
  • Zugriffsregeln: Row-Level-Security in Postgres auf Supabase oder eine Autorisierungsprüfung pro Query in der Datenebene. Schreibe, welche.

Beispiel für eine Buchungs-App:

create table bookings (
  id uuid primary key default gen_random_uuid(),
  event_type_id uuid not null references event_types(id) on delete cascade,
  host_id uuid not null references users(id) on delete cascade,
  start_at timestamptz not null,
  end_at timestamptz not null,
  guest_name text not null,
  guest_email text not null,
  guest_timezone text not null,
  status text not null default 'confirmed'
    check (status in ('confirmed','cancelled','rescheduled')),
  answers jsonb not null default '{}',
  created_at timestamptz not null default now(),
  constraint no_zero_length check (end_at > start_at)
);
create index on bookings (host_id, start_at);

Dann die harten Constraints, die die Recon gefunden hat. Zwei Gäste, die denselben Slot buchen, ist ein Datenbankproblem (ein Exclusion-Constraint oder ein eindeutiger Index), kein UI-Problem.

Schritt 3: Die API

Ein Tabelle pro Flow aus der Recon-Karte. Für jeden Endpunkt oder Server-Action:

methode pfad | was es tut | wer es aufrufen darf | eingabe | ausgabe | flow

Plus eingehende Webhooks (Stripe, Kalender-Anbieter) und ausgehende, sowie Hintergrundjobs (Erinnerungen, Sync, Bereinigung) mit ihrem Zeitplan.

Nur offizielle, öffentliche APIs mit den eigenen Schlüsseln des Benutzers. Niemals die privaten Endpunkte der ursprünglichen App, selbst wenn sie im Browser sichtbar sind.

Schritt 4: Die kniffligen Teile

Schreibe einen Satz zu jedem zutreffenden Punkt: Zeitzonen und Sommerzeit, Idempotenz (Webhooks kommen doppelt an), Wettlaufbedingungen, Ratenbegrenzungen, Dateigrößenbeschränkungen, Suche, Echtzeit, Offline, E-Mail-Zustellbarkeit, Multi-Tenancy, Löschung nach DSGVO.

Schritt 5: Build-Reihenfolge

  1. Vertikaler Schnitt. Der Kernablauf End-to-End, hässlich: Registrieren, die eine Sache tun, das Ergebnis sehen. Beweist den Stack.
  2. Muss-Haben aus features.csv, nach Bereich.
  3. Sollte-Haben, dann könnte-Haben.
  4. Die Reparaturen, die replica-entrepreneur findet, sobald es ausgeführt wurde.

Jeder Meilenstein listet seine Bildschirme (S-IDs), Tabellen und Endpunkte auf.

Ausgabe

replica/architecture.md, das SQL in replica/schema.sql oder als erste Migration, und eine Zusammenfassung: Stack in einer Zeile, Tabellenanzahl, Endpunktanzahl, die drei riskantesten Teile und der nächste Schritt: /replica-design.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills