From example-skills
Manages application configuration across environments using layered loading from CLI args, env vars, .env files, config files, secrets, and Pydantic validation. Covers 12-factor patterns for settings architecture.
How this skill is triggered — by the user, by Claude, or both
Slash command
/example-skills:configuration-managementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Load, validate, and manage application configuration across environments.
Load, validate, and manage application configuration across environments.
Priority order (highest wins):
1. Command-line arguments
2. Environment variables
3. .env.local (git-ignored, per-developer)
4. .env.{environment} (e.g., .env.production)
5. .env (shared defaults)
6. Config file (config.yaml, settings.toml)
7. Application defaults
from pydantic_settings import BaseSettings
from pydantic import Field, SecretStr
class Settings(BaseSettings):
model_config = {"env_prefix": "APP_", "env_file": ".env"}
# Required
database_url: str
redis_url: str = "redis://localhost:6379"
# Secrets (masked in logs)
api_key: SecretStr # allow-secret
db_password: SecretStr
# Typed with defaults
debug: bool = False
log_level: str = "INFO"
workers: int = Field(default=4, ge=1, le=32)
allowed_origins: list[str] = ["http://localhost:3000"]
settings = Settings() # Loads from env + .env file
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
model_config = {
"env_prefix": "APP_",
"env_file": [".env", f".env.{os.getenv('APP_ENV', 'development')}"],
}
# Prefix with app name to avoid collisions
APP_DATABASE_URL=postgresql://...
APP_REDIS_URL=redis://...
APP_LOG_LEVEL=DEBUG
# Nested config uses double underscore
APP_AUTH__SECRET_KEY=...
APP_AUTH__TOKEN_TTL=3600
# .env (committed, shared defaults)
APP_LOG_LEVEL=INFO
APP_WORKERS=4
APP_REDIS_URL=redis://localhost:6379
# .env.local (git-ignored, developer overrides)
APP_DATABASE_URL=postgresql://dev:dev@localhost:5432/myapp
APP_DEBUG=true
# .env.production (committed, production defaults)
APP_LOG_LEVEL=WARNING
APP_WORKERS=8
APP_DEBUG=false
.env.local
.env.*.local
*.secret
def validate_config(settings: Settings) -> None:
errors = []
if settings.debug and settings.log_level == "WARNING":
errors.append("Debug mode with WARNING log level — probably unintended")
if "localhost" in settings.database_url and not settings.debug:
errors.append("Localhost database URL in non-debug mode")
if errors:
for e in errors:
print(f"CONFIG ERROR: {e}", file=sys.stderr)
raise SystemExit(1)
import yaml
import jsonschema
def load_config(path: str, schema_path: str) -> dict:
config = yaml.safe_load(Path(path).read_text())
schema = json.loads(Path(schema_path).read_text())
jsonschema.validate(config, schema)
return config
defaults: &defaults
log_level: INFO
workers: 4
timeout: 30
development:
<<: *defaults
debug: true
database_url: postgresql://localhost/dev
production:
<<: *defaults
log_level: WARNING
workers: 16
database_url: ${DATABASE_URL} # Resolved at runtime
[tool.myapp]
log_level = "INFO"
workers = 4
[tool.myapp.database]
pool_size = 10
timeout = 30
import os
def resolve_secret(value: str) -> str:
if value.startswith("op://"):
# 1Password reference
return subprocess.check_output(["op", "read", value]).decode().strip()
elif value.startswith("file://"):
# File reference (Docker secrets)
return Path(value[7:]).read_text().strip()
elif value.startswith("env://"):
# Explicit env var reference
return os.environ[value[6:]]
return value
def load_docker_secret(name: str) -> str:
secret_path = Path(f"/run/secrets/{name}")
if secret_path.exists():
return secret_path.read_text().strip()
return os.environ.get(name.upper(), "")
from dataclasses import dataclass
@dataclass
class FeatureFlags:
new_dashboard: bool = False
v2_api: bool = False
experimental_search: bool = False
@classmethod
def from_env(cls) -> "FeatureFlags":
return cls(**{
field: os.getenv(f"FF_{field.upper()}", "false").lower() == "true"
for field in cls.__dataclass_fields__
})
npx claudepluginhub a-organvm/a-i--skills --plugin document-skillsProvides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.