mcpField
C
convex-deploy-guard

convex-deploy-guard

github.com/get-convex云与 DevOps6931.3k 次安装1 天前更新
代码仓库

关于 convex-deploy-guard

convex-deploy-guard 是一项技能,可防止命令指向错误的 Convex 部署。它要求先识别并声明目标再执行操作,并要求每次生产环境变更都获得当次明确同意。

主要功能

  1. 01操作前分类部署目标
  2. 02运行部署命令前声明目标
  3. 03生产环境变更需当次明确同意
  4. 04区分生产环境只读与可变更的 MCP 访问
  5. 05遵守会话级只读限制

适用场景

  1. 01部署 Convex 项目前核对目标
  2. 02审计生产数据而不启用变更权限
  3. 03诊断部署似乎未生效的情况

MCP 相关

它建议默认将官方 Convex MCP 连接到非生产部署。生产环境只读访问和可变更访问使用不同标志,并需分别获得授权。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/get-convex/agent-skills --skill convex-deploy-guard

安装后在 Claude Code 中输入/convex-deploy-guard确认已加载。

详细介绍

部署目标防护

不同部署不能互换,大多数事故都始于命令指向了错误的部署。每个 Convex 项目都有多个部署(个人开发、预览、生产环境——一台机器上通常还有多个项目)。这项防护是始终遵循的纪律:先识别,再说明,然后执行——并将生产环境视为需要逐项、逐会话征得同意的目标。

工作流

  1. 执行前先识别:读取 .env.local 中的 CONVEX_DEPLOYMENT、convex.json,并检查是否设置了 CONVEX_DEPLOY_KEY;或者调用官方 Convex MCP 的 status 工具。对目标进行分类:local-anonymous | dev | preview | prod。如果两个来源的信息不一致,先解决问题再继续。
  2. 执行任何会影响部署的命令前,先用一行说明目标:target: dev (joyful-capybara-123, personal dev)。绝不要在发现目标的同时执行命令——先说明。
  3. 生产环境需要获得本次会话中的明确同意:在执行 npx convex deploy(当其指向生产环境时)、npx convex run --prod、在生产环境执行 env set、在生产环境执行快照 import/export,或启动可访问生产环境的 MCP 之前,准确说明将对哪个部署进行哪些更改,并在本次会话中获得明确同意。之前给出的同意,或针对其他目标给出的同意,均不适用。
  4. MCP 安全默认值:启动官方 MCP 时,将范围限定为非生产环境(--deployment dev)。两个生产环境标志代表不同的风险级别——应分开使用:只读生产环境审计(读取数据/日志/洞察的 advisor/insights)只能传入 --cautiously-allow-production-pii(读取工具);除非用户在本次会话中明确要求更改生产环境,否则应关闭 --dangerously-enable-production-deployments(启用会修改生产环境的工具)。默认情况下绝不要同时启用这两个标志——“查看生产环境”不应悄然授权“修改生产环境”。
  5. 只读会话模式:用户说“只读”/“不要更改任何内容”时,在本次会话剩余时间内都必须绝对遵守——不得部署、设置/删除环境变量、通过 run 执行修改操作或导入;启动 MCP 时使用 --disable-tools run,envSet,envRemove。
  6. 诊断部署目标错误:如果部署后“什么都没变”,不要加大力度重新部署。重新执行步骤 1——部署几乎肯定落在了与当前观察对象不同的部署上。
  7. 存在歧义就停止:如果无法确定命令将作用于哪个部署,就先查明(使用 status 工具;比较 npx convex env list 的指纹)——绝不要猜测。

规则

  • 每次执行会影响部署的命令前,都要对目标进行分类并说明——识别和执行是两个独立步骤。
  • 生产环境的同意按操作、目标和会话分别获取:说明在哪个部署上进行哪些更改,并重新获得明确同意。
  • 根据风险将两个生产环境 MCP 标志分开使用:审计时使用只读标志 --cautiously-allow-production-pii;仅当用户明确要求更改生产环境时,才使用会执行修改的 --dangerously-enable-production-deployments。两者都必须由用户明确提出;默认情况下,每次启动 MCP 都应选择非生产环境部署。
  • 用户一旦要求只读模式,该模式在整个会话中都必须绝对遵守——包括“无害”的修改操作。
  • 部署后看似什么都没发生,意味着更改落在了错误的部署上——诊断目标,不要重新执行。
  • 此防护可与其他流程组合:ship、env、migrate 和 seed 都将其作为步骤 0 执行;它本身不是部署工具。

评论

支持 Markdown