Skip to content
Back to skills

Nestjs Best Practices

ASecurity

NestJS best practices and architecture patterns. Load this whenever the task touches a NestJS codebase (@nestjs/* imports, *.module.ts, *.controller.ts, *.service.ts, guards, pipes, interceptors, DTOs, TypeORM in Nest), including when another workflow skill (tdd, implement, code-review, diagnosing bugs, refactoring, architecture) is already driving the work. Covers modules, dependency injection, security, performance, testing, database, API design and microservices.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsgotestingrefactoringcode-reviewgitapidatabasedevopssecurityperformance

Works with

  • api

Security analysis

A100/100

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

Scanned November 7, 2026

npx -y skills add MattiaValerio/nest-skills --skill nestjs-best-practices --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Nestjs Best Practices?

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

Security grade badge for Nestjs Best Practices
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mattiavalerio-nestjs-best-practices/badge)](https://www.skillsdirectory.com/skills/mattiavalerio-nestjs-best-practices)

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: nestjs-best-practices
description: NestJS best practices and architecture patterns. Load this whenever the task touches a NestJS codebase (@nestjs/* imports, *.module.ts, *.controller.ts, *.service.ts, guards, pipes, interceptors, DTOs, TypeORM in Nest), including when another workflow skill (tdd, implement, code-review, diagnosing bugs, refactoring, architecture) is already driving the work. Covers modules, dependency injection, security, performance, testing, database, API design and microservices.
license: MIT
metadata:
  author: mattiavalerio
  version: "1.2.0"
---

# NestJS Best Practices

Comprehensive best practices guide for NestJS applications. Contains 40 rules across 10 categories, prioritized by impact to guide automated refactoring and code generation.

## When to Apply

Reference these guidelines when:

- Writing new NestJS modules, controllers, or services
- Implementing authentication and authorization
- Reviewing code for architecture and security issues
- Refactoring existing NestJS codebases
- Optimizing performance or database queries
- Building microservices architectures

## Rule Categories by Priority

| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Architecture | CRITICAL | `arch-` |
| 2 | Dependency Injection | CRITICAL | `di-` |
| 3 | Error Handling | HIGH | `error-` |
| 4 | Security | HIGH | `security-` |
| 5 | Performance | HIGH | `perf-` |
| 6 | Testing | MEDIUM-HIGH | `test-` |
| 7 | Database & ORM | MEDIUM-HIGH | `db-` |
| 8 | API Design | MEDIUM | `api-` |
| 9 | Microservices | MEDIUM | `micro-` |
| 10 | DevOps & Deployment | LOW-MEDIUM | `devops-` |

## Quick Reference

### 1. Architecture (CRITICAL)

- `arch-avoid-circular-deps` - Avoid circular module dependencies
- `arch-feature-modules` - Organize by feature, not technical layer
- `arch-module-sharing` - Proper module exports/imports, avoid duplicate providers
- `arch-single-responsibility` - Focused services over "god services"
- `arch-use-repository-pattern` - Abstract database logic for testability
- `arch-use-events` - Event-driven architecture for decoupling

### 2. Dependency Injection (CRITICAL)

- `di-avoid-service-locator` - Avoid service locator anti-pattern
- `di-interface-segregation` - Interface Segregation Principle (ISP)
- `di-liskov-substitution` - Liskov Substitution Principle (LSP)
- `di-prefer-constructor-injection` - Constructor over property injection
- `di-scope-awareness` - Understand singleton/request/transient scopes
- `di-use-interfaces-tokens` - Use injection tokens for interfaces

### 3. Error Handling (HIGH)

- `error-use-exception-filters` - Centralized exception handling
- `error-throw-http-exceptions` - Use NestJS HTTP exceptions
- `error-handle-async-errors` - Handle async errors properly

### 4. Security (HIGH)

- `security-auth-jwt` - Secure JWT authentication
- `security-validate-all-input` - Validate with class-validator
- `security-use-guards` - Authentication and authorization guards
- `security-sanitize-output` - Prevent XSS attacks
- `security-rate-limiting` - Implement rate limiting

### 5. Performance (HIGH)

- `perf-async-hooks` - Proper async lifecycle hooks
- `perf-use-caching` - Implement caching strategies
- `perf-optimize-database` - Optimize database queries
- `perf-lazy-loading` - Lazy load modules for faster startup

### 6. Testing (MEDIUM-HIGH)

- `test-use-testing-module` - Use NestJS testing utilities
- `test-e2e-supertest` - E2E testing with Supertest
- `test-mock-external-services` - Mock external dependencies

### 7. Database & ORM (MEDIUM-HIGH)

- `db-use-transactions` - Transaction management
- `db-avoid-n-plus-one` - Avoid N+1 query problems
- `db-use-migrations` - Use migrations for schema changes

### 8. API Design (MEDIUM)

- `api-use-dto-serialization` - DTO and response serialization
- `api-use-interceptors` - Cross-cutting concerns
- `api-versioning` - API versioning strategies
- `api-use-pipes` - Input transformation with pipes

### 9. Microservices (MEDIUM)

- `micro-use-patterns` - Message and event patterns
- `micro-use-health-checks` - Health checks for orchestration
- `micro-use-queues` - Background job processing

### 10. DevOps & Deployment (LOW-MEDIUM)

- `devops-use-config-module` - Environment configuration
- `devops-use-logging` - Structured logging
- `devops-graceful-shutdown` - Zero-downtime deployments

## Working Alongside Other Skills

This skill is a reference for NestJS conventions, not a workflow. When another skill (TDD, implementation, code review, bug diagnosis, architecture review) is driving the task in a NestJS project, keep following that skill's process and apply these rules to the code it produces:

- Writing tests: read the `test-` rules before choosing how to build the test module and mocks.
- Reviewing or refactoring: check the changed code against the `arch-`, `di-` and `security-` rules first.
- Designing new modules or endpoints: read the relevant `arch-`, `api-` and `security-validate-all-input` rules before writing code.

Read only the rule files relevant to the change, not all 40.

## How to Use

Read individual rule files for detailed explanations and code examples:

```
rules/arch-avoid-circular-deps.md
rules/security-validate-all-input.md
rules/_sections.md
```

Each rule file contains:
- Brief explanation of why it matters
- Incorrect code example with explanation
- Correct code example with explanation
- Additional context and references

## Full Compiled Document

For the complete guide with all rules expanded in a single document, see
[AGENTS.md in the repository](https://github.com/mattiavalerio/nest-skills/blob/main/AGENTS.md).

Files in this skill

  • SKILL.md5.6 KB
  • rules/_sections.md2.1 KB
  • rules/_template.md631 B
  • rules/api-use-dto-serialization.md4.3 KB
  • rules/api-use-interceptors.md5.4 KB
  • rules/api-use-pipes.md5.3 KB
  • rules/api-versioning.md4.9 KB
  • rules/arch-avoid-circular-deps.md2 KB
  • rules/arch-feature-modules.md2.3 KB
  • rules/arch-module-sharing.md3.8 KB
  • rules/arch-single-responsibility.md2.9 KB
  • rules/arch-use-events.md3 KB
  • rules/arch-use-repository-pattern.md2.8 KB
  • rules/db-avoid-n-plus-one.md3.8 KB
  • rules/db-use-migrations.md3.7 KB
  • rules/db-use-transactions.md3.9 KB
  • rules/devops-graceful-shutdown.md5.8 KB
  • rules/devops-use-config-module.md4.3 KB
  • rules/devops-use-logging.md5.6 KB
  • rules/di-avoid-service-locator.md2.9 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.