# Nestjs Interceptors

> NestJS interceptors best practices. Use when writing or reviewing NestJS interceptors — response transformation, logging, timeouts, or caching around handlers. Triggers on NestInterceptor, intercept(), CallHandler, map(), or @UseInterceptors.

- **Type:** Skill
- **Install:** `agentstack add skill-dkmqflx-nestjs-best-practices-plugin-nestjs-interceptors`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [dkmqflx](https://agentstack.voostack.com/s/dkmqflx)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [dkmqflx](https://github.com/dkmqflx)
- **Source:** https://github.com/dkmqflx/nestjs-best-practices-plugin/tree/main/plugins/nestjs-best-practices/skills/nestjs-interceptors

## Install

```sh
agentstack add skill-dkmqflx-nestjs-best-practices-plugin-nestjs-interceptors
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# NestJS Interceptors

Interceptors are `@Injectable()` classes implementing `NestInterceptor`. Their
`intercept(context: ExecutionContext, next: CallHandler)` method runs logic
before the route handler and transforms the response stream returned by
`next.handle()` using RxJS operators. They are the idiomatic place for
cross-cutting concerns — response shaping, logging, timeouts, caching — that
should stay out of controllers and services.

## When to Apply

Apply these rules when you are:

- Writing or reviewing a class that implements `NestInterceptor`.
- Wrapping handler responses in a consistent envelope.
- Adding request/response logging or latency measurement.
- Enforcing per-request timeouts.
- Caching GET responses with `CacheInterceptor`.
- Deciding whether to bind an interceptor globally, per-controller, or per-route.

Do **not** reach for an interceptor when the work is core business logic — that
belongs in a service (see `interceptors-not-for-mutation-logic`).

## Rules

| Rule | Impact | Summary |
| --- | --- | --- |
| [response-transform-interceptor](rules/response-transform-interceptor.md) | HIGH | Wrap responses in a consistent envelope via `map()`. |
| [logging-interceptor](rules/logging-interceptor.md) | MEDIUM | Measure handler duration with `tap()`; log method/url/time. |
| [timeout-interceptor](rules/timeout-interceptor.md) | HIGH | Fail slow requests with `timeout()` + `RequestTimeoutException`. |
| [cache-interceptor](rules/cache-interceptor.md) | MEDIUM | Cache GET responses with `CacheInterceptor` + `CacheModule`. |
| [interceptors-not-for-mutation-logic](rules/interceptors-not-for-mutation-logic.md) | HIGH | Keep business logic in services; interceptors are cross-cutting only. |
| [bind-globally-vs-scoped](rules/bind-globally-vs-scoped.md) | MEDIUM | Prefer `APP_INTERCEPTOR` for DI-friendly global binding. |

## How to Use

1. Identify the cross-cutting concern (transform, log, timeout, cache).
2. Open the matching rule file and follow the **Correct** pattern.
3. Keep `intercept()` thin — pipe RxJS operators onto `next.handle()`, never
   put domain logic inside.
4. Choose a binding scope with `bind-globally-vs-scoped`: route, controller, or
   global via `APP_INTERCEPTOR`.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [dkmqflx](https://github.com/dkmqflx)
- **Source:** [dkmqflx/nestjs-best-practices-plugin](https://github.com/dkmqflx/nestjs-best-practices-plugin)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-dkmqflx-nestjs-best-practices-plugin-nestjs-interceptors
- Seller: https://agentstack.voostack.com/s/dkmqflx
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
