better-env

Gestión mejorada de variables de entorno para agentes y humanos con seguridad de tipos completa, sincronización remota de entornos basada en CLI y validación de entornos.

npx skills add https://github.com/neondatabase/better-env --skill better-env

Work With better-env In A Repo

Type-safe environment config modules

Follow this best practice to manage environment variables in TypeScript applications with full type safety and clear server/public boundaries.

better-env exports configSchema to define typed env modules and recommends placing them in feature-level config.ts files (for example src/lib/auth/config.ts and src/lib/database/config.ts).

Learn more:

  • references/config-schema.md

Validate existence of all env variables in the current environment

Run env validation early so missing or invalid values fail fast before dev, build, or deploy steps.

better-env validate --environment <name> loads .env* files with Next.js semantics, discovers src/lib/*/config.ts modules, and checks every declared variable from your configSchema modules.

If your dotenv files intentionally include keys that are not referenced by config modules, add per-env suppressions in better-env.ts:

environments.<env>.ignoreUnused: string[]

These suppress only the selected local environment during validate. Adapter defaults are merged in automatically; for Vercel, VERCEL_OIDC_TOKEN is ignored by default in development, preview, and production.

Learn more:

  • references/env-validation.md

Configure runtime syncing between local files and hosted providers

Use runtime configuration to keep local dotenv targets aligned with provider environments while preserving safe defaults.

Create better-env.ts with defineBetterEnv(...) and an adapter (vercelAdapter, netlifyAdapter, railwayAdapter, cloudflareAdapter, flyAdapter, or convexAdapter).

For a standard Vercel setup, prefer the minimal config:

export default defineBetterEnv({ adapter: vercelAdapter() });

Do not add an environments block when it only duplicates adapter defaults. Add environments only when you intentionally need custom mappings, custom env files, or per-environment ignoreUnused behavior.

Learn more:

  • references/config.md
  • references/runtime.md

Use the CLI for day-to-day environment operations

The CLI gives a consistent workflow for initialization, sync, validation, and remote variable management, which is great for local development and CI automation.

Choose the command runner to match the repo:

  • Use npx in npm/pnpm-based repos (for example lockfiles like package-lock.json or pnpm-lock.yaml and scripts run via npm/pnpm).
  • Use bunx in Bun-based repos (for example bun.lock and scripts run via bun).
  • Keep commands aligned with the project's existing package manager/runtime conventions; do not mix runners unless the repo already does.

Recommended flow in a repo:

  1. Run better-env init once to verify adapter prerequisites.
  2. Run better-env pull --environment <name> to sync local env files.
  3. Run better-env validate --environment <name> before app startup/build.
  4. Use add, upsert, update, delete, and load for remote env changes.

Choose command behavior intentionally:

  • upsert for idempotent automation and scripts
  • add when duplicate keys should fail
  • update when missing keys should fail
  • delete to remove remote keys
  • load for batch updates from dotenv files

Learn more:

  • references/cli.md
  • references/vercel-adapter.md

Más skills de neondatabase

claimable-postgres
neondatabase
Bases de datos Postgres instantáneas para desarrollo local, demostraciones, prototipos y entornos de prueba. No se requiere cuenta. Las bases de datos caducan después de 72 horas a menos que se reclamen a una cuenta de Neon.
neon
neondatabase
Visión general de la plataforma Neon para aplicaciones y agentes, que abarca Postgres, Auth, Data API y los nuevos servicios: Object Storage, Compute Functions y AI Gateway. Úsalo siempre que se mencione "Neon" para obtener una visión general de cómo trabajar con Neon y cómo empezar. De lo contrario, las capacidades individuales son los desencadenantes: "object storage" o "almacenamiento compatible con S3", "funciones serverless", "trabajos en segundo plano" o "ejecutar código cerca de mi base de datos", "AI gateway", "proxy LLM", "enrutamiento de modelos" o "llamar a un LLM" →...
apidatabasedevelopment
plugin-manager
neondatabase
Gestiona la estructura y configuración de plugins para este repositorio tanto en Cursor como en Claude Code. Úsalo al crear, actualizar o revisar carpetas de plugins…
skill-creator
neondatabase
Guía para crear habilidades efectivas. Esta habilidad debe usarse cuando los usuarios quieran crear una nueva habilidad (o actualizar una existente) que extienda las capacidades de Claude…
using-neon
neondatabase
Guías y mejores prácticas para trabajar con Neon Serverless Postgres. Cubre cómo empezar, desarrollo local con Neon, elegir un método de conexión, Neon…
neon-js-react
neondatabase
Configura el SDK completo de Neon con autenticación Y consultas a la base de datos en aplicaciones React (Vite, CRA). Crea un cliente tipado, genera tipos de base de datos y configura…
postgres-best-practices
neondatabase
Mejores prácticas y pautas para trabajar con Postgres. Cubre diseño de esquemas, estrategias de indexación, optimización de consultas, migraciones y errores comunes. Use…
neon-postgres-egress-optimizer
neondatabase
Guiar al usuario en el diagnóstico y corrección de patrones de consulta del lado de la aplicación que causan una transferencia excesiva de datos (egress) desde su base de datos Postgres. La mayoría de las facturas altas por egress provienen de que la aplicación obtiene más datos de los que utiliza.