env-manager

Environment Variable Manager (env-manager)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "env-manager" with this command: npx skills add bobmatnyc/claude-mpm-skills/bobmatnyc-claude-mpm-skills-env-manager

Environment Variable Manager (env-manager)

Comprehensive environment variable validation, security scanning, and management for modern web applications.

Overview

The env-manager skill provides systematic environment variable management across local development, CI/CD pipelines, and deployment platforms. It prevents common issues like missing variables, exposed secrets, and framework-specific configuration errors.

Key Features:

  • Framework-Aware Validation: Next.js, Vite, React, Node.js, Flask support

  • Security-First: Never logs secrets, detects exposed credentials

  • Platform Integration: Ready for Vercel, Railway, Heroku, and CI/CD

  • Fast: Validates 1000 variables in 0.025s (80x faster than 2s target)

  • Zero Dependencies: Pure Python, works anywhere

Why Use env-manager?

Common problems this solves:

  • "Works on my machine, but not in production" (missing env vars)

  • Accidentally exposing API keys in client-side code (NEXT_PUBLIC_ with secrets)

  • Missing required variables during deployment

  • Inconsistent .env files across team members

  • No documentation of required environment variables

  • Security vulnerabilities from exposed secrets

Quick Start

Installation

No installation needed! env-manager is a bundled skill in Claude MPM.

Requirements:

  • Python 3.7+

  • No external dependencies

5-Minute Quick Start

1. Validate your .env file

python3 scripts/validate_env.py .env

2. Check for framework-specific issues (Next.js example)

python3 scripts/validate_env.py .env --framework nextjs

3. Compare with .env.example to find missing vars

python3 scripts/validate_env.py .env --compare-with .env.example

4. Generate .env.example for documentation

python3 scripts/validate_env.py .env --generate-example .env.example

5. Get JSON output for CI/CD integration

python3 scripts/validate_env.py .env --json

That's it! Environment variables are now validated professionally.

Usage Examples

Basic Validation

Validate a .env file for structural issues:

python3 scripts/validate_env.py .env

What it checks:

  • Valid key=value format

  • No duplicate keys

  • Proper naming conventions (UPPERCASE_WITH_UNDERSCORES)

  • No empty values (unless explicitly allowed)

  • Proper quoting for values with spaces

Example output:

✅ Validation successful!

  • 15 variables validated
  • 0 errors
  • 0 warnings

Framework-Specific Validation

Next.js

Validate Next.js environment variables:

python3 scripts/validate_env.py .env.local --framework nextjs

Next.js-specific checks:

  • NEXT_PUBLIC_* variables are client-exposed (warns if secrets detected)

  • .env.local, .env.production, .env file hierarchy

  • Detects secrets in client-side variables

Example:

.env.local

NEXT_PUBLIC_API_URL=https://api.example.com NEXT_PUBLIC_API_KEY=secret123 # ⚠️ WARNING: Secret in client-exposed variable! DATABASE_URL=postgresql://... # ✅ Server-side only

Vite

python3 scripts/validate_env.py .env --framework vite

Vite-specific checks:

  • VITE_* variables are client-exposed

  • Warns if secrets detected in VITE_ prefixed vars

React (Create React App)

python3 scripts/validate_env.py .env --framework react

React-specific checks:

  • REACT_APP_* variables are client-exposed

  • Warns if secrets in REACT_APP_ prefixed vars

Node.js/Express

python3 scripts/validate_env.py .env --framework nodejs

Node.js-specific checks:

  • Common NODE_ENV, PORT, DATABASE_URL patterns

  • Standard Node.js conventions

Flask/Python

python3 scripts/validate_env.py .env --framework flask

Flask-specific checks:

  • FLASK_APP, FLASK_ENV variables

  • SQLAlchemy DATABASE_URL format

Comparing with .env.example

Ensure your .env has all required variables:

python3 scripts/validate_env.py .env --compare-with .env.example

What it checks:

  • All variables in .env.example exist in .env

  • No extra undocumented variables in .env

Example output:

❌ Missing variables:

  • DATABASE_URL (required in .env.example)
  • STRIPE_SECRET_KEY (required in .env.example)

⚠️ Extra variables not in .env.example:

  • DEBUG_MODE (consider adding to .env.example)

Perfect for:

  • Onboarding new team members

  • CI/CD validation

  • Deployment pre-checks

Generating .env.example

Create documentation for your environment variables:

python3 scripts/validate_env.py .env --generate-example .env.example

What it does:

  • Reads your .env file

  • Sanitizes secret values (replaces with placeholders)

  • Generates .env.example with safe defaults

Example:

Input: .env

DATABASE_URL=postgresql://user:pass@localhost/db # pragma: allowlist secret STRIPE_SECRET_KEY=sk_live_abc123xyz NEXT_PUBLIC_API_URL=https://api.example.com

Output: .env.example

DATABASE_URL=postgresql://user:password@localhost/dbname # pragma: allowlist secret STRIPE_SECRET_KEY=your_stripe_secret_key_here NEXT_PUBLIC_API_URL=https://api.example.com

Security note: env-manager detects common secret patterns and replaces them with safe placeholders.

CI/CD Integration

Get machine-readable JSON output for automated workflows:

python3 scripts/validate_env.py .env.example --strict --json

JSON output format:

{ "valid": true, "errors": [], "warnings": [], "stats": { "total_vars": 15, "errors": 0, "warnings": 0 } }

Exit codes:

  • 0 : Validation passed

  • 1 : Validation errors found

  • 2 : Missing required file

  • 3 : Warnings found (only in --strict mode)

GitHub Actions example:

name: Validate Environment Variables

on: [push, pull_request]

jobs: validate-env: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3

  - name: Validate .env.example
    run: |
      python3 scripts/validate_env.py .env.example --strict --json
    working-directory: ./path/to/skill

  - name: Check for framework-specific issues
    run: |
      python3 scripts/validate_env.py .env.example --framework nextjs --json
    working-directory: ./path/to/skill

Strict Mode

Treat warnings as errors (useful for CI/CD):

python3 scripts/validate_env.py .env --strict

When to use:

  • Pre-deployment validation

  • CI/CD pipelines

  • Release gates

  • Team standard enforcement

Quiet Mode

Show only errors, suppress warnings:

python3 scripts/validate_env.py .env --quiet

When to use:

  • You've already reviewed warnings

  • Automated scripts that only care about errors

  • Noisy environments where warnings are distracting

Supported Frameworks

Framework Prefix Client-Exposed Notes

Next.js NEXT_PUBLIC_*

Yes Auto-exposed in browser

Vite VITE_*

Yes Bundled into client code

React (CRA) REACT_APP_*

Yes Embedded in production build

Node.js N/A No Server-side only

Flask N/A No Server-side only

Security warning: Never put secrets in client-exposed variables (NEXT_PUBLIC_, VITE_, REACT_APP_). env-manager will warn you if it detects common secret patterns.

CLI Reference

Command Structure

python3 scripts/validate_env.py <file> [options]

Options

Option Description Example

--compare-with FILE

Compare with .env.example --compare-with .env.example

--framework {nextjs|vite|react|nodejs|flask|generic}

Framework-specific validation --framework nextjs

--strict

Treat warnings as errors --strict

--json

JSON output for automation --json

--quiet

Only show errors --quiet

--generate-example OUTPUT

Generate .env.example --generate-example .env.example

Exit Codes

Code Meaning When

0

Success No errors (warnings OK unless --strict)

1

Validation errors Structural issues, duplicates, etc.

2

File not found Specified .env file doesn't exist

3

Warnings in strict mode Warnings exist and --strict enabled

Common Use Cases

Scenario 1: New Developer Onboarding

New developer clones repo

git clone <repo> cd <project>

Copy example and fill in values

cp .env.example .env

Edit .env with actual values...

Validate setup

python3 scripts/validate_env.py .env --compare-with .env.example

If missing variables, fix them

Validation passes ✅

Scenario 2: Pre-Deployment Check

Before deploying to Vercel/Railway/Heroku

python3 scripts/validate_env.py .env.production --framework nextjs --strict

Fix any errors

Deploy with confidence ✅

Scenario 3: Security Audit

Check for accidentally exposed secrets

python3 scripts/validate_env.py .env.local --framework nextjs

Look for warnings like:

⚠️ NEXT_PUBLIC_STRIPE_SECRET: Contains potential secret in client-exposed variable

Scenario 4: Team Documentation

After adding new environment variable

echo "NEW_API_KEY=abc123" >> .env

Regenerate .env.example

python3 scripts/validate_env.py .env --generate-example .env.example

Commit updated .env.example

git add .env.example git commit -m "docs: add NEW_API_KEY to environment variables"

Scenario 5: CI/CD Quality Gate

In your CI pipeline

  • name: Validate environment configuration run: | python3 scripts/validate_env.py .env.example --strict --json > validation.json

    Fail pipeline if validation fails

    if [ $? -ne 0 ]; then cat validation.json exit 1 fi

Performance

env-manager is designed for speed:

Benchmarks:

  • Validates 1000 variables in 0.025s

  • 80x faster than 2s target

  • Zero external dependencies

  • Minimal memory footprint

Why it matters:

  • Fast feedback during development

  • No CI/CD slowdown

  • Works in resource-constrained environments

Security Notes

Critical security features:

  • Never Logs Secrets: env-manager NEVER displays actual secret values in output

  • Client-Exposure Detection: Warns when secrets are in NEXT_PUBLIC_, VITE_, REACT_APP_ variables

  • Secret Sanitization: When generating .env.example, replaces secrets with safe placeholders

  • No Network Calls: All validation is local, no data leaves your machine

Security-audited: This skill has undergone security review. See references/security.md for details.

Best practices:

  • Never commit .env files with secrets

  • Always use .env.example for documentation

  • Use platform secret managers (Vercel, Railway, etc.) for production

  • Validate before every deployment

  • Run security scan regularly

Common Issues

"Missing equals sign" error

Cause: Line in .env doesn't have = separator

Fix:

❌ Bad

API_KEY

✅ Good

API_KEY=your_key_here

"Duplicate key" error

Cause: Same variable defined multiple times

Fix:

❌ Bad

API_KEY=value1 API_KEY=value2

✅ Good

API_KEY=value2

"Invalid variable name" warning

Cause: Variable name doesn't follow UPPERCASE_WITH_UNDERSCORES convention

Fix:

❌ Bad

apiKey=value api-key=value

✅ Good

API_KEY=value

"Potential secret in client-exposed variable" warning

Cause: NEXT_PUBLIC_, VITE_, or REACT_APP_ variable contains secret-like value

Fix:

❌ Bad (secret exposed to client!)

NEXT_PUBLIC_STRIPE_SECRET=sk_live_abc123

✅ Good (server-side only)

STRIPE_SECRET_KEY=sk_live_abc123 NEXT_PUBLIC_STRIPE_PUBLISHABLE=pk_live_xyz789

"Empty value" warning

Cause: Variable has no value

Fix:

❌ Bad

DATABASE_URL=

✅ Good (if optional, document it)

DATABASE_URL= # Optional, uses SQLite if not set

✅ Better

DATABASE_URL=postgresql://localhost/mydb

File not found error

Cause: Specified .env file doesn't exist

Fix:

Check file exists

ls -la .env

Or create it

touch .env

Troubleshooting

Validation passes locally but fails in CI

Check:

  • Line endings (CRLF vs LF)

  • File encoding (UTF-8 expected)

  • File permissions

  • Python version (3.7+ required)

Warnings about client-exposed variables

This is intentional! env-manager is warning you that variables like NEXT_PUBLIC_API_KEY will be visible in the browser.

Options:

  • Move secret to server-side variable (remove NEXT_PUBLIC_ prefix)

  • Use public/publishable keys only in client-exposed variables

  • If truly not a secret, ignore the warning

.env.example generation replaces too much

env-manager is conservative about secrets. If it over-sanitizes:

  • Manually edit .env.example after generation

  • Use specific placeholder values in .env that won't trigger sanitization

Advanced Usage

Custom Validation Patterns

See references/validation.md for advanced validation patterns.

Platform-Specific Deployment

See references/synchronization.md for Vercel, Railway, Heroku integration patterns.

Framework-Specific Guides

See references/frameworks.md for comprehensive framework guides.

Related Documentation

  • Validation Reference: Complete validation workflows and checks

  • Security Reference: Secret scanning and security patterns

  • Synchronization Reference: Platform sync patterns (coming soon)

  • Frameworks Reference: Framework-specific patterns and conventions

  • Troubleshooting Guide: Common issues and solutions

Integration with Claude MPM

env-manager is a bundled skill in Claude MPM. Agents can use it for:

  • Pre-deployment validation

  • Security scanning

  • Environment setup verification

  • Documentation generation

See INTEGRATION.md for agent integration patterns.

Contributing

env-manager follows Claude MPM contribution guidelines:

  • Run make lint-fix during development

  • Run make quality before commits

  • Add tests for new features (85%+ coverage required)

  • Update documentation

See CONTRIBUTING.md for details.

License

MIT License - Part of Claude MPM project

Support

  • Issues: Report bugs via GitHub Issues

  • Documentation: See references/ directory

  • Examples: See examples/ directory

  • Integration: See INTEGRATION.md

Version: 1.0.0 Status: Stable, Security-Audited Test Coverage: 85%+ Performance: 80x faster than target

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

drizzle-orm

No summary provided by upstream source.

Repository SourceNeeds Review
General

pydantic

No summary provided by upstream source.

Repository SourceNeeds Review
General

playwright-e2e-testing

No summary provided by upstream source.

Repository SourceNeeds Review
General

tailwind-css

No summary provided by upstream source.

Repository SourceNeeds Review