agentleFS
JakeschincariolJakeschincariol/replica-skill/replica-architect/SKILL.md

replica-architect

Skill399 starsChanged 40 days agoMITView on GitHub

Plans the stack, database schema and API for an app clone, from the recon map replica-recon wrote. Picks boring, managed tech, turns the inferred data model into real SQL with indexes and access rules, lists every route by flow, and orders the build as a thin vertical slice first. Use when the user says "plan the clone", "what stack should I use", "design the database", "write the schema", "plan the API", "architecture for my version of X", or after /replica-recon finishes.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If there is no recon map, stop and run /replica-recon first.

    line 18
  2. Distinctive:

    Use what the user already knows if they have a stack.

    line 23
  3. Distinctive:

    Write each choice with one line of why.

    line 40
  4. Distinctive:

    Only official, public APIs with the user's own keys.

    line 92
  5. Distinctive:

    Write a line on each that applies: time zones and daylight saving, idempotency (webhooks arrive twice), race conditions, rate limits, file …

    line 97

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

replica-architect

Reads replica/recon.md and replica/features.csv. Writes replica/architecture.md (template: architecture.md in this folder).

If there is no recon map, stop and run /replica-recon first. Planning a clone from memory of what an app does is how you miss half of it.

Step 1: the stack

Use what the user already knows if they have a stack. Otherwise the default, because every part is managed, documented and cheap at zero users:

layerdefaultswap for
web appNext.js (App Router) + TypeScriptRemix, SvelteKit, Rails
stylingTailwind, tokens from replica-designCSS modules
mobileExpo (React Native)SwiftUI, Kotlin
databasePostgres on Supabase or NeonPlanetScale, SQLite (Turso)
ORMDrizzle or Prismaraw SQL
authSupabase Auth or Auth.jsClerk
paymentsStripe Checkout + BillingLemon Squeezy, Paddle
emailResend or PostmarkSES
jobsVercel Cron, Inngest or Trigger.deva worker on Fly
filesSupabase Storage or Cloudflare R2S3
hostingVercelNetlify, Fly, Render

Write each choice with one line of why. One database. No microservices. The clone does not need the original's architecture, it needs the original's features.

Step 2: the schema

Turn the inferred data model into SQL. For every table:

  • id uuid primary key default gen_random_uuid(), created_at, updated_at
  • an owner column (user_id or org_id) on everything a user owns
  • foreign keys with an on delete rule decided, not defaulted
  • indexes on every foreign key and every column you filter or sort by
  • enums or check constraints for status fields
  • times as timestamptz, always, stored in UTC
  • money as integer cents plus a currency column
  • access rules: Postgres row level security on Supabase, or one authorisation check per query in the data layer. Write which.

Example, for a booking 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);

Then the hard constraints the recon found. Two guests booking the same slot is a database problem (an exclusion constraint or a unique index), not a UI problem.

Step 3: the API

One table per flow from the recon map. For every route or server action:

method path | what it does | who can call it | input | output | flow

Plus webhooks in (Stripe, calendar providers) and out, and background jobs (reminders, sync, cleanup) with their schedule.

Only official, public APIs with the user's own keys. Never the original app's private endpoints, even if they are visible in a browser.

Step 4: the parts that bite

Write a line on each that applies: time zones and daylight saving, idempotency (webhooks arrive twice), race conditions, rate limits, file size limits, search, realtime, offline, email deliverability, multi-tenancy, GDPR deletion.

Step 5: build order

  1. Vertical slice. The core loop end to end, ugly: sign up, do the one thing, see the result. Proves the stack.
  2. Must-haves from features.csv, by area.
  3. Should-haves, then could-haves.
  4. The fixes replica-entrepreneur finds, once it has run.

Each milestone lists its screens (S-IDs), tables and routes.

Output

replica/architecture.md, the SQL in replica/schema.sql or as the first migration, and a summary: stack in one line, table count, route count, the three riskiest parts, and the next step: /replica-design.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.