@lenne.tech/cli 1.10.0 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/build/commands/config/validate.js +2 -0
- package/build/commands/frontend/convert-mode.js +198 -0
- package/build/commands/fullstack/convert-mode.js +368 -0
- package/build/commands/fullstack/init.js +44 -2
- package/build/commands/fullstack/update.js +49 -1
- package/build/commands/server/convert-mode.js +197 -0
- package/build/commands/status.js +81 -2
- package/build/config/vendor-frontend-runtime-deps.json +4 -0
- package/build/extensions/frontend-helper.js +652 -0
- package/build/extensions/server.js +515 -68
- package/build/lib/frontend-framework-detection.js +129 -0
- package/docs/LT-ECOSYSTEM-GUIDE.md +972 -0
- package/docs/VENDOR-MODE-WORKFLOW.md +471 -0
- package/docs/commands.md +196 -0
- package/docs/lt.config.md +9 -7
- package/package.json +2 -1
- package/build/templates/vendor-scripts/check-vendor-freshness.mjs +0 -131
- package/build/templates/vendor-scripts/propose-upstream-pr.ts +0 -269
- package/build/templates/vendor-scripts/sync-from-upstream.ts +0 -250
|
@@ -0,0 +1,972 @@
|
|
|
1
|
+
# lenne.tech Fullstack Ecosystem: CLI & lt-dev Plugin
|
|
2
|
+
|
|
3
|
+
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`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Overview](#overview)
|
|
10
|
+
- [Architecture Diagram](#architecture-diagram)
|
|
11
|
+
- [lt CLI — Features](#lt-cli--features)
|
|
12
|
+
- [Project Scaffolding](#project-scaffolding)
|
|
13
|
+
- [Server Development](#server-development)
|
|
14
|
+
- [Frontend Development](#frontend-development)
|
|
15
|
+
- [Fullstack Workflows](#fullstack-workflows)
|
|
16
|
+
- [Vendor-Mode Conversion](#vendor-mode-conversion)
|
|
17
|
+
- [Status & Diagnostics](#status--diagnostics)
|
|
18
|
+
- [Additional Tools](#additional-tools)
|
|
19
|
+
- [lt-dev Plugin — Features](#lt-dev-plugin--features)
|
|
20
|
+
- [Commands](#commands)
|
|
21
|
+
- [Autonomous Agents](#autonomous-agents)
|
|
22
|
+
- [Skills (Knowledge Base)](#skills-knowledge-base)
|
|
23
|
+
- [Vendor-Mode Processes](#vendor-mode-processes)
|
|
24
|
+
- [1. Create a new project in vendor mode](#1-create-a-new-project-in-vendor-mode)
|
|
25
|
+
- [2. Backend: convert npm → vendor](#2-backend-convert-npm--vendor)
|
|
26
|
+
- [3. Frontend: convert npm → vendor](#3-frontend-convert-npm--vendor)
|
|
27
|
+
- [4. Backend: vendor → npm rollback](#4-backend-vendor--npm-rollback)
|
|
28
|
+
- [5. Frontend: vendor → npm rollback](#5-frontend-vendor--npm-rollback)
|
|
29
|
+
- [6. Update workflows](#6-update-workflows)
|
|
30
|
+
- [7. Upstream contribution](#7-upstream-contribution)
|
|
31
|
+
- [Decision Matrix](#decision-matrix)
|
|
32
|
+
- [Glossary](#glossary)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Overview
|
|
37
|
+
|
|
38
|
+
The lenne.tech ecosystem consists of two complementary tools:
|
|
39
|
+
|
|
40
|
+
- **`lt CLI`** (`@lenne.tech/cli`) — Terminal tool for scaffolding, code generation, status, and mode conversion
|
|
41
|
+
- **`lt-dev` Plugin** — Claude Code plugin providing commands, autonomous agents, and skills for intelligent development workflows
|
|
42
|
+
|
|
43
|
+
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.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Architecture Diagram
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
51
|
+
│ Developer / Claude Code │
|
|
52
|
+
└─────────┬────────────────────────────────────────────────┬──────────┘
|
|
53
|
+
│ │
|
|
54
|
+
│ Terminal │ Slash commands
|
|
55
|
+
▼ ▼
|
|
56
|
+
┌──────────────────────┐ ┌────────────────────────┐
|
|
57
|
+
│ lt CLI │ │ lt-dev Plugin │
|
|
58
|
+
│ │ │ │
|
|
59
|
+
│ • Scaffolding │ │ • Commands │
|
|
60
|
+
│ • Mode conversion │◄─── invoked by ──────┤ • Agents │
|
|
61
|
+
│ • Code generation │ │ • Skills │
|
|
62
|
+
│ • Status/diagnosis │ │ │
|
|
63
|
+
└──────────┬───────────┘ └────────────┬───────────┘
|
|
64
|
+
│ │
|
|
65
|
+
│ writes to │ operates on
|
|
66
|
+
▼ ▼
|
|
67
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
68
|
+
│ Fullstack Project │
|
|
69
|
+
│ │
|
|
70
|
+
│ projects/api (Backend — NestJS) projects/app (Frontend) │
|
|
71
|
+
│ ├── npm mode: @lenne.tech/nest-server ├── npm mode: @lenne.tech/ │
|
|
72
|
+
│ │ in package.json │ nuxt-extensions │
|
|
73
|
+
│ └── vendor mode: src/core/ + VENDOR.md └── vendor mode: app/core/ │
|
|
74
|
+
│ + VENDOR.md │
|
|
75
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
76
|
+
▲ ▲
|
|
77
|
+
│ syncs from │ syncs from
|
|
78
|
+
│ │
|
|
79
|
+
┌──────────┴──────────────┐ ┌───────────┴────────────┐
|
|
80
|
+
│ github.com/lenneTech/ │ │ github.com/lenneTech/ │
|
|
81
|
+
│ nest-server │ │ nuxt-extensions │
|
|
82
|
+
│ nest-server-starter │ │ nuxt-base-starter │
|
|
83
|
+
└─────────────────────────┘ └────────────────────────┘
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## lt CLI — Features
|
|
89
|
+
|
|
90
|
+
### Project Scaffolding
|
|
91
|
+
|
|
92
|
+
| Command | Purpose |
|
|
93
|
+
|---------|---------|
|
|
94
|
+
| `lt fullstack init` | Create a new monorepo with API + frontend. Supports npm and vendor mode for both sides |
|
|
95
|
+
| `lt frontend nuxt` | Standalone Nuxt 4 project from `nuxt-base-starter` |
|
|
96
|
+
| `lt frontend angular` | Standalone Angular project from `ng-base-starter` |
|
|
97
|
+
| `lt server create` | Standalone NestJS project from `nest-server-starter` |
|
|
98
|
+
| `lt starter chrome-extension` | Chrome extension starter |
|
|
99
|
+
| `lt cli create` | New CLI project via Gluegun |
|
|
100
|
+
| `lt typescript create` | TypeScript library starter |
|
|
101
|
+
|
|
102
|
+
**Fullstack init with vendor modes:**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
lt fullstack init \
|
|
106
|
+
--name my-project \
|
|
107
|
+
--frontend nuxt \
|
|
108
|
+
--api-mode Rest \
|
|
109
|
+
--framework-mode vendor \
|
|
110
|
+
--frontend-framework-mode vendor \
|
|
111
|
+
--framework-upstream-branch 11.24.3 \
|
|
112
|
+
--noConfirm
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Flags:
|
|
116
|
+
- `--framework-mode npm|vendor` — Backend mode
|
|
117
|
+
- `--frontend-framework-mode npm|vendor` — Frontend mode
|
|
118
|
+
- `--framework-upstream-branch <tag>` — Specific nest-server version for vendor
|
|
119
|
+
- `--dry-run` — Show plan without making changes
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### Server Development
|
|
124
|
+
|
|
125
|
+
| Command | Purpose |
|
|
126
|
+
|---------|---------|
|
|
127
|
+
| `lt server module` | Generate a NestJS module (model, service, controller, resolver, tests) |
|
|
128
|
+
| `lt server object` | Generate an input/output type |
|
|
129
|
+
| `lt server add-property` | Add a property to an existing module |
|
|
130
|
+
| `lt server test` | Generate E2E tests for a module |
|
|
131
|
+
| `lt server permissions` | Analyze all `@Roles`/`@Restricted` decorators, generate report (md/json/html) |
|
|
132
|
+
| `lt server create-secret` | Generate secure secrets for `.env` |
|
|
133
|
+
| `lt server set-secrets` | Set secrets in the project |
|
|
134
|
+
| **`lt server convert-mode`** | **Convert backend between npm and vendor mode** |
|
|
135
|
+
|
|
136
|
+
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`.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### Frontend Development
|
|
141
|
+
|
|
142
|
+
| Command | Purpose |
|
|
143
|
+
|---------|---------|
|
|
144
|
+
| `lt frontend nuxt` | Create Nuxt project from starter |
|
|
145
|
+
| `lt frontend angular` | Create Angular project from starter |
|
|
146
|
+
| **`lt frontend convert-mode`** | **Convert frontend between npm and vendor mode** |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### Fullstack Workflows
|
|
151
|
+
|
|
152
|
+
| Command | Purpose |
|
|
153
|
+
|---------|---------|
|
|
154
|
+
| `lt fullstack init` | Create fullstack monorepo (see above) |
|
|
155
|
+
| `lt fullstack update` | Show mode-specific update instructions for backend AND frontend |
|
|
156
|
+
| **`lt fullstack convert-mode`** | **Convert backend AND frontend between npm and vendor mode in a single command** |
|
|
157
|
+
|
|
158
|
+
**Fullstack mode conversion in one command:**
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Both subprojects to vendor mode
|
|
162
|
+
lt fullstack convert-mode --to vendor --noConfirm
|
|
163
|
+
|
|
164
|
+
# With specific upstream versions
|
|
165
|
+
lt fullstack convert-mode --to vendor \
|
|
166
|
+
--framework-upstream-branch 11.24.3 \
|
|
167
|
+
--frontend-framework-upstream-branch 1.5.3 \
|
|
168
|
+
--noConfirm
|
|
169
|
+
|
|
170
|
+
# Both back to npm
|
|
171
|
+
lt fullstack convert-mode --to npm --noConfirm
|
|
172
|
+
|
|
173
|
+
# Only convert backend
|
|
174
|
+
lt fullstack convert-mode --to vendor --skip-frontend --noConfirm
|
|
175
|
+
|
|
176
|
+
# Only convert frontend
|
|
177
|
+
lt fullstack convert-mode --to vendor --skip-backend --noConfirm
|
|
178
|
+
|
|
179
|
+
# Dry-run (plan without changes)
|
|
180
|
+
lt fullstack convert-mode --to vendor --dry-run
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
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.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### Vendor-Mode Conversion
|
|
188
|
+
|
|
189
|
+
**Backend**: `lt server convert-mode`
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# npm → vendor
|
|
193
|
+
cd projects/api
|
|
194
|
+
lt server convert-mode --to vendor --upstream-branch 11.24.3 --noConfirm
|
|
195
|
+
|
|
196
|
+
# vendor → npm
|
|
197
|
+
lt server convert-mode --to npm --version 11.24.3 --noConfirm
|
|
198
|
+
|
|
199
|
+
# Dry-run (plan without changes)
|
|
200
|
+
lt server convert-mode --to vendor --dry-run
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Frontend**: `lt frontend convert-mode`
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# npm → vendor
|
|
207
|
+
cd projects/app
|
|
208
|
+
lt frontend convert-mode --to vendor --upstream-branch 1.5.3 --noConfirm
|
|
209
|
+
|
|
210
|
+
# vendor → npm
|
|
211
|
+
lt frontend convert-mode --to npm --version 1.5.3 --noConfirm
|
|
212
|
+
|
|
213
|
+
# Dry-run
|
|
214
|
+
lt frontend convert-mode --to vendor --dry-run
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Both commands clone the respective upstream repo into `/tmp/`, perform the code transformation, and clean up at the end. **No local paths** are required.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
### Status & Diagnostics
|
|
222
|
+
|
|
223
|
+
| Command | Purpose |
|
|
224
|
+
|---------|---------|
|
|
225
|
+
| `lt status` | Shows project type, framework mode (backend + frontend), config, git branch, versions. At the monorepo root, both subprojects are automatically scanned |
|
|
226
|
+
| `lt doctor` | Checks environment, versions, dependencies |
|
|
227
|
+
| `lt history` | Shows CLI command history |
|
|
228
|
+
|
|
229
|
+
**Example at the monorepo root:**
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
Monorepo Subprojects:
|
|
233
|
+
Backend: projects/api → vendor (src/core/, VENDOR.md)
|
|
234
|
+
Frontend: projects/app → vendor (app/core/, VENDOR.md)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
### Additional Tools
|
|
240
|
+
|
|
241
|
+
| Area | Commands |
|
|
242
|
+
|------|----------|
|
|
243
|
+
| **Config** | `lt config init`, `lt config validate`, `lt config show`, `lt config help` |
|
|
244
|
+
| **Git** | `lt git create`, `git get`, `git update`, `git clean`, `git squash`, `git rebase`, `git rename`, `git reset`, `git undo`, `git clear`, `git force-pull` |
|
|
245
|
+
| **NPM** | `lt npm reinit` |
|
|
246
|
+
| **MongoDB** | `lt mongodb collection-export`, `mongodb s3-restore` |
|
|
247
|
+
| **Qdrant** | `lt qdrant stats`, `qdrant delete` |
|
|
248
|
+
| **Directus** | `lt directus docker-setup`, `directus typegen`, `directus remove` |
|
|
249
|
+
| **Deployment** | `lt deployment create` (GitHub/GitLab pipelines) |
|
|
250
|
+
| **Blocks/Components** | `lt blocks add`, `lt components add` |
|
|
251
|
+
| **Tools** | `lt tools regex`, `tools sha256`, `tools jwt-read`, `tools crypt`, `tools install-scripts` |
|
|
252
|
+
| **Docs** | `lt docs open` |
|
|
253
|
+
| **Claude** | `lt claude shortcuts`, `lt claude plugins` |
|
|
254
|
+
| **Templates** | `lt templates llm` |
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## lt-dev Plugin — Features
|
|
259
|
+
|
|
260
|
+
The `lt-dev` Claude Code plugin provides **Commands** (user-invocable), **Agents** (autonomous execution), and **Skills** (knowledge bases).
|
|
261
|
+
|
|
262
|
+
### Commands
|
|
263
|
+
|
|
264
|
+
#### Backend
|
|
265
|
+
|
|
266
|
+
| Command | Purpose |
|
|
267
|
+
|---------|---------|
|
|
268
|
+
| `/lt-dev:backend:update-nest-server` | Update `@lenne.tech/nest-server` in npm mode with migration guides |
|
|
269
|
+
| `/lt-dev:backend:update-nest-server-core` | Sync vendored `src/core/` with upstream (vendor mode) |
|
|
270
|
+
| `/lt-dev:backend:convert-to-vendor` | Convert existing project from npm → vendor (incl. migration guides) |
|
|
271
|
+
| `/lt-dev:backend:convert-to-npm` | Convert vendored project back to npm |
|
|
272
|
+
| `/lt-dev:backend:contribute-nest-server-core` | Prepare local patches as upstream PR for nest-server |
|
|
273
|
+
| `/lt-dev:backend:sec-audit` | Security audit of backend code |
|
|
274
|
+
| `/lt-dev:backend:sec-review` | Security review of a specific code area |
|
|
275
|
+
| `/lt-dev:backend:test-generate` | Generate E2E tests |
|
|
276
|
+
| `/lt-dev:backend:code-cleanup` | Clean up code (imports, formatting) |
|
|
277
|
+
|
|
278
|
+
#### Frontend
|
|
279
|
+
|
|
280
|
+
| Command | Purpose |
|
|
281
|
+
|---------|---------|
|
|
282
|
+
| `/lt-dev:frontend:update-nuxt-extensions-core` | Sync vendored `app/core/` with upstream |
|
|
283
|
+
| `/lt-dev:frontend:convert-to-vendor` | Convert frontend project from npm → vendor |
|
|
284
|
+
| `/lt-dev:frontend:convert-to-npm` | Convert vendored frontend back to npm |
|
|
285
|
+
| `/lt-dev:frontend:contribute-nuxt-extensions-core` | Prepare local patches as upstream PR for nuxt-extensions |
|
|
286
|
+
| `/lt-dev:frontend:figma-init` | Initialize Figma Code Connect setup |
|
|
287
|
+
| `/lt-dev:frontend:figma-research` | Analyze Figma designs for implementation |
|
|
288
|
+
| `/lt-dev:frontend:figma-to-code` | Translate Figma design into Vue/Nuxt code |
|
|
289
|
+
| `/lt-dev:frontend:env-migrate` | Migrate `.env` from old standards |
|
|
290
|
+
| `/lt-dev:frontend:init-conventions` | Initialize frontend conventions |
|
|
291
|
+
|
|
292
|
+
#### Fullstack
|
|
293
|
+
|
|
294
|
+
| Command | Purpose |
|
|
295
|
+
|---------|---------|
|
|
296
|
+
| **`/lt-dev:fullstack:update-all`** | **Comprehensive update**: backend + frontend (mode-aware) + package maintenance + CLAUDE.md sync + validation |
|
|
297
|
+
| `/lt-dev:fullstack:update` | Simple backend + frontend update (legacy, less comprehensive) |
|
|
298
|
+
| `/lt-dev:fullstack:sync-claude-md` | Sync `CLAUDE.md` from upstream starter templates |
|
|
299
|
+
|
|
300
|
+
#### Maintenance
|
|
301
|
+
|
|
302
|
+
| Command | Purpose |
|
|
303
|
+
|---------|---------|
|
|
304
|
+
| `/lt-dev:maintenance:maintain` | FULL MODE: package update + audit + security + deduplication |
|
|
305
|
+
| `/lt-dev:maintenance:maintain-check` | DRY-RUN: analysis without changes |
|
|
306
|
+
| `/lt-dev:maintenance:maintain-security` | Security patches only |
|
|
307
|
+
| `/lt-dev:maintenance:maintain-pre-release` | Conservative patch-only before release |
|
|
308
|
+
| `/lt-dev:maintenance:maintain-post-feature` | Post-feature cleanup |
|
|
309
|
+
|
|
310
|
+
#### Git
|
|
311
|
+
|
|
312
|
+
| Command | Purpose |
|
|
313
|
+
|---------|---------|
|
|
314
|
+
| `/lt-dev:git:commit-message` | Generate conventional commit message from staging |
|
|
315
|
+
| `/lt-dev:git:create-request` | Create merge request with descriptive body |
|
|
316
|
+
| `/lt-dev:git:mr-description` | Generate MR description from commits |
|
|
317
|
+
| `/lt-dev:git:mr-description-clipboard` | Same, copied to clipboard |
|
|
318
|
+
| `/lt-dev:git:rebase` | Rebase onto development branch with conflict resolution |
|
|
319
|
+
| `/lt-dev:git:rebase-mrs` | Rebase multiple MRs sequentially |
|
|
320
|
+
|
|
321
|
+
#### Docker
|
|
322
|
+
|
|
323
|
+
| Command | Purpose |
|
|
324
|
+
|---------|---------|
|
|
325
|
+
| `/lt-dev:docker:gen-setup` | Generate Docker configuration (Dockerfile + compose + .env) |
|
|
326
|
+
|
|
327
|
+
#### Plugin
|
|
328
|
+
|
|
329
|
+
| Command | Purpose |
|
|
330
|
+
|---------|---------|
|
|
331
|
+
| `/lt-dev:plugin:check` | Validate the plugin setup after context loss |
|
|
332
|
+
| `/lt-dev:plugin:element` | Interactive creation of new plugin elements |
|
|
333
|
+
|
|
334
|
+
#### Vibe (Spec-Driven Development)
|
|
335
|
+
|
|
336
|
+
| Command | Purpose |
|
|
337
|
+
|---------|---------|
|
|
338
|
+
| `/lt-dev:vibe:plan` | Create implementation plan from requirement |
|
|
339
|
+
| `/lt-dev:vibe:build` | Implement according to plan |
|
|
340
|
+
| `/lt-dev:vibe:build-plan` | Plan + build in one flow |
|
|
341
|
+
|
|
342
|
+
#### Standalone
|
|
343
|
+
|
|
344
|
+
| Command | Purpose |
|
|
345
|
+
|---------|---------|
|
|
346
|
+
| `/lt-dev:debug` | Structured debugging session |
|
|
347
|
+
| `/lt-dev:review` | Code review with multiple reviewer perspectives |
|
|
348
|
+
| `/lt-dev:refactor-frontend` | Frontend refactoring helper |
|
|
349
|
+
| `/lt-dev:resolve-ticket` | Implement Linear ticket |
|
|
350
|
+
| `/lt-dev:create-ticket` | Create Linear ticket |
|
|
351
|
+
| `/lt-dev:create-story` | Create user story (German) |
|
|
352
|
+
| `/lt-dev:create-task` | Create Linear task |
|
|
353
|
+
| `/lt-dev:create-bug` | Create Linear bug |
|
|
354
|
+
| `/lt-dev:linear-comment` | Create Linear comment |
|
|
355
|
+
| `/lt-dev:dev-submit` | Dev-submit workflow (commit + push + MR) |
|
|
356
|
+
| `/lt-dev:interview` | Structured interview for requirements |
|
|
357
|
+
| `/lt-dev:skill-optimize` | Optimize a plugin skill |
|
|
358
|
+
| `/lt-dev:spec-to-tasks` | Spec → task list |
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
### Autonomous Agents
|
|
363
|
+
|
|
364
|
+
Autonomous agents perform multi-step tasks without interaction. They are spawned via commands or the Agent tool.
|
|
365
|
+
|
|
366
|
+
#### Vendor-Mode Agents
|
|
367
|
+
|
|
368
|
+
| Agent | Purpose | Spawned by |
|
|
369
|
+
|-------|---------|------------|
|
|
370
|
+
| `vendor-mode-converter` | Backend npm → vendor conversion incl. migration guides | `/lt-dev:backend:convert-to-vendor` |
|
|
371
|
+
| `vendor-mode-converter-frontend` | Frontend npm → vendor conversion incl. changelog | `/lt-dev:frontend:convert-to-vendor` |
|
|
372
|
+
| `nest-server-core-updater` | Upstream sync for vendored nest-server core | `/lt-dev:backend:update-nest-server-core` |
|
|
373
|
+
| `nuxt-extensions-core-updater` | Upstream sync for vendored nuxt-extensions core | `/lt-dev:frontend:update-nuxt-extensions-core` |
|
|
374
|
+
| `nest-server-core-contributor` | Upstream PR drafts from local backend patches | `/lt-dev:backend:contribute-nest-server-core` |
|
|
375
|
+
| `nuxt-extensions-core-contributor` | Upstream PR drafts from local frontend patches | `/lt-dev:frontend:contribute-nuxt-extensions-core` |
|
|
376
|
+
|
|
377
|
+
#### Update Agents
|
|
378
|
+
|
|
379
|
+
| Agent | Purpose |
|
|
380
|
+
|-------|---------|
|
|
381
|
+
| `nest-server-updater` | npm-mode update of nest-server incl. migration guides |
|
|
382
|
+
| `fullstack-updater` | Coordinated backend + frontend update (legacy) |
|
|
383
|
+
| `npm-package-maintainer` | Package optimization (5 modes) |
|
|
384
|
+
| `branch-rebaser` | Rebase automation with conflict resolution |
|
|
385
|
+
|
|
386
|
+
#### Development Agents
|
|
387
|
+
|
|
388
|
+
| Agent | Purpose |
|
|
389
|
+
|-------|---------|
|
|
390
|
+
| `backend-dev` | Autonomous NestJS development |
|
|
391
|
+
| `frontend-dev` | Autonomous Nuxt 4 development |
|
|
392
|
+
| `architect` | Architecture planning with stack enforcement |
|
|
393
|
+
| `devops` | Docker, CI/CD, environment |
|
|
394
|
+
|
|
395
|
+
#### Reviewer Agents
|
|
396
|
+
|
|
397
|
+
| Agent | Purpose |
|
|
398
|
+
|-------|---------|
|
|
399
|
+
| `code-reviewer` | 6-dimension code review |
|
|
400
|
+
| `backend-reviewer` | NestJS-specific |
|
|
401
|
+
| `frontend-reviewer` | Vue/Nuxt-specific |
|
|
402
|
+
| `security-reviewer` | OWASP-aligned |
|
|
403
|
+
| `a11y-reviewer` | Accessibility + Lighthouse |
|
|
404
|
+
| `ux-reviewer` | UX patterns |
|
|
405
|
+
| `performance-reviewer` | Bundle, queries, caching |
|
|
406
|
+
| `devops-reviewer` | Docker, CI/CD security |
|
|
407
|
+
| `docs-reviewer` | README, JSDoc, migration guides |
|
|
408
|
+
| `test-reviewer` | Test coverage + quality |
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
### Skills (Knowledge Base)
|
|
413
|
+
|
|
414
|
+
Skills contain structured knowledge and are automatically activated on matching queries.
|
|
415
|
+
|
|
416
|
+
| Skill | Purpose |
|
|
417
|
+
|-------|---------|
|
|
418
|
+
| **`nest-server-core-vendoring`** | Backend vendoring pattern, flatten-fix, sync workflows |
|
|
419
|
+
| **`nuxt-extensions-core-vendoring`** | Frontend vendoring pattern, nuxt.config rewrite, sync |
|
|
420
|
+
| `nest-server-updating` | npm-mode update processes, migration guides, error patterns |
|
|
421
|
+
| `generating-nest-servers` | Generate NestJS modules/services/controllers |
|
|
422
|
+
| `developing-lt-frontend` | Nuxt 4 development, composables, forms, auth |
|
|
423
|
+
| `maintaining-npm-packages` | Dependency optimization (5 modes) |
|
|
424
|
+
| `using-lt-cli` | lt CLI reference, conventions |
|
|
425
|
+
| `developing-claude-plugins` | Plugin development (skills, commands, agents) |
|
|
426
|
+
| `coordinating-agent-teams` | Agent team coordination, parallelism |
|
|
427
|
+
| `building-stories-with-tdd` | TDD workflow for user stories |
|
|
428
|
+
| `rebasing-branches` | Rebase strategies with conflict resolution |
|
|
429
|
+
| `general-frontend-security` | OWASP frontend security |
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Vendor-Mode Processes
|
|
434
|
+
|
|
435
|
+
### 1. Create a new project in vendor mode
|
|
436
|
+
|
|
437
|
+
```
|
|
438
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
439
|
+
│ DEVELOPER │
|
|
440
|
+
│ │
|
|
441
|
+
│ lt fullstack init │
|
|
442
|
+
│ --name my-project │
|
|
443
|
+
│ --frontend nuxt │
|
|
444
|
+
│ --api-mode Rest │
|
|
445
|
+
│ --framework-mode vendor ← Backend vendored │
|
|
446
|
+
│ --frontend-framework-mode vendor ← Frontend vendored │
|
|
447
|
+
│ --framework-upstream-branch 11.24.3 │
|
|
448
|
+
│ --noConfirm │
|
|
449
|
+
│ │
|
|
450
|
+
└───────────────────────┬────────────────────────────────────────┘
|
|
451
|
+
│
|
|
452
|
+
▼
|
|
453
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
454
|
+
│ lt CLI performs: │
|
|
455
|
+
│ │
|
|
456
|
+
│ 1. git clone lt-monorepo │
|
|
457
|
+
│ 2. setup frontend (nuxt-base-starter) │
|
|
458
|
+
│ 3. setup backend (nest-server-starter) │
|
|
459
|
+
│ 4. convertCloneToVendored (backend): │
|
|
460
|
+
│ - clone nest-server 11.24.3 → /tmp │
|
|
461
|
+
│ - copy src/core/, index.ts, core.module.ts, etc. │
|
|
462
|
+
│ - apply flatten-fix (4 edge cases) │
|
|
463
|
+
│ - rewrite consumer imports (@lenne.tech/nest-server → ../) │
|
|
464
|
+
│ - merge upstream deps dynamically │
|
|
465
|
+
│ - apply express type-imports fix │
|
|
466
|
+
│ - create src/core/VENDOR.md │
|
|
467
|
+
│ - prepend vendor notice to CLAUDE.md │
|
|
468
|
+
│ 5. convertAppCloneToVendored (frontend): │
|
|
469
|
+
│ - clone nuxt-extensions 1.5.3 → /tmp │
|
|
470
|
+
│ - copy src/module.ts + src/runtime/ │
|
|
471
|
+
│ - rewrite nuxt.config.ts modules[] entry │
|
|
472
|
+
│ - rewrite consumer imports (4 files) │
|
|
473
|
+
│ - remove @lenne.tech/nuxt-extensions dep │
|
|
474
|
+
│ - create app/core/VENDOR.md │
|
|
475
|
+
│ - prepend vendor notice to CLAUDE.md │
|
|
476
|
+
│ 6. pnpm install (monorepo) │
|
|
477
|
+
│ 7. git init + initial commit │
|
|
478
|
+
│ │
|
|
479
|
+
└────────────────────────────────────────────────────────────────┘
|
|
480
|
+
│
|
|
481
|
+
▼
|
|
482
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
483
|
+
│ PROJECT READY │
|
|
484
|
+
│ │
|
|
485
|
+
│ my-project/ │
|
|
486
|
+
│ ├── projects/ │
|
|
487
|
+
│ │ ├── api/ │
|
|
488
|
+
│ │ │ ├── src/ │
|
|
489
|
+
│ │ │ │ ├── core/ ← Vendored nest-server │
|
|
490
|
+
│ │ │ │ │ └── VENDOR.md │
|
|
491
|
+
│ │ │ │ ├── server/ ← Project code │
|
|
492
|
+
│ │ │ │ └── main.ts │
|
|
493
|
+
│ │ │ ├── bin/migrate.js │
|
|
494
|
+
│ │ │ └── package.json (no @lenne.tech/nest-server) │
|
|
495
|
+
│ │ └── app/ │
|
|
496
|
+
│ │ ├── app/ │
|
|
497
|
+
│ │ │ ├── core/ ← Vendored nuxt-extensions │
|
|
498
|
+
│ │ │ │ ├── module.ts │
|
|
499
|
+
│ │ │ │ ├── runtime/ │
|
|
500
|
+
│ │ │ │ └── VENDOR.md │
|
|
501
|
+
│ │ │ └── ... │
|
|
502
|
+
│ │ ├── nuxt.config.ts (modules: ['./app/core/module']) │
|
|
503
|
+
│ │ └── package.json (no @lenne.tech/nuxt-extensions) │
|
|
504
|
+
│ └── CLAUDE.md │
|
|
505
|
+
└────────────────────────────────────────────────────────────────┘
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
**Alternative**: Only backend OR only frontend vendored. Omit the respective flag:
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
# Only backend vendored, frontend stays npm
|
|
512
|
+
lt fullstack init --name my-project --frontend nuxt --api-mode Rest \
|
|
513
|
+
--framework-mode vendor --framework-upstream-branch 11.24.3 --noConfirm
|
|
514
|
+
|
|
515
|
+
# Only frontend vendored, backend stays npm
|
|
516
|
+
lt fullstack init --name my-project --frontend nuxt --api-mode Rest \
|
|
517
|
+
--frontend-framework-mode vendor --noConfirm
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
### 2. Backend: convert npm → vendor
|
|
523
|
+
|
|
524
|
+
**Starting point**: Existing project in npm mode (`@lenne.tech/nest-server` in `package.json`).
|
|
525
|
+
|
|
526
|
+
```
|
|
527
|
+
┌──────────────────────────────────────────────────────────┐
|
|
528
|
+
│ DEVELOPER in projects/api/ │
|
|
529
|
+
│ │
|
|
530
|
+
│ Option A — Via Claude Code (with migration guides): │
|
|
531
|
+
│ /lt-dev:backend:convert-to-vendor │
|
|
532
|
+
│ │
|
|
533
|
+
│ Option B — Directly via CLI (no migration guides): │
|
|
534
|
+
│ lt server convert-mode --to vendor │
|
|
535
|
+
│ │
|
|
536
|
+
│ Option C — Dry-run (plan without changes): │
|
|
537
|
+
│ lt server convert-mode --to vendor --dry-run │
|
|
538
|
+
└─────────────┬────────────────────────────────────────────┘
|
|
539
|
+
│
|
|
540
|
+
▼ Option A uses agent
|
|
541
|
+
┌──────────────────────────────────────────────────────────┐
|
|
542
|
+
│ vendor-mode-converter agent │
|
|
543
|
+
│ │
|
|
544
|
+
│ Phase 0: Prerequisites │
|
|
545
|
+
│ - Verify npm mode │
|
|
546
|
+
│ - Verify NOT already vendored │
|
|
547
|
+
│ - Verify lt CLI available │
|
|
548
|
+
│ │
|
|
549
|
+
│ Phase 1: Version detection │
|
|
550
|
+
│ - SOURCE = current @lenne.tech/nest-server version │
|
|
551
|
+
│ - TARGET = latest (or specified) │
|
|
552
|
+
│ - Calculate version gap │
|
|
553
|
+
│ │
|
|
554
|
+
│ Phase 2: Migration-guide discovery │
|
|
555
|
+
│ - gh api lenneTech/nest-server/contents/migration- │
|
|
556
|
+
│ guides │
|
|
557
|
+
│ - Filter by from-version >= SOURCE, < TARGET │
|
|
558
|
+
│ - Build ordered migration plan │
|
|
559
|
+
│ │
|
|
560
|
+
│ Phase 3: CLI conversion │
|
|
561
|
+
│ - lt server convert-mode --to vendor │
|
|
562
|
+
│ --upstream-branch <TARGET> │
|
|
563
|
+
│ - Applies all transformations: │
|
|
564
|
+
│ • clone nest-server │
|
|
565
|
+
│ • copy + flatten-fix │
|
|
566
|
+
│ • rewrite imports │
|
|
567
|
+
│ • merge deps │
|
|
568
|
+
│ • express type-imports fix │
|
|
569
|
+
│ • VENDOR.md │
|
|
570
|
+
│ │
|
|
571
|
+
│ Phase 4: Migration application │
|
|
572
|
+
│ - Apply each migration guide in version order │
|
|
573
|
+
│ - Translate @lenne.tech/nest-server refs to relative │
|
|
574
|
+
│ paths │
|
|
575
|
+
│ │
|
|
576
|
+
│ Phase 5: Validation loop │
|
|
577
|
+
│ - tsc --noEmit │
|
|
578
|
+
│ - pnpm lint │
|
|
579
|
+
│ - pnpm test │
|
|
580
|
+
│ - Fix until green │
|
|
581
|
+
│ │
|
|
582
|
+
│ Phase 6: Report │
|
|
583
|
+
└──────────────────────────────────────────────────────────┘
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
### 3. Frontend: convert npm → vendor
|
|
589
|
+
|
|
590
|
+
**Starting point**: Existing Nuxt project in npm mode.
|
|
591
|
+
|
|
592
|
+
```
|
|
593
|
+
┌──────────────────────────────────────────────────────────┐
|
|
594
|
+
│ DEVELOPER in projects/app/ │
|
|
595
|
+
│ │
|
|
596
|
+
│ Option A — Via Claude Code (with changelog): │
|
|
597
|
+
│ /lt-dev:frontend:convert-to-vendor │
|
|
598
|
+
│ │
|
|
599
|
+
│ Option B — Directly via CLI: │
|
|
600
|
+
│ lt frontend convert-mode --to vendor │
|
|
601
|
+
│ │
|
|
602
|
+
│ Option C — Dry-run: │
|
|
603
|
+
│ lt frontend convert-mode --to vendor --dry-run │
|
|
604
|
+
└─────────────┬────────────────────────────────────────────┘
|
|
605
|
+
│
|
|
606
|
+
▼
|
|
607
|
+
┌──────────────────────────────────────────────────────────┐
|
|
608
|
+
│ vendor-mode-converter-frontend agent (Option A) │
|
|
609
|
+
│ │
|
|
610
|
+
│ Phase 0: Prerequisites │
|
|
611
|
+
│ Phase 1: Version detection │
|
|
612
|
+
│ - SOURCE = current @lenne.tech/nuxt-extensions │
|
|
613
|
+
│ - TARGET = latest │
|
|
614
|
+
│ │
|
|
615
|
+
│ Phase 2: Changelog discovery │
|
|
616
|
+
│ - Fetch CHANGELOG.md from nuxt-extensions repo │
|
|
617
|
+
│ - Fetch GitHub releases for version gap │
|
|
618
|
+
│ │
|
|
619
|
+
│ Phase 3: CLI conversion │
|
|
620
|
+
│ - lt frontend convert-mode --to vendor │
|
|
621
|
+
│ --upstream-branch <TARGET> │
|
|
622
|
+
│ - Transformations: │
|
|
623
|
+
│ • clone nuxt-extensions │
|
|
624
|
+
│ • copy src/module.ts + src/runtime/ │
|
|
625
|
+
│ • rewrite nuxt.config.ts │
|
|
626
|
+
│ • rewrite 4 explicit consumer imports │
|
|
627
|
+
│ • remove @lenne.tech/nuxt-extensions dep │
|
|
628
|
+
│ • VENDOR.md │
|
|
629
|
+
│ │
|
|
630
|
+
│ Phase 4: Changelog application │
|
|
631
|
+
│ - Apply breaking changes from changelog │
|
|
632
|
+
│ │
|
|
633
|
+
│ Phase 5: Validation │
|
|
634
|
+
│ - nuxt build │
|
|
635
|
+
│ - pnpm lint │
|
|
636
|
+
│ │
|
|
637
|
+
│ Phase 6: Report │
|
|
638
|
+
└──────────────────────────────────────────────────────────┘
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
---
|
|
642
|
+
|
|
643
|
+
### 4. Backend: vendor → npm rollback
|
|
644
|
+
|
|
645
|
+
**Starting point**: Project in vendor mode (`src/core/VENDOR.md` exists).
|
|
646
|
+
|
|
647
|
+
```
|
|
648
|
+
┌──────────────────────────────────────────────────────────┐
|
|
649
|
+
│ DEVELOPER in projects/api/ │
|
|
650
|
+
│ │
|
|
651
|
+
│ Option A — Via Claude Code: │
|
|
652
|
+
│ /lt-dev:backend:convert-to-npm │
|
|
653
|
+
│ │
|
|
654
|
+
│ Option B — Directly via CLI: │
|
|
655
|
+
│ lt server convert-mode --to npm │
|
|
656
|
+
│ │
|
|
657
|
+
│ With specific version: │
|
|
658
|
+
│ lt server convert-mode --to npm --version 11.24.3 │
|
|
659
|
+
└─────────────┬────────────────────────────────────────────┘
|
|
660
|
+
│
|
|
661
|
+
▼
|
|
662
|
+
┌──────────────────────────────────────────────────────────┐
|
|
663
|
+
│ lt CLI performs: │
|
|
664
|
+
│ │
|
|
665
|
+
│ 1. Read baseline version from src/core/VENDOR.md │
|
|
666
|
+
│ 2. Warn if local patches exist in VENDOR.md │
|
|
667
|
+
│ → Hint: /lt-dev:backend:contribute-nest-server-core │
|
|
668
|
+
│ should be run FIRST to upstream them │
|
|
669
|
+
│ 3. Rewrite consumer imports: │
|
|
670
|
+
│ relative paths → @lenne.tech/nest-server │
|
|
671
|
+
│ 4. Delete src/core/ │
|
|
672
|
+
│ 5. Restore @lenne.tech/nest-server dep │
|
|
673
|
+
│ 6. Restore migrate:* scripts to node_modules paths │
|
|
674
|
+
│ 7. Remove vendor artifacts: │
|
|
675
|
+
│ - bin/migrate.js │
|
|
676
|
+
│ - migrations-utils/ts-compiler.js │
|
|
677
|
+
│ - migration-guides/ │
|
|
678
|
+
│ 8. Remove CLAUDE.md vendor marker block │
|
|
679
|
+
│ 9. Post-verification: scan for stale relative imports │
|
|
680
|
+
└──────────────────────────────────────────────────────────┘
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
**⚠️ Warning before rollback:**
|
|
684
|
+
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.
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
### 5. Frontend: vendor → npm rollback
|
|
689
|
+
|
|
690
|
+
```
|
|
691
|
+
┌──────────────────────────────────────────────────────────┐
|
|
692
|
+
│ DEVELOPER in projects/app/ │
|
|
693
|
+
│ │
|
|
694
|
+
│ Option A — Via Claude Code: │
|
|
695
|
+
│ /lt-dev:frontend:convert-to-npm │
|
|
696
|
+
│ │
|
|
697
|
+
│ Option B — Directly via CLI: │
|
|
698
|
+
│ lt frontend convert-mode --to npm │
|
|
699
|
+
│ │
|
|
700
|
+
│ With specific version: │
|
|
701
|
+
│ lt frontend convert-mode --to npm --version 1.5.3 │
|
|
702
|
+
└─────────────┬────────────────────────────────────────────┘
|
|
703
|
+
│
|
|
704
|
+
▼
|
|
705
|
+
┌──────────────────────────────────────────────────────────┐
|
|
706
|
+
│ lt CLI performs: │
|
|
707
|
+
│ │
|
|
708
|
+
│ 1. Read baseline version from app/core/VENDOR.md │
|
|
709
|
+
│ 2. Warn if local patches exist in VENDOR.md │
|
|
710
|
+
│ 3. Rewrite consumer imports: │
|
|
711
|
+
│ relative paths → @lenne.tech/nuxt-extensions │
|
|
712
|
+
│ 4. Delete app/core/ │
|
|
713
|
+
│ 5. Restore @lenne.tech/nuxt-extensions dep │
|
|
714
|
+
│ 6. Rewrite nuxt.config.ts: │
|
|
715
|
+
│ './app/core/module' → '@lenne.tech/nuxt-extensions' │
|
|
716
|
+
│ 7. Remove vendor-freshness script │
|
|
717
|
+
│ 8. Remove CLAUDE.md vendor marker block │
|
|
718
|
+
│ 9. Post-verification │
|
|
719
|
+
└──────────────────────────────────────────────────────────┘
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
---
|
|
723
|
+
|
|
724
|
+
### 6. Update workflows
|
|
725
|
+
|
|
726
|
+
The **recommended** path for all updates is `/lt-dev:fullstack:update-all`. It is mode-aware and orchestrates the appropriate agents automatically.
|
|
727
|
+
|
|
728
|
+
```
|
|
729
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
730
|
+
│ /lt-dev:fullstack:update-all │
|
|
731
|
+
│ │
|
|
732
|
+
│ Phase 1: Detect project structure + framework modes │
|
|
733
|
+
│ Backend: test -f <api>/src/core/VENDOR.md → vendor | npm │
|
|
734
|
+
│ Frontend: test -f <app>/app/core/VENDOR.md → vendor | npm │
|
|
735
|
+
│ │
|
|
736
|
+
│ Phase 2: Version analysis + UPDATE_PLAN.md + user approval │
|
|
737
|
+
│ │
|
|
738
|
+
│ Phase 3: Backend framework update │
|
|
739
|
+
│ IF npm: spawn lt-dev:nest-server-updater │
|
|
740
|
+
│ IF vendor: spawn lt-dev:nest-server-core-updater │
|
|
741
|
+
│ │
|
|
742
|
+
│ Phase 4: Frontend framework update │
|
|
743
|
+
│ IF npm: spawn lt-dev:fullstack-updater --skip-backend │
|
|
744
|
+
│ IF vendor: spawn lt-dev:nuxt-extensions-core-updater │
|
|
745
|
+
│ │
|
|
746
|
+
│ Phase 5: Package maintenance │
|
|
747
|
+
│ → spawn lt-dev:npm-package-maintainer (FULL MODE) │
|
|
748
|
+
│ (for backend AND frontend package.json) │
|
|
749
|
+
│ │
|
|
750
|
+
│ Phase 6: CLAUDE.md sync from upstream starters │
|
|
751
|
+
│ │
|
|
752
|
+
│ Phase 7: Cross-validation (build + lint + tests) │
|
|
753
|
+
│ │
|
|
754
|
+
│ Phase 8: Final report │
|
|
755
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
**All 4 mode combinations are supported:**
|
|
759
|
+
|
|
760
|
+
| Backend | Frontend | Backend Agent | Frontend Agent |
|
|
761
|
+
|---------|----------|---------------|----------------|
|
|
762
|
+
| npm | npm | `nest-server-updater` | `fullstack-updater --skip-backend` |
|
|
763
|
+
| npm | vendor | `nest-server-updater` | `nuxt-extensions-core-updater` |
|
|
764
|
+
| vendor | npm | `nest-server-core-updater` | `fullstack-updater --skip-backend` |
|
|
765
|
+
| vendor | vendor | `nest-server-core-updater` | `nuxt-extensions-core-updater` |
|
|
766
|
+
|
|
767
|
+
**Skip flags:**
|
|
768
|
+
|
|
769
|
+
```bash
|
|
770
|
+
/lt-dev:fullstack:update-all --dry-run # Plan only
|
|
771
|
+
/lt-dev:fullstack:update-all --skip-backend # Frontend only
|
|
772
|
+
/lt-dev:fullstack:update-all --skip-frontend # Backend only
|
|
773
|
+
/lt-dev:fullstack:update-all --skip-packages # Framework only, no package maintenance
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
**Individual updates** (if you only need one part):
|
|
777
|
+
|
|
778
|
+
```bash
|
|
779
|
+
# Backend npm mode
|
|
780
|
+
/lt-dev:backend:update-nest-server
|
|
781
|
+
|
|
782
|
+
# Backend vendor mode
|
|
783
|
+
/lt-dev:backend:update-nest-server-core
|
|
784
|
+
|
|
785
|
+
# Frontend vendor mode
|
|
786
|
+
/lt-dev:frontend:update-nuxt-extensions-core
|
|
787
|
+
|
|
788
|
+
# Packages only
|
|
789
|
+
/lt-dev:maintenance:maintain
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
---
|
|
793
|
+
|
|
794
|
+
### 7. Upstream contribution
|
|
795
|
+
|
|
796
|
+
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.
|
|
797
|
+
|
|
798
|
+
```
|
|
799
|
+
┌──────────────────────────────────────────────────────────┐
|
|
800
|
+
│ BACKEND: /lt-dev:backend:contribute-nest-server-core │
|
|
801
|
+
│ FRONTEND: /lt-dev:frontend:contribute-nuxt-extensions-core│
|
|
802
|
+
│ │
|
|
803
|
+
│ Phase 1: git log since VENDOR.md baseline │
|
|
804
|
+
│ Phase 2: Filter cosmetic commits (format, lint) │
|
|
805
|
+
│ Phase 3: Categorize: │
|
|
806
|
+
│ - upstream-candidate: generic bugfix, framework │
|
|
807
|
+
│ enhancement, type correction │
|
|
808
|
+
│ - project-specific: business rules, branding │
|
|
809
|
+
│ Phase 4: Clone upstream fresh + cherry-pick candidates │
|
|
810
|
+
│ Phase 5: Generate PR draft with motivation │
|
|
811
|
+
│ Phase 6: Present summary for human review │
|
|
812
|
+
│ │
|
|
813
|
+
│ Human: reviews + pushes PR via normal GitHub flow │
|
|
814
|
+
└──────────────────────────────────────────────────────────┘
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
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.
|
|
818
|
+
|
|
819
|
+
---
|
|
820
|
+
|
|
821
|
+
## Decision Matrix
|
|
822
|
+
|
|
823
|
+
### When to use npm mode?
|
|
824
|
+
|
|
825
|
+
- ✅ Standard project without local framework modifications
|
|
826
|
+
- ✅ Fast updates via `pnpm update`
|
|
827
|
+
- ✅ Simpler CI/CD
|
|
828
|
+
- ✅ Smaller memory footprint in the repo
|
|
829
|
+
|
|
830
|
+
### When to use vendor mode?
|
|
831
|
+
|
|
832
|
+
- ✅ Claude Code should **understand** the framework code (better context comprehension)
|
|
833
|
+
- ✅ Local patches to the framework are required
|
|
834
|
+
- ✅ Upstream contributions should emerge from real development
|
|
835
|
+
- ✅ Debugging in framework code with source maps / original code
|
|
836
|
+
- ✅ Framework changes immediately testable without npm release cycle
|
|
837
|
+
- ⚠️ Requires occasional merge conflict handling during sync
|
|
838
|
+
- ⚠️ Longer test import phase (TypeScript source)
|
|
839
|
+
|
|
840
|
+
---
|
|
841
|
+
|
|
842
|
+
## Glossary
|
|
843
|
+
|
|
844
|
+
| Term | Meaning |
|
|
845
|
+
|------|---------|
|
|
846
|
+
| **npm mode** | Framework as `@lenne.tech/nest-server` / `@lenne.tech/nuxt-extensions` npm dependency |
|
|
847
|
+
| **Vendor mode** | Framework source copied into `src/core/` (backend) or `app/core/` (frontend) |
|
|
848
|
+
| **VENDOR.md** | Marker file in the vendored core with baseline version, sync history, local patches |
|
|
849
|
+
| **Flatten-fix** | Import path rewrites in 4 backend files after copying (backend only) |
|
|
850
|
+
| **Consumer-import codemod** | Rewrite of `@lenne.tech/nest-server` to relative paths in project code |
|
|
851
|
+
| **Upstream sync** | Pulling upstream changes into the vendored core |
|
|
852
|
+
| **Upstream contribution** | Pushing local patches as PR to the upstream repo |
|
|
853
|
+
| **Mode-aware** | Code that automatically chooses correct paths for npm or vendor |
|
|
854
|
+
| **Starter** | `nest-server-starter` / `nuxt-base-starter` — template repo with standard config |
|
|
855
|
+
|
|
856
|
+
---
|
|
857
|
+
|
|
858
|
+
## Sources & References
|
|
859
|
+
|
|
860
|
+
### GitHub repos
|
|
861
|
+
|
|
862
|
+
| Repo | URL |
|
|
863
|
+
|------|-----|
|
|
864
|
+
| lt CLI | https://github.com/lenneTech/cli |
|
|
865
|
+
| lt-dev Plugin | https://github.com/lenneTech/claude-code |
|
|
866
|
+
| nest-server framework | https://github.com/lenneTech/nest-server |
|
|
867
|
+
| nest-server starter | https://github.com/lenneTech/nest-server-starter |
|
|
868
|
+
| nuxt-extensions module | https://github.com/lenneTech/nuxt-extensions |
|
|
869
|
+
| nuxt-base starter | https://github.com/lenneTech/nuxt-base-starter |
|
|
870
|
+
| lt-monorepo template | https://github.com/lenneTech/lt-monorepo |
|
|
871
|
+
|
|
872
|
+
### Local documentation
|
|
873
|
+
|
|
874
|
+
- `cli/CLAUDE.md` — CLI internal documentation + vendor touchpoints table
|
|
875
|
+
- `cli/docs/commands.md` — CLI command reference
|
|
876
|
+
- `cli/docs/lt.config.md` — CLI config reference
|
|
877
|
+
- `cli/scripts/test-vendor-init.sh` — Backend vendor integration tests (4 scenarios × ~22 assertions)
|
|
878
|
+
- `cli/scripts/test-frontend-vendor-init.sh` — Frontend vendor integration tests (4 scenarios)
|
|
879
|
+
|
|
880
|
+
---
|
|
881
|
+
|
|
882
|
+
## Quick Reference — The Most Important Commands
|
|
883
|
+
|
|
884
|
+
```bash
|
|
885
|
+
# ═══════════════════════════════════════════════════════════════
|
|
886
|
+
# PROJECT SETUP
|
|
887
|
+
# ═══════════════════════════════════════════════════════════════
|
|
888
|
+
|
|
889
|
+
# New project (both in vendor mode)
|
|
890
|
+
lt fullstack init --name <n> --frontend nuxt --api-mode Rest \
|
|
891
|
+
--framework-mode vendor --frontend-framework-mode vendor --noConfirm
|
|
892
|
+
|
|
893
|
+
# New project (npm mode, standard)
|
|
894
|
+
lt fullstack init --name <n> --frontend nuxt --api-mode Rest --noConfirm
|
|
895
|
+
|
|
896
|
+
# Check status (shows both modes at monorepo root)
|
|
897
|
+
lt status
|
|
898
|
+
|
|
899
|
+
# ═══════════════════════════════════════════════════════════════
|
|
900
|
+
# CONVERSION — Fullstack (both subprojects in one step)
|
|
901
|
+
# ═══════════════════════════════════════════════════════════════
|
|
902
|
+
|
|
903
|
+
# Both subprojects: npm → vendor (from monorepo root)
|
|
904
|
+
lt fullstack convert-mode --to vendor --noConfirm
|
|
905
|
+
|
|
906
|
+
# Both subprojects: vendor → npm (rollback)
|
|
907
|
+
lt fullstack convert-mode --to npm --noConfirm
|
|
908
|
+
|
|
909
|
+
# With specific upstream versions
|
|
910
|
+
lt fullstack convert-mode --to vendor \
|
|
911
|
+
--framework-upstream-branch 11.24.3 \
|
|
912
|
+
--frontend-framework-upstream-branch 1.5.3 \
|
|
913
|
+
--noConfirm
|
|
914
|
+
|
|
915
|
+
# Only backend or only frontend
|
|
916
|
+
lt fullstack convert-mode --to vendor --skip-frontend --noConfirm
|
|
917
|
+
lt fullstack convert-mode --to vendor --skip-backend --noConfirm
|
|
918
|
+
|
|
919
|
+
# Dry-run (plan without changes)
|
|
920
|
+
lt fullstack convert-mode --to vendor --dry-run
|
|
921
|
+
|
|
922
|
+
# ═══════════════════════════════════════════════════════════════
|
|
923
|
+
# CONVERSION — Individual (in the respective subprojects)
|
|
924
|
+
# ═══════════════════════════════════════════════════════════════
|
|
925
|
+
|
|
926
|
+
# Backend: npm → vendor (with migrations via Claude Code)
|
|
927
|
+
/lt-dev:backend:convert-to-vendor
|
|
928
|
+
|
|
929
|
+
# Backend: npm → vendor (directly via CLI)
|
|
930
|
+
cd projects/api && lt server convert-mode --to vendor
|
|
931
|
+
|
|
932
|
+
# Frontend: npm → vendor (with changelog via Claude Code)
|
|
933
|
+
/lt-dev:frontend:convert-to-vendor
|
|
934
|
+
|
|
935
|
+
# Frontend: npm → vendor (directly via CLI)
|
|
936
|
+
cd projects/app && lt frontend convert-mode --to vendor
|
|
937
|
+
|
|
938
|
+
# Rollback individually
|
|
939
|
+
cd projects/api && lt server convert-mode --to npm
|
|
940
|
+
cd projects/app && lt frontend convert-mode --to npm
|
|
941
|
+
|
|
942
|
+
# ═══════════════════════════════════════════════════════════════
|
|
943
|
+
# UPDATES
|
|
944
|
+
# ═══════════════════════════════════════════════════════════════
|
|
945
|
+
|
|
946
|
+
# Comprehensive fullstack update (recommended, mode-aware)
|
|
947
|
+
/lt-dev:fullstack:update-all
|
|
948
|
+
|
|
949
|
+
# Backend only
|
|
950
|
+
/lt-dev:backend:update-nest-server # npm mode
|
|
951
|
+
/lt-dev:backend:update-nest-server-core # vendor mode
|
|
952
|
+
|
|
953
|
+
# Frontend only
|
|
954
|
+
/lt-dev:frontend:update-nuxt-extensions-core # vendor mode
|
|
955
|
+
|
|
956
|
+
# Packages only
|
|
957
|
+
/lt-dev:maintenance:maintain
|
|
958
|
+
|
|
959
|
+
# ═══════════════════════════════════════════════════════════════
|
|
960
|
+
# UPSTREAM CONTRIBUTION
|
|
961
|
+
# ═══════════════════════════════════════════════════════════════
|
|
962
|
+
|
|
963
|
+
# Backend: prepare local patches as PR
|
|
964
|
+
/lt-dev:backend:contribute-nest-server-core
|
|
965
|
+
|
|
966
|
+
# Frontend: prepare local patches as PR
|
|
967
|
+
/lt-dev:frontend:contribute-nuxt-extensions-core
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
---
|
|
971
|
+
|
|
972
|
+
*This file is intended as living documentation. It should be updated when new features are added to the lt CLI or lt-dev plugin.*
|