| 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-tdd skill - For building user stories with Test-Driven Development
using-lt-cli skill - For Git operations and Fullstack initialization
nest-server-updating skill - For updating @lenne.tech/nest-server to latest version
When to use which:
- Building features with TDD workflow? Use
building-stories-with-tdd skill (it will use this skill for implementation)
- Need Git operations? Use
using-lt-cli skill
- Updating @lenne.tech/nest-server? Use
nest-server-updating skill
- 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!
declare name: string;
@UnifiedField({ description: 'Product name' })
name: string;
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 start or npm 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:
Configuration File & Commands
Complete guide: configuration.md
Quick Command Reference:
lt server module --name Product --controller Rest
lt server object --name Address
lt server addProp --type Module --element User
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
npm install -g @lenne.tech/cli
ls src/server/modules
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:
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