同步环境变量Skill sync-environment-variables

这个技能用于自动化同步环境变量,将缺失的默认值添加到设置文件中,以简化配置管理和提升开发效率。关键词包括环境变量、同步、配置管理、开发工具、自动化设置、DevOps。

DevOps 0 次安装 0 次浏览 更新于 3/11/2026

名称: 同步环境变量 描述: 添加缺失的环境变量默认值到settings.json或settings.local.json 参数提示: “[–target project|local] [–dry-run] [–include-undocumented]” 允许工具: Task, Skill, Read, Write, Edit, WebFetch, AskUserQuestion

同步环境变量

添加缺失的环境变量条目及明确默认值到设置文件。

参数

参数 描述
--target project 更新 .claude/settings.json(默认)
--target local 更新 .claude/settings.local.json
--dry-run 显示更改而不修改文件
--include-undocumented 包括变更日志/发现的环境变量(不仅是官方)

第一阶段:发现

运行环境变量发现,使用与 list-environment-variables 相同的过程:

  1. 调用 docs-management 技能获取官方文档
  2. 使用 WebFetch 获取 CHANGELOG.md 中的额外变量
  3. 如果指定 --include-undocumented,则启动 MCP 研究代理

收集所有发现的环境变量及其默认值。

第二阶段:读取当前设置

基于 --target 参数确定目标文件:

目标 文件路径
project(默认) .claude/settings.json
local .claude/settings.local.json

读取目标文件。如果不存在:

  • 对于 project:创建新文件,包含基本结构
  • 对于 local:创建新文件(此文件被 gitignore 忽略)

解析当前的 env 部分(如果存在)。

第三阶段:比较和分类

对于每个发现的环境变量,分类如下:

类别 标准 操作
缺失 不在当前设置中,有已知默认值 添加到设置
已存在 已存在于当前设置 跳过(保留用户值)
用户特定 无通用默认值(例如,API密钥) 跳过,仅报告
自定义 CLAUDE_HOOK_* 或仓库特定 永不修改

要添加的环境变量(带默认值)

这些变量有已知、安全的默认值:

{
  "env": {
    "DISABLE_AUTOUPDATER": "0",
    "DISABLE_TELEMETRY": "0",
    "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "0",
    "CLAUDE_CODE_SKIP_EXT_PROMPT": "0"
  }
}

永不自動添加的环境变量

  • ANTHROPIC_API_KEY - 用户特定,无默认值
  • CLAUDE_CODE_USE_BEDROCK - 提供商选择,用户决定
  • CLAUDE_CODE_USE_VERTEX - 提供商选择,用户决定
  • AWS_* - AWS 凭证,用户特定
  • GOOGLE_* - Google 凭证,用户特定
  • HTTP_PROXY / HTTPS_PROXY - 网络特定
  • CLAUDE_HOOK_* - 仓库特定的钩子变量

第四阶段:预览更改

显示将要添加的内容:

## 环境变量同步预览

### 目标: .claude/settings.json

### 要添加的变量
| 变量 | 默认值 | 原因 |
|----------|---------|--------|
| DISABLE_AUTOUPDATER | "0" | 官方默认值,不在当前设置中 |
| ... | ... | ... |

### 跳过的变量(已设置)
| 变量 | 当前值 |
|----------|---------------|
| DISABLE_TELEMETRY | "1" |
| ... | ... |

### 跳过的变量(无安全默认值)
| 变量 | 原因 |
|----------|--------|
| ANTHROPIC_API_KEY | 用户特定,无通用默认值 |
| ... | ... |

第五阶段:用户确认

除非指定 --dry-run,否则请求确认:

AskUserQuestion:
  question: "是否应用这些更改到设置?"
  options:
    - "是,应用更改"
    - "否,中止"
    - "先显示完整文件预览"

如果指定 --dry-run,在此停止并报告“干运行完成。未做任何更改。”

第六阶段:应用和验证

  1. 读取当前文件(如果不存在则创建新文件)
  2. 合并新环境变量到现有的 env 部分
  3. 保留现有值 - 从不覆盖用户设置的值
  4. 按字母顺序排列 - 对环境变量进行字母排序
  5. 写入更新后的文件
  6. 验证 JSON - 确保写入后文件为有效 JSON
  7. 报告成功

文件结构

{
  "env": {
    "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "0",
    "DISABLE_AUTOUPDATER": "0",
    "DISABLE_TELEMETRY": "0"
  }
}

如果文件有其他部分(权限、钩子等),则保留它们。

错误处理

错误 操作
目标文件不是有效 JSON 报告错误,不修改
写入权限被拒绝 报告错误及路径
发现失败 报告部分结果,询问是否继续

同步后验证

应用更改后:

  1. 读取修改后的文件
  2. 验证 JSON 语法
  3. 确认所有预期更改已应用
  4. 报告任何差异

示例输出

## 同步完成

**目标:** .claude/settings.json

### 已添加(3个变量)
- CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR = "0"
- DISABLE_AUTOUPDATER = "0"
- CLAUDE_CODE_SKIP_EXT_PROMPT = "0"

### 已保留(1个变量)
- DISABLE_TELEMETRY = "1"(用户设置的值已保留)

### 已跳过(2个变量)
- ANTHROPIC_API_KEY(无安全默认值)
- CLAUDE_CODE_USE_BEDROCK(提供商选择)

**文件验证:** JSON 语法正常