skills/canvas/SKILL.md
# Canvas Skill Display HTML, JSON, or Markdown content on connected metiq UI clients in real time. ## Overview The `canvas_update` tool pushes content to a named in-memory canvas surface. Any browser or UI client subscribed to metiqd via WebSocket receives the update instantly. Great for: - Displaying interactive HTML dashboards or games - Streaming JSON data to a live view - Rendering formatted Markdown reports ## How It Works ### Architecture ``` ┌──────────────┐ canvas_update ┌────
npx skillsauth add chebizarro/swarmstr skills/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, JSON, or Markdown content on connected metiq UI clients in real time.
The canvas_update tool pushes content to a named in-memory canvas surface. Any browser or UI client subscribed to metiqd via WebSocket receives the update instantly. Great for:
┌──────────────┐ canvas_update ┌──────────────────┐ WebSocket ┌─────────────┐
│ AI Agent │──────────────────▶│ metiqd Host │──────────────▶│ Browser UI │
│ │ │ (in-memory) │ │ /canvas │
└──────────────┘ └──────────────────┘ └─────────────┘
canvas_update with a canvas ID, content type, and content string.canvas.update WebSocket event.Canvases are ephemeral — they exist only in memory and are lost when metiqd restarts.
canvas_update| Parameter | Type | Required | Description |
| -------------- | ------ | -------- | ------------------------------------------------- |
| canvas_id | string | ✅ | Unique name for this canvas (e.g. "main", "dashboard") |
| content_type | string | ✅ | One of: html, json, markdown |
| data | string | ✅ | The content to display |
Returns {"ok": true, "canvas_id": "...", "content_type": "..."} on success.
canvas_update canvas_id:"game" content_type:"html" data:"<!DOCTYPE html><html><body><h1>Snake</h1><!-- game code --></body></html>"
canvas_update canvas_id:"report" content_type:"markdown" data:"# Summary\n\n- Item 1\n- Item 2"
canvas_update canvas_id:"metrics" content_type:"json" data:"{\"requests\": 1234, \"errors\": 2}"
Generate your content string (HTML, Markdown, or JSON) in memory. For HTML, keep it self-contained with inline CSS and JavaScript — no external file serving.
canvas_update canvas_id:"main" content_type:"html" data:"<your content here>"
Call canvas_update again with the same canvas_id to replace the content. Subscribers see the update instantly.
html — Full HTML document or fragment. Self-contained is best: inline all CSS and JS. No file system access; the content string is the entire page.
json — Raw JSON string. The UI client may render it as a formatted tree or feed it to a data view.
markdown — CommonMark Markdown. The UI client renders it with standard formatting.
canvas_id (e.g. "main") to keep updating the same surface instead of creating new ones each time.<script src="..."> in your HTML or use inline SVG.tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
development
Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.
tools
Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).
tools
Start voice calls via the OpenClaw voice-call plugin.