> nestjs-configuration
Environment variables validation and ConfigModule setup. Use when validating environment variables with Joi/Zod or configuring ConfigModule in NestJS. (triggers: .env, app.module.ts, **/config.ts, ConfigModule, Joi, env)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/nestjs-configuration?format=md"NestJS Configuration Standards
Priority: P1 (OPERATIONAL)
Environment configuration and validation patterns for NestJS applications.
Setup
- Library: Use
@nestjs/config. - Initialization: Import
ConfigModule.forRoot({ isGlobal: true })inAppModule.
Validation
- Mandatory: Validate environment variables at startup.
- Tool: Use
joior a custom validation class. - Effect: The app must crash immediately if a required env var (e.g.,
DB_URL) is missing.
// app.module.ts
ConfigModule.forRoot({
validationSchema: Joi.object({
NODE_ENV: Joi.string()
.valid('development', 'production')
.default('development'),
PORT: Joi.number().default(3000),
DATABASE_URL: Joi.string().required(),
}),
});
Usage
- Injection: Inject
ConfigServiceto access values. - Typing: Avoid magic strings. Use a type-safe getter helper or a dedicated configuration object/interface.
- Secrets: Never commit
.envfiles. Add.env*to.gitignore.
⚠️ Adding New Variables
When adding a new environment variable to the application, you MUST update all of the following:
src/config/env.validation.ts: Add the class property with appropriateclass-validatordecorators..env.example: Add a placeholder value so other developers know about it..env.development/.env.test: Add the actual development values.- CI/CD Pipelines & Infrastructure: You MUST map the new variable in your deployment scripts (e.g.,
.github/workflows/*.yml,gitlab-ci.yml, Terraform, or Azure Pipelines). Most modern cloud platforms (Cloud Run, ECS, Kubernetes) require explicit mapping of secrets/env-vars into the container runtime. Failure to do this will cause the production deployment to crash or silently fail.
🚫 Anti-Patterns
- Do NOT use standard patterns if specific project rules exist.
- Do NOT ignore error handling or edge cases.
> related_skills --same-repo
> typescript-tooling
Development tools, linting, and build config for TypeScript. Use when configuring ESLint, Prettier, Jest, Vitest, tsconfig, or any TS build tooling. (triggers: tsconfig.json, .eslintrc.*, jest.config.*, package.json, eslint, prettier, jest, vitest, build, compile, lint)
> typescript-security
Secure coding practices for TypeScript. Use when validating input, handling auth tokens, sanitizing data, or managing secrets and sensitive configuration. (triggers: **/*.ts, **/*.tsx, validate, sanitize, xss, injection, auth, password, secret, token)
> typescript-language
Modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings. (triggers: **/*.ts, **/*.tsx, tsconfig.json, type, interface, generic, enum, union, intersection, readonly, const, namespace)
> typescript-best-practices
Idiomatic TypeScript patterns for clean, maintainable code. Use when writing or refactoring TypeScript classes, functions, modules, or async logic. (triggers: **/*.ts, **/*.tsx, class, function, module, import, export, async, promise)