env-manager

$npx mdskill add laolaoshiren/claude-code-skills-zh/env-manager

Scans, validates, and syncs .env files for secure configuration management.

  • Detects missing, unused, or hardcoded environment variables in projects.
  • Relies on file system scanning and regex pattern matching for code references.
  • Compares .env files against usage and generates validation rules.
  • Outputs .env.example templates, schema files, and actionable audit reports.

SKILL.md

.github/skills/env-managerView on GitHub ↗
---
name: env-manager
description: 环境变量管理器:扫描、校验、同步 .env 文件,生成安全配置模板
---

# 环境变量管理器

## 触发条件
当用户要求管理环境变量、.env 文件、配置同步、Secrets 检查时激活。

## 工作流程

### 1. 扫描项目
- 检测所有 `.env*` 文件(.env / .env.local / .env.development / .env.production)
- 默认只提取变量名、来源文件和是否为空;真实值必须脱敏,不写入报告或终端输出
- 扫描代码中引用的环境变量(`process.env.XXX` / `os.environ['XXX']` / `os.getenv('XXX')`)
- 识别静态扫描中未发现引用的变量(仅作为待人工确认候选)
- 识别已使用但未定义的变量(缺失配置)

### 2. 校验分析
- 检查必填变量是否有默认值
- 验证 URL 格式、端口号范围、布尔值格式
- 检测硬编码的敏感信息(API Key / Token / Password)
- 对比 .env.example 与实际 .env 文件的差异

### 3. 生成/修复
- 生成 `.env.example` 模板(仅包含变量名和说明,不含真实值)
- 生成 `.env.schema.json`(结构化校验规则)
- 检测到硬编码密钥时,建议迁移到环境变量
- 生成 `dotenv` 加载配置(针对不同框架)

### 4. 同步
- 在 monorepo 中同步共享环境变量
- 生成 Docker Compose 的 env_file 配置
- 生成 CI/CD 的 Secrets 配置清单

## 输出格式

### .env.example 示例
```bash
# 应用配置
APP_NAME=my-app
APP_ENV=development          # development | staging | production
APP_PORT=3000                # 服务端口 (1-65535)
APP_DEBUG=true               # 调试模式

# 数据库
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mydb
DB_USER=                     # 必填
DB_PASSWORD=                 # 必填,生产环境请使用 Secrets

# 第三方服务
REDIS_URL=                   # 必填,格式:redis://host:port
JWT_SECRET=                  # 必填,至少 32 位随机字符串
```

### 校验报告示例
```
📋 环境变量分析报告
==================
✅ 定义且使用: 12 个
⚠️  定义未使用: 2 个(S3_BUCKET, OLD_API_KEY)
❌ 使用未定义: 1 个(SENDGRID_API_KEY)
🔒 硬编码敏感信息: 1 处(src/auth.js:23)

建议:
1. 人工确认 S3_BUCKET 和 OLD_API_KEY 是否被 CI、部署脚本或动态代码引用,再决定是否删除
2. 在 .env 中添加 SENDGRID_API_KEY
3. 将 src/auth.js:23 的硬编码 token 迁移到环境变量
```

## 安全检查清单
- [ ] 扫描和报告只展示变量名及脱敏状态,不回显真实 Secret
- [ ] `.env` 已添加到 `.gitignore`
- [ ] `.env.example` 存在且与代码同步
- [ ] 无硬编码的 API Key / Token / Password
- [ ] 生产环境使用 Secrets 管理(GitHub Secrets / AWS SSM / Vault)
- [ ] JWT_SECRET / ENCRYPTION_KEY 足够随机(32+ 字符)
- [ ] 数据库密码不在日志中输出

## 修改边界

- 不要自动删除或改写真实 `.env`;先展示差异并取得用户确认。
- “未使用”只代表静态扫描没有发现,仍需检查 CI、容器、部署平台和动态变量访问。
- 不把生产 Secret 复制到 `.env.example`、Schema、日志、Issue 或聊天输出中。

## 常见陷阱
- **Next.js**:只有 `NEXT_PUBLIC_` 前缀的变量会暴露给客户端,后端专用变量不要加此前缀
- **Docker**:构建时的 ARG 和运行时的 ENV 是不同的,不要混淆
- **Create React App**:`.env` 中的变量必须以 `REACT_APP_` 开头才会被注入
- **Vite**:使用 `VITE_` 前缀暴露变量给客户端
- **monorepo**:根目录的 `.env` 不会自动被子包读取,需要显式配置

## 框架适配

| 框架 | 客户端前缀 | 配置文件 | 加载方式 |
|------|-----------|---------|---------|
| Next.js | NEXT_PUBLIC_ | .env.local | 自动 |
| Vite | VITE_ | .env | 自动 |
| CRA | REACT_APP_ | .env | 自动 |
| Nuxt | NUXT_PUBLIC_ | .env | 自动 |
| Vue CLI | VUE_APP_ | .env | 自动 |

More from laolaoshiren/claude-code-skills-zh

SkillDescription
api-tester依据真实 OpenAPI、路由实现和现有测试生成并验证 API 测试。用于用户要求测试接口、补集成测试、验证 API 契约、生成回归用例或排查接口兼容性时;区分“生成测试”和“执行请求”的授权,不猜测状态码、响应结构或 SLA,不在未确认环境中发送写请求。
changelog-genChangelog 生成器 - 从 Git 历史自动生成 CHANGELOG
db-migrator数据库迁移助手 - Schema 对比、迁移脚本生成
dep-auditor审计 Node.js、Python、Go、Rust、JVM、Ruby 项目的依赖漏洞、版本健康度与许可证事实;当用户要求检查 package.json、lockfile、requirements、go.mod、Cargo.toml、pom.xml、Gemfile.lock,或生成不改依赖的中文审计报告时使用
ds-mapper项目目录结构地图 - 生成带说明的可视化目录树,快速理解任意代码库
error-translator编程错误消息翻译专家 — 将英文错误消息翻译成中文,解释原因并提供修复方案
eslint-fix安全诊断并修复 ESLint error、warning 和配置兼容问题。用于用户要求运行 lint、解释 ESLint 报错、限定范围自动修复或迁移 ESLint 配置时;优先使用项目锁定的包管理器与版本,先预检再修改,不自动下载最新版或批量改写无关源码。
github-actions-gen分析真实项目并生成或修订安全、可验证的 GitHub Actions workflow;当用户要求创建 CI、测试矩阵、构建、Release、部署、缓存、Secrets、OIDC、PR 自动化或排查 workflow 配置时使用
i18n-helper国际化/本地化助手 — 扫描代码中的硬编码文本、生成 i18n 配置、批量翻译
log-analyzer日志分析助手 — 智能解析日志文件,识别异常模式,定位问题根因