name: env-manager description: 环境变量验证、同步和管理,涵盖本地开发、CI/CD 和部署平台 version: 1.0.0 category: infrastructure progressive_disclosure: entry_point: summary: “验证、同步和保护环境变量,支持框架特定的本地开发、CI/CD 和部署平台” when_to_use: “当管理 .env 文件、部署到 Vercel/Railway/Heroku、与秘密管理器同步或解决环境相关问题时” quick_start: “1. 验证本地 .env 2. 检查安全性 3. 同步到平台 4. 验证部署 5. 生成文档” references: - validation.md - security.md - synchronization.md - frameworks.md - troubleshooting.md author: Claude MPM Team license: MIT requires_tools:
- bash
- python tags:
- 环境变量
- 部署
- 安全
- devops
- nextjs
- vercel
- railway context_limit: 800
环境变量管理器
概述
系统化管理环境变量,涵盖本地开发、CI/CD 管道和部署平台。防止常见问题,如缺失变量、暴露的秘密、平台配置错误和框架特定的陷阱。
核心能力:
- 验证:检查结构、完整性、命名约定
- 安全性:扫描暴露的秘密,验证 .gitignore 覆盖范围
- 同步:与部署平台和秘密管理器同步
- 框架支持:Next.js、Express、Flask、Django 模式
- 文档:自动生成 .env.example 和设置指南
何时使用此技能
激活当:
- 设置新项目环境配置
- 部署到 Vercel、Railway、Heroku 或其他平台
- 解决“在本地工作但在生产中不工作”的问题
- 管理多个环境的秘密
- 与 1Password、AWS Secrets Manager 等同步变量
- 创建 .env.example 文档
- 新开发者入职(环境设置)
- 迁移部署平台
- 框架特定的环境配置(如 Next.js 的 NEXT_PUBLIC_ 前缀)
核心原则
- 从不记录秘密:所有操作必须永不显示实际秘密值
- 部署前验证:在本地捕获环境问题,而不是在生产中
- 框架感知:尊重框架约定(如 Next.js、Express、Flask)
- 平台特定:为每个部署平台生成正确配置
- 安全第一:扫描暴露的秘密,验证 .gitignore
快速开始
验证工作流
# 1. 检查本地 .env 结构
python scripts/validate_env.py .env
# 2. 检查缺失变量
python scripts/validate_env.py .env --compare .env.example
# 3. 验证命名约定
python scripts/validate_env.py .env --framework nextjs
# 4. 检查重复项
python scripts/validate_env.py .env --check-duplicates
安全工作流
# 1. 扫描代码中的暴露秘密
python scripts/scan_exposed.py --scan-code
# 2. 检查 .gitignore 覆盖范围
python scripts/scan_exposed.py --check-gitignore
# 3. 验证秘密格式
python scripts/scan_exposed.py --validate-formats .env
同步工作流
# 1. 比较本地与平台
python scripts/sync_secrets.py --platform vercel --compare
# 2. 生成平台配置
python scripts/sync_secrets.py --platform vercel --generate
# 3. 同步到平台(先干运行)
python scripts/sync_secrets.py --platform vercel --sync --dry-run
# 4. 实际同步
python scripts/sync_secrets.py --platform vercel --sync
文档工作流
# 从 .env 生成 .env.example
python scripts/validate_env.py .env --generate-example
# 生成设置文档
python scripts/validate_env.py .env --generate-docs
导航
详细工作流和模式:
框架特定快速参考
Next.js
# 验证 Next.js 环境结构
# - NEXT_PUBLIC_* 用于客户端变量
# - 检查 .env.local、.env.production 优先级
python scripts/validate_env.py .env --framework nextjs
# 管理文件:
# - .env.local(本地开发,gitignored)
# - .env.production(生产,通常来自平台)
# - .env(共享默认值,提交)
# - .env.example(文档,提交)
Express/Node.js
# 验证 Node.js 环境结构
python scripts/validate_env.py .env --framework nodejs
# 标准结构:
# - process.env.NODE_ENV
# - process.env.PORT
# - process.env.DATABASE_URL
Python/Flask
# 验证 Python 环境结构
python scripts/validate_env.py .env --framework python
# 标准结构:
# - FLASK_APP
# - FLASK_ENV
# - DATABASE_URL(SQLAlchemy 格式)
平台特定快速参考
Vercel
# 生成 vercel.json 环境配置
python scripts/sync_secrets.py --platform vercel --generate
# 同步到 Vercel 项目
python scripts/sync_secrets.py --platform vercel --sync
# 尊重 NEXT_PUBLIC_ 前缀用于客户端变量
Railway
# 生成 Railway 配置
python scripts/sync_secrets.py --platform railway --generate
# 同步到 Railway 项目
python scripts/sync_secrets.py --platform railway --sync
Heroku
# 生成 Heroku 配置
python scripts/sync_secrets.py --platform heroku --generate
# 通过 Heroku CLI 同步
python scripts/sync_secrets.py --platform heroku --sync
关键提醒
- 永不记录实际秘密值 - 在输出中始终掩码/编辑
- 每次部署前验证 - 在本地捕获问题
- 使用 .env.example 用于文档 - 保持更新
- 框架约定很重要 - 如 Next.js 的 NEXT_PUBLIC_、Django 的 DJANGO_SETTINGS_MODULE
- 平台特定怪癖存在 - Vercel 自动暴露 NEXT_PUBLIC_*,Railway 使用精确语法
- 秘密管理器是您的朋友 - 如 1Password、AWS Secrets Manager 用于团队同步
- .gitignore 至关重要 - 永不提交包含秘密的 .env 文件
- 环境优先级可能棘手 - 了解框架的加载顺序
常见验证检查
结构验证
- [ ] 无空值(除非明确允许)
- [ ] 无内联注释(一些解析器不支持)
- [ ] 带空格的值正确引用
- [ ] 无重复键
- [ ] 有效键命名(大写带下划线)
安全验证
- [ ] 代码中无暴露秘密
- [ ] .env 文件在 .gitignore 中
- [ ] git 历史中无秘密
- [ ] API 密钥匹配预期格式
- [ ] 无硬编码带凭据的 URL
框架验证(Next.js)
- [ ] NEXT_PUBLIC_* 仅用于客户端变量
- [ ] 无秘密在 NEXT_PUBLIC_* 变量中
- [ ] .env.local 存在用于本地秘密
- [ ] .env.example 记录所有变量
平台验证(Vercel)
- [ ] 所有必需变量定义
- [ ] 环境间无冲突
- [ ] 正确变量名(Vercel 约定)
- [ ] 构建时与运行时变量分开
与其他技能集成
相关技能
- docker-containerization - 容器中的环境变量
- security-scanning - 更广泛的安全检查包括秘密
- nextjs-local-dev - Next.js 特定开发模式
- systematic-debugging - 调试环境相关问题
工作流集成
1. 开发者创建 .env.local
2. env-manager 验证结构
3. env-manager 扫描安全问题
4. 开发者生成 .env.example
5. 部署前:env-manager 比较本地与平台
6. env-manager 生成平台配置
7. 开发者审查并确认同步
8. env-manager 同步到平台
9. 部署继续使用已验证配置
行数:197(包括 frontmatter)✓ <200