lenne.tech Fullstack Ecosystem: CLI & lt-dev Plugin

April 30, 2026 · View on GitHub

Comprehensive reference for the lt CLI and the lt-dev Claude Code plugin, with focus on vendor-mode workflows for @lenne.tech/nest-server and @lenne.tech/nuxt-extensions.


Table of Contents


Overview

The lenne.tech ecosystem consists of two complementary tools:

  • lt CLI (@lenne.tech/cli) — Terminal tool for scaffolding, code generation, status, and mode conversion
  • lt-dev Plugin — Claude Code plugin providing commands, autonomous agents, and skills for intelligent development workflows

Both tools support the vendor mode as a pilot for @lenne.tech/nest-server (backend) and @lenne.tech/nuxt-extensions (frontend). In vendor mode, the framework code is copied directly into the project as source code under src/core/ (backend) or app/core/ (frontend) — without an npm dependency.


Architecture Diagram

┌─────────────────────────────────────────────────────────────────────┐
│                  Developer / Claude Code                            │
└─────────┬────────────────────────────────────────────────┬──────────┘
          │                                                │
          │ Terminal                                       │ Slash commands
          ▼                                                ▼
┌──────────────────────┐                      ┌────────────────────────┐
│      lt CLI          │                      │    lt-dev Plugin       │
│                      │                      │                        │
│ • Scaffolding        │                      │ • Commands             │
│ • Mode conversion    │◄─── invoked by ──────┤ • Agents               │
│ • Code generation    │                      │ • Skills               │
│ • Status/diagnosis   │                      │                        │
└──────────┬───────────┘                      └────────────┬───────────┘
           │                                               │
           │ writes to                                     │ operates on
           ▼                                               ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    Fullstack Project                                 │
│                                                                      │
│  projects/api (Backend — NestJS)          projects/app (Frontend)    │
│  ├── npm mode: @lenne.tech/nest-server    ├── npm mode: @lenne.tech/ │
│  │    in package.json                     │    nuxt-extensions       │
│  └── vendor mode: src/core/ + VENDOR.md   └── vendor mode: app/core/ │
│                                                + VENDOR.md           │
└─────────────────────────────────────────────────────────────────────┘
           ▲                                               ▲
           │ syncs from                                    │ syncs from
           │                                               │
┌──────────┴──────────────┐                   ┌───────────┴────────────┐
│  github.com/lenneTech/  │                   │ github.com/lenneTech/  │
│  nest-server            │                   │ nuxt-extensions        │
│  nest-server-starter    │                   │ nuxt-base-starter      │
└─────────────────────────┘                   └────────────────────────┘

lt CLI — Features

Project Scaffolding

CommandPurpose
lt fullstack initCreate a new monorepo with API + frontend. Supports npm and vendor mode for both sides
lt frontend nuxtStandalone Nuxt 4 project from nuxt-base-starter
lt frontend angularStandalone Angular project from ng-base-starter
lt server createStandalone NestJS project from nest-server-starter
lt starter chrome-extensionChrome extension starter
lt cli createNew CLI project via Gluegun
lt typescript createTypeScript library starter

Fullstack init with vendor modes:

lt fullstack init \
  --name my-project \
  --frontend nuxt \
  --api-mode Rest \
  --framework-mode vendor \
  --frontend-framework-mode vendor \
  --framework-upstream-branch 11.24.3 \
  --noConfirm

Flags:

  • --framework-mode npm|vendor — Backend mode
  • --frontend-framework-mode npm|vendor — Frontend mode
  • --framework-upstream-branch <tag> — Specific nest-server version for vendor
  • --dry-run — Show plan without making changes
  • --nextExperimental: clone nest-base (Bun + Prisma 7 + Postgres + Better-Auth) for the API instead of nest-server-starter. Forces --api-mode Rest, --framework-mode npm, and skips workspace install (run pnpm install for app and bun install for api manually). Downstream lt server module/object/addProp/test/permissions are NOT compatible with the resulting layout.

Server Development

CommandPurpose
lt server moduleGenerate a NestJS module (model, service, controller, resolver, tests)
lt server objectGenerate an input/output type
lt server add-propertyAdd a property to an existing module
lt server testGenerate E2E tests for a module
lt server permissionsAnalyze all @Roles/@Restricted decorators, generate report (md/json/html)
lt server create-secretGenerate secure secrets for .env
lt server set-secretsSet secrets in the project
lt server convert-modeConvert backend between npm and vendor mode

All code generators are mode-aware: In vendor mode they use relative paths to src/core/; in npm mode they use the bare specifier @lenne.tech/nest-server.


Frontend Development

CommandPurpose
lt frontend nuxtCreate Nuxt project from starter
lt frontend angularCreate Angular project from starter
lt frontend convert-modeConvert frontend between npm and vendor mode

Fullstack Workflows

CommandPurpose
lt fullstack initCreate fullstack monorepo (see above)
lt fullstack updateShow mode-specific update instructions for backend AND frontend
lt fullstack convert-modeConvert backend AND frontend between npm and vendor mode in a single command

Fullstack mode conversion in one command:

# Both subprojects to vendor mode
lt fullstack convert-mode --to vendor --noConfirm

# With specific upstream versions
lt fullstack convert-mode --to vendor \
  --framework-upstream-branch 11.24.3 \
  --frontend-framework-upstream-branch 1.5.3 \
  --noConfirm

# Both back to npm
lt fullstack convert-mode --to npm --noConfirm

# Only convert backend
lt fullstack convert-mode --to vendor --skip-frontend --noConfirm

# Only convert frontend
lt fullstack convert-mode --to vendor --skip-backend --noConfirm

# Dry-run (plan without changes)
lt fullstack convert-mode --to vendor --dry-run

The command automatically locates projects/api/ and projects/app/ (or packages/api / packages/app), detects the current modes, shows a plan, and then orchestrates the conversion of both sides using the appropriate helper methods.


Vendor-Mode Conversion

Backend: lt server convert-mode

# npm → vendor
cd projects/api
lt server convert-mode --to vendor --upstream-branch 11.24.3 --noConfirm

# vendor → npm
lt server convert-mode --to npm --version 11.24.3 --noConfirm

# Dry-run (plan without changes)
lt server convert-mode --to vendor --dry-run

Frontend: lt frontend convert-mode

# npm → vendor
cd projects/app
lt frontend convert-mode --to vendor --upstream-branch 1.5.3 --noConfirm

# vendor → npm
lt frontend convert-mode --to npm --version 1.5.3 --noConfirm

# Dry-run
lt frontend convert-mode --to vendor --dry-run

Both commands clone the respective upstream repo into /tmp/, perform the code transformation, and clean up at the end. No local paths are required.


Status & Diagnostics

CommandPurpose
lt statusShows project type, framework mode (backend + frontend), config, git branch, versions. At the monorepo root, both subprojects are automatically scanned
lt doctorChecks environment, versions, dependencies
lt historyShows CLI command history

Example at the monorepo root:

Monorepo Subprojects:
  Backend:  projects/api → vendor (src/core/, VENDOR.md)
  Frontend: projects/app → vendor (app/core/, VENDOR.md)

Additional Tools

AreaCommands
Configlt config init, lt config validate, lt config show, lt config help
Gitlt git create, git get, git update, git clean, git squash, git rebase, git rename, git reset, git undo, git clear, git force-pull
NPMlt npm reinit
MongoDBlt mongodb collection-export, mongodb s3-restore
Qdrantlt qdrant stats, qdrant delete
Directuslt directus docker-setup, directus typegen, directus remove
Deploymentlt deployment create (GitHub/GitLab pipelines)
Blocks/Componentslt blocks add, lt components add
Toolslt tools regex, tools sha256, tools jwt-read, tools crypt, tools install-scripts
Docslt docs open
Claudelt claude shortcuts, lt claude plugins
Templateslt templates llm

lt-dev Plugin — Features

The lt-dev Claude Code plugin provides Commands (user-invocable), Agents (autonomous execution), and Skills (knowledge bases).

Commands

Backend

CommandPurpose
/lt-dev:backend:update-nest-serverUpdate @lenne.tech/nest-server in npm mode with migration guides
/lt-dev:backend:update-nest-server-coreSync vendored src/core/ with upstream (vendor mode)
/lt-dev:backend:convert-to-vendorConvert existing project from npm → vendor (incl. migration guides)
/lt-dev:backend:convert-to-npmConvert vendored project back to npm
/lt-dev:backend:contribute-nest-server-corePrepare local patches as upstream PR for nest-server
/lt-dev:backend:sec-auditSecurity audit of backend code
/lt-dev:backend:sec-reviewSecurity review of a specific code area
/lt-dev:backend:test-generateGenerate E2E tests
/lt-dev:backend:code-cleanupClean up code (imports, formatting)

Frontend

CommandPurpose
/lt-dev:frontend:update-nuxt-extensions-coreSync vendored app/core/ with upstream
/lt-dev:frontend:convert-to-vendorConvert frontend project from npm → vendor
/lt-dev:frontend:convert-to-npmConvert vendored frontend back to npm
/lt-dev:frontend:contribute-nuxt-extensions-corePrepare local patches as upstream PR for nuxt-extensions
/lt-dev:frontend:figma-initInitialize Figma Code Connect setup
/lt-dev:frontend:figma-researchAnalyze Figma designs for implementation
/lt-dev:frontend:figma-to-codeTranslate Figma design into Vue/Nuxt code
/lt-dev:frontend:env-migrateMigrate .env from old standards
/lt-dev:frontend:init-conventionsInitialize frontend conventions

Fullstack

CommandPurpose
/lt-dev:fullstack:update-allComprehensive update: backend + frontend (mode-aware) + package maintenance + CLAUDE.md sync + validation
/lt-dev:fullstack:updateSimple backend + frontend update (legacy, less comprehensive)
/lt-dev:fullstack:sync-claude-mdSync CLAUDE.md from upstream starter templates

Maintenance

CommandPurpose
/lt-dev:maintenance:maintainFULL MODE: package update + audit + security + deduplication
/lt-dev:maintenance:maintain-checkDRY-RUN: analysis without changes
/lt-dev:maintenance:maintain-securitySecurity patches only
/lt-dev:maintenance:maintain-pre-releaseConservative patch-only before release
/lt-dev:maintenance:maintain-post-featurePost-feature cleanup

Git

CommandPurpose
/lt-dev:git:commit-messageGenerate conventional commit message from staging
/lt-dev:git:create-requestCreate merge request with descriptive body
/lt-dev:git:mr-descriptionGenerate MR description from commits
/lt-dev:git:mr-description-clipboardSame, copied to clipboard
/lt-dev:git:rebaseRebase onto development branch with conflict resolution
/lt-dev:git:rebase-mrsRebase multiple MRs sequentially

Docker

CommandPurpose
/lt-dev:docker:gen-setupGenerate Docker configuration (Dockerfile + compose + .env)

Plugin

CommandPurpose
/lt-dev:plugin:checkValidate the plugin setup after context loss
/lt-dev:plugin:elementInteractive creation of new plugin elements

Vibe (Spec-Driven Development)

CommandPurpose
/lt-dev:vibe:planCreate implementation plan from requirement
/lt-dev:vibe:buildImplement according to plan
/lt-dev:vibe:build-planPlan + build in one flow

Standalone

CommandPurpose
/lt-dev:debugStructured debugging session
/lt-dev:reviewCode review with multiple reviewer perspectives
/lt-dev:refactor-frontendFrontend refactoring helper
/lt-dev:resolve-ticketImplement Linear ticket
/lt-dev:create-ticketCreate Linear ticket
/lt-dev:create-storyCreate user story (German)
/lt-dev:create-taskCreate Linear task
/lt-dev:create-bugCreate Linear bug
/lt-dev:linear-commentCreate Linear comment
/lt-dev:dev-submitDev-submit workflow (commit + push + MR)
/lt-dev:interviewStructured interview for requirements
/lt-dev:skill-optimizeOptimize a plugin skill
/lt-dev:spec-to-tasksSpec → task list

Autonomous Agents

Autonomous agents perform multi-step tasks without interaction. They are spawned via commands or the Agent tool.

Vendor-Mode Agents

AgentPurposeSpawned by
vendor-mode-converterBackend npm → vendor conversion incl. migration guides/lt-dev:backend:convert-to-vendor
vendor-mode-converter-frontendFrontend npm → vendor conversion incl. changelog/lt-dev:frontend:convert-to-vendor
nest-server-core-updaterUpstream sync for vendored nest-server core/lt-dev:backend:update-nest-server-core
nuxt-extensions-core-updaterUpstream sync for vendored nuxt-extensions core/lt-dev:frontend:update-nuxt-extensions-core
nest-server-core-contributorUpstream PR drafts from local backend patches/lt-dev:backend:contribute-nest-server-core
nuxt-extensions-core-contributorUpstream PR drafts from local frontend patches/lt-dev:frontend:contribute-nuxt-extensions-core

Update Agents

AgentPurpose
nest-server-updaternpm-mode update of nest-server incl. migration guides
fullstack-updaterCoordinated backend + frontend update (legacy)
npm-package-maintainerPackage optimization (5 modes)
branch-rebaserRebase automation with conflict resolution

Development Agents

AgentPurpose
backend-devAutonomous NestJS development
frontend-devAutonomous Nuxt 4 development
architectArchitecture planning with stack enforcement
devopsDocker, CI/CD, environment

Reviewer Agents

AgentPurpose
code-reviewer6-dimension code review
backend-reviewerNestJS-specific
frontend-reviewerVue/Nuxt-specific
security-reviewerOWASP-aligned
a11y-reviewerAccessibility + Lighthouse
ux-reviewerUX patterns
performance-reviewerBundle, queries, caching
devops-reviewerDocker, CI/CD security
docs-reviewerREADME, JSDoc, migration guides
test-reviewerTest coverage + quality

Skills (Knowledge Base)

Skills contain structured knowledge and are automatically activated on matching queries.

SkillPurpose
nest-server-core-vendoringBackend vendoring pattern, flatten-fix, sync workflows
nuxt-extensions-core-vendoringFrontend vendoring pattern, nuxt.config rewrite, sync
nest-server-updatingnpm-mode update processes, migration guides, error patterns
generating-nest-serversGenerate NestJS modules/services/controllers
developing-lt-frontendNuxt 4 development, composables, forms, auth
maintaining-npm-packagesDependency optimization (5 modes)
using-lt-clilt CLI reference, conventions
developing-claude-pluginsPlugin development (skills, commands, agents)
coordinating-agent-teamsAgent team coordination, parallelism
building-stories-with-tddTDD workflow for user stories
rebasing-branchesRebase strategies with conflict resolution
general-frontend-securityOWASP frontend security

Vendor-Mode Processes

1. Create a new project in vendor mode

┌────────────────────────────────────────────────────────────────┐
│  DEVELOPER                                                     │
│                                                                │
│  lt fullstack init                                             │
│    --name my-project                                           │
│    --frontend nuxt                                             │
│    --api-mode Rest                                             │
│    --framework-mode vendor          ← Backend vendored         │
│    --frontend-framework-mode vendor ← Frontend vendored        │
│    --framework-upstream-branch 11.24.3                         │
│    --noConfirm                                                 │
│                                                                │
└───────────────────────┬────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────────┐
│  lt CLI performs:                                              │
│                                                                │
│  1. git clone lt-monorepo                                      │
│  2. setup frontend (nuxt-base-starter)                         │
│  3. setup backend (nest-server-starter)                        │
│  4. convertCloneToVendored (backend):                          │
│     - clone nest-server 11.24.3 → /tmp                         │
│     - copy src/core/, index.ts, core.module.ts, etc.           │
│     - apply flatten-fix (4 edge cases)                         │
│     - rewrite consumer imports (@lenne.tech/nest-server → ../) │
│     - merge upstream deps dynamically                          │
│     - apply express type-imports fix                           │
│     - create src/core/VENDOR.md                                │
│     - prepend vendor notice to CLAUDE.md                       │
│  5. convertAppCloneToVendored (frontend):                      │
│     - clone nuxt-extensions 1.5.3 → /tmp                       │
│     - copy src/module.ts + src/runtime/                        │
│     - rewrite nuxt.config.ts modules[] entry                   │
│     - rewrite consumer imports (4 files)                       │
│     - remove @lenne.tech/nuxt-extensions dep                   │
│     - create app/core/VENDOR.md                                │
│     - prepend vendor notice to CLAUDE.md                       │
│  6. pnpm install (monorepo)                                    │
│  7. git init + initial commit                                  │
│                                                                │
└────────────────────────────────────────────────────────────────┘


┌────────────────────────────────────────────────────────────────┐
│  PROJECT READY                                                 │
│                                                                │
│  my-project/                                                   │
│  ├── projects/                                                 │
│  │   ├── api/                                                  │
│  │   │   ├── src/                                              │
│  │   │   │   ├── core/         ← Vendored nest-server          │
│  │   │   │   │   └── VENDOR.md                                 │
│  │   │   │   ├── server/       ← Project code                  │
│  │   │   │   └── main.ts                                       │
│  │   │   ├── bin/migrate.js                                    │
│  │   │   └── package.json (no @lenne.tech/nest-server)         │
│  │   └── app/                                                  │
│  │       ├── app/                                              │
│  │       │   ├── core/         ← Vendored nuxt-extensions      │
│  │       │   │   ├── module.ts                                 │
│  │       │   │   ├── runtime/                                  │
│  │       │   │   └── VENDOR.md                                 │
│  │       │   └── ...                                           │
│  │       ├── nuxt.config.ts (modules: ['./app/core/module'])   │
│  │       └── package.json (no @lenne.tech/nuxt-extensions)    │
│  └── CLAUDE.md                                                 │
└────────────────────────────────────────────────────────────────┘

Alternative: Only backend OR only frontend vendored. Omit the respective flag:

# Only backend vendored, frontend stays npm
lt fullstack init --name my-project --frontend nuxt --api-mode Rest \
  --framework-mode vendor --framework-upstream-branch 11.24.3 --noConfirm

# Only frontend vendored, backend stays npm
lt fullstack init --name my-project --frontend nuxt --api-mode Rest \
  --frontend-framework-mode vendor --noConfirm

2. Backend: convert npm → vendor

Starting point: Existing project in npm mode (@lenne.tech/nest-server in package.json).

┌──────────────────────────────────────────────────────────┐
│  DEVELOPER in projects/api/                              │
│                                                          │
│  Option A — Via Claude Code (with migration guides):     │
│    /lt-dev:backend:convert-to-vendor                     │
│                                                          │
│  Option B — Directly via CLI (no migration guides):      │
│    lt server convert-mode --to vendor                    │
│                                                          │
│  Option C — Dry-run (plan without changes):              │
│    lt server convert-mode --to vendor --dry-run          │
└─────────────┬────────────────────────────────────────────┘

              ▼ Option A uses agent
┌──────────────────────────────────────────────────────────┐
│  vendor-mode-converter agent                             │
│                                                          │
│  Phase 0: Prerequisites                                  │
│    - Verify npm mode                                     │
│    - Verify NOT already vendored                         │
│    - Verify lt CLI available                             │
│                                                          │
│  Phase 1: Version detection                              │
│    - SOURCE = current @lenne.tech/nest-server version    │
│    - TARGET = latest (or specified)                      │
│    - Calculate version gap                               │
│                                                          │
│  Phase 2: Migration-guide discovery                      │
│    - gh api lenneTech/nest-server/contents/migration-    │
│      guides                                              │
│    - Filter by from-version >= SOURCE, < TARGET          │
│    - Build ordered migration plan                        │
│                                                          │
│  Phase 3: CLI conversion                                 │
│    - lt server convert-mode --to vendor                  │
│      --upstream-branch <TARGET>                          │
│    - Applies all transformations:                        │
│      • clone nest-server                                 │
│      • copy + flatten-fix                                │
│      • rewrite imports                                   │
│      • merge deps                                        │
│      • express type-imports fix                          │
│      • VENDOR.md                                         │
│                                                          │
│  Phase 4: Migration application                          │
│    - Apply each migration guide in version order         │
│    - Translate @lenne.tech/nest-server refs to relative  │
│      paths                                               │
│                                                          │
│  Phase 5: Validation loop                                │
│    - tsc --noEmit                                        │
│    - pnpm lint                                           │
│    - pnpm test                                           │
│    - Fix until green                                     │
│                                                          │
│  Phase 6: Report                                         │
└──────────────────────────────────────────────────────────┘

3. Frontend: convert npm → vendor

Starting point: Existing Nuxt project in npm mode.

┌──────────────────────────────────────────────────────────┐
│  DEVELOPER in projects/app/                              │
│                                                          │
│  Option A — Via Claude Code (with changelog):            │
│    /lt-dev:frontend:convert-to-vendor                    │
│                                                          │
│  Option B — Directly via CLI:                            │
│    lt frontend convert-mode --to vendor                  │
│                                                          │
│  Option C — Dry-run:                                     │
│    lt frontend convert-mode --to vendor --dry-run        │
└─────────────┬────────────────────────────────────────────┘


┌──────────────────────────────────────────────────────────┐
│  vendor-mode-converter-frontend agent (Option A)         │
│                                                          │
│  Phase 0: Prerequisites                                  │
│  Phase 1: Version detection                              │
│    - SOURCE = current @lenne.tech/nuxt-extensions        │
│    - TARGET = latest                                     │
│                                                          │
│  Phase 2: Changelog discovery                            │
│    - Fetch CHANGELOG.md from nuxt-extensions repo        │
│    - Fetch GitHub releases for version gap               │
│                                                          │
│  Phase 3: CLI conversion                                 │
│    - lt frontend convert-mode --to vendor                │
│      --upstream-branch <TARGET>                          │
│    - Transformations:                                    │
│      • clone nuxt-extensions                             │
│      • copy src/module.ts + src/runtime/                 │
│      • rewrite nuxt.config.ts                            │
│      • rewrite 4 explicit consumer imports               │
│      • remove @lenne.tech/nuxt-extensions dep            │
│      • VENDOR.md                                         │
│                                                          │
│  Phase 4: Changelog application                          │
│    - Apply breaking changes from changelog              │
│                                                          │
│  Phase 5: Validation                                     │
│    - nuxt build                                          │
│    - pnpm lint                                           │
│                                                          │
│  Phase 6: Report                                         │
└──────────────────────────────────────────────────────────┘

4. Backend: vendor → npm rollback

Starting point: Project in vendor mode (src/core/VENDOR.md exists).

┌──────────────────────────────────────────────────────────┐
│  DEVELOPER in projects/api/                              │
│                                                          │
│  Option A — Via Claude Code:                             │
│    /lt-dev:backend:convert-to-npm                        │
│                                                          │
│  Option B — Directly via CLI:                            │
│    lt server convert-mode --to npm                       │
│                                                          │
│  With specific version:                                  │
│    lt server convert-mode --to npm --version 11.24.3     │
└─────────────┬────────────────────────────────────────────┘


┌──────────────────────────────────────────────────────────┐
│  lt CLI performs:                                        │
│                                                          │
│  1. Read baseline version from src/core/VENDOR.md        │
│  2. Warn if local patches exist in VENDOR.md             │
│     → Hint: /lt-dev:backend:contribute-nest-server-core  │
│     should be run FIRST to upstream them                 │
│  3. Rewrite consumer imports:                            │
│     relative paths → @lenne.tech/nest-server             │
│  4. Delete src/core/                                     │
│  5. Restore @lenne.tech/nest-server dep                  │
│  6. Restore migrate:* scripts to node_modules paths      │
│  7. Remove vendor artifacts:                             │
│     - bin/migrate.js                                     │
│     - migrations-utils/ts-compiler.js                    │
│     - migration-guides/                                  │
│  8. Remove CLAUDE.md vendor marker block                 │
│  9. Post-verification: scan for stale relative imports   │
└──────────────────────────────────────────────────────────┘

⚠️ Warning before rollback: Before a convert-to-npm, all substantial local patches in the vendored core should be contributed upstream via /lt-dev:backend:contribute-nest-server-core — otherwise they will be lost.


5. Frontend: vendor → npm rollback

┌──────────────────────────────────────────────────────────┐
│  DEVELOPER in projects/app/                              │
│                                                          │
│  Option A — Via Claude Code:                             │
│    /lt-dev:frontend:convert-to-npm                       │
│                                                          │
│  Option B — Directly via CLI:                            │
│    lt frontend convert-mode --to npm                     │
│                                                          │
│  With specific version:                                  │
│    lt frontend convert-mode --to npm --version 1.5.3     │
└─────────────┬────────────────────────────────────────────┘


┌──────────────────────────────────────────────────────────┐
│  lt CLI performs:                                        │
│                                                          │
│  1. Read baseline version from app/core/VENDOR.md        │
│  2. Warn if local patches exist in VENDOR.md             │
│  3. Rewrite consumer imports:                            │
│     relative paths → @lenne.tech/nuxt-extensions         │
│  4. Delete app/core/                                     │
│  5. Restore @lenne.tech/nuxt-extensions dep              │
│  6. Rewrite nuxt.config.ts:                              │
│     './app/core/module' → '@lenne.tech/nuxt-extensions'  │
│  7. Remove vendor-freshness script                       │
│  8. Remove CLAUDE.md vendor marker block                 │
│  9. Post-verification                                    │
└──────────────────────────────────────────────────────────┘

6. Update workflows

The recommended path for all updates is /lt-dev:fullstack:update-all. It is mode-aware and orchestrates the appropriate agents automatically.

┌──────────────────────────────────────────────────────────────────┐
│  /lt-dev:fullstack:update-all                                    │
│                                                                  │
│  Phase 1: Detect project structure + framework modes             │
│    Backend:  test -f <api>/src/core/VENDOR.md  → vendor | npm    │
│    Frontend: test -f <app>/app/core/VENDOR.md  → vendor | npm    │
│                                                                  │
│  Phase 2: Version analysis + UPDATE_PLAN.md + user approval      │
│                                                                  │
│  Phase 3: Backend framework update                               │
│    IF npm:     spawn lt-dev:nest-server-updater                  │
│    IF vendor:  spawn lt-dev:nest-server-core-updater             │
│                                                                  │
│  Phase 4: Frontend framework update                              │
│    IF npm:     spawn lt-dev:fullstack-updater --skip-backend     │
│    IF vendor:  spawn lt-dev:nuxt-extensions-core-updater         │
│                                                                  │
│  Phase 5: Package maintenance                                    │
│    → spawn lt-dev:npm-package-maintainer (FULL MODE)             │
│    (for backend AND frontend package.json)                       │
│                                                                  │
│  Phase 6: CLAUDE.md sync from upstream starters                  │
│                                                                  │
│  Phase 7: Cross-validation (build + lint + tests)                │
│                                                                  │
│  Phase 8: Final report                                           │
└──────────────────────────────────────────────────────────────────┘

All 4 mode combinations are supported:

BackendFrontendBackend AgentFrontend Agent
npmnpmnest-server-updaterfullstack-updater --skip-backend
npmvendornest-server-updaternuxt-extensions-core-updater
vendornpmnest-server-core-updaterfullstack-updater --skip-backend
vendorvendornest-server-core-updaternuxt-extensions-core-updater

Skip flags:

/lt-dev:fullstack:update-all --dry-run        # Plan only
/lt-dev:fullstack:update-all --skip-backend   # Frontend only
/lt-dev:fullstack:update-all --skip-frontend  # Backend only
/lt-dev:fullstack:update-all --skip-packages  # Framework only, no package maintenance

Individual updates (if you only need one part):

# Backend npm mode
/lt-dev:backend:update-nest-server

# Backend vendor mode
/lt-dev:backend:update-nest-server-core

# Frontend vendor mode
/lt-dev:frontend:update-nuxt-extensions-core

# Packages only
/lt-dev:maintenance:maintain

7. Upstream contribution

If you have made generally useful changes to the vendored core (bug fixes, features), they can be contributed back as pull requests to the upstream repo.

┌──────────────────────────────────────────────────────────┐
│  BACKEND:  /lt-dev:backend:contribute-nest-server-core   │
│  FRONTEND: /lt-dev:frontend:contribute-nuxt-extensions-core│
│                                                          │
│  Phase 1: git log since VENDOR.md baseline               │
│  Phase 2: Filter cosmetic commits (format, lint)         │
│  Phase 3: Categorize:                                    │
│    - upstream-candidate: generic bugfix, framework       │
│      enhancement, type correction                        │
│    - project-specific: business rules, branding          │
│  Phase 4: Clone upstream fresh + cherry-pick candidates  │
│  Phase 5: Generate PR draft with motivation              │
│  Phase 6: Present summary for human review               │
│                                                          │
│  Human: reviews + pushes PR via normal GitHub flow       │
└──────────────────────────────────────────────────────────┘

After the PR is merged, the next /lt-dev:backend:update-nest-server-core or /lt-dev:frontend:update-nuxt-extensions-core run will recognize the patch as "upstream-delivered" and remove it from the VENDOR.md local-changes log.


Decision Matrix

When to use npm mode?

  • ✅ Standard project without local framework modifications
  • ✅ Fast updates via pnpm update
  • ✅ Simpler CI/CD
  • ✅ Smaller memory footprint in the repo

When to use vendor mode?

  • ✅ Claude Code should understand the framework code (better context comprehension)
  • ✅ Local patches to the framework are required
  • ✅ Upstream contributions should emerge from real development
  • ✅ Debugging in framework code with source maps / original code
  • ✅ Framework changes immediately testable without npm release cycle
  • ⚠️ Requires occasional merge conflict handling during sync
  • ⚠️ Longer test import phase (TypeScript source)

Glossary

TermMeaning
npm modeFramework as @lenne.tech/nest-server / @lenne.tech/nuxt-extensions npm dependency
Vendor modeFramework source copied into src/core/ (backend) or app/core/ (frontend)
VENDOR.mdMarker file in the vendored core with baseline version, sync history, local patches
Flatten-fixImport path rewrites in 4 backend files after copying (backend only)
Consumer-import codemodRewrite of @lenne.tech/nest-server to relative paths in project code
Upstream syncPulling upstream changes into the vendored core
Upstream contributionPushing local patches as PR to the upstream repo
Mode-awareCode that automatically chooses correct paths for npm or vendor
Starternest-server-starter / nuxt-base-starter — template repo with standard config

Sources & References

GitHub repos

RepoURL
lt CLIhttps://github.com/lenneTech/cli
lt-dev Pluginhttps://github.com/lenneTech/claude-code
nest-server frameworkhttps://github.com/lenneTech/nest-server
nest-server starterhttps://github.com/lenneTech/nest-server-starter
nuxt-extensions modulehttps://github.com/lenneTech/nuxt-extensions
nuxt-base starterhttps://github.com/lenneTech/nuxt-base-starter
lt-monorepo templatehttps://github.com/lenneTech/lt-monorepo

Local documentation

  • cli/CLAUDE.md — CLI internal documentation + vendor touchpoints table
  • cli/docs/commands.md — CLI command reference
  • cli/docs/lt.config.md — CLI config reference
  • `cli/scripts/test-vendor-init.sh$ — \text{Backend} \text{vendor} \text{integration} \text{tests} (4 \text{scenarios} \times ~22 \text{assertions})
  • $cli/scripts/test-frontend-vendor-init.sh` — Frontend vendor integration tests (4 scenarios)

Quick Reference — The Most Important Commands

# ═══════════════════════════════════════════════════════════════
# PROJECT SETUP
# ═══════════════════════════════════════════════════════════════

# New project (both in vendor mode)
lt fullstack init --name <n> --frontend nuxt --api-mode Rest \
  --framework-mode vendor --frontend-framework-mode vendor --noConfirm

# New project (npm mode, standard)
lt fullstack init --name <n> --frontend nuxt --api-mode Rest --noConfirm

# Check status (shows both modes at monorepo root)
lt status

# ═══════════════════════════════════════════════════════════════
# CONVERSION — Fullstack (both subprojects in one step)
# ═══════════════════════════════════════════════════════════════

# Both subprojects: npm → vendor (from monorepo root)
lt fullstack convert-mode --to vendor --noConfirm

# Both subprojects: vendor → npm (rollback)
lt fullstack convert-mode --to npm --noConfirm

# With specific upstream versions
lt fullstack convert-mode --to vendor \
  --framework-upstream-branch 11.24.3 \
  --frontend-framework-upstream-branch 1.5.3 \
  --noConfirm

# Only backend or only frontend
lt fullstack convert-mode --to vendor --skip-frontend --noConfirm
lt fullstack convert-mode --to vendor --skip-backend --noConfirm

# Dry-run (plan without changes)
lt fullstack convert-mode --to vendor --dry-run

# ═══════════════════════════════════════════════════════════════
# CONVERSION — Individual (in the respective subprojects)
# ═══════════════════════════════════════════════════════════════

# Backend: npm → vendor (with migrations via Claude Code)
/lt-dev:backend:convert-to-vendor

# Backend: npm → vendor (directly via CLI)
cd projects/api && lt server convert-mode --to vendor

# Frontend: npm → vendor (with changelog via Claude Code)
/lt-dev:frontend:convert-to-vendor

# Frontend: npm → vendor (directly via CLI)
cd projects/app && lt frontend convert-mode --to vendor

# Rollback individually
cd projects/api && lt server convert-mode --to npm
cd projects/app && lt frontend convert-mode --to npm

# ═══════════════════════════════════════════════════════════════
# UPDATES
# ═══════════════════════════════════════════════════════════════

# Comprehensive fullstack update (recommended, mode-aware)
/lt-dev:fullstack:update-all

# Backend only
/lt-dev:backend:update-nest-server        # npm mode
/lt-dev:backend:update-nest-server-core   # vendor mode

# Frontend only
/lt-dev:frontend:update-nuxt-extensions-core  # vendor mode

# Packages only
/lt-dev:maintenance:maintain

# ═══════════════════════════════════════════════════════════════
# UPSTREAM CONTRIBUTION
# ═══════════════════════════════════════════════════════════════

# Backend: prepare local patches as PR
/lt-dev:backend:contribute-nest-server-core

# Frontend: prepare local patches as PR
/lt-dev:frontend:contribute-nuxt-extensions-core

This file is intended as living documentation. It should be updated when new features are added to the lt CLI or lt-dev plugin.