Mit lt dev und lt ticket betreibst du beliebig viele Projekte und beliebig viele Tickets gleichzeitig — jedes mit eigener URL, eigener Datenbank, eigenen Ports. Ein Befehl, und du legst los.
Bisher band jedes Projekt die Framework-Default-Ports 3000/3001. Zwei Projekte gleichzeitig? Port-Kollision. Auth über Cookies? Cross-wiring. Ein zweites Ticket testen, während das erste läuft? Ging nicht.
Ein Projekt zur Zeit. Feste Ports kollidieren. Branch wechseln heißt: Server neu starten, DB-Zustand verlieren, Kontext verlieren. Tickets parallel? Nur über getrennte Klone — langsam und unübersichtlich.
Jedes Projekt und jedes Ticket läuft hinter Caddy unter https://<name>.localhost — eigene Ports, eigene DB, eigener Caddy-Block. Mehrere Browser-Tabs, mehrere Claude-Sessions, mehrere Test-Läufe — alles gleichzeitig, nichts beeinflusst sich.
Dieser Workflow braucht die lt CLI ≥ 1.28.0 (enthält lt dev + lt ticket) und das neueste lt-dev Claude Plugin (macht Claude ticket-aware). Beides ist in Sekunden installiert bzw. aktualisiert.
Version prüfen mit lt --version — muss 1.28.0 oder neuer sein.
# Neu installieren (global) npm install -g @lenne.tech/cli # Auf die neueste Version aktualisieren lt update # Version prüfen (≥ 1.28.0) lt --version
Aus dem lenne-tech Marketplace ziehen — installiert/aktualisiert lt-dev (+ weitere lt-Plugins) und richtet die Berechtigungen ein.
# lt-dev Claude Plugin installieren / aktualisieren lt claude plugins
Aktualisiert sich zusätzlich automatisch beim Start einer Claude-Code-Session.
lt update (CLI auf ≥ 1.28.0) → lt claude plugins (Plugin ziehen) → im Projekt lt dev init, dann lt ticket start <ticket>.lt dev — der isolierte Stack pro ProjektEin Projekt, eine eigene Welt. lt dev up startet API + App hinter Caddy unter projekteigenen URLs — beliebig viele Projekte nebeneinander, garantiert kollisionsfrei.
# Einmal pro Rechner lt dev install # Caddy + lokale CA + Service einrichten # Einmal pro Projekt (idempotent) lt dev init # env-aware patchen + registrieren (idempotent) # Täglich lt dev up → https://svl.localhost · https://api.svl.localhost lt dev status --all # was läuft gerade? (alle Projekte) lt dev down # sauber stoppen + Caddy-Block entfernen
| Befehl | Was es tut |
|---|---|
lt dev install | Einmal pro Rechner: Caddy, lokale CA und Hintergrund-Service einrichten. |
lt dev init | Einmal pro Projekt: Ports env-aware machen, registrieren, ignoreHTTPSErrors + shard-aware Test-Timeouts injizieren. Idempotent. |
lt dev up | API + App hinter Caddy starten: https://<slug>.localhost / api.<slug>.localhost, DB <slug>-local. |
lt dev down | Prozesse stoppen, Caddy-Block entfernen, etwaige Test-Stacks abräumen. |
lt dev status · --all | URLs, Ports, PIDs, Live-Zustand — fürs aktuelle Projekt oder alle registrierten. |
lt dev doctor | Caddy/CA/DNS/Ports prüfen — NEU warnt auch, wenn ein DB-löschendes global-setup die Ticket-/Shard-Test-DBs nicht zurücksetzen würde. |
lt dev test | E2E in einem isolierten, parallelen Stack auf dedizierter DB <slug>-test — restfreier Auto-Teardown. |
lt dev test --shard N | Suite auf N isolierte Stacks aufteilen (Default 2) — lokale CI-Parität, ~2× schneller. |
lt dev tunnel | Öffentliche *.trycloudflare.com-URL für ein laufendes Projekt (Demo/Review). |
localhost:3000. Alle URLs kommen von lt dev über die Env-Bridge (.lt-dev/.env) — Playwright, IDE und Skripte ziehen sie automatisch.lt ticket — mehrere Tickets gleichzeitigEin Repo, beliebig viele Tickets — jedes in einem eigenen git worktree mit eigenem lt dev-Stack. Frisch aus origin/dev, in Sekunden startklar, voneinander komplett unabhängig.
.git, sofort) → je ein vollständig isolierter Stack. Ordnername = URL = DB = Ticket — du weißt immer, wo du bist.lt ticket start DEV-2200 # fetch + worktree aus origin/dev + install + lt dev up → https://svl-2200.localhost · DB svl-…-2200 (leer) lt ticket start login-fix # kein Ticket? freier Name → svl-login-fix.localhost lt ticket start DEV-2200 --as cof # Kurzname überschreiben; --branch / --base ebenso lt ticket list # Dashboard: alle Tickets + URLs + Branch + Status + DB lt ticket switch 2200 # Pfad zeigen + im Editor öffnen lt ticket test 2200 --shard 2 # E2E im isolierten Ticket-Stack/-DB lt ticket stop 2200 --drop-db # down + worktree entfernen (Branch bleibt); --drop-db löscht DBs
Jedes Ticket bekommt <slug>-<id> in URL, DB, Ports, Caddy-Block, Ordnername. Verwechslung ausgeschlossen.
Jeder Start macht git fetch und zweigt von origin/dev ab — alle Tickets unabhängig. --base für Ausnahmen.
Worktree teilt das .git — kein Re-Clone. Ein git fetch aktualisiert alle. pnpm hardlinkt aus dem Store.
lt ticket stop, falls noch uncommittete oder ungepushte Arbeit existiert — nichts geht versehentlich verloren.dev — der Claude-Command /lt-dev:git:ship. Bringt deinen fertig entwickelten Ticket-Branch autonom nach dev: check-Skript grün → committen → auf dev rebasen → testen → Merge Request (Squash + Auto-Merge) → wartet auf die CI-Pipeline (Auto-Retry bei Fehlschlag) → squash-merged → löscht den Branch. Die automatisierte Schlussklammer zu /lt-dev:take-ticket — genau der Ablauf, den du sonst von Hand machst. Flags: --base=<branch>, --no-squash, --keep-branch, --max-pipeline-retries=<n>.lt ticket start DEV-2200, lt ticket start DEV-2201, lt ticket start login-fix — drei Tabs, drei VS-Code-Fenster, drei Claude-Sessions. Jede Umgebung ist sofort im Browser unter ihrer eigenen URL.lt ticket switch 2201, fixst, lt ticket test 2201 läuft parallel während 2200 weiter im Browser offen ist.lt ticket stop 2200 --drop-db räumt restlos auf. 2201 und login-fix laufen ungestört weiter.lt ticket list zeigt alle Umgebungen mit URLs, Branch, Status und DB — du verlierst nie den Faden.Nicht jedes Ticket braucht einen eigenen Worktree. Willst du im aktuellen Projektverzeichnis ein Ticket angehen — ohne neuen Ordner — startest du es direkt mit dem Claude-Command /lt-dev:take-ticket.
lt ticket startEigener Worktree + eigener Stack. Wenn du mehrere Tickets gleichzeitig bearbeiten, im Browser vergleichen oder parallel testen willst. Volle Isolation, ein Befehl.
/lt-dev:take-ticketIm aktuellen Verzeichnis & Branch — kein neuer Ordner. Claude holt sich Ticket-Kontext (Linear, Figma, Flows), plant und setzt um. Ideal für ein Ticket nacheinander, ohne Worktree-Overhead.
lt ticket. Ein Ticket fokussiert im aktuellen Checkout → /lt-dev:take-ticket. Beide nutzen denselben isolierten lt dev-Unterbau.Jeder Ticket-Test fährt seinen eigenen Test-Stack hoch — eigene Test-DB <base>-<id>-test, eigene Ports. Ein Registry-Lock garantiert atomare Port-Vergabe, sodass selbst zwei gleichzeitig gestartete Test-Läufe nie kollidieren.
lt dev test --shard N teilt die Suite auf N isolierte Stacks (Default 2) — die lokale Entsprechung der CI-Matrix, ~2× schneller. Die Timeouts werden nur unter Shard-Last gelockert (CI bleibt schnell).
lt ticket test <id> testet im eigenen Ticket-Stack mit eigener Test-DB. Mehrere Tickets können gleichzeitig testen — atomare Port-Vergabe per Lock verhindert jede Kollision.
global-setup müssen die Allow-List ticket-/shard-sicher halten (/^<base>-(?:[a-z0-9-]+-)?test(?:-\d+)?$/). lt dev doctor warnt, falls nicht — neue Projekte aus dem Starter brauchen hier nichts.lt ticket stop verweigert das Entfernen, solange uncommittete oder ungepushte Arbeit existiert — mit klarer Auflistung. --force überschreibt bewusst. Generierte Dateien (.nuxtrc & Co.) blockieren nicht.
lt dev doctor prüft Caddy, CA, DNS, Ports — und warnt, wenn ein global-setup Ticket-Test-DBs nicht zurücksetzen würde, samt exaktem Fix.
Jede Claude-Session in einem Ticket-Worktree erkennt am .lt-dev/ticket-Marker automatisch ihr Ticket — und sieht jede Runde Ticket-ID, URLs und DB. Keine getrackte Datei wird verändert.
Prozesse, Caddy-Block, Session, Registry-Eintrag, Ports — alles wird sauber zurückgegeben. lt ticket stop ohne ID räumt sogar das aktuelle Worktree auf.
lt dev install # 1× pro Rechner lt dev init # 1× pro Projekt lt dev up / down # Stack an/aus lt dev status --all # Überblick lt dev doctor # Diagnose lt dev test --shard 2 # schnelle E2E lt dev tunnel # öffentliche URL
lt ticket start DEV-2200 # neues Ticket-Env lt ticket start login-fix # freier Name lt ticket list # Dashboard lt ticket switch 2200 # öffnen lt ticket test 2200 # isolierte E2E lt ticket stop 2200 # aufräumen (Branch bleibt) /lt-dev:take-ticket # Ticket im aktuellen Checkout /lt-dev:git:ship # fertig → autonom nach dev
lt dev install (einmalig) → im Projekt lt dev init → lt ticket start <ticket>. Fertig — die URL steht im Terminal und in lt ticket list.Jedes Ticket behält seinen eigenen, laufenden Zustand — Server, DB, Browser-Tab, Claude-Session. Du springst zwischen Tickets, ohne irgendetwas neu aufzusetzen.
Worktrees entstehen in 0 s, Stacks starten in Sekunden, Tests laufen parallel statt nacheinander. Review-Feedback fixst du sofort, ohne dein Hauptticket zu unterbrechen.
Volle Isolation + Schutz vor Datenverlust + Selbstdiagnose. Du experimentierst frei — die Werkzeuge fangen die Fehler ab, bevor sie wehtun.
lt ticket start. Du wirst nicht mehr zurückwollen.