name: adom-desktop-discovery user-invocable: false description: "Reaches the user's Windows/Mac laptop desktop from this container via adom-desktop — run commands & scripts on the laptop, list/kill processes, restart apps (e.g. Explorer), desktop/app-window screenshots, send/pull files, notifications, list/focus/flash windows, RDP tunnels. Also launches and drives KiCad (schematics/boards/symbols/footprints, DRC, library install, 3D viewer, automation) and Fusion 360 (.f3d/.f3z, import/export STEP/GLB/.lbr, BOM/parameters, Fusion API). Also covers Puppeteer/pup real-Chrome automation (browser_screenshot, browser_eval, browser_navigate, multi-session profiles, ralph-loop), WSL distro control + golden-image bakes (wsl_exec, wsl_exec_async, wsl_import/export/unregister), the relay server (adom-desktop serve), and connection setup. Trigger words: run command on laptop, run on my pc, restart explorer, restart a program, kill a process, list processes, taskkill, screenshot laptop/desktop/windows/fusion/kicad, list windows, focus window, send file to laptop, pull file from laptop, desktop notification, launch KiCad, open in KiCad, run DRC, launch Fusion, import/export STEP, export GLB/lbr, Fusion API, pup, puppeteer, real Chrome, browser automation, flash taskbar, open URL on desktop, RDP, tunnel, WSL, golden image, adom-desktop, bridge to my pc, windows app, KiCad bridge, Fusion bridge."

adom-desktop — discovery & install

This skill is a pointer. When any trigger fires, confirm adom-desktop is installed (install from the wiki if not), make sure the relay is up, then discover the exact verb at runtime — do NOT guess from memory and do NOT rely on --help.

1 — Check it's installed + the relay is up

adom-desktop --version          # path + version, e.g. adom-desktop 1.8.163 (<sha>, built …)
adom-desktop ping               # {echo:"pong", status:"connected"} == the laptop is reachable

If adom-desktop isn't found → §4 install. If ping doesn't say connected, the relay isn't serving — start it: adom-desktop serve & (then re-ping).

2 — ⭐ DISCOVER THE VERB: adom-desktop commands (NOT --help)

This is the step that's most often skipped, and skipping it is why calls get hand-rolled with shell_execute and fumble. adom-desktop --help only lists serve / install — every real capability is a dynamic verb forwarded to the laptop, and the authoritative, machine-readable catalog (200+ verbs, each with args + return shape + a _hint) is:

adom-desktop commands            # full verb catalog (categories → verbs → args/returns)
adom-desktop status              # laptop state (installed apps, WSL health, …) — also surfaces the catalog

Always check commands before reaching for shell_execute. There is almost certainly a structured verb that takes typed args, so you never hand-quote a command through JSON → shell. A few you'll want often:

Want to… Use (structured — no quoting) NOT
list processes process_list {"nameContains":"explorer"} shell_execute "tasklist | findstr …"
kill a process process_kill {"name":"explorer.exe"} (or {"pid":N}) shell_execute "taskkill /f /im …"
start an app launch_process {"path":"explorer.exe"} / launch {…} shell_execute "start …"
run a multi-line / quoted script run_script {"interpreter":"powershell|cmd|bash","scriptB64":"<base64>"} shell_execute with nested quotes
run inside a WSL distro wsl_exec {"distro","user","scriptB64"}; multi-minute → wsl_exec_async + poll wsl_job_status
screenshots / windows desktop_list_windows, desktop_screenshot_window {"hwnd":N}, desktop_find_window, desktop_bring_to_front
move files send_files (→ laptop), pull_file (← laptop)

Example — "restart Explorer because the taskbar icons are gone": process_kill {"name":"explorer.exe"}launch_process {"path":"explorer.exe"}process_list {"nameContains":"explorer"} to confirm. No taskkill/tasklist quoting. (shell_execute is the escape hatch for things with no verb yet — cmd /C; reserve it for that.)

Reading any result: every verb returns a uniform status (ok | timeout | busy | error) + durationMs, alongside exitCode/stdout/stderr for exec verbs. So an empty stdout with status:ok is a real empty-output success — NOT a timeout. timeout/busy carry a recovery _hint. Multi-AD relay: if you get status:error / ambiguous_target, pass --target <name> (list them with adom-desktop targets).

3 — Multi-distro / long ops

For golden-image work and any multi-minute command, use the detached job verbs (return a jobId instantly, then poll wsl_job_status) instead of a sync call that would time out: wsl_import / wsl_export / wsl_unregister / wsl_exec_async, and launch_process for a general long-running process. wsl_recover reaps a wedged WSL. See adom-desktop commands for exact args.

4 — Install (if missing or stale)

The canonical install is the adompkg (bundles the Linux CLI and the skill set, which symlink into ~/.claude/skills/):

adompkg install adom/adom-desktop     # → ~/.local/bin/adom-desktop + the adom-desktop-* skills
adom-desktop --version                # confirm

adom-desktop status reports the latest published version; if your local CLI is older, re-run adompkg install adom/adom-desktop to refresh the binary and the skills atomically. (Wiki page: https://wiki.adom.inc/adom/adom-desktop.) If you hand-installed only the binary, you won't have the skill set — re-run the adompkg install so the discovery/main/pup/kicad/fusion/direct-api/installer skills land too.

5 — What you get once installed

adompkg install lays down sibling skills that document the features in depth — they appear in future skill searches:

Skill Covers
adom-desktop (main) the full verb reference + shell/process/file/window/WSL/tunnel patterns, status+durationMs result shape
adom-desktop-pup Puppeteer real-Chrome automation (browser_open_window/navigate/screenshot/eval, multi-session profiles)
adom-desktop-kicad KiCad bridge (open schematics/boards, DRC, library install, 3D viewer, automation)
adom-desktop-fusion Fusion 360 bridge (.f3d/.f3z, STEP/GLB/.lbr import-export, BOM/params, Fusion API)
adom-desktop-direct-api the loopback HTTP API for sibling apps (Hydrogen Desktop)
adom-desktop-installer invoking the Windows installer (silent/NOLAUNCH)

But you don't need to read those to act — adom-desktop commands is always the live source of truth for what verbs exist right now.

6 — Why this skill exists

adom-desktop is its own repo with its own release cadence; the deep feature docs ship with the binary (so a binary release doesn't force a gallia release). This skill is the stable, always-present entry point — its one job is to get you to adom-desktop commands, the runtime catalog, instead of guessing.