Best Practiceswarn by defaultrecommended preset
astro-doctor/prefer-env-schemaprefer-env-schema
Define an Astro env schema for variables documented in .env.example.
Why
An env schema validates required variables at startup and generates TypeScript types for server and client imports. Without one, documented variables can be missing, malformed, or used under the wrong name without an early error.
Examples
Incorrect
Documented variables without a schema
# .env.example
DATABASE_URL=
PUBLIC_API_URL=Correct
Validate documented variables in astro.config.ts
import { defineConfig, envField } from 'astro/config'
export default defineConfig({
env: {
schema: {
DATABASE_URL: envField.string({ context: 'server', access: 'secret' }),
PUBLIC_API_URL: envField.string({ context: 'client', access: 'public' }),
},
},
})Configuration
Project audits are configured in doctor.config.ts:
export default {
rules: {
'astro-doctor/prefer-env-schema': 'error', // or 'warn' or 'off'
},
}All rules
astro-doctor/no-client-load-overuseastro-doctor/use-astro-imageastro-doctor/require-image-dimensionsastro-doctor/no-missing-altastro-doctor/no-set-htmlastro-doctor/no-public-secret-envastro-doctor/prefer-class-listastro-doctor/no-blocking-scriptastro-doctor/no-unprocessed-script-surprisesastro-doctor/no-missing-langastro-doctor/require-island-fallbackastro-doctor/no-process-envastro-doctor/prefer-content-collectionsastro-doctor/no-disabled-origin-checkastro-doctor/no-insecure-session-cookieastro-doctor/no-open-allowed-domainsastro-doctor/prefer-env-schema(this page)astro-doctor/prefer-pnpmastro-doctor/require-action-input-schemaastro-doctor/require-client-router-script-lifecycleastro-doctor/require-content-config