skill-candidates/canvas/SKILL.md
Present, navigate, snapshot, and hide HTML content on connected OpenClaw nodes (Mac, iOS, Android) via the canvas tool. Use when displaying games, visualizations, dashboards, or interactive demos on remote node canvas views, or when debugging canvas URL routing across loopback, LAN, and Tailscale bind modes.
npx skillsauth add grtninja/skill-arbiter canvasInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Display HTML content on connected OpenClaw nodes via the canvas host server (port 18793) and node bridge (port 18790).
~/clawd/canvas/ is a common default, but verify the actual canvasHost.root on the target host before assuming it.lsof -i :18793
cat ~/.openclaw/openclaw.json | jq '.gateway.bind'
loopback: http://127.0.0.1:18793/__openclaw__/canvas/<file>.htmllan/tailnet/auto: http://<hostname>:18793/__openclaw__/canvas/<file>.htmlopenclaw nodes list
canvas action:present node:<node-id> target:<full-url>
localhost or a Unix-style path layout on every machine.| Action | Description |
| ---------- | ------------------------------------ |
| present | Show canvas with optional target URL |
| hide | Hide the canvas |
| navigate | Navigate to a new URL |
| eval | Execute JavaScript in the canvas |
| snapshot | Capture screenshot of canvas |
In ~/.openclaw/openclaw.json, enable canvasHost with a root directory and optional liveReload (auto-refreshes connected canvases on file change). The gateway.bind setting (loopback, lan, tailnet, auto) controls which interface the server binds to and which hostname nodes receive.
Treat the path and shell commands in this doc as OpenClaw-oriented examples, not a universal host contract.
See references/canvas-debugging.md for common issues: white screen (URL mismatch), "node required" errors, "node not connected", and live reload failures.
tools
Run a defender-first security sweep on code, configs, prompts, model/tooling surfaces, or third-party contribution lanes. Use when a request involves safe bug, leak, zero-day-class, exploit, or hack hunting for protection, when contributing to outside repositories and you want a focused security pass, or when touching auth, secrets, permissions, network exposure, prompt/tool boundaries, data flow, or update/build surfaces. This skill is defensive only and must never be used for weaponization or unauthorized access.
development
Validate and repair VRM Sandbox startup acceptance with shim-first local model authority, frontend/backend bring-up, and avatar-runtime launch proof. Use when launch behavior, chat handoff, voice fallback, or runtime bridge acceptance must be verified end to end.
documentation
Align documented voice-command catalogs, endpoint action allowances, and live runtime handlers so operator-visible voice surfaces match what the stack can actually execute. Use when voice command docs, parser matrices, endpoint permissions, or runtime action routing drift apart.
development
Track SkillHub trend and topic drift, maintain a bounded rewrite watchlist, and surface emerging gaps worth turning into repo-owned skills. Use when the marketplace query set shows new families or when the current shortlist has gone stale.