> nestjs-deployment
Containerize NestJS apps with multi-stage Docker builds, tune Node.js memory, and implement graceful shutdown hooks. Use when writing Dockerfiles, configuring K8s deployments, or adding shutdown hooks for NestJS. (triggers: Dockerfile, k8s/**, helm/**, max-old-space-size, shutdown hooks)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/nestjs-deployment?format=md"Deployment & Ops Standards
Priority: P1 (OPERATIONAL)
Docker optimization and production deployment standards for NestJS applications.
Workflow: Containerize a NestJS App
- Write multi-stage Dockerfile — Build stage installs devDeps and runs
nest build; run stage copies onlydistand prunednode_modules. - Set non-root user — Add
USER nodeto the Dockerfile. - Tune memory — Set
--max-old-space-sizeto ~75% of container memory limit. - Enable shutdown hooks — Call
app.enableShutdownHooks()inmain.ts. - Add K8s pre-stop — Configure a 5-10s sleep pre-stop hook for LB draining.
Dockerfile Example
Runtime Tuning (Node.js)
- Memory Config: Container memory != Node memory.
- Rule: Explicitly set Max Old Space.
- Command:
node --max-old-space-size=XXX dist/main - Calculation: Set to ~75-80% of Kubernetes Limit. (Limit: 1GB -> OldSpace: 800MB).
- Graceful Shutdown:
- Signal: Listen to
SIGTERM. - NestJS:
app.enableShutdownHooks()is mandatory. - Sleep: Add a "Pre-Stop" sleep in K8s (5-10s) to allow Load Balancer to drain connections before Node process stops accepting traffic.
- Signal: Listen to
Init Patterns
- Database Migrations:
- Anti-Pattern: Running migration in
main.tson startup. - Pro Pattern: Use an Init Container in Kubernetes that runs
npm run typeorm:migration:runbefore the app container starts.
- Anti-Pattern: Running migration in
Environment Variables & CI/CD
- CI/CD Pipelines (GitHub, GitLab, Azure, etc.):
- If you modify
src/config/env.validation.tsto add a new environment variable, you MUST map it explicitly in your deployment pipeline/infrastructure-as-code. - Platform Context:
- Cloud Run/ECS: Variables must be explicitly passed in the service definition.
- Kubernetes: New variables must be added to the
Deploymentmanifest orConfigMap/Secret. - Lambda/Serverless: Must be added to
serverless.ymlor provider console.
- Fundamental Rule: Application code configuration changes are "breaking changes" for the infrastructure layer. Never assume environment inheritance.
- If you modify
Anti-Patterns
- No migrations in main.ts: Use K8s Init Containers or pre-deploy CI steps for migration runs.
- No root user in Docker: Always add
USER nodeto Dockerfile; running as root is a security risk. - No unbounded Node heap: Set
--max-old-space-sizeto ~75% of container memory limit.
> related_skills --same-repo
> common-store-changelog
Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve
> golang-tooling
Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)
> common-ui-design
Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)
> common-owasp
OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)