Desktop-Backend und CLI anbinden
Koordiniert eingebettete Server und externe Kommandozeilenwerkzeuge für zuverlässigen Desktop-Start und sauberes Beenden.
local-backend-cli-integration
Entdecke, wie der Skill hilftWann ist der Skill hilfreich?
Nutze diesen Skill bei lokalen Backends oder außerhalb des App-Pakets installierten Werkzeugen.
Wobei hilft er dir?
- Bindet konfliktfrei lokal und wartet auf Betriebsbereitschaft.
- Findet ausführbare Dateien in GUI-Umgebungen und prüft Verfügbarkeit.
- Verwaltet Unterprozesslebensdauer, Fehler und Bereinigung.
Das könntest du fragen
Behebe den Start bei belegtem Wunschport und einer CLI, die nur im Login-Shell-Pfad verfügbar ist. Starte vom Desktop ohne Terminalumgebung. Wähle einen freien Port, prüfe Backend-Bereitschaft und zeige bei fehlendem Programm einen hilfreichen Fehler.
Ausführliche Dokumentation
Hier findest du die ursprüngliche Anleitung, Beispiele und Prüfschritte des Skills in ihrer Originalsprache.
Weniger anzeigen
Local Backend & CLI Integration
Many developer-focused desktop applications combine a web UI, an embedded local backend server (Node.js + SQLite), and external command-line tools (git, claude, codex, gemini). Coordinate these layers so the user never has to manage ports, terminal environments, or orphaned daemons manually.
Embedded Local Server Lifecycle
- Dynamic / Conflict-Free Port Binding:
- Never hardcode a single port like
3000or4317without fallback—if another process holds that port, the desktop app crashes on launch. - Bind to
127.0.0.1on an ephemeral port (listen(0, '127.0.0.1')or probe from a preferred port upward), readserver.address().port, and pass the bound port and per-session auth token to the desktop window via IPC/preload before loading the UI.
- Never hardcode a single port like
- Readiness Handshake Before UI Navigation:
- Wait for the embedded backend to finish SQLite migrations, skill discovery, and socket binding before resolving the window's initial startup state, displaying a lightweight native/splash loading state while booting.
- Using Electron's Built-In Node Runtime for Child Scripts:
- When an Electron app needs to spawn a pure Node.js child script on a user machine that does not have
nodeinstalled globally, spawnprocess.execPathwithenv: { ...cleanEnv, ELECTRON_RUN_AS_NODE: '1' }.
- When an Electron app needs to spawn a pure Node.js child script on a user machine that does not have
External CLI Discovery, Preflight & Execution
- Deterministic CLI Discovery:
- Because macOS/Linux GUI apps do not inherit terminal
.zshrc/.bashrcPATHexports, resolve the user's login shellPATHonce at startup and check platform-standard installation paths:- macOS:
/opt/homebrew/bin,/usr/local/bin,~/.local/bin,~/.nvm/versions/node/*/bin,~/.volta/bin,~/.bun/bin - Windows:
%APPDATA%\npm,%LOCALAPPDATA%\Programs,%ProgramFiles%\Git\cmd(where.exe/.cmdshim resolution)
- macOS:
- Because macOS/Linux GUI apps do not inherit terminal
- Three-Step CLI Preflight (Binary $\rightarrow$ Version $\rightarrow$ Auth):
- Verify each external CLI with a fast, non-interactive probe (
--versionand auth/status check with a 5-second timeout andstdin: 'ignore') and report structured status (missing,signed_out,ready) so the UI can guide installation or sign-in.
- Verify each external CLI with a fast, non-interactive probe (
- Non-Interactive Subprocess Execution:
- Always pass
{ stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true }(or a controlled stdin pipe closed immediately after input) so a CLI prompting for[y/N]or credentials never hangs silently in the background. - Stream
stdoutandstderrline-by-line with bounded ring buffers so a verbose CLI output cannot exhaust main-process memory.
- Always pass
Enthaltene Dateien 1
SKILL.md
Über dieses Skill-Paket
local-backend-cli-integration
local-backend-cli-integration: Entwickelt Desktop-Apps mit zuverlässigen nativen Grenzen, lokalen Daten, Prozesslebenszyklen, Paketen und Updates.
Weniger anzeigen
local-backend-cli-integration
local-backend-cli-integration: Entwickelt Desktop-Apps mit zuverlässigen nativen Grenzen, lokalen Daten, Prozesslebenszyklen, Paketen und Updates.
Enthält den vollständigen Skill und seine Begleitdateien (1 Dateien). Der genaue, ursprünglich verfasste Anwendungsbereich bleibt unten erhalten.
Ursprüngliche Skill-Beschreibung (Quellsprache)
Use when embedding a local Node.js/HTTP server inside a desktop app, orchestrating external developer CLIs (git, claude, codex, gemini), handling port allocation, or streaming subprocess output.
Installiere den Skill, prüfe seine Quelle und Vertrauenseinstellungen und aktiviere ihn für das passende Projekt oder den Agenten.
Voraussetzungen
- Orqestria auf deinem Computer installiert.
