Files
english/.opencode/scripts/README.md
2026-04-12 01:06:31 +07:00

3.3 KiB

Claude Code Scripts

Centralized utility scripts for Claude Code skills.

Installation

Install required dependencies:

pip install -r requirements.txt

resolve_env.py

Centralized environment variable resolver that follows Claude Code's hierarchy.

Priority Order (Highest to Lowest)

  1. process.env - Runtime environment variables (HIGHEST)
  2. PROJECT/.opencode/skills/<skill>/.env - Project skill-specific
  3. PROJECT/.opencode/skills/.env - Project shared across skills
  4. PROJECT/.opencode/.env - Project global defaults
  5. ~/.opencode/skills/<skill>/.env - User skill-specific
  6. ~/.opencode/skills/.env - User shared across skills
  7. ~/.opencode/.env - User global defaults (LOWEST)

CLI Usage

# Resolve a variable for a specific skill
python ~/.opencode/scripts/resolve_env.py GEMINI_API_KEY --skill ai-multimodal

# With verbose output
python ~/.opencode/scripts/resolve_env.py GEMINI_API_KEY --skill ai-multimodal --verbose

# Find all locations where variable is defined
python ~/.opencode/scripts/resolve_env.py GEMINI_API_KEY --find-all

# Show hierarchy for a skill
python ~/.opencode/scripts/resolve_env.py --show-hierarchy --skill ai-multimodal

# Export format for shell sourcing
eval $(python ~/.opencode/scripts/resolve_env.py GEMINI_API_KEY --export)

Python API Usage

# Add to sys.path if needed
import sys
from pathlib import Path
sys.path.insert(0, str(Path.home() / '.claude' / 'scripts'))

from resolve_env import resolve_env, find_all, show_hierarchy

# Simple resolution
api_key = resolve_env('GEMINI_API_KEY', skill='ai-multimodal')

# With default value
api_key = resolve_env('GEMINI_API_KEY', skill='ai-multimodal', default='fallback-key')

# With verbose output
api_key = resolve_env('GEMINI_API_KEY', skill='ai-multimodal', verbose=True)

# Find all locations
locations = find_all('GEMINI_API_KEY', skill='ai-multimodal')
for description, value, path in locations:
    print(f"{description}: {value}")

# Show hierarchy
show_hierarchy(skill='ai-multimodal')

Integration Pattern

Skills should use this script instead of implementing their own resolution logic:

#!/usr/bin/env python3
import sys
from pathlib import Path

# Import centralized resolver
sys.path.insert(0, str(Path.home() / '.claude' / 'scripts'))
from resolve_env import resolve_env

# Resolve API key
api_key = resolve_env('GEMINI_API_KEY', skill='ai-multimodal')

if not api_key:
    print("Error: GEMINI_API_KEY not found")
    print("Run: python ~/.opencode/scripts/resolve_env.py --show-hierarchy --skill ai-multimodal")
    sys.exit(1)

# Use api_key...

Benefits

  • Consistent: All skills use the same resolution logic
  • Maintainable: Single source of truth for hierarchy
  • Debuggable: Built-in verbose mode and find-all functionality
  • Flexible: Supports both project-local and user-global configs
  • Clear: Shows exactly where each value comes from

Testing

# Test without any config files
python ~/.opencode/scripts/resolve_env.py TEST_VAR --verbose

# Test with environment variable
export TEST_VAR=from-runtime
python ~/.opencode/scripts/resolve_env.py TEST_VAR --verbose

# Test with skill context
python ~/.opencode/scripts/resolve_env.py GEMINI_API_KEY --skill ai-multimodal --find-all