𧬠Real Types, Not Just Strings
Declare type = "port", an enum, a regex pattern, or a conditional requiredIf on any variable. check/doctor/setup enforce it; a typo'd log level or an out-of-range port gets caught before you run the app.
π¦ Validates Your Deployment, Not Just Your Laptop
envshield check reads a docker-compose file or a Kubernetes manifest directly β the config that actually ships, checked the same way your local .env is.
π Scales to a Monorepo
One env.schema.toml per service, one envshield.yml tying them together, and extends for variables every service shares. envshield service discover finds every service and seeds all their schemas in one command.
β‘ Onboarding That Knows What's Missing
New dev runs envshield setup. Prompted with descriptions, secrets hidden, enum fields shown as a picker. It tells you exactly which variables you need and which are secret β you still get the actual secret values from your team the way you always have.
π©Ί Prevents Drift
envshield doctor catches config mismatches β including in your deployment manifest, if one's registered β before they reach production. envshield check makes a solid CI gate.
βοΈ Typed Config Code
Generate real Python (pydantic) or TypeScript (zod) code straight from your schema. Type-safe, validated on startup, secrets masked by construction, not convention.
π Diff-Aware Secret Scanning
Pre-commit hook scans only newly-added lines in excluded files. Allows intentional baseline secrets while catching real ones. Line-level, positional diff β not a text-content guess.
π Git Hooks That Behave
Installed with one prompt, never repeated. Respects a configured core.hooksPath (e.g. Husky) instead of assuming .git/hooks. Overwriting always tells you what would be lost first.
π Fresh Documentation
envshield schema sync regenerates .env.example from schema. One source of truth. Documentation never rots.