Skip to content
Development
Skill

/nestjs-security

Implement JWT authentication, RBAC guards, Helmet hardening, and Argon2 hashing in NestJS. Use when adding auth strategies, role-based access control, CSRF protection, or security headers.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill nestjs-security --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/nestjs-security

Context preview

The summary Claude sees to decide when to auto-load this skill.

Implement JWT authentication, RBAC guards, Helmet hardening, and Argon2 hashing in NestJS. Use when adding auth strategies, role-based access control, CSRF protection, or security headers.

SKILL.md

nestjs-security.SKILL.md
name: nestjs-security
description: Implement JWT authentication, RBAC guards, Helmet hardening, and Argon2 hashing in NestJS. Use when adding auth strategies, role-based access control, CSRF protection, or security headers.
metadata:
  triggers:
    files:
    - '**/*.guard.ts'
    - '**/*.strategy.ts'
    - '**/auth/**'
    keywords:
    - Passport
    - JWT
    - AuthGuard
    - CSRF
    - Helmet

NestJS Security Standards

**Priority: P0 (CRITICAL)**

Workflow: Secure NestJS Application

1. **Add Helmet** — `app.use(helmet())` in `main.ts` for HSTS, CSP headers. 2. **Configure JWT strategy** — Use `passport-jwt` with RS256; validate `iss` and `aud` claims. 3. **Bind global AuthGuard** — Register as `APP_GUARD`; use `@Public()` for open routes. 4. **Add throttling** — Enable `@nestjs/throttler` with Redis store for rate limiting. 5. **Hash with Argon2id** — Replace bcrypt with `argon2.hash(password, { type: argon2.argon2id })`. 6. **Verify** — Run `npm audit --prod` and test that unauthenticated requests return 401.

Global Auth Guard Example

See [implementation examples](references/implementation.md)

Argon2id Hashing Example

See [implementation examples](references/implementation.md)

Authentication (JWT)

  • **Strategy**: Use `@nestjs/passport` with `passport-jwt`.
  • **Algorithm**: Enforce `RS256` (preferred) or `HS256`. **Reject `none`**.
  • **Claims**: Validate `iss` and `aud`.
  • **Tokens**: Short access (15m), Long httponly refresh (7d).
  • **MFA**: Require 2FA for admin panels.

Authorization (RBAC)

  • **Deny by default**: Bind `AuthGuard` globally (APP_GUARD).
  • **Bypass**: Create `@Public()` decorator for open routes.
  • **Roles**: Use `Reflector.getAllAndOverride` for Method/Class merge.

Cryptography

  • **Hashing**: Use **Argon2id**, not Bcrypt. See [implementation](references/implementation.md).
  • **Encryption**: Use **AES-256-GCM** with KMS rotation. See [implementation](references/implementation.md).

Hardening

  • **Helmet**: Mandatory. Enable HSTS, CSP.
  • **CORS**: Explicit origins only. No `*`.
  • **Throttling**: Use Redis-backed `@nestjs/throttler` in production.
  • **CSRF**: Required for cookie-based auth. See [implementation](references/implementation.md).

Data Protection

  • **Sanitization**: Use `ClassSerializerInterceptor` + `@Exclude()`.
  • **Validation**: `ValidationPipe({ whitelist: true })` to prevent mass assignment.
  • **Audit**: Log mutations (Who, What, When). See [implementation](references/implementation.md).

Secrets Management

  • **CI/CD**: Run `npm audit --prod` in pipelines.
  • **Runtime**: Inject via vault (AWS Secrets Manager / HashiCorp Vault), not `.env`.

Anti-Patterns

  • **No Shadow APIs**: Audit routes regularly; disable `/docs` in production.
  • **No SSRF**: Allowlist domains for all outgoing HTTP requests.
  • **No SQLi**: Use ORM; avoid raw `query()` with string concatenation.
  • **No XSS**: Sanitize HTML input with `dompurify`.

References

  • [Implementation Examples](references/implementation.md)
  • [common/security-standards](../../common/common-security-standards/SKILL.md)
Read more
Ships withagent-skills-standard

The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.

Get the whole plugin

Other skills on agent-skills-standard.