SKILL.md file with YAML frontmatter (metadata) and a markdown body (instructions for the LLM). Skills are loaded at runtime without restarting the gateway.
How it works
When the gateway starts, it reads allSKILL.md files from configured paths, parses each one, runs the security scanner, and registers those that pass. Skills that fail the scan are rejected with a log entry explaining why.
SKILL.md format
A skill file has two parts: YAML frontmatter and a markdown body.SKILL.md
Required fields
Optional fields (spaceduck extensions)
OpenClaw compatibility
spaceduck parses OpenClaw’s SKILL.md format natively. Unknown frontmatter fields (liketools, model, or provider) are silently preserved, never rejected. This means existing OpenClaw skills work out of the box.
Security scanner
Every skill is scanned before it enters the registry. The scanner checks four categories:
Skills with critical findings are rejected. Skills with only warning findings are loaded but flagged in logs.
Dangerous tool references are downgraded from critical to warning when the skill declares an explicit
toolAllow list, because tool scoping prevents the referenced tools from being available at runtime.Tool scoping
Skills declare which tools they need viatoolAllow. When a task runs with a skill, the agent loop only sees the tools that both the skill and the task permit.
The merge logic is:
- Allow lists: intersection (skill declares what it needs, task can further restrict)
- Deny lists: union (both contribute)
toolAllow: [web_search] can never access the browser, file system, or shell, regardless of what its instructions say.
Memory attribution
When a skill writes to memory (via thememory_update result route), the memory record includes both taskId and skillId in its provenance. This enables:
- Filtering memories by skill during recall
- Cascading purge on skill uninstall (all memories written by the skill are deleted)
- Auditing which skill produced which memories
First-party skills
spaceduck ships with three built-in skills in theskills/ directory:
Each has a conservative budget and an empty
toolAllow (no tool access).
Configuration
Skill settings live inspaceduck.config.json5 under the skills key. All settings hot-apply.
