openclaw - 💡(How to fix) Fix `canvas` skill SKILL.md has no YAML frontmatter — skill is unreachable by description-based resolution [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

The shipped canvas AgentSkill is missing its YAML frontmatter block. SKILL.md starts directly with a markdown # Canvas Skill heading instead of ---\nname: canvas\ndescription: ...\n---. This makes the skill structurally invalid: the resolver has no name and no description to match user intent against, so the skill cannot be triggered by natural-language requests like "display this on the canvas" or "show this HTML on my node."

The body of the SKILL.md is informative and well-written — this is purely a frontmatter omission.

Error Message

ERROR [discoverability] canvas: frontmatter missing name ERROR [discoverability] canvas: frontmatter missing description

Root Cause

The shipped canvas AgentSkill is missing its YAML frontmatter block. SKILL.md starts directly with a markdown # Canvas Skill heading instead of ---\nname: canvas\ndescription: ...\n---. This makes the skill structurally invalid: the resolver has no name and no description to match user intent against, so the skill cannot be triggered by natural-language requests like "display this on the canvas" or "show this HTML on my node."

The body of the SKILL.md is informative and well-written — this is purely a frontmatter omission.

Fix Action

Fixed

Code Example

head -3 "$(npm root -g)/openclaw/skills/canvas/SKILL.md"

---

---
name: canvas
description: <what it does> Use when <triggers>...
---

---

# Canvas Skill

Display HTML content on connected OpenClaw nodes (Mac app, iOS, Android).

---

---
name: canvas
description: Display HTML content (games, visualizations, dashboards, generated pages, interactive demos) on connected OpenClaw nodes (Mac app, iOS, Android) via a Tailscale-backed canvas host. Use when the user asks to show, render, present, or push HTML/web content to a node's canvas view, or wants to surface generated visualizations on a paired device.
---

---

ERROR [discoverability] canvas: frontmatter missing `name`
ERROR [discoverability] canvas: frontmatter missing `description`
RAW_BUFFERClick to expand / collapse

Summary

The shipped canvas AgentSkill is missing its YAML frontmatter block. SKILL.md starts directly with a markdown # Canvas Skill heading instead of ---\nname: canvas\ndescription: ...\n---. This makes the skill structurally invalid: the resolver has no name and no description to match user intent against, so the skill cannot be triggered by natural-language requests like "display this on the canvas" or "show this HTML on my node."

The body of the SKILL.md is informative and well-written — this is purely a frontmatter omission.

Reproduction

  1. Install OpenClaw via npm: npm i -g openclaw
  2. Inspect the bundled canvas skill:
    head -3 "$(npm root -g)/openclaw/skills/canvas/SKILL.md"
  3. Observe the file begins with # Canvas Skill, not ---.

Expected first lines:

---
name: canvas
description: <what it does> Use when <triggers>...
---

Actual first lines:

# Canvas Skill

Display HTML content on connected OpenClaw nodes (Mac app, iOS, Android).

Impact

  • The skill is invisible to the resolver. Users asking the agent to display HTML / dashboards / games on a connected node won't get the canvas skill matched even though the capability exists.
  • The skill can still be invoked by direct path read, but that requires the user (or the agent) to already know the skill exists — defeating progressive disclosure.
  • This is the classic "dark skill" failure mode: capability shipped, capability unreachable.

Suggested fix

Add a frontmatter block at the top of skills/canvas/SKILL.md. Proposed content (preserves the existing body):

---
name: canvas
description: Display HTML content (games, visualizations, dashboards, generated pages, interactive demos) on connected OpenClaw nodes (Mac app, iOS, Android) via a Tailscale-backed canvas host. Use when the user asks to show, render, present, or push HTML/web content to a node's canvas view, or wants to surface generated visualizations on a paired device.
---

How this was discovered

Running a workspace-side skill audit script that walks all SKILL.md files under ~/.openclaw/workspace/skills/, ~/.nvm/.../openclaw/skills/, and ~/.openclaw/plugin-skills/. The audit flagged two errors on canvas:

ERROR [discoverability] canvas: frontmatter missing `name`
ERROR [discoverability] canvas: frontmatter missing `description`

It was the only skill across 54 audited that lacked frontmatter entirely.

Related suggestion

A small CI check in this repo that validates frontmatter presence (name + description) on every shipped SKILL.md would prevent regression. Roughly 30 lines of Node.

Environment

  • OpenClaw: latest from npm as of 2026-05-17
  • Node: v24.13.0
  • OS: macOS 25.4.0 (arm64)

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix `canvas` skill SKILL.md has no YAML frontmatter — skill is unreachable by description-based resolution [1 pull requests]