using-lt-cli

Installation
SKILL.md

LT CLI Reference

Gotchas

  • lt fullstack init without --noConfirm blocks Claude Code forever — The interactive prompts (project name, git init, template selection) wait for stdin input. Claude Code cannot respond to them, and the session hangs on "Unfurling..." with no token consumption. Pass --noConfirm + all required flags (--name X --frontend nuxt --git false) when calling lt CLI from Claude Code.
  • --api-link and --frontend-link create SYMLINKS, not copies — Changes to the template checkout (nest-server-starter, nuxt-base-starter), wherever it lives on this machine, immediately affect the linked project. This is a feature for framework development but surprises developers who expect copies. Document it in the project README when using --api-link.
  • lt git reset is DESTRUCTIVE and irreversible — Lives next to the safe lt git get in the CLI menu. reset does git reset --hard followed by force-pull, destroying ALL local changes without confirmation. Never run it on a branch with unpushed work. Prefer git stash + lt git get.
  • lt server object X --controller generates REST, NOT GraphQL — Default is REST. For GraphQL projects, use --resolver. The CLI does not auto-detect from existing project patterns — you must specify explicitly.
  • lt fullstack convert-mode rewrites the source tree — Switching between npm and vendor mode moves framework code in/out of src/core/ (API) or app/core/ (App). The operation is reversible but NOT idempotent mid-run — always commit before starting, so a failed conversion can be rolled back via git reset.
  • --next is experimental and incompatible with lt server module/object/addProp/test/permissions — When lt server create --next or lt fullstack init --next is used, the API is cloned from nest-base (Bun + Prisma 7 + Postgres + Better-Auth) instead of nest-server-starter. The downstream generators target the classic nest-server layout (Mongoose models, src/server/modules/, etc.) and will not work on a nest-base project. Use it for greenfield prototyping only; for production work prefer the default template.
  • macOS: a long $TMPDIR breaks Nuxt SSR under lt dev up — On macOS, $TMPDIR is a long per-user path (/var/folders/…, often >~49 chars). Nuxt 4.4.7's vite-node builds a Unix domain socket path under it that exceeds the OS 104-character limit → SSR crashes with a 500. Workaround: start with a short tmp dir, TMPDIR=/tmp lt dev up. (Linux $TMPDIR=/tmp is short, so this only bites on macOS.)
  • macOS: HMR WebSocket port 24678 collides between parallel lt dev projects — Two lt dev projects running at once both try to bind Vite's HMR WS port 24678. vite.server.hmr.port is ignored by Nuxt 4.4.7, so you cannot reassign it in config. This is non-fatal — SSR recompile still works; only live-HMR pushes on the second project are affected. Reload the page to pick up changes there.

Skill Boundaries

Installs
1
First Seen
Oct 27, 2026