Skip to content
Back to skills

Environment Setup

ASecurity

Organize application environment configuration: `.env` files, env precedence, typed env validation, secret handoff, framework-specific env rules, and config drift between local, staging, CI, and production. Use when the user needs help structuring environment variables, validating required config, separating public/private env values, or cleaning up env-file sprawl. This is the narrower app-config compatibility skill. Route broader runnable-machine, Docker, devcontainer, onboarding, and local...

  • 47 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 11, 2026
developmentgobashnextjsdockerfrontendbackendfullstacksecurity

Works with

  • cli

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add akillness/jeo-skills --skill environment-setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Environment Setup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Environment Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/akillness-environment-setup/badge)](https://www.skillsdirectory.com/skills/akillness-environment-setup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: environment-setup
description: >
  Organize application environment configuration: `.env` files, env precedence,
  typed env validation, secret handoff, framework-specific env rules, and config
  drift between local, staging, CI, and production. Use when the user needs help
  structuring environment variables, validating required config, separating
  public/private env values, or cleaning up env-file sprawl. This is the narrower
  app-config compatibility skill. Route broader runnable-machine, Docker,
  devcontainer, onboarding, and local-service setup work to `system-environment-setup`.
allowed-tools: Bash Read Write Edit Glob Grep
compatibility: >
  Best when the main problem is application configuration rather than whole-machine
  reproducibility: env files, config layering, schema validation, and secrets
  handoff boundaries.
metadata:
  tags: environment, env-files, dotenv, env-validation, config-management, secrets-handoff
  platforms: Claude, ChatGPT, Gemini, Codex
  version: "1.1"
  source: akillness/jeo-skills
---

# Environment Configuration

Use this skill as the repository's **narrower application-config and `.env` compatibility skill**.

The job is to make app configuration clear and safe across environments:
- decide what belongs in env vars,
- structure `.env` files and precedence rules,
- validate required config,
- separate public/private values,
- reduce config drift between local, CI, staging, and production,
- make secret handoff explicit.

Read [references/env-patterns.md](references/env-patterns.md) and [references/scope-boundaries.md](references/scope-boundaries.md) before unusual cases or when deciding whether the real need belongs in `system-environment-setup`.

If the user mainly needs:
- **toolchains, local services, Docker Compose, devcontainers, or onboarding** → route to `system-environment-setup`
- **deployment or CI secret wiring** → pair with `deployment-automation`
- **security architecture or policy** → pair with `security-best-practices`

## When to use this skill
- Design `.env.example`, `.env.local`, or per-environment config structure
- Explain env precedence and which values should or should not be committed
- Validate required env vars with typed/runtime checks
- Separate server-only vs client-exposed env values
- Reduce drift between local, CI, staging, and production config
- Clean up a repo where env files, secret docs, and runtime expectations disagree
- Decide when env vars are enough and when secret-manager injection is needed

## When not to use this skill
- The main task is making the full repo runnable across machines → use `system-environment-setup`
- The main task is local service orchestration, Docker, or devcontainers → use `system-environment-setup`
- The main task is deployment automation or production rollout → use `deployment-automation`
- The main task is broader security review rather than config organization → pair with `security-best-practices`

## Instructions

### Step 1: Classify the config problem
Normalize the request into this intake first:

```yaml
env_config_intake:
  primary_goal: env-structure | validation | secret-handoff | public-private-split | drift-cleanup | framework-rules | unknown
  app_shape: backend | frontend | fullstack | monorepo | unknown
  current_storage: env-files | framework-config | secret-manager | mixed | unknown
  drift_surface:
    - missing-required-vars
    - duplicate-env-files
    - CI-local-mismatch
    - public-private-leak-risk
    - undocumented-secret-source
    - framework-prefix-confusion
    - unclear
  confidence: high | medium | low
```

### Step 2: Choose one primary mode
Pick exactly one mode for the run:

1. **env-file-structure**
   - Use when the main need is file layout, naming, and precedence.
2. **env-validation**
   - Use when missing or malformed values are causing runtime/build pain.
3. **secret-handoff-boundary**
   - Use when `.env` files are colliding with secret-manager or credential-delivery concerns.
4. **framework-config-rules**
   - Use when the main problem is framework-specific env behavior (public/private prefixes, build-time vs runtime exposure, etc.).
5. **drift-cleanup**
   - Use when env templates, docs, CI vars, and actual runtime expectations disagree.

### Step 3: Apply config rules
- Keep deploy-specific values out of source code and commit only safe templates.
- Separate **committed templates** from **developer-local values**.
- Make public/client-exposed env vars visually distinct from server-only values.
- Prefer typed validation when the app is large enough for env drift to be expensive.
- Record the source of secrets: local file, secret manager, CI variable, or cloud platform.
- Route outward when the actual blocker is machine setup, Docker, or local services rather than config design.

### Step 4: Build the config brief
Return this exact structure:

```markdown
# Environment Config Brief

## Recommended mode
- Mode: env-file-structure | env-validation | secret-handoff-boundary | framework-config-rules | drift-cleanup
- Why this mode fits: ...

## Current config surface
- App shape: ...
- Config sources: ...
- Main drift or risk: ...
- Confidence: high | medium | low

## Recommended config layout
1. ...
2. ...
3. ...

## Example files / checks
```bash
...
```

## Why this layout is safer
- ...
- ...

## Watch-outs
- ...
- ...

## Adjacent handoff
- Use `system-environment-setup` for ...
- Use `deployment-automation` for ...
- Use `security-best-practices` for ...
```

### Step 5: Use mode-specific guidance

**For env-file-structure**
- Define the committed template files first.
- Call out local-only overrides and ignored files explicitly.
- Make precedence easy to explain.

**For env-validation**
- Choose a schema/validation layer appropriate for the stack.
- Fail fast with clear missing-variable messages.
- Keep validation close to app startup.

**For secret-handoff-boundary**
- Name which values are safe in templates and which must come from a secret source.
- Document how a developer obtains sensitive values.
- Avoid pretending secret-manager adoption removes the need for local conventions.

**For framework-config-rules**
- Explain public/private env prefixes and build-time/runtime behavior.
- Call out framework-specific exposure risks.

**For drift-cleanup**
- Compare templates, runtime code, CI vars, and docs.
- Remove duplicate or stale env file conventions.
- Make one source of truth obvious.

### Step 6: Keep boundaries sharp
Before finalizing:
- Do **not** turn this into a Docker/devcontainer tutorial.
- Do **not** bury public/private env exposure risk.
- Do **not** assume `.env` files are enough for all secret workflows.
- Do **not** keep this as a peer duplicate of `system-environment-setup`; route broader setup work outward.

## Examples

### Example 1: Env template cleanup
Input: "Help me structure `.env.example` and `.env.local` so new devs stop guessing values."
Output: chooses `env-file-structure`, defines committed templates vs local overrides, and keeps the scope at app config.

### Example 2: Validation hardening
Input: "We keep forgetting env vars until runtime."
Output: chooses `env-validation`, recommends typed validation, and shows how to fail fast.

### Example 3: Framework split
Input: "Which env vars can be exposed to the frontend and which must stay server-only?"
Output: chooses `framework-config-rules`, explains the client/server split, and avoids broad setup drift.

## Best practices
1. Treat this as the app-config layer, not the whole-machine setup skill.
2. Make secret sources explicit rather than implied.
3. Prefer committed templates plus local-only overrides.
4. Add validation once env drift becomes expensive.
5. Route broader runnable-repo work to `system-environment-setup`.

## References
- [Environment patterns](references/env-patterns.md)
- [Scope boundaries](references/scope-boundaries.md)
- [Twelve-Factor config](https://12factor.net/config)
- [Next.js env guide](https://nextjs.org/docs/app/guides/environment-variables)
- [T3 Env intro](https://env.t3.gg/docs/introduction)

Files in this skill

  • SKILL.md7.9 KB
  • SKILL.toon611 B
  • evals/evals.json1.7 KB
  • references/env-patterns.md1.1 KB
  • references/scope-boundaries.md1.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.