名称: 同步环境变量 描述: 添加缺失的环境变量默认值到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 相同的过程:
- 调用
docs-management技能获取官方文档 - 使用 WebFetch 获取 CHANGELOG.md 中的额外变量
- 如果指定
--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,在此停止并报告“干运行完成。未做任何更改。”
第六阶段:应用和验证
- 读取当前文件(如果不存在则创建新文件)
- 合并新环境变量到现有的
env部分 - 保留现有值 - 从不覆盖用户设置的值
- 按字母顺序排列 - 对环境变量进行字母排序
- 写入更新后的文件
- 验证 JSON - 确保写入后文件为有效 JSON
- 报告成功
文件结构
{
"env": {
"CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "0",
"DISABLE_AUTOUPDATER": "0",
"DISABLE_TELEMETRY": "0"
}
}
如果文件有其他部分(权限、钩子等),则保留它们。
错误处理
| 错误 | 操作 |
|---|---|
| 目标文件不是有效 JSON | 报告错误,不修改 |
| 写入权限被拒绝 | 报告错误及路径 |
| 发现失败 | 报告部分结果,询问是否继续 |
同步后验证
应用更改后:
- 读取修改后的文件
- 验证 JSON 语法
- 确认所有预期更改已应用
- 报告任何差异
示例输出
## 同步完成
**目标:** .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 语法正常