npx claudepluginhub melodic-software/claude-code-plugins --plugin claude-ecosystemWant just this skill?
Add to a custom plugin, then install with one command.
Add missing environment variable defaults to settings.json or settings.local.json
This skill is limited to using the following tools:
Sync Environment Variables
Add missing environment variable entries with explicit defaults to settings files.
Arguments
| Argument | Description |
|---|---|
--target project | Update .claude/settings.json (default) |
--target local | Update .claude/settings.local.json |
--dry-run | Show changes without modifying files |
--include-undocumented | Include changelog/discovered vars (not just official) |
Phase 1: Discovery
Run environment variable discovery using the same process as list-environment-variables:
- Invoke
docs-managementskill for official documentation - WebFetch CHANGELOG.md for additional variables
- If
--include-undocumented, spawn MCP research agents
Collect all discovered variables with their default values.
Phase 2: Read Current Settings
Determine target file based on --target argument:
| Target | File Path |
|---|---|
project (default) | .claude/settings.json |
local | .claude/settings.local.json |
Read the target file. If it doesn't exist:
- For
project: Create new file with basic structure - For
local: Create new file (this is gitignored)
Parse the current env section (if present).
Phase 3: Compare and Categorize
For each discovered environment variable, categorize:
| Category | Criteria | Action |
|---|---|---|
| MISSING | Not in current settings, has known default | Add to settings |
| EXISTS | Already in current settings | Skip (preserve user value) |
| USER-SPECIFIC | No universal default (e.g., API keys) | Skip, report only |
| CUSTOM | CLAUDE_HOOK_* or repo-specific | Never touch |
Variables to Add (with defaults)
These variables have known, safe defaults:
{
"env": {
"DISABLE_AUTOUPDATER": "0",
"DISABLE_TELEMETRY": "0",
"CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "0",
"CLAUDE_CODE_SKIP_EXT_PROMPT": "0"
}
}
Variables to NEVER Add Automatically
ANTHROPIC_API_KEY- User-specific, no defaultCLAUDE_CODE_USE_BEDROCK- Provider choice, user decisionCLAUDE_CODE_USE_VERTEX- Provider choice, user decisionAWS_*- AWS credentials, user-specificGOOGLE_*- Google credentials, user-specificHTTP_PROXY/HTTPS_PROXY- Network-specificCLAUDE_HOOK_*- Repository-specific hook variables
Phase 4: Preview Changes
Display what will be added:
## Environment Variable Sync Preview
### Target: .claude/settings.json
### Variables to Add
| Variable | Default | Reason |
|----------|---------|--------|
| DISABLE_AUTOUPDATER | "0" | Official default, not in current settings |
| ... | ... | ... |
### Variables Skipped (Already Set)
| Variable | Current Value |
|----------|---------------|
| DISABLE_TELEMETRY | "1" |
| ... | ... |
### Variables Skipped (No Safe Default)
| Variable | Reason |
|----------|--------|
| ANTHROPIC_API_KEY | User-specific, no universal default |
| ... | ... |
Phase 5: User Confirmation
Unless --dry-run is specified, ask for confirmation:
AskUserQuestion:
question: "Apply these changes to settings?"
options:
- "Yes, apply changes"
- "No, abort"
- "Show me the full file preview first"
If --dry-run, stop here and report "Dry run complete. No changes made."
Phase 6: Apply and Validate
- Read current file (or create new if doesn't exist)
- Merge new env vars into existing
envsection - Preserve existing values - never overwrite user-set values
- Alphabetical order - sort env vars alphabetically
- Write updated file
- Validate JSON - ensure file is valid JSON after write
- Report success
File Structure
{
"env": {
"CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "0",
"DISABLE_AUTOUPDATER": "0",
"DISABLE_TELEMETRY": "0"
}
}
If file has other sections (permissions, hooks, etc.), preserve them.
Error Handling
| Error | Action |
|---|---|
| Target file not valid JSON | Report error, do not modify |
| Write permission denied | Report error with path |
| Discovery failed | Report partial results, ask to continue |
Post-Sync Verification
After applying changes:
- Read back the modified file
- Validate JSON syntax
- Confirm all intended changes were applied
- Report any discrepancies
Example Output
## Sync Complete
**Target:** .claude/settings.json
### Added (3 variables)
- CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR = "0"
- DISABLE_AUTOUPDATER = "0"
- CLAUDE_CODE_SKIP_EXT_PROMPT = "0"
### Preserved (1 variable)
- DISABLE_TELEMETRY = "1" (user-set value kept)
### Skipped (2 variables)
- ANTHROPIC_API_KEY (no safe default)
- CLAUDE_CODE_USE_BEDROCK (provider choice)
**File validated:** JSON syntax OK