---
id: gh-convex-deploy-guard
name: "convex-deploy-guard"
url: https://skills.yangsir.net/skill/gh-convex-deploy-guard
author: convex
domain: ai-ci-cd-deployment
tags: ["deployment-safety", "convex", "devops", "production-guard", "read-only-mode"]
install_count: 35000
rating: 4.60 (120 reviews)
github: https://github.com/convex/agent-skills/tree/main/skills/convex-deploy-guard
---

# convex-deploy-guard

> 在任何会影响 Convex 部署的命令执行前，先识别并播报目标部署环境（dev / preview / prod），生产环境操作需逐次、逐目标、逐会话重新获得显式确认，并支持会话级只读模式。该 Skill 把「先确认、再执行」固化为标准流程，避免误部署到生产环境，显著降低线上事故与回滚成本。

**Stats**: 35,000 installs · 4.6/5 (120 reviews)

## Before / After 对比

### 误部署到生产环境的事故控制

**Before**:

开发者直接在终端敲下部署命令，命令落到哪个环境全凭记忆和环境变量，生产与开发环境混用一台机器，误发布到线上后才从用户投诉中发现。

**After**:

该 Skill 在每条部署命令前先分类并播报目标环境，生产操作必须逐次获得新的显式确认，误指向线上时会被流程拦截，事故在命令执行前就被终止。

| Metric | Before | After | Change |
|---|---|---|---|
| 每月误部署到生产的事故数 | 3次 | 0次 | -100% |
| 确认目标环境平均耗时 | 12分钟 | 1分钟 | -92% |
| 部署相关回滚次数 | 5次/月 | 1次/月 | -80% |

## Readme

<!-- GENERATED from convex-agents content/capabilities/deploy-guard.json — do not edit by hand. -->

# Deployment target guard

Deployments are not interchangeable, and most incidents start with a command aimed at the wrong one. Every Convex project has several (personal dev, preview, prod — often across multiple projects on one machine). This guard is the standing discipline: identify, announce, then act — and treat prod as consent-gated, per action, per session.

## Workflow

1. IDENTIFY before you act: read `CONVEX_DEPLOYMENT` in .env.local, `convex.json`, and whether `CONVEX_DEPLOY_KEY` is set; or call the official Convex MCP `status` tool. Classify the target: local-anonymous | dev | preview | prod. If two sources disagree, resolve before proceeding.
2. ANNOUNCE in one line before any deployment-affecting command: `target: dev (joyful-capybara-123, personal dev)`. Never run the command in the same breath as discovering the target — announce first.
3. PROD needs a FRESH explicit yes: before `npx convex deploy` (when it resolves to prod), `npx convex run --prod`, `env set` on prod, snapshot `import`/`export` on prod, or starting the MCP with prod access — state exactly what will change on which deployment and get an explicit yes in THIS session. A yes given earlier, or for a different target, does not carry.
4. MCP safety defaults: start the official MCP scoped non-prod (`--deployment dev`). The two prod flags are DIFFERENT risk levels — keep them split: a read-only prod audit (advisor/insights reading data/logs/insights) passes ONLY `--cautiously-allow-production-pii` (read tools); `--dangerously-enable-production-deployments` (which enables MUTATING prod tools) stays OFF unless the user explicitly asked to CHANGE prod this session. Never pair them by default — 'look at prod' must not silently grant 'mutate prod'.
5. READ-ONLY session mode: when the user says 'read-only' / 'don't change anything', honor it absolutely for the rest of the session — no deploy, no env set/remove, no mutations via `run`, no imports; start the MCP with `--disable-tools run,envSet,envRemove`.
6. Wrong-deployment diagnosis: when a deploy 'didn't change anything', do NOT re-deploy harder. Re-run step 1 — the deploy almost certainly landed on a different deployment than the one being observed.
7. Ambiguity = stop: if you cannot determine which deployment a command will hit, find out (status tool) — never guess.

## Rules

- Classify and announce the target BEFORE every deployment-affecting command — identification and action are two separate steps.
- Prod consent is per-action, per-target, per-session: state what changes where, get a fresh explicit yes.
- Keep the two prod MCP flags split by risk: --cautiously-allow-production-pii (read-only) for an audit; --dangerously-enable-production-deployments (mutating) only when the user explicitly asks to change prod. Both are user-spoken-only; default every MCP start to a non-prod deployment selector.
- Read-only mode, once requested, is absolute for the session — including 'harmless' mutations.
- A deploy that seemed to do nothing means the WRONG deployment changed — diagnose the target, don't re-run.
- This guard composes: ship, env, migrate, and seed run it as their step 0; it is not itself a deploy tool.


---
*Source: https://skills.yangsir.net/skill/gh-convex-deploy-guard*
*Markdown mirror: https://skills.yangsir.net/api/skill/gh-convex-deploy-guard/markdown*