Agent Skill
@yoooclaw/cli ships a set of Skills (SKILL.md) — natural-language descriptions of "which yoooclaw commands to call, and when" — so an Agent can drive the CLI on its own without you teaching it step by step.
Difference from the plugin form
In the openclaw plugin, these Skills are auto-registered via the skills field in openclaw.plugin.json and loaded automatically when the host starts. The standalone CLI has no host to do this for it — the Skills are embedded in the CLI binary and need to be installed manually into the current Agent's skills discovery directory.
Built-in Skills
The CLI used to ship a separate Skill for notification queries and one per recording-processing workflow; with that many, they started competing for the same triggers. They've since been consolidated into a set of Skills split by routing role: queries all go through yoooclaw-context-query, recording processing all goes through yoooclaw-recordings-process, and every other domain gets exactly one. The old yoooclaw-notification-query, yoooclaw-recording-query, yoooclaw-recording-meeting-minutes, yoooclaw-recording-interview, yoooclaw-recording-entity-extraction, yoooclaw-recording-translation, yoooclaw-recording-mindmap, plus yoooclaw-lightrule-create (superseded by yoooclaw-light), are no longer shipped; running yoooclaw skills install --force after an upgrade also cleans up any of those old Skills you had installed.
As of CLI 0.12.0, 8 Skills ship with the package:
| Skill | Trigger scenario |
|---|---|
yoooclaw-context-query | The sole entry point for querying data already synced to this machine — notifications/messages ("check my recent notifications"), voice input / dictation history ("what did I just say"), recordings/transcripts ("what was said in the recording"), saved/synced web pages ("what did I bookmark in the last day"), images ("sync images"), and cross-source "where was X mentioned." Covers list / search / get / answer / summarize / statistics intents, pure disk reads, no daemon needed. Generic live-web-search or current-events requests are explicitly excluded and routed to a web-search tool instead. |
yoooclaw-recordings-process | Turns recordings/transcripts (or supplied text/files) into structured artifacts — meeting minutes, translation (with a two-stage glossary pass), Markdown mind maps, interview writeups, entity extraction. Shares one recording-source-location workflow and only loads the requested artifact branch. For recording lists, transcript lookup, content search, or existing summaries, use yoooclaw-context-query instead. |
yoooclaw-light | Device display and lights: show text/results on the hardware screen, light up once now or when a task finishes (light send), and manage persistent rules like "light up when I get some kind of notification" (lightrule *, compiled, evaluated and triggered by the cloud Notification Intelligence service; needs an account api-key). Replaces the old yoooclaw-lightrule-create. |
yoooclaw-todo | Query, view, create, edit, complete, reopen and delete personal todos (todo *). Used by default whenever the user talks about "schedule / todos / plans" generically, without naming a product; only when the user explicitly picks another platform does it defer to that platform. Deletion requires confirming the specific items. |
yoooclaw-notification-to-memory | "Learn about me from my notifications / save notifications to memory / continue learning" — distills notifications batch by batch (sync next) into a personal profile, daily records and long-term memory, and runs sync commit only after the host Agent's persistent memory write is read back successfully; if the host has no verifiable persistent memory, it stops rather than inventing a substitute in the working directory. |
yoooclaw-data-transfer | "I got a new computer, move my data / export a data package / import this transfer: taskId" — defaults to transfer export --via oss / transfer import --task, using local packages only when the user supplies one or asks for offline; packages are interchangeable with the OpenClaw plugin's ntf transfer. After an export it replies with only a privacy warning and one copyable import sentence. |
yoooclaw-media-generate | Image / video generation: text-to-image, image-to-image / editing, text-to-video, reference image + text video, first/last-frame video (2–30 s, 480P/720P/1080P), plus credit estimates and video task queries. Every new request confirms the spec, gets an estimate and this request's authorization before generating; video tasks are polled automatically, and results are saved by the script to media-results/ in the working directory with a ready-to-paste reply_markdown. The scripts only need the Python 3 standard library. |
yoooclaw-tunnel-debug | "Phone pushes aren't arriving / notifications aren't syncing / check the tunnel / is the daemon alive" — combines doctor / auth status / daemon status / tunnel status / tunnel +test / gateway test / daemon logs to self-check the local environment, daemon, ingest auth, and Relay WebSocket link. Most of these commands need the daemon running. |
yoooclaw-context-query splits its guidance into per-source reference docs (notifications / voice-input / recordings / web-pages / images) and only loads the one that matches; yoooclaw-recordings-process, yoooclaw-light and yoooclaw-data-transfer likewise split references by branch, so no Skill dumps every reference into context at once.
yoooclaw-media-generate carries a Stop hook (link_guard.py) that checks, before the Agent's final reply, that the media links in it match the script's real output, and asks for a rewrite with the correct links if they don't. Hosts don't guarantee a Skill-directory variable when running hooks, so skills install replaces the __YOOOCLAW_SKILL_DIR__ placeholder in SKILL.md with the Skill's absolute install path.
yoooclaw skills list # list the built-in Skills shipped with the package and their triggers
yoooclaw skills targets # see the supported Agent targets and detection resultsInstallation
yoooclaw skills install # auto-detect the single available Agent and install
yoooclaw skills install --agent codex
yoooclaw skills install --agent claude
yoooclaw skills install --target ~/.config/agent/skills --force| Flag | Description |
|---|---|
--agent <agent> | The target Agent to install into; supports auto / claude / codex / custom, default auto. |
--target <dir> | The target install directory; when passed, takes priority over auto-detection — suitable for any Agent compatible with the SKILL.md directory layout. |
--copy | Kept only for backward compatibility: Skills are embedded in the CLI binary and are always copied. |
--force | Overwrite if a Skill with the same name already exists at the target; otherwise it's skipped and reported under skipped. |
auto mode only auto-installs when exactly one Agent is detected. If both Claude Code and Codex are detected, or neither is, the CLI returns the candidate targets and requires you to explicitly pass --agent or --target, to avoid silently installing into the wrong host.
Default directories for the built-in Agents:
| Agent | Default skills directory |
|---|---|
claude | ~/.claude/skills |
codex | ${CODEX_HOME}/skills, or ~/.codex/skills if unset |
Reinstall Skills after upgrading
Skills are embedded in the native binary, and skills install copies them into the Agent's discovery directory — a snapshot of that version. After upgrading the CLI, run yoooclaw skills install --force once to refresh them and clean up merged old names, then restart the Agent session. Claude / Codex Skills installed by the WUYING installer also contain the CLI's absolute path; re-running the installer (--force) updates that too.
Once installed, restart the Agent session for it to be discovered. After that, just say something like "check my recent notifications," and the Agent will follow yoooclaw-context-query's guidance to call yoooclaw notification commands.
Idempotency and troubleshooting
- If you're not sure where it should be installed, first run
yoooclaw skills targetsto seedetectedandtarget. - In the output,
installedlists Skills newly installed or already in place this run;skippedlists ones skipped because they already exist (with a reason) — add--forceto overwrite. - If writing to the target fails with
YOOOCLAW_STORAGE_UNAVAILABLE(EPERM/EACCES), check the target directory's permissions or use--targetto pick a writable one.