Agent skill · shipshitdev

env-setup

Discover the environment variables a codebase actually reads, generate or update a grouped .env.example template, validate that required variables are set, and keep secrets out of git. Use when setting up environment variables for a project, scaffolding .env templates, validating an existing .env file, documenting required configuration, or checking that .gitignore covers env files. Backs the /env command.

What it needs

About 3k tokens when loaded.

What this skill does

Env Setup Make a project's environment configuration explicit: find every variable the code reads, keep .env.example truthful, verify the developer's real .env satisfies it, and make sure no secret file can reach git. Contract Inputs: A repository; mode setup (default, discover + scaffold + validate), validate (check only), or scaffold (regenerate templates only). Outputs: The discovered variable inventory grouped by service, gaps between code and .env.example, missing/unset required variables, and any .gitignore holes. Creates/Modifies: setup/scaffold: creates or updates .env.example (and per-app templates in a monorepo). May add missing .env rules to .gitignore. Never creates, edits, or overwrites a real .env/.env.local — it reports what is missing there and leaves the values to the developer. External Side Effects: None. Reads the codebase and env files locally; never transmits values. Confirmation Required: Before overwriting an existing .env.example that has hand-written comments or values the scan did not produce. When to Use Setting up environment variables for a new project or app Regenerating .env.example after configuration drift Validating that a .env satisfies what the code requires Auditing that .gitignore keeps secret env files out of git Phase 1: Discover Required Variables Scan the codebase for environment reads: Treat that grep as a starting inventory, never as the answer. It knows one language family (JS/TS) and two syntaxes (process.env.X and process.env["X"], plus the import.meta.env equivalents). It cannot see a variable read through a helper (getEnv("STRIPEKEY")), a destructure (const { DATABASEURL } = process.env), a dynamic key, or a non-JS service in the same repo — Python os.environ, Go os.Getenv, Dockerfiles, CI workflows. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills shipshitdev/env-setup

View the source on GitHub

Browse the @skills marketplace