LoadLynx User Operations
Use this skill on a normal user's computer. All skill-driven hardware operation must go through released loadlynx and loadlynx-devd binaries from GitHub Releases.
Start Here
npx skills add https://github.com/IvanLi-CN/loadlynx --skill loadlynx-user-operations -g
npx skills update loadlynx-user-operations -g
- Never require the user to clone the repository or install Rust, Bun, Just,
mcu-agentd, espflash, or probe-rs.
- Use only released LoadLynx host tools and released firmware assets from
https://github.com/IvanLi-CN/loadlynx/releases.
- Do not use the Web UI as the skill's agent-operated hardware path. Web Serial is a supported human browser path, not the default agent control path.
- Before giving any CLI workflow, verify the installed program supports it:
loadlynx --help
loadlynx-devd --help
loadlynx -v
- The current stable CLI surface should expose top-level commands such as
devices, device, status, status-stream, cc, cv, cp, pd, wifi, control, preset, and flash.
loadlynx-devd --help must expose both serve and bridge-http.
- If the requested workflow depends on a command that is absent, stop and report that the installed release does not support it. Do not invent commands, fall back to Web UI, or switch to source/developer instructions.
Install Released Host Tools
- Download the latest stable Release unless the owner explicitly accepts a prerelease.
- Prefer the release installer script:
- macOS/Linux:
install-loadlynx-host.sh
- Windows:
install-loadlynx-host.ps1
- The installer downloads the platform archive, downloads
SHA256SUMS, verifies the selected archive hash, installs into a user-owned directory, validates the binaries, and prints PATH guidance. It must not edit shell startup files or PATH automatically.
- If the installer fails in transport, switch to manual release-asset installation instead of silently continuing with an older binary.
- If installing manually, choose the platform archive:
- Apple Silicon macOS:
loadlynx-host-tools-macos-aarch64.tar.gz
- Intel macOS:
loadlynx-host-tools-macos-x86_64.tar.gz
- Linux x86_64:
loadlynx-host-tools-linux-x86_64.tar.gz
- Windows x86_64:
loadlynx-host-tools-windows-x86_64.tar.gz
- Manual installs must verify the archive against the release
SHA256SUMS before extraction.
- On macOS or Linux:
mkdir -p "$HOME/.local/bin"
tar -xzf "$HOME/Downloads/loadlynx-host-tools-<platform>.tar.gz" -C "$HOME/.local/bin"
chmod +x "$HOME/.local/bin/loadlynx" "$HOME/.local/bin/loadlynx-devd"
- Verify after installation:
loadlynx --help
loadlynx-devd --help
loadlynx -v
Connect Hardware
- Connection priority is saved device first, then direct USB/LAN discovery.
- Start the local daemon only when needed for long-running local USB sessions:
loadlynx-devd serve
- The current
loadlynx CLI auto-manages its local control path. Do not try to pass legacy daemon URL flags unless a future released CLI explicitly documents them again.
loadlynx-devd bridge-http is only for browser/Web/debug paths and must bind loopback only:
loadlynx-devd bridge-http --bind 127.0.0.1:30180
- Keep the bridge running while the browser uses it. Do not expose it on non-loopback interfaces.
- Do not edit project-local caches or developer selector files by hand.
CLI Device Memory
- The CLI must be the source of remembered hardware. Do not rely on Web local storage, browser history, or project-local cache files for user workflows.
- Use the current released device commands:
loadlynx devices
loadlynx device list
loadlynx device add --name <name>
loadlynx device add --usb-port <path> --name <name>
loadlynx device add --url http://<device-host-or-ip> --name <name>
loadlynx device use <id>
loadlynx device use --global <id>
loadlynx device use --clear
loadlynx device remove <id>
loadlynx devices --json and loadlynx device list --json expose the persisted device list plus the current global default.
loadlynx device add --usb-port <path> --name <name> is the formal non-interactive path for saving a known USB serial port path. Use it in automation when the owner has specified the exact port.
loadlynx device add without extra selectors is interactive; in non-interactive automation it fails by design. Do not fake around that with manual JSON edits.
- Prefer using a saved
--device <id> target instead of repeatedly retyping hostnames or URLs.
LoadLynx Business Workflows
- Treat transport selection as preparation only. The user-facing job is operating the LoadLynx electronic load and PD sink safely through released CLI commands.
- Identity and status:
loadlynx devices
loadlynx status --device <id>
loadlynx status-stream --device <id> --interval-ms <ms> [--count <n>] --json
loadlynx control get --device <id>
loadlynx status --device <id> --json is the primary released read path for live telemetry, fault flags, link state, temperatures, voltage, current, power, and enable state.
loadlynx status-stream --device <id> --interval-ms <ms> --json is the primary released continuous telemetry path for tests that need stable sample cadence. With --json, stdout is NDJSON: one compact JSON status sample per line for the whole sample stream. Diagnostics and final summaries belong on stderr, not stdout, so downstream collectors can parse stdout as pure NDJSON.
loadlynx control get --device <id> --json reports the current mode, output-enabled state, active preset, and control snapshot.
- Electronic-load control:
loadlynx cc <target_i_ma> --device <id> [--min-v-mv <mv>] [--max-i-ma-total <ma>] [--max-p-mw <mw>]
loadlynx cv <target_v_mv> --device <id> [--min-v-mv <mv>] [--max-i-ma-total <ma>] [--max-p-mw <mw>]
loadlynx cp <target_p_mw> --device <id> [--min-v-mv <mv>] [--max-i-ma-total <ma>] [--max-p-mw <mw>]
loadlynx cc <target_i_ma> --device <id> --disable
loadlynx cv <target_v_mv> --device <id> --disable
loadlynx cp <target_p_mw> --device <id> --disable
loadlynx control set --device <id> --enable
loadlynx control set --device <id> --disable
- Use
--max-i-ma-total and --max-p-mw as protection rails when running power tests.
- USB-PD operation:
loadlynx pd set --device <id> --mode fixed --object-pos <n>
loadlynx pd set --device <id> --mode pps --target-mv <mv> --i-req-ma <ma>
- Use
--allow-extended-voltage true|false only when the user explicitly wants to cross the extended-voltage gate.
- Presets:
loadlynx preset list --device <id>
loadlynx preset set --device <id> --file <file>
loadlynx preset apply --device <id> <preset_id>
loadlynx wifi show --device <id>
loadlynx wifi set --device <id> --ssid <ssid> --psk <psk> [--wait]
loadlynx wifi clear --device <id>
- Never echo PSKs or secrets in chat, logs, screenshots, traces, or shell history.
- Wi-Fi writes must use an independent management path such as USB/devd. Do not use LAN HTTP, mDNS, a saved HTTP transport, "verified LAN", or an unsafe override to continue
wifi set or wifi clear; bind/use USB/devd for the same device first.
- Firmware:
loadlynx flash digital --device <id> --artifact <artifact>
loadlynx flash analog --device <id> --artifact <artifact>
- The default flash path is dry-run first;
--no-dry-run is the real flash gate.
- Real flash also requires
--confirm <target> and --acknowledge-non-project-firmware when applicable. A successful flash command alone is not enough to claim the device is usable; verify identity and status afterward.
External USB-C Source Validation
- Use LoadLynx as a generic validation sink for external USB-C source devices without embedding another project's workflow into this skill.
- Use a saved device target and prefer the saved USB/devd transport for operations that change LoadLynx state:
loadlynx status --device <id> --json
loadlynx pd set --device <id> --mode fixed --object-pos <n>
loadlynx pd set --device <id> --mode pps --target-mv <mv> --i-req-ma <ma>
loadlynx cv <target_v_mv> --device <id> --max-i-ma-total <ma> --max-p-mw <mw>
loadlynx cv <target_v_mv> --device <id> --disable
loadlynx pd set is the PD sink stimulus path. loadlynx cv <target_v_mv> is the voltage-clamp load stimulus path for pushing a source device toward its current-limit or constant-current behavior.
- For external current-limit validation, treat the external DUT's own diagnostics as the primary verdict. LoadLynx terminal voltage, current, power, and PD contract state are auxiliary cross-checks that help explain the stimulus and observed operating point.
- A sink-side voltage drop during CV loading is not by itself a failure. If the external DUT reports that it is current-limiting as configured and has no relevant fault latch, the voltage drop can be expected evidence that the source entered constant-current regulation.
- Always disable the LoadLynx output after the run and verify status before claiming the setup is restored.
Download Released Firmware
- Download firmware only from the chosen GitHub Release.
- Prefer a release-provided firmware catalog such as
loadlynx-firmware-catalog-v0.5.1.json, plus the firmware files referenced by that catalog.
- Keep downloaded firmware and catalog files together in one user-owned folder so relative catalog paths can resolve.
Web Serial
- GitHub Pages and release Web bundles are supported human browser paths for identity, status, control, Wi-Fi, diagnostics, and flash only when the browser exposes Web Serial.
- Web Serial saves identity/profile only and reconnects through browser-granted ports. It must not save OS port paths.
- Unsupported browsers must guide the user to Chrome/Edge or the released CLI/devd tools.
Escalate Out
- Switch to
skills/loadlynx-developer-operations/SKILL.md for source checkout, cloning, project builds, local devd builds, release workflow changes, probe or selector maintenance, HIL/debug sessions, or implementing missing CLI features.
- If a hardware operation is only available through Web UI and not through released
loadlynx, stop and escalate to developer work to add and release the CLI capability.
- Do not use raw HTTP writes or source-tree commands to bypass missing released user functionality.
Safety Checks
- Before enabling output, changing sink mode, or flashing firmware, verify the selected device identity and target.
- Treat command absence, link-down states, analog fault states, target mismatch, and hash mismatch as stop conditions.
- After changing settings, flashing, or configuring Wi-Fi, verify status and reconnect behavior before claiming success.
1---2name: loadlynx-user-operations3description: Operate LoadLynx hardware from an end-user machine through released host tools and official Web paths: install GitHub Release host tools with SHA256SUMS verification, use the released loadlynx/loadlynx-devd CLI surface as shipped, prefer saved devices and released CLI control flows, keep Web Serial as a formal human browser UI path, and do not fall back to source checkouts, raw local devd HTTP, or developer-only tooling.4---56# LoadLynx User Operations78Use this skill on a normal user's computer. All skill-driven hardware operation must go through released `loadlynx` and `loadlynx-devd` binaries from GitHub Releases.910## Start Here1112- Install this skill with:1314```bash15npx skills add https://github.com/IvanLi-CN/loadlynx --skill loadlynx-user-operations -g16```1718- Update this skill with:1920```bash21npx skills update loadlynx-user-operations -g22```2324- Never require the user to clone the repository or install Rust, Bun, Just, `mcu-agentd`, `espflash`, or `probe-rs`.25- Use only released LoadLynx host tools and released firmware assets from `https://github.com/IvanLi-CN/loadlynx/releases`.26- Do not use the Web UI as the skill's agent-operated hardware path. Web Serial is a supported human browser path, not the default agent control path.27- Before giving any CLI workflow, verify the installed program supports it:2829```bash30loadlynx --help31loadlynx-devd --help32loadlynx -v33```3435- The current stable CLI surface should expose top-level commands such as `devices`, `device`, `status`, `status-stream`, `cc`, `cv`, `cp`, `pd`, `wifi`, `control`, `preset`, and `flash`.36- `loadlynx-devd --help` must expose both `serve` and `bridge-http`.37- If the requested workflow depends on a command that is absent, stop and report that the installed release does not support it. Do not invent commands, fall back to Web UI, or switch to source/developer instructions.3839## Install Released Host Tools4041- Download the latest stable Release unless the owner explicitly accepts a prerelease.42- Prefer the release installer script:43 - macOS/Linux: `install-loadlynx-host.sh`44 - Windows: `install-loadlynx-host.ps1`45- The installer downloads the platform archive, downloads `SHA256SUMS`, verifies the selected archive hash, installs into a user-owned directory, validates the binaries, and prints PATH guidance. It must not edit shell startup files or PATH automatically.46- If the installer fails in transport, switch to manual release-asset installation instead of silently continuing with an older binary.47- If installing manually, choose the platform archive:48 - Apple Silicon macOS: `loadlynx-host-tools-macos-aarch64.tar.gz`49 - Intel macOS: `loadlynx-host-tools-macos-x86_64.tar.gz`50 - Linux x86_64: `loadlynx-host-tools-linux-x86_64.tar.gz`51 - Windows x86_64: `loadlynx-host-tools-windows-x86_64.tar.gz`52- Manual installs must verify the archive against the release `SHA256SUMS` before extraction.53- On macOS or Linux:5455```bash56mkdir -p "$HOME/.local/bin"57tar -xzf "$HOME/Downloads/loadlynx-host-tools-<platform>.tar.gz" -C "$HOME/.local/bin"58chmod +x "$HOME/.local/bin/loadlynx" "$HOME/.local/bin/loadlynx-devd"59```6061- Verify after installation:6263```bash64loadlynx --help65loadlynx-devd --help66loadlynx -v67```6869## Connect Hardware7071- Connection priority is saved device first, then direct USB/LAN discovery.72- Start the local daemon only when needed for long-running local USB sessions:7374```bash75loadlynx-devd serve76```7778- The current `loadlynx` CLI auto-manages its local control path. Do not try to pass legacy daemon URL flags unless a future released CLI explicitly documents them again.79- `loadlynx-devd bridge-http` is only for browser/Web/debug paths and must bind loopback only:8081```bash82loadlynx-devd bridge-http --bind 127.0.0.1:3018083```8485- Keep the bridge running while the browser uses it. Do not expose it on non-loopback interfaces.86- Do not edit project-local caches or developer selector files by hand.8788## CLI Device Memory8990- The CLI must be the source of remembered hardware. Do not rely on Web local storage, browser history, or project-local cache files for user workflows.91- Use the current released device commands:9293```bash94loadlynx devices95loadlynx device list96loadlynx device add --name <name>97loadlynx device add --usb-port <path> --name <name>98loadlynx device add --url http://<device-host-or-ip> --name <name>99loadlynx device use <id>100loadlynx device use --global <id>101loadlynx device use --clear102loadlynx device remove <id>103```104105- `loadlynx devices --json` and `loadlynx device list --json` expose the persisted device list plus the current global default.106- `loadlynx device add --usb-port <path> --name <name>` is the formal non-interactive path for saving a known USB serial port path. Use it in automation when the owner has specified the exact port.107- `loadlynx device add` without extra selectors is interactive; in non-interactive automation it fails by design. Do not fake around that with manual JSON edits.108- Prefer using a saved `--device <id>` target instead of repeatedly retyping hostnames or URLs.109110## LoadLynx Business Workflows111112- Treat transport selection as preparation only. The user-facing job is operating the LoadLynx electronic load and PD sink safely through released CLI commands.113- Identity and status:114115```bash116loadlynx devices117loadlynx status --device <id>118loadlynx status-stream --device <id> --interval-ms <ms> [--count <n>] --json119loadlynx control get --device <id>120```121122- `loadlynx status --device <id> --json` is the primary released read path for live telemetry, fault flags, link state, temperatures, voltage, current, power, and enable state.123- `loadlynx status-stream --device <id> --interval-ms <ms> --json` is the primary released continuous telemetry path for tests that need stable sample cadence. With `--json`, stdout is NDJSON: one compact JSON status sample per line for the whole sample stream. Diagnostics and final summaries belong on stderr, not stdout, so downstream collectors can parse stdout as pure NDJSON.124- `loadlynx control get --device <id> --json` reports the current mode, output-enabled state, active preset, and control snapshot.125- Electronic-load control:126127```bash128loadlynx cc <target_i_ma> --device <id> [--min-v-mv <mv>] [--max-i-ma-total <ma>] [--max-p-mw <mw>]129loadlynx cv <target_v_mv> --device <id> [--min-v-mv <mv>] [--max-i-ma-total <ma>] [--max-p-mw <mw>]130loadlynx cp <target_p_mw> --device <id> [--min-v-mv <mv>] [--max-i-ma-total <ma>] [--max-p-mw <mw>]131loadlynx cc <target_i_ma> --device <id> --disable132loadlynx cv <target_v_mv> --device <id> --disable133loadlynx cp <target_p_mw> --device <id> --disable134loadlynx control set --device <id> --enable135loadlynx control set --device <id> --disable136```137138- Use `--max-i-ma-total` and `--max-p-mw` as protection rails when running power tests.139- USB-PD operation:140141```bash142loadlynx pd set --device <id> --mode fixed --object-pos <n>143loadlynx pd set --device <id> --mode pps --target-mv <mv> --i-req-ma <ma>144```145146- Use `--allow-extended-voltage true|false` only when the user explicitly wants to cross the extended-voltage gate.147- Presets:148149```bash150loadlynx preset list --device <id>151loadlynx preset set --device <id> --file <file>152loadlynx preset apply --device <id> <preset_id>153```154155- Wi-Fi:156157```bash158loadlynx wifi show --device <id>159loadlynx wifi set --device <id> --ssid <ssid> --psk <psk> [--wait]160loadlynx wifi clear --device <id>161```162163- Never echo PSKs or secrets in chat, logs, screenshots, traces, or shell history.164- Wi-Fi writes must use an independent management path such as USB/devd. Do not use LAN HTTP, mDNS, a saved HTTP transport, "verified LAN", or an unsafe override to continue `wifi set` or `wifi clear`; bind/use USB/devd for the same device first.165- Firmware:166167```bash168loadlynx flash digital --device <id> --artifact <artifact>169loadlynx flash analog --device <id> --artifact <artifact>170```171172- The default flash path is dry-run first; `--no-dry-run` is the real flash gate.173- Real flash also requires `--confirm <target>` and `--acknowledge-non-project-firmware` when applicable. A successful flash command alone is not enough to claim the device is usable; verify identity and status afterward.174175## External USB-C Source Validation176177- Use LoadLynx as a generic validation sink for external USB-C source devices without embedding another project's workflow into this skill.178- Use a saved device target and prefer the saved USB/devd transport for operations that change LoadLynx state:179180```bash181loadlynx status --device <id> --json182loadlynx pd set --device <id> --mode fixed --object-pos <n>183loadlynx pd set --device <id> --mode pps --target-mv <mv> --i-req-ma <ma>184loadlynx cv <target_v_mv> --device <id> --max-i-ma-total <ma> --max-p-mw <mw>185loadlynx cv <target_v_mv> --device <id> --disable186```187188- `loadlynx pd set` is the PD sink stimulus path. `loadlynx cv <target_v_mv>` is the voltage-clamp load stimulus path for pushing a source device toward its current-limit or constant-current behavior.189- For external current-limit validation, treat the external DUT's own diagnostics as the primary verdict. LoadLynx terminal voltage, current, power, and PD contract state are auxiliary cross-checks that help explain the stimulus and observed operating point.190- A sink-side voltage drop during CV loading is not by itself a failure. If the external DUT reports that it is current-limiting as configured and has no relevant fault latch, the voltage drop can be expected evidence that the source entered constant-current regulation.191- Always disable the LoadLynx output after the run and verify status before claiming the setup is restored.192193## Download Released Firmware194195- Download firmware only from the chosen GitHub Release.196- Prefer a release-provided firmware catalog such as `loadlynx-firmware-catalog-v0.5.1.json`, plus the firmware files referenced by that catalog.197- Keep downloaded firmware and catalog files together in one user-owned folder so relative catalog paths can resolve.198199## Web Serial200201- GitHub Pages and release Web bundles are supported human browser paths for identity, status, control, Wi-Fi, diagnostics, and flash only when the browser exposes Web Serial.202- Web Serial saves identity/profile only and reconnects through browser-granted ports. It must not save OS port paths.203- Unsupported browsers must guide the user to Chrome/Edge or the released CLI/devd tools.204205## Escalate Out206207- Switch to `skills/loadlynx-developer-operations/SKILL.md` for source checkout, cloning, project builds, local devd builds, release workflow changes, probe or selector maintenance, HIL/debug sessions, or implementing missing CLI features.208- If a hardware operation is only available through Web UI and not through released `loadlynx`, stop and escalate to developer work to add and release the CLI capability.209- Do not use raw HTTP writes or source-tree commands to bypass missing released user functionality.210211## Safety Checks212213- Before enabling output, changing sink mode, or flashing firmware, verify the selected device identity and target.214- Treat command absence, link-down states, analog fault states, target mismatch, and hash mismatch as stop conditions.215- After changing settings, flashing, or configuring Wi-Fi, verify status and reconnect behavior before claiming success.