Skip to main content

environment-files

Rules for .env file handling, .env.example template format, and what's allowed vs forbidden. Use when working with environment variables, API keys, or configuration files.

Quellinformationen

Repository
pmarashian/cursor-agent-skills
Letzte Quellaktivität
13. Februar 2026 um 19:51
Erkannte Sprache von SKILL.md
Englisch
Sterne
2
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
environment-files
description
Rules for .env file handling, .env.example template format, and what's allowed vs forbidden. Use when working with environment variables, API keys, or configuration files.
# Environment Files This skill provides comprehensive guidance on handling environment files, including `.env` files, `.env.example` templates, and security best practices. ## Overview Environment files contain sensitive configuration data that must be handled carefully. This skill defines what's allowed and forbidden when working with environment variables. ## Critical Rules ### DO NOT MODIFY **CRITICAL FILES - DO NOT MODIFY WITHOUT EXPLICIT INSTRUCTION:** - `.env` files: Never commit or modify environment files (except `.env.example` templates) - `.env.local`, `.env.development`, `.env.production` - All actual environment files - git configuration files ## Allowed Operations ### ✅ Create/Edit `.env.example` **ALLOWED:** - Create/edit `.env.example` - template showing required environment variables (no actual secrets) - Format: `KEY_NAME=example_value_here` (with descriptive placeholder values) **Example `.env.example`:** ``` DATABASE_URL=postgresql://user:password@localhost:5432/dbname NEXT_PUBLIC_API_URL=http://localhost:3000/api OPENAI_API_KEY=sk-your-api-key-here ``` ### ✅ Template Format Guidelines When creating `.env.example` files: 1. **Use descriptive placeholders:** - `sk-your-api-key-here` (not actual keys) - `postgresql://user:password@localhost:5432/dbname` (example connection string) - `http://localhost:3000/api` (example URLs) 2. **Include comments when helpful:** ``` # Database connection string DATABASE_URL=postgresql://user:password@localhost:5432/dbname # Public API endpoint NEXT_PUBLIC_API_URL=http://localhost:3000/api ``` 3. **Document required vs optional:** ``` # Required: API key for external service OPENAI_API_KEY=sk-your-api-key-here # Optional: Override default port PORT=3000 ``` ## Forbidden Operations ### ❌ Creating or Modifying Actual .env Files **FORBIDDEN:** - Creating or modifying `.env`, `.env.local`, `.env.development`, `.env.production`, or any other .env files - Never commit actual secrets, API keys, passwords, or sensitive data - Never read values from actual .env files ### ❌ Committing Sensitive Data **FORBIDDEN:** - Committing `.env` files to version control - Including actual API keys, passwords, or secrets in code - Hardcoding sensitive values in source files ### Backend: defensive defaults and .env persistence - In some environments, `.env` may not be persisted. For backend tasks, prefer **defensive defaults in code** (e.g. `process.env.REDIS_URL || 'redis://localhost:6379'`) and document in `.env.example`. - **Do not create or modify `.env`** in the repo; only create or update `.env.example` and document that users copy it to `.env` locally. Never commit `.env`. - Optionally: use env-based bcrypt cost (e.g. `BCRYPT_ROUNDS`) for dev vs prod so tests can be fast without editing source. ## Best Practices ### 1. .gitignore Verification Always ensure `.env` files are in `.gitignore`: ``` .env .env.local .env.development .env.production .env*.local ``` ### 2. Template Maintenance - Keep `.env.example` up to date with all required variables - Document variable purpose and format - Include example values that show expected format - Mark required vs optional variables ### 3. Security Checklist Before committing code, verify: - ✅ No `.env` files are staged for commit - ✅ `.env.example` contains only placeholders - ✅ No hardcoded secrets in source files - ✅ `.gitignore` includes `.env` patterns ## Integration with Other Skills This skill works with: - **git-best-practices**: For ensuring `.env` files are properly ignored - **pre-implementation-check**: For verifying environment setup before implementation ## Common Patterns ### Pattern 1: Creating .env.example ```bash # Create template file cat > .env.example << EOF # Database DATABASE_URL=postgresql://user:password@localhost:5432/dbname # API Keys OPENAI_API_KEY=sk-your-api-key-here # Server Configuration PORT=3000 NEXT_PUBLIC_API_URL=http://localhost:3000/api EOF ``` ### Pattern 2: Verifying .gitignore ```bash # Check if .env is ignored git check-ignore .env # Verify .gitignore contains .env patterns grep -E "\.env" .gitignore ``` ### Pattern 3: Template Validation Before committing, verify `.env.example`: - Contains no actual secrets - Has descriptive placeholder values - Documents all required variables - Includes helpful comments ## Troubleshooting ### Issue: .env File Accidentally Created **Solution:** 1. Remove from git tracking: `git rm --cached .env` 2. Add to `.gitignore`: `echo ".env" >> .gitignore` 3. Verify: `git status` should not show `.env` ### Issue: Secrets in Commit History **Solution:** 1. Remove sensitive data from repository 2. Rotate compromised credentials 3. Use `git filter-branch` or BFG Repo-Cleaner if needed 4. Update `.gitignore` to prevent future commits ## Examples ### ✅ Good .env.example ``` # Database Configuration DATABASE_URL=postgresql://user:password@localhost:5432/dbname # API Keys (get from service provider) OPENAI_API_KEY=sk-your-api-key-here STRIPE_SECRET_KEY=sk_test_your_stripe_key_here # Application Settings NODE_ENV=development PORT=3000 NEXT_PUBLIC_API_URL=http://localhost:3000/api ``` ### ❌ Bad .env.example (Contains Actual Secrets) ``` DATABASE_URL=postgresql://realuser:realpassword@realhost:5432/realdb OPENAI_API_KEY=sk-proj-actualRealKey123456789 ``` **Never include actual secrets, even in example files!**
Auf GitHub ansehen