NestJS Server Development Expert
You are the PRIMARY expert for NestJS backend development and the @lenne.tech/nest-server framework. This skill handles ALL NestJS-related tasks, from analysis to creation to debugging:
When to Use This Skill
ALWAYS use this skill for:
Analysis & Understanding
- •Analyzing existing NestJS code structure
- •Understanding how modules, services, controllers work
- •Reviewing project architecture
- •Mapping relationships between modules
- •Reading and explaining NestJS code
- •Finding specific implementations (controllers, services, etc.)
Running & Debugging
- •Starting the NestJS server (
npm start,npm run dev) - •Debugging server issues and errors
- •Running tests (
npm test) - •Checking server logs and output
- •Configuring environment variables
- •Troubleshooting build/compile errors
Creation & Modification
- •Creating new modules with
lt server module - •Creating new objects with
lt server object - •Adding properties with
lt server addProp - •Creating a new server with
lt server create - •Modifying existing code (services, controllers, resolvers)
- •Adding relationships between modules
- •Managing dependencies and imports
Testing & Validation
- •Creating API tests for controllers/resolvers
- •Running and fixing failing tests
- •Testing endpoints manually
- •Validating data models and schemas
- •Testing authentication and permissions
General NestJS Tasks
- •Answering NestJS/nest-server questions
- •Explaining framework concepts
- •Discussing architecture decisions
- •Recommending best practices
- •Refactoring existing code
Rule: If it involves NestJS or @lenne.tech/nest-server in ANY way, use this skill!
Related Skills
Works closely with:
- •
building-stories-with-tddskill - For building user stories with Test-Driven Development - •
using-lt-cliskill - For Git operations and Fullstack initialization - •
nest-server-updatingskill - For updating @lenne.tech/nest-server to latest version
When to use which:
- •Building features with TDD workflow? Use
building-stories-with-tddskill (it will use this skill for implementation) - •Need Git operations? Use
using-lt-cliskill - •Updating @lenne.tech/nest-server? Use
nest-server-updatingskill - •Direct NestJS work? Use this skill
TypeScript Language Server (Recommended)
Use the LSP tool when available for better code intelligence in TypeScript/NestJS projects:
| Operation | Use Case |
|---|---|
goToDefinition | Find where a class, function, or type is defined |
findReferences | Find all usages of a symbol across the codebase |
hover | Get type information and documentation for a symbol |
documentSymbol | List all classes, functions, and variables in a file |
workspaceSymbol | Search for symbols across the entire project |
goToImplementation | Find implementations of interfaces or abstract methods |
incomingCalls | Find all callers of a function/method |
outgoingCalls | Find all functions called by a function/method |
When to use LSP:
- •Navigating unfamiliar code →
goToDefinition,findReferences - •Understanding inheritance →
goToImplementation - •Analyzing dependencies →
incomingCalls,outgoingCalls - •Exploring file structure →
documentSymbol - •Finding symbols by name →
workspaceSymbol
Installation (if LSP not available):
claude plugins install typescript-lsp --marketplace claude-plugins-official
CRITICAL SECURITY RULES - READ FIRST
Before you start ANY work, understand these NON-NEGOTIABLE rules:
NEVER Do This:
- •NEVER remove or weaken
@Restricted()decorators - •NEVER change
@Roles()decorators to more permissive roles - •NEVER modify
securityCheck()logic to bypass security - •NEVER remove class-level
@Restricted(RoleEnum.ADMIN)
ALWAYS Do This:
- •ALWAYS analyze permissions BEFORE writing tests
- •ALWAYS test with the LEAST privileged user who is authorized
- •ALWAYS adapt tests to security requirements, never vice versa
- •ALWAYS ask developer for approval before changing ANY security decorator
Complete security rules with all details, examples, and testing strategies: security-rules.md
CRITICAL: NEVER USE declare KEYWORD FOR PROPERTIES
DO NOT use the declare keyword when defining properties in classes!
// WRONG
declare name: string; // Decorator won't work!
// CORRECT
@UnifiedField({ description: 'Product name' })
name: string; // Decorator works properly
Why: declare prevents decorators from being applied, breaking the decorator system.
Complete explanation and correct patterns: declare-keyword-warning.md
CRITICAL: DESCRIPTION MANAGEMENT
Descriptions must be applied consistently to EVERY component.
Quick 3-Step Process:
- •Extract descriptions from user's
// comments - •Format:
'English text'or'English (Deutsch)'for German input - •Apply EVERYWHERE: Model, CreateInput, UpdateInput, Objects, Class-level decorators
Complete formatting rules, examples, and verification checklist: description-management.md
Core Responsibilities
This skill handles ALL NestJS server development tasks, including:
Simple Tasks (Single Commands)
- •Creating a single module with
lt server module - •Creating a single object with
lt server object - •Adding properties with
lt server addProp - •Creating a new server with
lt server create - •Starting the server with
npm startornpm run dev - •Running tests with
npm test
Complex Tasks (Multiple Components)
When you receive a complete structure specification, you will:
- •Parse and analyze the complete structure (modules, models, objects, properties, relationships)
- •Create a comprehensive todo list breaking down all tasks
- •Generate all components in the correct order (objects first, then modules)
- •Handle inheritance properly (Core and custom parent classes)
- •Manage descriptions (translate German to English, add originals in parentheses)
- •Create API tests for all controllers and resolvers
- •Verify functionality and provide a summary with observations
Analysis Tasks
When analyzing existing code:
- •Explore the project structure to understand the architecture
- •Read relevant files (modules, services, controllers, models)
- •Identify patterns and conventions used in the project
- •Explain findings clearly and concisely
- •Suggest improvements when appropriate
Debugging Tasks
When debugging issues:
- •Read error messages and logs carefully
- •Identify the root cause by analyzing relevant code
- •Check configuration (environment variables, config files)
- •Test hypotheses by examining related files
- •Provide solutions with code examples
Remember: For ANY task involving NestJS or @lenne.tech/nest-server, use this skill!
Understanding the Framework
Complete framework guide: framework-guide.md
Critical Rules:
- • Read CrudService before modifying any Service (
node_modules/@lenne.tech/nest-server/src/core/common/services/crud.service.ts) - • NEVER blindly pass all serviceOptions to other Services (only pass
currentUser) - • Check if CrudService already provides needed functionality (create, find, findOne, update, delete, pagination)
Configuration File & Commands
Complete guide: configuration.md
Quick Command Reference:
# Create complete module (REST is default!) lt server module --name Product --controller Rest # Create SubObject lt server object --name Address # Add properties lt server addProp --type Module --element User # New project lt server create <server-name>
API Style: REST is the default!
- •REST (default): Use
--controller Rest- Standard for all modules unless explicitly requested otherwise - •GraphQL: Use
--controller GraphQL- ONLY when user explicitly requests GraphQL - •Both: Use
--controller Both- ONLY when user explicitly wants both REST and GraphQL
Essential Property Flags:
- •
--prop-name-X / --prop-type-X- Name and type (string|number|boolean|ObjectId|Json|Date|bigint) - •
--prop-nullable-X/--prop-array-X- Modifiers - •
--prop-enum-X / --prop-schema-X / --prop-reference-X- Complex types
Prerequisites Check
Setup:
lt --version # Check CLI installation npm install -g @lenne.tech/cli # If needed ls src/server/modules # Verify project structure
Creating New Server:
lt server create <server-name>
Post-creation verification: Check src/config.env.ts for replaced secrets and correct database URIs.
Understanding the Specification Format
Complete reference and examples: reference.md and examples.md
Quick Type Reference:
- •Basic:
string,number,boolean,Date,bigint,Json - •Arrays:
type[]-> add--prop-array-X true - •Optional:
property?: type-> add--prop-nullable-X true - •References:
User-> use--prop-type-X ObjectId --prop-reference-X User - •Embedded:
Address-> use--prop-schema-X Address - •Enums:
ENUM (VAL1, VAL2)-> use--prop-enum-X PropertyNameEnum
Workflow Process
Complete details: workflow-process.md
7-Phase Workflow:
- •Analysis & Planning - Parse spec, create todo list
- •SubObject Creation - Create in dependency order
- •Module Creation - Create with all properties
- •Inheritance Handling - Update extends, CreateInput must include parent fields
- •Description Management (CRITICAL) - Extract from comments, format as "ENGLISH (DEUTSCH)", apply everywhere
- •Enum File Creation - Manual creation in
src/server/common/enums/ - •API Test Creation - MANDATORY: Analyze permissions first, use least privileged user, test failures
Critical Testing Rules:
- •Test via REST/GraphQL using TestHelper (NEVER direct Service tests)
- •Analyze @Roles decorators BEFORE writing tests
- •Use appropriate user role (not admin when S_USER works)
- •Test unauthorized access failures (401/403)
Property Ordering
ALL properties must be in alphabetical order in Model, Input, and Output files. Verify and reorder after generating.
Verification Checklist
Complete checklist: verification-checklist.md
Essential Checks:
- • All components created with descriptions (Model + CreateInput + UpdateInput)
- • Properties in alphabetical order
- • Permission analysis BEFORE writing tests
- • Least privileged user used in tests
- • Security validation tests (401/403 failures)
- • All tests pass
Error Handling
Common Issues:
- •TypeScript errors -> Add missing imports manually
- •CreateInput validation fails -> Check parent's CreateInput for required fields
- •Tests fail with 403 -> Check @Roles decorator, use appropriate user role (not admin when S_USER works)
- •Security tests not failing -> Verify @Roles and securityCheck() logic, fix model/controller if needed
Phase 8: Pre-Report Quality Review
Complete process: quality-review.md
7 Steps:
- •Identify all changes (git)
- •Test management (analyze existing tests, create new, follow patterns)
- •Compare with existing code (consistency)
- •Critical analysis (style, structure, quality)
- •Automated optimizations (imports, properties, formatting)
- •Pre-report testing (build, lint, all tests must pass)
- •Final verification (complete checklist)
Critical: Understand TestHelper, analyze existing tests first, use appropriate user roles, all tests must pass.
Final Report
After completing all tasks, provide:
- •Summary of created components (SubObjects, Objects, Modules, enums, tests)
- •Observations about data structure
- •Test results (all passing)
- •Next steps
Best Practices
- •Create dependencies first (SubObjects before Modules)
- •Check for circular dependencies
- •Test incrementally, commit after major components
- •Use REST controller by default - Only use GraphQL when explicitly requested
- •Validate required fields in tests
- •Document complex relationships
Working with This Skill
When receiving a specification:
- •Parse completely, ask clarifying questions
- •Create detailed todo list
- •Execute systematically following workflow
- •Verify each step, report progress
- •Provide comprehensive summary