Skillshub anth-multi-env-setup
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/anth-multi-env-setup" ~/.claude/skills/comeonoliver-skillshub-anth-multi-env-setup && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/anth-multi-env-setup/SKILL.mdsource content
Anthropic Multi-Environment Setup
Overview
Configure isolated Claude API environments with per-env API keys, model selection, and spend controls using Anthropic Workspaces.
Environment Configuration
# config.py import os from dataclasses import dataclass @dataclass class ClaudeConfig: api_key: str model: str max_tokens: int max_retries: int timeout: float monthly_budget_usd: float CONFIGS = { "development": ClaudeConfig( api_key=os.environ["ANTHROPIC_API_KEY_DEV"], model="claude-haiku-4-20250514", # Cheap for dev max_tokens=256, max_retries=1, timeout=15.0, monthly_budget_usd=10.0, ), "staging": ClaudeConfig( api_key=os.environ["ANTHROPIC_API_KEY_STAGING"], model="claude-sonnet-4-20250514", max_tokens=1024, max_retries=2, timeout=30.0, monthly_budget_usd=50.0, ), "production": ClaudeConfig( api_key=os.environ["ANTHROPIC_API_KEY_PROD"], model="claude-sonnet-4-20250514", max_tokens=4096, max_retries=5, timeout=120.0, monthly_budget_usd=5000.0, ), } def get_config() -> ClaudeConfig: env = os.getenv("APP_ENV", "development") return CONFIGS[env]
Anthropic Workspaces (Key Isolation)
Create separate Workspaces in console.anthropic.com:
| Workspace | Purpose | Rate Limit Tier |
|---|---|---|
| Development & testing | Tier 1 |
| Pre-production validation | Tier 2 |
| Live traffic | Tier 3+ |
Each workspace has independent API keys, usage tracking, and rate limits.
Environment Files
# .env.development ANTHROPIC_API_KEY_DEV=sk-ant-api03-dev-... APP_ENV=development # .env.staging ANTHROPIC_API_KEY_STAGING=sk-ant-api03-stg-... APP_ENV=staging # .env.production (stored in secret manager, not files) ANTHROPIC_API_KEY_PROD=sk-ant-api03-prd-... APP_ENV=production
Client Factory
import anthropic def create_client() -> anthropic.Anthropic: config = get_config() return anthropic.Anthropic( api_key=config.api_key, max_retries=config.max_retries, timeout=config.timeout, )
Per-Environment Model Override
# Development: always use Haiku (cheapest) # Staging: use production model for accuracy testing # Production: use configured model def get_model(override: str | None = None) -> str: if override: return override return get_config().model
Error Handling
| Issue | Cause | Fix |
|---|---|---|
| Dev key used in prod | Wrong env loaded | Validate key prefix matches environment |
| Staging rate limited | Low tier workspace | Upgrade staging workspace tier |
| Cost overrun in dev | No budget guard | Add per-env spend limits |
Resources
Next Steps
For monitoring, see
anth-observability.