| name | generating-nest-servers |
| description | PRIMARY expert for ALL NestJS and @lenne.tech/nest-server tasks. ALWAYS use this skill when working in projects with @lenne.tech/nest-server in package.json dependencies (supports monorepos with projects/*, packages/*, apps/* structure), or when asked about NestJS modules, services, controllers, resolvers, models, objects, tests, server creation, debugging, or any NestJS/nest-server development task. Handles lt server commands, security analysis, test creation, and all backend development. ALWAYS reads CrudService base class before working with Services. |
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 Developmentusing-lt-cliskill - For Git operations and Fullstack initializationnest-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
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