ShapKit 文档
买后操作手册
从控制台下载签名源码开始:本地启动、第一次走通、加功能、接支付、部署到 Cloudflare,以及提交前门禁。运行时主线是 React Router + Cloudflare Workers。
1. 拿到源码
结账并履约后,系统会签发 License。源码主路径是控制台签名包下载,不必等待仓库邀请。
- 登录后打开 Dashboard → 源码交付。
- 选择可用版本,创建下载票据并下载签名源码包。
- 在本机解压,进入项目根目录,准备配置环境变量。
2. 本地启动
需要 Node.js ≥ 22 与 pnpm 9(建议 corepack enable)。本地数据库默认走 D1。
- 安装依赖:pnpm install。
- 复制环境模板:.env.example → .env.local,Workers 本地密钥用 .dev.vars;至少填 AUTH_SECRET、NEXT_PUBLIC_APP_URL、DATABASE_PROVIDER=d1。
- 跑预检与迁移:pnpm doctor,再 pnpm db:migrate:d1:local(或文档约定的 migrate 命令)。
- 启动开发:pnpm dev,浏览器打开本地地址(常见为 http://localhost:5173)。
pnpm install cp .env.example .env.local pnpm doctor pnpm db:migrate:d1:local pnpm dev
3. 第一次走通
先确认登录与控制台可用;支付可在 Test 模式验证,不阻塞本地改产品。
- 打开 /zh/register(或 /en/register)注册并进入 /dashboard。
- 在 Dashboard 查看账单、用量、源码交付、组织等入口是否正常。
- (可选)配置 Stripe/Creem Test,在 /zh/pricing 用测试卡完成一次买断,再到 /dashboard/billing 看履约态。
- 平台管理员可用 seed / platformRole=admin 进入 /zh/admin,检查配置中心就绪。
4. 日常改产品
新产品业务默认落在 src/modules/{domain}/;页面走 Marketing/Admin 的 /:locale 或 Dashboard 的 /dashboard/*。优先让 Agent 执行对应 Skill,而不是手写散落逻辑。
- 加页面:对 Agent 说 shape screen(或加载 shape-screen)。
- 加后端模块:说 shape service(新产品 → src/modules/)。
- 改库表:说 shape migrate,只追加 Drizzle sqlite migration,禁止手改生产库。
5. 接通支付
主售为 Pro / Duo 终身一次买断。渠道与 Price 映射优先在 Admin 配置中心维护;不要在业务代码里散落调用 Stripe SDK。
- 在 Admin → 配置中心填写 Stripe / Creem / PayPal 等密钥与 Webhook。
- 在商业目录 / 映射中配置 Pro、Duo 的 Price ID,并 Sync。
- 对 Agent 说 shape payments,按三栈分流核对结账与退款路径;独立开发者可优先接 Creem。
6. 部署到 Cloudflare
默认发布路径是 React Router + wrangler(Workers)。生产部署必须由你明确确认后再执行,Agent 不得擅自 wrangler deploy。
- 对 Agent 说 shape ship cf / shape-cloudflare,完成预检与构建。
- 确认环境变量与 D1 / R2 绑定后,再批准生产部署。
- 部署后核对三份 Ship 报告(平台差异、Webhook URL、环境变量缺口),并可用 Deploy Diagnostics 排查。
# 仅在你明确确认后由 Agent / 本人执行 # pnpm cf:deploy 或 wrangler deploy
7. Skills 链接与提交门禁
把官方 Skill Suite 链到 Cursor / Claude Code 等 Agent 目录,再在每次提交前跑门禁。
- 在项目根执行 pnpm skills:link,创建跨 Agent 的 symlink。
- 提交前:pnpm run shape:guard(含 Secret、分层边界等)。
- 合并 main / 打 tag 前:pnpm run shape:release(含 locale 等)。详见 Agent Skills 页。
pnpm skills:link pnpm run shape:guard pnpm run shape:release:locale