distributions/codex/skills/configuration-management/SKILL.md
Manage application configuration across environments with layered config loading, environment variables, secrets management, and validation. Covers 12-factor app patterns and config file formats. Triggers on configuration management, environment variables, or settings architecture requests.
npx skillsauth add organvm-iv-taxis/a-i--skills configuration-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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__
})
development
Dry-run audit + targeted cleanup for shell command history. Currently wraps atuin (stats today, prune, dedup with dated preview artifacts); extensible to zsh/bash/mcfly backends. Always previews before applying — apply commands are echoed for the human to run, never auto-executed. Triggers on "/shell-history-hygiene", "audit atuin", "audit shell history", "clean shell history", "atuin prune", "atuin dedup", "shell history hygiene", "history cleanup". Replaces ad-hoc one-liners (e.g. `... | tee cmd > file.txt` which wrote two files, swallowed dedup output, and left a junk `cmd` file).
tools
Guided Cowork setup — install role-matched plugins, connect your tools, try a skill.
development
Manage AI agent session lifecycles with structured phases (FRAME, SHAPE, BUILD, PROVE), context preservation across sessions, handoff protocols, and session metadata tracking. Triggers on session management, agent lifecycle, or multi-session workflow requests.
tools
Parse a session transcript into a structured Session Governance Index — an annotated bibliography of every file modified and commit made, internal-energy accounting (tool uses, estimated tokens), shipped-vs-tasked atom tally, and classification of missing items as Gaps or Vacuums. Triggers on "visibility-schema-substrate-sweep", "session cascade audit", "session governance audit", or any request to summarize what a session actually produced versus what it was asked to produce.