Automatically applies when adding configuration settings. Ensures proper dynaconf pattern with @env, @int, @bool type casting in settings.toml and environment-specific overrides.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add mattnigh/skills_collection --skill collection --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Collection?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mattnigh-collection-d450b263)More formats (shields.io, HTML) on the badges page.
---
name: dynaconf-config
description: Automatically applies when adding configuration settings. Ensures proper dynaconf pattern with @env, @int, @bool type casting in settings.toml and environment-specific overrides.
---
# Dynaconf Configuration Pattern Enforcer
When adding new configuration to `settings.toml`, always follow the dynaconf pattern.
## ✅ Correct Pattern
```toml
# settings.toml
[default]
# Base configuration with type casting
api_base_url = "@env API_BASE_URL|http://localhost:8080"
api_timeout = "@int 30"
feature_enabled = "@bool true"
max_retries = "@int 3"
# API endpoints (no @ prefix for strings)
api_endpoint = "/api/v1/endpoint"
[dev_local]
# Override for local development
api_base_url = "@env API_BASE_URL|http://localhost:8080"
[dev_remote]
# Override for remote development
api_base_url = "@env API_BASE_URL|http://gateway-service"
[production]
# Production overrides
api_base_url = "@env API_BASE_URL|https://api.production.com"
api_timeout = "@int 60"
```
## Type Casting Directives
**Use appropriate prefixes:**
- `@env VAR|default` - Environment variable with fallback
- `@int 123` - Cast to integer
- `@bool true` - Cast to boolean
- `@float 1.5` - Cast to float
- `@path ./dir` - Convert to Path object
- No prefix - String value
## Environment Variable Override
**Pattern:** `APPNAME_SETTING_NAME`
Example:
```toml
# In settings.toml
api_timeout = "@int 30"
# Override via environment
export APP_API_TIMEOUT=60
```
## Configuration Access
```python
from dynaconf import Dynaconf
settings = Dynaconf(
settings_files=['settings.toml', '.secrets.toml'],
environments=True,
load_dotenv=True,
)
timeout = settings.api_timeout # Returns int 30
url = settings.api_base_url # Returns string
```
## Common Patterns
**API Configuration:**
```toml
service_api_base_url = "@env SERVICE_API_URL|http://localhost:8080"
service_endpoint = "/api/v1/endpoint/{param}"
service_timeout = "@int 30"
```
**Feature Flags:**
```toml
feature_enabled = "@bool true"
feature_beta_mode = "@bool false"
```
**Database Paths:**
```toml
db_path = "@path data/database.db"
```
**Secrets Management:**
```toml
# settings.toml (checked into git)
api_key = "@env API_KEY"
# .secrets.toml (gitignored)
api_key = "actual-secret-key"
```
## ❌ Anti-Patterns
```toml
# ❌ Don't hardcode secrets
api_key = "sk-1234567890"
# ❌ Don't forget type casting for numbers
timeout = "30" # Will be string, not int
# ❌ Don't mix environments in same section
[default]
api_url = "https://production.com" # Should be in [production]
```
## Best Practices Checklist
- ✅ Add to `[default]` section first
- ✅ Use appropriate `@` type casting
- ✅ Add environment variable overrides with `@env`
- ✅ Add to environment-specific sections as needed
- ✅ Document in comments what the setting does
- ✅ Keep secrets in `.secrets.toml` (gitignored)
- ✅ Use consistent naming conventions (snake_case)
- ✅ Provide sensible defaults
## Auto-Apply
When adding configuration:
1. Add to `[default]` section first
2. Use appropriate `@` type casting
3. Add environment variable overrides
4. Add to environment-specific sections as needed
5. Document in comments what the setting does
## Related Skills
- structured-errors - For validation errors
- pydantic-models - For settings validation with Pydantic
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!