From lt-dev
Handles ALL NestJS and @lenne.tech/nest-server development tasks including module creation, service implementation, controller/resolver development, model definition, and debugging. Covers lt server commands, @Roles/@Restricted security, CrudService patterns, and API tests. Supports monorepos (projects/api/, packages/api/). Activates when working with src/server/ files, NestJS modules, services, controllers, resolvers, models, DTOs, guards, decorators, or REST/GraphQL endpoints. NOT for Vue/Nuxt frontend (use developing-lt-frontend). NOT for nest-server version updates (use nest-server-updating). NOT for TDD workflow orchestration (use building-stories-with-tdd).
npx claudepluginhub lennetech/claude-code --plugin lt-devThis skill uses the workspace's default tool permissions.
Developers typically work in a **Lerna fullstack monorepo** created via `lt fullstack init`:
reference/configuration.mdreference/declare-keyword-warning.mdreference/description-management.mdreference/examples.mdreference/framework-guide.mdreference/mcp-integration.mdreference/owasp-checklist.mdreference/quality-review.mdreference/reference.mdreference/security-rules.mdreference/service-health-check.mdreference/typescript-conventions.mdreference/verification-checklist.mdreference/workflow-process.mdMandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Developers typically work in a Lerna fullstack monorepo created via lt fullstack init:
project/
├── projects/
│ ├── api/ ← nest-server-starter (depends on @lenne.tech/nest-server)
│ └── app/ ← nuxt-base-starter (depends on @lenne.tech/nuxt-extensions)
├── lerna.json
└── package.json (workspaces: ["projects/*"])
Package relationships:
projects/api/ and any code depending on @lenne.tech/nest-serverpnpm start, pnpm run dev, pnpm test)lt server module, lt server object, lt server addProp, lt server createRule: If it involves NestJS or @lenne.tech/nest-server in ANY way, use this skill!
| User Intent | Correct Skill |
|---|---|
| "Create a NestJS module" | THIS SKILL |
| "Debug a service error" | THIS SKILL |
| "Add a REST endpoint" | THIS SKILL |
| "Update nest-server to v14" | nest-server-updating |
| "Write tests first, then implement" | building-stories-with-tdd |
| "Update npm packages" | maintaining-npm-packages |
| "Build a Vue component" | developing-lt-frontend |
| "Run lt fullstack init" | using-lt-cli |
developing-lt-frontend - For ALL Nuxt/Vue frontend development (projects/app/)building-stories-with-tdd - For TDD workflow (tests first, then implementation)using-lt-cli - For Git operations and Fullstack initializationnest-server-updating - For updating @lenne.tech/nest-server versions/lt-dev:review - General security review of branch diff/lt-dev:backend:sec-review - Security review after implementing endpoints or modifying auth/authz/lt-dev:backend:sec-audit - Full OWASP security audit for dependencies, config, and codeIn monorepo projects:
projects/api/ or packages/api/ → This skillprojects/app/ or packages/app/ → developing-lt-frontendWhen creating new modules, objects, or adding properties, use lt server CLI commands first before writing code manually. The CLI generates complete, standards-compliant scaffolding with all decorators, imports, and module integration.
# Always add --noConfirm --skipLint for non-interactive execution
lt server module --name Product --controller Rest --noConfirm --skipLint \
--prop-name-0 name --prop-type-0 string \
--prop-name-1 price --prop-type-1 number
lt server object --name Address --noConfirm --skipLint \
--prop-name-0 city --prop-type-0 string
lt server addProp --type Module --element User --noConfirm --skipLint \
--prop-name-0 avatar --prop-type-0 string --prop-nullable-0 true
After CLI scaffolding, customize the generated code: business logic, security rules (securityCheck), descriptions, and custom methods.
Complete flag reference: reference/configuration.md
@Restricted() or @Roles() decoratorssecurityCheck() to bypass securitylt server permissions after creating modulesComplete security rules: reference/security-rules.md | OWASP checklist: reference/owasp-checklist.md
declare Keyword// WRONG - Decorator won't work!
declare name: string;
// CORRECT
@UnifiedField({ description: 'Product name' })
name: string;
Details: reference/declare-keyword-warning.md
Apply descriptions consistently to EVERY component (Model, CreateInput, UpdateInput, Objects, Class-level decorators). Format: 'English text' or 'English (Deutsch)' for German input.
Complete guide: reference/description-management.md
# Create module (REST is default!) — always use --noConfirm --skipLint
lt server module --name Product --controller Rest --noConfirm --skipLint
# Create SubObject
lt server object --name Address --noConfirm --skipLint
# Add properties
lt server addProp --type Module --element User --noConfirm --skipLint
# New project
lt server create <server-name> --noConfirm
# Permissions report (audit @Roles, @Restricted, securityCheck)
lt server permissions --format html --open
lt server permissions --format json --output permissions.json
lt server permissions --failOnWarnings # CI/CD mode
API Style: REST is default. Use --controller GraphQL only when explicitly requested.
Complete configuration & property flags: reference/configuration.md
1. Write API tests FIRST (REST/GraphQL endpoint tests)
2. Implement backend code until tests pass
3. Iterate until all tests green
4. Then proceed to frontend (E2E tests first)
For full TDD workflow orchestration, use building-stories-with-tdd skill.
afterAll(async () => {
await db.collection('entities').deleteMany({ createdBy: testUserId });
await db.collection('users').deleteMany({ email: /@test\.com$/ });
});
Use separate test database: app-test instead of app-dev
ALWAYS read actual source code from node_modules/@lenne.tech/nest-server/ before guessing framework behavior. The framework ships its complete source with the npm package.
File (in node_modules/@lenne.tech/nest-server/) | When to Read |
|---|---|
CLAUDE.md | Start of any backend task — framework rules and architecture |
FRAMEWORK-API.md | Quick API reference — all interfaces, method signatures |
src/core.module.ts | Module registration, CoreModule.forRoot() parameters |
src/core/common/interfaces/server-options.interface.ts | ALL config interfaces (IServerOptions, IBetterAuth, ICoreModuleOverrides) |
src/core/common/interfaces/service-options.interface.ts | ServiceOptions interface for service method calls |
src/core/common/services/crud.service.ts | CrudService base class — ALL services extend this |
src/core/modules/*/INTEGRATION-CHECKLIST.md | Integration steps when extending core modules |
src/core/modules/*/README.md | Per-module documentation and usage |
docs/REQUEST-LIFECYCLE.md | Complete request flow, interceptors, decorators |
.claude/rules/ | 11 rule files (architecture, security, testing, modules, etc.) |
currentUser)FRAMEWORK-API.md for quick overview of available interfaces and methodsComplete framework guide: reference/framework-guide.md
src/server/common/enums/Complete workflow: reference/workflow-process.md
ALL properties must be in alphabetical order in Model, Input, and Output files.
The @lenne.tech/nest-server includes a built-in permissions scanner that audits @Roles, @Restricted, and securityCheck() usage across all modules.
lt server permissions (generates MD/JSON/HTML report via AST scan — preferred)permissions: true in config.env.ts for a live dashboard at GET /permissionsThe scanner detects: missing class-level @Restricted, endpoints without @Roles, models without securityCheck(), unrestricted fields, and unrestricted methods. Use after creating new modules to verify decorator coverage.
lt server permissions --failOnWarnings)/lt-dev:backend:sec-review)Complete checklist: reference/verification-checklist.md
| Topic | File |
|---|---|
| Permissions Report | Built-in: lt server permissions / GET /permissions |
| Service Health Check | reference/service-health-check.md |
| Framework Guide | reference/framework-guide.md |
| Configuration & Commands | reference/configuration.md |
| Specification Format | reference/reference.md |
| Examples | reference/examples.md |
| Workflow Process | reference/workflow-process.md |
| Description Management | reference/description-management.md |
| Security Rules | reference/security-rules.md |
| OWASP Checklist | reference/owasp-checklist.md |
| Declare Keyword Warning | reference/declare-keyword-warning.md |
| Quality Review | reference/quality-review.md |
| Verification Checklist | reference/verification-checklist.md |
| TypeScript Conventions | reference/typescript-conventions.md |
| MCP Integration | reference/mcp-integration.md |
| Operation | Use Case |
|---|---|
goToDefinition | Find where a class/function/type is defined |
findReferences | Find all usages of a symbol |
hover | Get type info and documentation |
documentSymbol | List all symbols in a file |
workspaceSymbol | Search symbols across the project |
goToImplementation | Find implementations of interfaces |
incomingCalls / outgoingCalls | Analyze call dependencies |