replica-deploy
读取 replica/ 中的所有内容。写入 replica/deploy.md(即本文件夹中 preflight.md 内清单的填写版本)。
规则
- 未经用户同意,绝不发布到生产环境。 显示预检结果并询问。
- 用户购买并登录。 智能体绝不购买域名、输入卡号、键入密码或粘贴生产密钥。智能体写出确切的 DNS 记录、环境变量名称和命令;用户执行账户相关步骤。
- 品牌未完成前绝不发布。 清理必须彻底,无例外。
步骤 1:预检
运行每一项检查,并将结果粘贴到 deploy.md:
npx playwright test # replica-test
python3 .cursor/skills/replica-diff/parity.py replica/features.csv # 必须完成的对等功能
python3 .cursor/skills/replica-brand/sweep.py . --config replica/brand.json # exit 0:通过
python3 .cursor/skills/replica-launch/listing.py replica/launch/listing.json # 如果需要提交至商店
npm run build # 生产构建通过
(路径假设包位于项目根目录的 .cursor/skills/ 下。如果将文件夹复制到了其他位置,请将 python3 命令指向相应路径。)
另外手动检查:不存在未关闭的 S1 或 S2 漏洞,隐私政策和条款页面已上线(列出所有数据处理方),如果在欧盟或英国使用非必要 Cookie 则需要 Cookie 横幅,账户删除功能正常工作,favicon、标题和 OG 图片均为你的品牌。
任何检查失败都会停止部署。说明是哪个检查以及失败原因。
步骤 2:生产服务
- 为数据库创建一个独立的生产项目(绝不用开发环境项目),启用备份,迁移由部署流程运行,而非手动操作。
- 在主机中设置生产环境变量,与
.env.example一致。仅在此处使用生产密钥。 - Stripe:切换到生产模式,重新创建产品和价格,添加生产 webhook 端点及其签名密钥,测试一次真实购买并退款。
- OAuth:将生产域名添加到每个提供商的 redirect URI 和授权来源中。需验证的 Google 范围必须获得批准,否则只有测试用户可以登录。
- 邮件:与提供商验证发送域名。
步骤 3:主机和域名
默认:Next.js 使用 Vercel(否则使用 Netlify、Cloudflare Pages、Fly 或 Render)。连接仓库,使 main 分支自动部署,拉取请求获得预览 URL。
用户在任意注册商处购买域名后:
| 记录类型 | 名称 | 值 |
|---|---|---|
| A | @ | 主机的 apex IP(Vercel:域名设置中显示) |
| CNAME | www | 主机的目标地址(Vercel:cname.vercel-dns.com) |
| TXT | @ 或子域名 | 主机的验证值(如果需要) |
来自邮件提供商的邮件 DNS:SPF(TXT 记录)、DKIM(CNAME 或 TXT 记录),以及以 v=DMARC1; p=none; rua=mailto:you@yourdomain 开头的 DMARC 记录,待报告清洁后收紧为 quarantine。缺少这些记录,确认邮件将进入垃圾邮件箱。
选择一个规范主机(apex 或 www)并将另一个重定向。上述主机自动支持 HTTPS;请检查确认。
步骤 4:监控
错误追踪(Sentry 或内置的主机监控)、对首页和核心流程 API 进行正常运行时间检查、日志保留、分析工具(隐私友好的分析工具可避免 Cookie 横幅),以及向用户邮箱或手机发送警报。然后亲自在线上站点执行核心流程,并请用户在手机上执行。
步骤 5:移动端(如果有应用)
Expo:运行 eas build 然后 eas submit 提交至 TestFlight 和 Play 内部测试。原生应用:在 Xcode 中归档并上传至 App Store Connect;使用 Gradle bundle 上传至 Play Console。用户拥有开发者账户(Apple 每年 99 美元,Google 一次性 25 美元)。先进行 Beta 测试,然后结合 replica-launch 的上架信息进行审核。
输出
replica/deploy.md,包含每项检查及其结果、线上 URL、设置的 DNS 记录以及第一周需要监控的内容。现在,克隆版本已成为带有你名字的应用。