http://localhost:8010/_root/docs/prd/deployment/deployment-PRD.html?annotate=1
Yummy Future 的"发布/上线"不是一个人的事:Jack 这一侧(由 Claude 经手)走四条路——临时页发到
Cloudflare、给同事的活服务开隧道、官网 yummy-future.com 上生产、门店集群拉新版本;
**Hao 和 Rohan 两人还共同运维着整块门店基础设施**(五条门店隧道、店内应用、设备远程升级、
GCP 服务器、订单/收款接口),那是公司真正收钱跑店的面,此前完全不在任何技能的地图上——
08-29 门禁事故正是 Claude 未经他们俩点头动了这块面。
这份 PRD 把 cloudflare-publish 扩建成发布总闸:Claude 侧四条车道由它机械分流并核对门禁;
Hao + Rohan 的面画进同一张图、立死"写动作必须他们点头"的规矩——总闸不指挥他们怎么干活,
只保证任何会话看一张图就知道每块面归谁、动之前要过谁。不新建技能,只扩建这一个。
deployment 这个域目前只有这一份主 PRD,还没有子 PRD——地图留空,等真的拆出子 PRD 时由脚本生成。
输入:一句"把 X 发布出去"的请求(一张临时页 / 一个活服务 / 官网 / 门店集群)。
输出:
skills/cloudflare-publish/SKILL.md,里面写清楚四条车道各自的入口命令、跑在哪个引擎上、必须过哪几道门;.skill 重新打包出货。什么算好:任何人拿着这份 SKILL.md,不用问人就能判断"我这次发布该敲哪条命令、会被哪几道门拦下来"—— 官网上生产不会再有人手滑敲裸命令。
三道闸各是什么(建的人照这里找,不用猜):
cf_write_gate = 全局钩子 ~/.claude/hooks/cf_write_gate.py(不在本仓库里),拦
Cloudflare 生产写命令,放行手续写在它的拦截消息里;
访问名单双签 = 任何"谁能访问什么"的名单/门禁变更,先把完整名单摆出来,
Jack 和 hao@yummyfuture.wiki 两人都点头才许执行,变更后两头验收(该拦的拦住、该进的能进),
正本定义在 ~/.claude/yf-production-assets.md 死规矩第 1 条;
ui-test-gate = 同名技能的三道锁(用例签字→自动化跑绿→真浏览器过一遍)。
publish.py workerpublish.py upscripts/deploy-netlify.shsshops up BOX焦点读:眼睛先落在这五个盒子上,认出要动的东西属于哪一块——前四条照那格的入口命令做, 第五块先去找 Hao/Rohan;卡在哪道门被拦下来,就是本该被拦下来,不是绕过去的理由。
| # | 功能 | 怎么算过 |
|---|---|---|
| F1 | 分流表写进 SKILL.md | 四条车道的关键词都能在 SKILL.md 里搜到 |
| F2 | 官网上生产道被收编 | SKILL.md 明确点名唯一入口,并点名裸命令是违规 |
| F3 | 三道闸接线写清楚 | cf_write_gate、双签、ui-test-gate 三个词都能在 SKILL.md 里搜到 |
| F4 | 跟四个邻居技能互相点名边界 | 双方 SKILL.md 里都提到对方名字 |
| F5 | 重扫过闸,没有未声明的重叠 | 重新跑技能库扫描,发布域一条未声明 OVERLAP 都没有 |
| F6 | 两道打包硬门 + 重新打包 | 两个验证脚本都是 exit 0 |
| F7 | Hao + Rohan 的面写进 SKILL.md | 他们俩的名字、门店基础设施清单、"写动作要他们点头"的规矩都能在 SKILL.md 里搜到 |
每一条的可跑命令和期望输出都在附录页 deployment-PRD-appendix.html。
deploy-netlify.sh 本身。