用途
convex-deploy-guard 是一套针对 Convex 部署操作的防护规范。它的出发点是:不同部署环境并不可以互换,大多数事故都始于一条指向了错误环境的命令。一个 Convex 项目通常拥有多套部署(个人开发、预览、生产,且常在同一台机器上跨多个项目存在)。该防护技能提供的是一套长期纪律——先识别、再声明、后执行,并把生产环境视为需要按操作、按会话逐次授权的对象。
主要能力
- 目标识别:在执行前读取 .env.local 中的 CONVEX_DEPLOYMENT、convex.json,以及 CONVEX_DEPLOY_KEY 是否被设置;或调用官方 Convex MCP 的 status 工具。将目标分类为 local-anonymous、dev、preview 或 prod。若两个来源存在分歧,必须先解决再继续。
- 目标声明:在任何影响部署的命令之前,用一行文字声明目标,例如「target: dev (joyful-capybara-123, personal dev)」。绝不能在发现目标的同时就执行命令——必须先声明。
- 生产环境需全新明确同意:在 npx convex deploy(当解析到生产环境时)、npx convex run --prod、在生产环境执行 env set、在生产环境进行快照导入导出,或启动具备生产访问权限的 MCP 之前,必须说明将在哪个部署上改动什么,并在本次会话中获得明确同意。此前给出的同意、或针对其他目标的同意,都不适用。
- MCP 安全默认值:默认以非生产范围启动官方 MCP(--deployment dev)。两个生产相关标志属于不同风险等级,需保持分离:只读的生产审计(advisor/insights 读取数据、日志、洞察)仅通过 --cautiously-allow-production-pii(读取类工具);而 --dangerously-enable-production-deployments(启用可变更的生产工具)除非用户在本会话明确要求改动生产,否则保持关闭。不得默认将二者配对——「查看生产」绝不能悄悄授予「改动生产」。
- 会话只读模式:当用户表示「read-only」「不要改动任何东西」时,在本次会话剩余时间内绝对遵守——不部署、不设置或移除环境变量、不通过 run 执行变更、不导入;启动 MCP 时使用 --disable-tools run,envSet,envRemove。
- 错误部署诊断:当一次部署「什么都没改变」时,不要更用力地重新部署。重新执行第 1 步——该部署几乎可以肯定落在了与被观察环境不同的部署上。
- 歧义即停止:如果无法确定一条命令会命中哪个部署,用 status 工具查清楚,绝不猜测。
使用方式
该技能作为流程中的第 0 步被组合使用:ship、env、migrate 和 seed 等技能都会先运行它。它本身不是部署工具,而是部署前的目标校验与授权环节。
规则摘要
- 在每条影响部署的命令前,先分类并声明目标——识别与执行是两个独立步骤。
- 生产环境同意按操作、按目标、按会话生效:说明改动什么、在哪里改,并获得全新的明确同意。
- 将两个生产 MCP 标志按风险分离:--cautiously-allow-production-pii(只读)用于审计;--dangerously-enable-production-deployments(可变更)仅在用户明确要求改动生产时启用。两者都只能由用户主动说出;每次 MCP 启动默认选择非生产部署。
- 只读模式一经请求,在本次会话中绝对生效——包括「无害」的变更。
- 一次看似毫无效果的部署,意味着被改动的是错误的部署——诊断目标,不要重跑。
适用场景与限制
该技能适用于使用 Convex 作为后端的开发与运维流程,尤其是需要在多套部署之间切换、或涉及生产环境操作的场景。关于具体支持的 Convex 版本、平台范围、是否收费与价格等信息,资料暂未提供。