Vibe deploy
Use when project code is ready and reviewed, and user wants to go live. Implements hard deployment gates (6 must-pass checks), Vercel + Supabase deployment flow, post-deploy verification, cost transparency, and plain-language maintenance guide. Produces .vibe/doc/DEPLOY.md and a live URL.From its SKILL.md
npx -y skills add Cashmeran/hlvibes-skills --skill vibe-deployAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 22 days oldThe repository was created 22 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.2 KB, ~4.1k tokens by cl100k_base, as published. Nobody here has run it
Vibe Deploy: 从本地到上线
把本地能跑的代码变成别人能打开的网址。部署不只是跑几个命令:上线前必须过安全门、上线后必须验证、你必须知道花了多少钱和怎么维护。
硬性门禁(不过不部署)
6 条硬性门禁必须全部绿灯才能进入部署流程。任何一条不通过 → 停止并告知你原因。
完整部署门禁清单见 references/deploy-gates.md,常见错误及处理见 references/common-errors.md。
| # | 门禁项 | 检查方法 | 不通过则 |
|---|---|---|---|
| G1 | 构建成功 | npm run build(或项目对应的 build 命令) | 退出码 ≠ 0 → 停止,修复构建错误 |
| G2 | 类型检查 | npx tsc --noEmit(TypeScript 项目) | 有类型错误 → 停止,修复所有类型错误 |
| G3 | 无硬编码密钥 | 扫描所有 .ts/.tsx/.js 文件中的密钥模式 | 发现硬编码密钥 → 停止,列出文件并移入 .env |
| G4 | .env 在 gitignore | 检查 .gitignore 中包含 .env | 无匹配 → 添加 .env 和 .env.local 到 .gitignore |
| G5 | REVIEW CRITICAL 已清空 | 读取 .vibe/doc/REVIEW.md | 有未修复的 CRITICAL 项 → 停止,修复后再来 |
| G6 | RLS 检查(Supabase 项目) | 检查所有 public 表的 RLS 状态 | 有未启用 RLS 的表 → 停止,逐个启用 |
| G7 | 回滚路径确认 | 确认本次部署可回滚(Vercel 保留上一个成功的 deployment;数据库迁移只加不删) | 无回滚路径 → 停止,先建立回滚方案(git tag + 保留当前 deployment) |
门禁输出格式
部署前安全检查:
✅ G1 构建成功:npm run build 通过
✅ G2 类型检查:tsc --noEmit 通过
✅ G3 密钥扫描:0 个硬编码密钥
✅ G4 gitignore:.env 已排除
✅ G5 审查结果:0 个未修复 CRITICAL
✅ G6 RLS:5/5 表 RLS 已启用
✅ G7 回滚路径:Vercel 上一个 deployment 已保留,数据库无删除性迁移
全部通过,可以进入部署准备。
八阶段总览
| # | Phase | 门禁条件 | 做什么 | 你参与 |
|---|---|---|---|---|
| - | GATES | 必入 | 硬性门禁(不过不部署) | 零 |
| 1 | PREPARE | 硬性门禁全部通过 | GitHub 推送 + 平台账号 + 环境变量 | 可能需要登录 |
| 2 | RESEARCH | PREPARE 完成 | 搜索社区工具,避免造轮子 | 零 |
| 3 | DEPLOY | PREPARE 完成 + 环境变量已获取 | Vercel 部署 + Supabase 上线 + 回滚确认 | 零 |
| 4 | VERIFY | DEPLOY 完成 | 线上验证:5 项逐条检查 | 零 |
| 5 | EXPLAIN | VERIFY 通过 | 成本明细 + 维护指南 + 回滚操作指南 | 理解 |
| 6 | SATISFACTION GATE | 必入 | 满意度门禁自检+用户确认 | 确认 |
| 7 | HANDOFF | 满意度门禁通过 | 输出 DEPLOY.md | 确认 |
Phase 1:PREPARE
门禁: 硬性门禁全部通过
1.1 GitHub 准备
检查: git remote -v → 有没有 GitHub 仓库?
有 → 跳过
无 → 帮你创建:
"你的代码需要推送到 GitHub。我帮你:
1. 在 GitHub 上创建一个仓库(你需要先登录 github.com)
2. 把代码推送上去
准备好了吗?"
已有仓库:
git add . && git commit -m "Pre-deploy: 部署前最终版本"
git push origin main
1.2 平台账号确认
根据 ARCHITECTURE.md 技术选型表,确认需要的平台:
| 技术选型 | 需要的平台 | 免费额度 |
|---|---|---|
| Vercel 部署 | Vercel 账号 | Hobby 免费 |
| Supabase 数据库 | Supabase 账号 | Nano 免费 |
"部署需要用到两个平台,都是免费的:
1. Vercel:放你的网页,免费额度够你用
2. Supabase:放你的数据,免费 500MB
你现在需要:
- 去 vercel.com 注册一个账号(用 GitHub 登录就行)
- 去 supabase.com 注册一个账号(也用 GitHub 登录)
注册好了告诉我。"
1.3 环境变量
从 ARCHITECTURE.md 和实际 .env 文件提取需要设置的环境变量:
- 只展示变量名,绝不暴露密钥值
- 区分"可以放前端的"(NEXT_PUBLIC_/VITE_)和"只能放后端的"
- 如果你给了 service_role key → 警告:这个绝对不能放前端
输出:
- 代码已推送 GitHub
- 平台账号已就绪
- 环境变量清单(待填入)
参考:Vercel 部署指引见 references/vercel-guide.md,Supabase 配置指引见 references/supabase-guide.md。
Phase 2:RESEARCH(避免造轮子)
门禁: PREPARE 完成
搜索社区是否已有现成的部署工具或 skill:
| 搜索内容 | 方法 |
|---|---|
| Vercel 官方部署 skill | npx skills add vercel-labs/agent-skills --skill deploy-to-vercel |
| Supabase 生产检查清单 | npx skills add 搜索 supabase 相关 skill |
| 部署自动化工具 | rlsgate、CloudCost 等现成 CLI |
| 平台 CLI | vercel --help、npx supabase --help 确认最新命令 |
- 有现成工具 → 复用
- 没有 → 记录,继续走手动 DEPLOY 流程
输出: 搜索结论 + 被纳入的工具清单 + 工具运行结果
Phase 3:DEPLOY
门禁: PREPARE 完成 + 环境变量已获取
3.1 Vercel 部署
目标:把 GitHub 上的代码部署到 Vercel,生成线上 URL。
需要完成的事(具体操作参考 Vercel 当前 UI,位置会有变化但目的不变):
- 导入仓库:在 Vercel 仪表盘导入你的 GitHub 仓库,Vercel 会自动识别项目框架(Next.js/Vite 等)。
- 配置环境变量:把之前整理好的环境变量配进去——区分前端可见(NEXT_PUBLIC_*)和仅后端环境变量。
- 触发部署:Vercel 会自动开始构建,通常 30-90 秒完成。成功后你会得到一个
*.vercel.app的网址。
如果已安装并登录 Vercel CLI,也可以直接用命令行完成(CLI 比 UI 更稳定,不受界面更新影响):
vercel --prod --env SUPABASE_URL=<value> --env SUPABASE_ANON_KEY=<value>
如果你已安装 Vercel CLI 且已登录,可以直接命令行部署:
vercel --prod --env SUPABASE_URL=<value> --env SUPABASE_ANON_KEY=<value>
3.2 Supabase 数据库上线
确认以下配置:
- RLS 已启用(门禁 G6 已验证)
- 数据库 schema 与本地一致(
npx supabase db push) - API 设置中的 CORS 已添加你的 Vercel 域名
3.3 域名(可选)
"现在你的网站可以通过 .vercel.app 访问了。
如果你有自己的域名(比如 myapp.com),可以在 Vercel 后台的 Settings → Domains 添加。
没有域名也完全够用。等你想正式推广了再买也不迟。
域名大概 $10-15/年,在 Namecheap 或 Porkbun 买就行。"
3.4 回滚确认
部署完成之后,立即确认回滚路径:
- 打开 Vercel Dashboard → 你的项目 → Deployments
- 确认上一个成功的 deployment 仍然保留(通常新部署不会删除旧的)
- 确认本次数据库迁移没有 DROP/ALTER COLUMN(门禁 G7 已验)
- 告诉用户:
部署完成了。如果这次部署出了问题,你只需要做一件事:
去 vercel.com → 你的项目 → Deployments → 找到上一个版本 → 点 "⋯" → Redeploy。
这就像"撤销"按钮——点一下,网站就会回到部署之前的状态。
数据库不会被撤销(如果加过新表,表还在;但旧代码不读它,不影响)。
输出: 可访问的线上 URL + 回滚确认记录
Phase 4:VERIFY
门禁: DEPLOY 完成,有线上 URL
5 项逐条验证:
验证清单:
1. HTTP 200 → 页面能打开吗?
curl -I https://your-app.vercel.app → HTTP 200 ✅/❌
2. 登录功能 → 能注册/登录吗?
[引导你操作] → ✅/❌
3. 核心功能 → P0 功能正常吗?
对照 REQUIREMENTS.md P0 功能 → 逐条验证 → ✅/❌
4. 数据持久化 → 刷新页面数据还在吗?
[引导你刷新] → ✅/❌
5. 环境变量 → 所有需要的变量都生效了吗?
检查线上是否读取到关键配置 → ✅/❌
任何 ❌:
- 定位原因(环境变量缺失?构建失败?RLS 策略?)
- 修复 → 重新部署 → 重新验证
输出: 验证报告(5 项通过/失败 + 修复记录)
Phase 5:EXPLAIN
门禁: VERIFY 通过
用白话解释三件事:
5.1 成本明细
现在你的应用跑在:
🏠 Vercel(网页托管)
当前: Hobby 免费计划
免费额度: 100GB 带宽/月、20,000 次后端调用/月
什么时候要付费: 用户量和访问量上去了 → Pro 计划 $20/月
你现在: 几乎肯定是 $0
🗄️ Supabase(数据库+登录)
当前: Nano 免费计划
免费额度: 500MB 数据、50,000 月活用户
什么时候要付费: 数据库超 500MB 或项目被暂停 → Pro 计划 ~$25/月
你现在: 几乎肯定是 $0
💸 本月预计: $0
📈 有几百个用户后预计: $45-85/月
5.2 日常维护
你需要知道的只有这些:
1. 改内容 → 在本地改,改完告诉我"部署更新"
2. 看有没有问题 → vercel.com 后台看 Deployments 状态
3. 数据备份 → Supabase 自动备份,你什么都不用做(Pro 计划有每日备份)
4. 如果有人反馈 bug → 回来找我,我会帮你看
5.3 紧急情况
如果网站打不开了,按顺序做:
第一步:直接回滚
→ vercel.com → 你的项目 → Deployments
→ 找到上一个显示绿色的版本 → 点 "⋯" → Redeploy
→ 等 30 秒。网站就回到部署前的状态了。
→ 然后再慢慢排查原因。先恢复,后诊断。
第二步:回滚后还是不行
→ 回滚确认了问题不在代码:可能是 Supabase 或域名出问题了
→ 看 supabase.com → 你的项目 → 有没有红色警告?
→ 有 → 截图发给我
→ 没有 → 可能是网络问题,等几分钟试试
第三步:两个平台都正常但网站还是打不开
→ 回来找我,告诉我具体情况。
输出: 你理解了回滚方式和基本维护方式
参考:完整成本估算模型见 references/cost-estimator.md。
Phase 6:SATISFACTION GATE(满意度门禁)
门禁:必入
→ 执行满意度门禁(详见 hlvibes/references/satisfaction-gate.md)。当前阶段名称:「部署上线」。
Phase 7:HANDOFF
门禁: EXPLAIN 完成
→ 执行交付(详见 hlvibes/references/handoff.md)。产出 .vibe/doc/DEPLOY.md,包含部署配置、门禁结果、验证结果、回滚路径、月成本、维护指南。
交付时附加一句:
上线完成了。你的网站现在是一个活的产品。上线后发现什么问题——不管是功能不对、样式不对、还是有新想法——回来找我,告诉我具体是什么问题。我来判断该走哪一步。
通用纪律(所有 Phase 共享)
→ 完整通用纪律见 hlvibes/references/common-rules.md。
What ships with it: 5 files
26.7 KB alongside SKILL.md
references/
- common-errors.md8.0 KB
- cost-estimator.md4.1 KB
- deploy-gates.md4.9 KB
- supabase-guide.md5.1 KB
- vercel-guide.md4.5 KB