python-configuration
Python configuration management via environment variables and typed settings. Use when externalizing config, setting up pydantic-settings, managing secrets, or implementing environment-specific behavior.
By wshobson · 10,195 installs
npx skills add wshobson/agents --skill python-configuration
Source repository · Upstream listing
Python Configuration Management
Externalize configuration from code using environment variables and typed settings. Well managed configuration enables the same code to run in any environment without modification.
When to Use This Skill
Setting up a new project's configuration system
Migrating from hardcoded values to environment variables
Implementing pydantic settings for typed configuration
Managing secrets and sensitive values
Creating environment specific settings (dev/staging/prod)
Validating configuration at application startup
Core Concepts
1. Externalized Configuration
All environment specific values (URLs, secrets, feature flags) come from environment variables, not code.
2. Typed Settings
Parse and validate configuration into typed objects at startup, not scattered throughout code.
3. Fail Fast
Validate all required configuration at application boot. Missing config should crash immediately with a clear message.
4. Sensible Defaults
Provide reasonable defaults for local development while requiring explicit values for sensitive settings.
Quick Start
Fundamental Patterns
Pattern 1: Typed Settings with Pydantic
Create a central settings class that loads and validates all configuration.
Import settings throughout your application:
Pattern 2: Fail Fast on Missing Configuration
Required settings should crash the application immediately with a clear error.
A clear error at startup is better than a cryptic None failure mid request.
Pattern 3: Local Development Defaults
Provide sensible defaults for local development while requiring explicit values for secrets.
Create a .env file for local development (never commit this):
Pattern 4: Namespaced Environment Variables
Prefix related variables for clarity and easy debugging.
Makes env grep DB useful for debugging.
Detailed worked examples and patterns
Detailed sections (starting with Advanced Patterns ) live in references/details.md . Read that file when the navigation summary above is insufficient.
Best Practices Summary
1. Never hardcode config All environment specific values from env vars
2. Use typed settings Pydantic settings with validation
3. Fail fast Crash on missing required config at startup
4. Provide dev defaults Make local development easy
5. Never commit secrets Use .env files (gitignored) or secret managers
6. Namespace variables DB HOST , REDIS URL for clarity
7. Import settings singleton Don't call os.getenv() throughout code
8. Document all variables README should list required env vars
9. Validate early Check config correctness at boot time
10. Use secrets dir Support mounted secrets in containers