Skills directory
Launch5-point gate · Any stack

Config is code, environments are honest

One command boots it; a missing variable fails loudly; staging is production-shaped.

Use this when

Config values pasted in code 'for now'

Staging on SQLite, production on Postgres

A feature flag older than the feature

The quality gate

  • All config via environment; .env.example lists every variable with a comment
  • A missing/invalid env var fails at boot with a named error — not deep at runtime
  • Staging is production-shaped: same services, same migrations, same flags
  • Feature flags have owners and expiry dates — no immortal if-statements
  • A fresh machine boots the app from README alone, no tribal knowledge

Prove it: Fresh machine, README, one command — the app boots with no tribal knowledge.

Install or copy

Save the download as env-config-parity/SKILL.md in your agent's supported skills directory, or copy the complete package below. Load it only when its description matches the work.

Portable SKILL.md
---
name: env-config-parity
description: "Applies “Config is code, environments are honest” as a repeatable product-quality gate. Use during launch work when one command boots it; a missing variable fails loudly; staging is production-shaped."
---

# Config is code, environments are honest

Apply this skill during **Launch** work. It supports Any stack.

One command boots it; a missing variable fails loudly; staging is production-shaped.

## Instructions

Treat configuration as part of the codebase. Every setting comes from the environment, documented in a committed .env.example with a one-line comment per variable. Validate all env vars at boot against a schema and fail loudly with the variable's name — a missing key discovered at 2am deep in a request handler is a design failure. Keep staging production-shaped: same services, same migration state, same flag defaults; 'works in staging' must mean something. Give every feature flag an owner and an expiry — flags without funerals become permanent forks in your logic. The acceptance test is brutal and simple: a fresh machine, the README, one command — the app boots.

## Detect the problem

- Config values pasted in code 'for now'
- Staging on SQLite, production on Postgres
- A feature flag older than the feature

## Hold the gate

Do not declare this phase complete until every item passes:

- [ ] All config via environment; .env.example lists every variable with a comment
- [ ] A missing/invalid env var fails at boot with a named error — not deep at runtime
- [ ] Staging is production-shaped: same services, same migrations, same flags
- [ ] Feature flags have owners and expiry dates — no immortal if-statements
- [ ] A fresh machine boots the app from README alone, no tribal knowledge

## Verify the result

Fresh machine, README, one command — the app boots with no tribal knowledge.

More launch skills

Want this quality gate applied to a real product decision?

Start a First Loop