OpenParable
Skip to content
← Back to skills

Env Detection

DevOps & Security
env-detection

Env Detection is an Agent Skill for devops & security published in the nixopus/nixopus repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

Detect required environment variables from source code, config files, and .env examples. Use when preparing for deployment, checking for missing env vars, or when the user asks about required environment configuration.

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/nixopus/nixopus/blob/HEAD/api/skills/env-detection/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/env-detection, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

Environment Variable Detection

Identify all environment variables an application needs before deployment. Missing env vars are the most common cause of deployment failures.

Detection sources (check in order)

1. .env.example / .env.sample / .env.template

Primary source. Read the file and extract every variable name and any inline comments describing its purpose.

DATABASE_URL=postgresql://user:pass@localhost:5432/db
REDIS_URL=redis://localhost:6379
API_KEY=your-api-key-here
SECRET_KEY=change-me

2. Source code patterns

Use grep across the repo root for these patterns:

PatternLanguage
process.env.VAR_NAMENode.js
Deno.env.get("VAR_NAME")Deno
os.environ["VAR_NAME"] or os.getenv("VAR_NAME")Python
os.Getenv("VAR_NAME")Go
ENV["VAR_NAME"] or ENV.fetch("VAR_NAME")Ruby
env::var("VAR_NAME")Rust
System.getenv("VAR_NAME")Java
@Value("${VAR_NAME}")Spring

3. Framework config files

FileWhat to look for
next.config.js / next.config.mjsenv: block, NEXT_PUBLIC_* prefixed vars
nuxt.config.tsruntimeConfig block
vite.config.tsdefine block, VITE_* prefixed vars
docker-compose.ymlenvironment: sections
DockerfileENV and ARG directives
settings.py (Django)os.environ calls
config/*.yml (Rails)<%= ENV["VAR"] %> patterns

4. Database/service URLs

Check dependency manifests for services that typically require connection URLs:

DependencyExpected env var
pg / sequelize / prisma / typeormDATABASE_URL
mongoose / mongodbMONGODB_URI
ioredis / redisREDIS_URL
@aws-sdk/*AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION
stripeSTRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET
@sendgrid/mailSENDGRID_API_KEY
nodemailerSMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS
@auth0/* / next-authAUTH_SECRET, AUTH_URL, provider-specific keys

Classification

Classify each detected variable:

CategoryExamplesRequired for deploy?
InfrastructureDATABASE_URL, REDIS_URL, PORTYes
SecretsAPI_KEY, SECRET_KEY, JWT_SECRETYes
Service URLsNEXT_PUBLIC_API_URL, WEBHOOK_URLYes (but values differ per environment)
Build-timeNEXT_PUBLIC_*, VITE_*Yes (must be set during build)
Optional/DebugLOG_LEVEL, DEBUG, NODE_ENVNo (has sensible defaults)

Build-time vs runtime

This distinction matters for Dockerfiles:

  • Build-time: Set as ARG in Dockerfile, passed via --build-arg or args: in compose. Includes NEXT_PUBLIC_*, VITE_*, and any var used during npm run build.
  • Runtime: Set as ENV in Dockerfile or environment: in compose. Includes DATABASE_URL, PORT, API keys.

Output format

After detection, report:

  1. List of all detected env vars with their source (.env.example, source code, framework config)
  2. Classification (infrastructure, secret, service URL, build-time, optional)
  3. Which vars are missing values (need user input)
  4. Which vars have safe defaults (e.g. PORT=3000, NODE_ENV=production)
  5. Which vars are build-time and must be in Dockerfile ARG directives

Related Skills

  • pre-deploy-checklist — Uses env detection results to validate deployment readiness
  • dockerfile-generation — Build-time env vars identified here need ARG directives in the Dockerfile