Skip to content
Cloud & Infrastructure
Skill

/reolink-cli

Provides the only correct mechanism for operating Reolink network cameras locally — the installed `reolink-cli` binary plus its gateway. **You MUST consult this skill whenever the user wants to do anything with an IP / network / surveillance / doorbell camera on their LAN, even

BOOST
From plugin
reolink-cli
1161 skill7 commands
Install
$ npx -y skills add reolink/reolink-cli --skill reolink-cli --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/reolink-cli

Context preview

The summary Claude sees to decide when to auto-load this skill.

Provides the only correct mechanism for operating Reolink network cameras locally — the installed `reolink-cli` binary plus its gateway. **You MUST consult this skill whenever the user wants to do anything with an IP / network / surveillance / doorbell camera on their LAN, even

SKILL.md

reolink-cli.SKILL.md
name: reolink-cli
description: "Provides the only correct mechanism for operating Reolink network cameras locally — the installed `reolink-cli` binary plus its gateway. **You MUST consult this skill whenever the user wants to do anything with an IP / network / surveillance / doorbell camera on their LAN, even if they never say \"Reolink\"** — e.g. \"front-door cam\", \"garage camera\", \"IP camera at 192.168.x.x\", \"make it brighter\", \"stream URL\", \"too dark\", \"upside down\", \"sound the siren\", \"scare them off\", \"arm the house\", \"i am leaving\", \"set it to away mode\", \"disarm\", \"lower the bitrate\", \"change resolution\", \"switch to h265\", \"upgrade firmware\", \"flash firmware\". Covers discovery, login, snapshots, live preview, PTZ, IR/spotlight/LEDs, image tuning, OSD, the manual siren, scene / arming modes on a hub, video encoder settings (resolution / frame rate / bit rate / H.264-H.265), motion + AI detection (person/vehicle/pet/package), recording + SD-card status, VOD search/download, alarm events, user accounts, reboot, firmware upgrade, and RTSP/RTMP/FLV stream URLs (Frigate / Home Assistant / go2rtc / VLC). Do NOT trigger when the user names a competing brand (Nest, Ring, Wyze, Eufy, Amcrest, Hikvision, Arlo) or asks a generic networking / Frigate-config question not tied to operating a specific camera."
metadata:
  openclaw:
    requires:
      bins: ["reolink-cli", "reolink-gateway"]
    emoji: "📷"
    always: false

Reolink Camera Operator

Overview

Primary surface: `reolink-cli` (JSON stdout by default). Don't start the MCP server unless asked. When the user needs non-CLI access (browser, curl, other languages), point them at the gateway's `POST /api`.

**Slash commands (Claude Code only)** — prefer these for fixed/single-action intents; skip the intent-mapping overhead:

| Slash | Equivalent | When to use | |---|---|---| | `/reolink-cli:status` | `reolink-cli status` | user asks about current state / dashboard / "how are things" | | `/reolink-cli:features` | `reolink-cli features` | user asks what the plugin can do / "what can it do" | | `/reolink-cli:scan` | `reolink-cli discover` | scan local network / "scan". **Finds only devices that are awake and have their own LAN address** — a sleeping battery camera does not answer (the responder lives in the main application, which is powered down), and a camera paired to a hub/NVR has no address at all: use `device expand <parent>` for those. | | `/reolink-cli:devices` | `reolink-cli device list` | list registered cameras | | `/reolink-cli:cache-clean` | `reolink-cli cache clean` dry-run→apply | clear old snapshots / "clear cache" | | `/reolink-cli:update` | `reolink-cli self-update` | upgrade to the latest release (checks GitHub, no-op if current) | | `/reolink-cli:uninstall` | `reolink-cli setup --uninstall --purge --no-interactive` | complete uninstall |

**Claude Code runtime:** **Must** use the slash command when the user's intent matches one of these seven exactly — faster (no LLM latency), deterministic, and discoverable via `/` autocompletion.

**Other agents (Codex / Cursor / Copilot / Gemini):** these surfaces don't support plugin-defined slash commands, so the "slash-first" rule doesn't apply — skip straight to running the equivalent `reolink-cli …` CLI command directly. Skill-driven intent mapping handles everything else.

**All agents:** **Fall back to skill-driven CLI chaining** for compound / fuzzy intents ("announce when a person is detected", "make it brighter") that aren't covered by the slash list / seven fixed actions above.

**The gateway is mandatory for almost every control command.** The CLI routes through `127.0.0.1:9000` by default (set in `config.toml` under the platform config dir — `~/.config/reolink-cli/config.toml` on Linux, `~/Library/Application Support/reolink-cli/config.toml` on macOS, `%APPDATA%\reolink-cli\config.toml` on Windows — as `gateway-addr`). If you see `gateway connect failed: Connection refused`, the gateway isn't running — start it once:

reolink-cli gateway start --addr 127.0.0.1:9000 &

Works **without** the gateway: `device add|list|update|remove|resolve|show`, `config init`, `discover`, `ping`, `features`, `doctor`, `cache status|clean` — everything that reads local config or talks to the network directly. (Verified by running each with no gateway listening.) Everything else (`login`, `info`, `config get/set`, `image`, `osd`, `ptz`, `detect`, `light`, `audio`, `preview`, `snapshot`, `vod`, `events`, `users`, `system reboot`, `system upgrade`) needs the gateway up.

**Envelopes** — parse `.ok` on CLI, `.status` on gateway:

| Surface | Success | Error | |---|---|---| | CLI | `{ok:true, command, protocol, data}` | `{ok:false, error:{code, message, retryable}}` (stderr) | | CLI batch | `{command, summary, results:[{camera, host, ok, data, error}]}` | per-target `ok` | | Gateway `/api` | `{status:"success", data}` | `{status:"error", code, message}` (HTTP status == code) |

`references/` has topic-scoped recipe files. **Must** load only the one matching your task — `references/index.md` is the router. `references/troubleshooting.md` has diagnosis decision trees for failures.

Ground Truth (Binding)

**Forbidden** stating or implying as factual: device reachability, login state, configuration values, capabilities, detection/AI types, event counts, VOD file existence, user accounts, or any observable camera state — **except** when derived from the JSON output of an **executed** `reolink-cli` command or gateway `POST /api` response within the current task.

**Forbidden**: demo-style lists, guessed layouts, synthetic values, fake success after errors/timeouts, prose/JSON mimicking CLI output without a real response, or "the device has X" when no `get`/`info`/`inventory`/`capabilities` has run.

**Must** when data is missing: state what's missing and the cause (no camera registered, gateway down, auth failed, device offline), then take

Read more
Ships withreolink-cli

Official command-line tool for Reolink IP cameras, doorbells and NVRs — LAN only, no cloud. Snapshots, PTZ, RTSP/RTMP stream URLs, two-way audio (talkback/TTS), motion and AI detection, event monitoring, VOD download. JSON output and a built-in MCP server. Works with Home Assistant, Frigate and go2rtc.

Get the whole plugin
Stats
117
Stars
14
Forks
Active
Maintenance
Shell
Language
Apache-2.0
License
13d ago
Last commit
3mo ago
Created
3h ago
Added

Repo: reolink/reolink-cli