.claude/skills/ts-env-manager/SKILL.md
Manage environment variables and secrets across development, staging, and production environments. Use when someone needs to audit env vars, sync secrets between environments, detect missing or mismatched variables, rotate credentials, or set up a new environment from an existing one. Trigger words: env vars, environment variables, secrets, .env file, dotenv, config management, secret rotation, missing variable, environment sync.
npx skillsauth add eliferjunior/Claude env-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps manage environment variables and secrets across multiple environments (development, staging, production). It detects missing variables, identifies mismatches, audits for exposed secrets, and helps safely rotate credentials without downtime.
Find all env var references in code:
grep -rn "process\.env\." src/ --include="*.ts" --include="*.js" | \
sed 's/.*process\.env\.\([A-Z_]*\).*/\1/' | sort -u
For Python:
grep -rn "os\.environ\|os\.getenv" src/ --include="*.py" | \
sed 's/.*os\.\(environ\["\|getenv("\)\([A-Z_]*\).*/\2/' | sort -u
Compare against what's defined:
# From .env.example or .env
grep -v '^#' .env.example | grep '=' | cut -d'=' -f1 | sort -u
Report:
.env.example → ⚠️ undocumented.env.example but never referenced in code → ℹ️ possibly staleGet variable lists from each environment:
.env or .env.localBuild a comparison matrix:
Variable | dev | staging | prod | Notes
DATABASE_URL | ✓ | ✓ | ✓ | Different per env ✓
STRIPE_SECRET_KEY | ✓ | ✓ | ✗ | ⚠️ Missing in prod!
REDIS_URL | ✗ | ✓ | ✓ | ℹ️ Not needed locally
NEXT_PUBLIC_API_URL | ✓ | ✓ | ✓ | Verify values differ
Flag issues:
grep -rn "THE_VAR_NAME" . --include="*.ts" --include="*.js" --include="*.yml" --include="*.yaml" --include="Dockerfile"
.env.example as the template# Check app starts without missing var errors
node -e "require('dotenv').config(); console.log('Loaded', Object.keys(process.env).length, 'vars')"
User prompt:
We keep getting "undefined" errors in staging. Can you audit our env vars?
Agent output:
Scanned src/ for environment variable references. Found 34 unique variables.
🔴 Missing from .env.example (undocumented):
OPENAI_API_KEY — referenced in src/lib/ai.ts:12
WEBHOOK_SECRET — referenced in src/api/webhooks.ts:8
RATE_LIMIT_MAX — referenced in src/middleware/rateLimit.ts:3
⚠️ Referenced but no validation/default:
SMTP_HOST — used in src/lib/email.ts:5, crashes if undefined
CACHE_TTL — used in src/lib/cache.ts:2, parseInt(undefined) = NaN
ℹ️ In .env.example but never referenced in code:
LEGACY_API_URL — possibly from a removed feature
DEBUG_MODE — no references found
Recommendation: Add the 3 undocumented vars to .env.example, add default
values for SMTP_HOST and CACHE_TTL, and remove the 2 stale entries.
User prompt:
We're about to launch. Compare staging and production env vars to make sure nothing is missing.
Agent output:
Compared 41 variables across staging and production:
🔴 Missing in production (3):
STRIPE_WEBHOOK_SECRET — payments will fail without this
SENTRY_DSN — no error tracking in prod
FEATURE_FLAG_API_KEY — feature flags will default to off
⚠️ Same value in both environments (2):
JWT_SECRET — using identical secret is a security risk
DATABASE_URL — pointing to same DB! This should differ.
✓ Correctly different (28 vars)
ℹ️ Staging-only (8 vars) — debug/test vars, expected
Action items:
1. Set STRIPE_WEBHOOK_SECRET in prod (get from Stripe Dashboard → Webhooks)
2. Set SENTRY_DSN in prod (get from Sentry → Project Settings → Client Keys)
3. Generate a new JWT_SECRET for prod: openssl rand -base64 32
4. Verify DATABASE_URL points to the production database, not staging
NEXT_PUBLIC_ or VITE_ prefixed vars that contain actual secrets.env.example as the source of truth, committed to git (without values)development
Expert guidance for Fireworks AI, the platform for running open-source LLMs (Llama, Mixtral, Qwen, etc.) with enterprise-grade speed and reliability. Helps developers integrate Fireworks' inference API, fine-tune models, and deploy custom model endpoints with function calling and structured output support.
development
Convert any website into clean, structured data with Firecrawl — API-first web scraping service. Use when someone asks to "turn a website into markdown", "scrape website for LLM", "Firecrawl", "extract website content as clean text", "crawl and convert to structured data", or "scrape website for RAG". Covers single-page scraping, full-site crawling, structured extraction, and LLM-ready output.
tools
Expert guidance for Firebase, Google's platform for building and scaling web and mobile applications. Helps developers set up authentication, Firestore/Realtime Database, Cloud Functions, hosting, storage, and analytics using Firebase's SDK and CLI.
development
When the user needs to build file upload functionality for a web application. Use when the user mentions "file upload," "image upload," "upload endpoint," "multipart upload," "presigned URL," "S3 upload," "file validation," "upload to cloud storage," or "accept user files." Handles upload endpoints, file validation (type, size, magic bytes), cloud storage integration, and upload status tracking. For image/video processing after upload, see media-transcoder.