关于 replica-architect
replica-architect 是将仿制应用的调研图和功能清单转化为架构方案、数据模型、API 路由及构建顺序的 Skill。它指导技术栈、数据结构、接口和实现风险方面的规划。
主要功能
- 01选择技术栈
- 02设计 SQL 表和访问规则
- 03规划 API 路由与后台任务
- 04识别实现风险
- 05安排开发里程碑
适用场景
- 01根据调研规划应用架构
- 02将功能流程转化为数据模型
- 03定义路由和 Webhook 处理方式
- 04安排仿制应用的构建顺序
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jakeschincariol/ replica-skill --skill replica-architect安装后在 Claude Code 中输入/replica-architect确认已加载。
附带文件architecture.md
详细介绍
replica-architect
读取 replica/recon.md 和 replica/features.csv。写入
replica/architecture.md(模板:本文件夹中的 architecture.md)。
如果没有 recon map,请停止并先运行 /replica-recon。凭记忆规划应用的功能,
会让你漏掉一半内容。
Step 1:技术栈
如果用户已有技术栈,就沿用他们熟悉的技术。否则采用默认方案,因为各部分都由托管服务管理、文档齐全,而且在用户数为零时成本低:
| 层 | 默认方案 | 可替换为 |
|---|---|---|
| Web 应用 | Next.js (App Router) + TypeScript | Remix、SvelteKit、Rails |
| 样式 | Tailwind,使用 replica-design 中的令牌 | CSS modules |
| 移动端 | Expo (React Native) | SwiftUI、Kotlin |
| 数据库 | Supabase 或 Neon 上的 Postgres | PlanetScale、SQLite (Turso) |
| ORM | Drizzle 或 Prisma | 原始 SQL |
| 身份验证 | Supabase Auth 或 Auth.js | Clerk |
| 支付 | Stripe Checkout + Billing | Lemon Squeezy、Paddle |
| 电子邮件 | Resend 或 Postmark | SES |
| 任务 | Vercel Cron、Inngest 或 Trigger.dev | Fly 上的 worker |
| 文件 | Supabase Storage 或 Cloudflare R2 | S3 |
| 托管 | Vercel | Netlify、Fly、Render |
为每个选择用一句话说明原因。只用一个数据库,不要用微服务。克隆版不需要复刻原应用的架构,需要复刻的是原应用的功能。
Step 2:架构
将推断出的数据模型转换为 SQL。对每张表:
id uuid primary key default gen_random_uuid()、created_at、updated_at- 为所有归用户所有的数据添加所有者列(
user_id或org_id) - 明确决定外键的
on delete规则,不要使用默认值 - 为每个外键以及每个用于筛选或排序的列建立索引
- 为状态字段使用枚举或检查约束
- 时间始终使用
timestamptz,并以 UTC 存储 - 金额以整数分存储,并添加货币列
- 访问规则:在 Supabase 上使用 Postgres 行级安全,或在数据层的每个查询中执行一次授权检查。写明采用哪种方式。
例如,预订应用:
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);
然后列出 recon 发现的硬性约束。两位客人预订同一时段是数据库问题(需要排除约束或唯一索引),不是 UI 问题。
Step 3:API
为 recon map 中的每个流程列一张表。对每个路由或服务端操作:
method path | 功能 | 可调用者 | 输入 | 输出 | 流程
还要列出传入和传出的 webhook(Stripe、日历服务提供商),以及后台任务(提醒、同步、清理)和对应的执行计划。
只使用官方公开 API,并使用用户自己的密钥。绝不要使用原应用的私有端点,即使它们能在浏览器中看到。
Step 4:容易出问题的部分
对适用的每一项写一行:时区和夏令时、幂等性(webhook 可能重复到达)、竞态条件、速率限制、文件大小限制、搜索、实时功能、离线功能、电子邮件送达率、多租户、GDPR 删除。
Step 5:构建顺序
- 垂直切片。 端到端实现核心循环,先不考虑美观:注册、完成一件事、查看结果。用于验证技术栈。
- 按领域实现
features.csv中的必备项。 - 然后实现应该有的功能,再实现可以有的功能。
- 实现 replica-entrepreneur 运行后发现的修复项。
每个里程碑都列出对应的屏幕(S-ID)、表和路由。
输出
replica/architecture.md,以及 replica/schema.sql 中的 SQL 或首个迁移文件,并附上摘要:用一行说明技术栈、表的数量、路由的数量、风险最高的三项,以及下一步:/replica-design。