Install
$ agentstack add skill-organvm-a-i-skills-configuration-management ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ● Shell / process execution Used
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Configuration Management
Load, validate, and manage application configuration across environments.
Configuration Hierarchy
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
Python: Pydantic Settings
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
Environment-Specific Overrides
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
model_config = {
"env_prefix": "APP_",
"env_file": [".env", f".env.{os.getenv('APP_ENV', 'development')}"],
}
Environment Variable Conventions
Naming
# 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 Files
# .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
.gitignore Rules
.env.local
.env.*.local
*.secret
Configuration Validation
Fail Fast on Startup
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)
Schema Validation for Config Files
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
YAML/TOML Configuration
YAML with Anchors
defaults: &defaults
log_level: INFO
workers: 4
timeout: 30
development:
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
Docker Secrets
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(), "")
Feature Flags
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__
})
12-Factor Config Principles
- Store config in the environment — Not in code
- Strict separation — Config varies between deploys; code doesn't
- No config groups (dev/staging/prod) — Each deploy is independently configured
- Secrets are config — Treat them as environment variables, never commit them
Anti-Patterns
- Hardcoded configuration — Always externalize into env vars or config files
- Secrets in code or git — Use secret managers or environment variables
- No validation — Fail fast on startup if config is invalid
- Environment-specific code branches — Config should change behavior, not if/else on env name
- Overly complex config — If a value rarely changes, a sensible default beats configurability
- Missing .env.example — Always provide a template showing required variables
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: organvm
- Source: organvm/a-i--skills
- License: Apache-2.0
- Homepage: https://organvm.github.io/a-i--skills/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.