Skills teach the agent how and when to use tools. Each skill is a directory containing aDocumentation Index
Fetch the complete documentation index at: https://openclaw.ai2me.io/llms.txt
Use this file to discover all available pages before exploring further.
SKILL.md file with YAML frontmatter and markdown instructions.
OpenClaw loads skills from several roots in a defined precedence order.
Create your first skill
Create the skill directory
Skills live in your workspace You can group skills in subfolders for organization — the skill is still
named by the
skills/ folder. Create a directory for your
new skill:SKILL.md frontmatter, not the folder path:Write SKILL.md
Create OpenClaw watches
SKILL.md inside the directory. The frontmatter defines metadata;
the body gives the agent instructions.SKILL.md files under skills roots by default. If the
watcher is disabled or you are continuing an existing session, start a new
one so the agent receives the refreshed list:SKILL.md reference
Required fields
| Field | Description |
|---|---|
name | Unique slug using lowercase letters, digits, and hyphens |
description | One-line description shown to the agent and in discovery output |
Optional frontmatter keys
| Field | Default | Description |
|---|---|---|
user-invocable | true | Expose the skill as a user slash command |
disable-model-invocation | false | Keep the skill out of the agent’s system prompt (still runs via /skill) |
command-dispatch | — | Set to tool to route the slash command directly to a tool, bypassing the model |
command-tool | — | Tool name to invoke when command-dispatch: tool is set |
command-arg-mode | raw | For tool dispatch, forwards the raw args string to the tool |
homepage | — | URL shown as “Website” in the macOS Skills UI |
requires.bins, requires.env, etc.) see
Skills — Gating.
Using {baseDir}
Use {baseDir} in the skill body to reference files inside the skill
directory without hardcoding paths:
Adding conditional activation
Gate your skill so it only loads when its dependencies are available:Gating options
Gating options
| Key | Description |
|---|---|
requires.bins | All binaries must exist on PATH |
requires.anyBins | At least one binary must exist on PATH |
requires.env | Each env var must exist in the process or config |
requires.config | Each openclaw.json path must be truthy |
os | Platform filter: ["darwin"], ["linux"], ["win32"] |
always | Set true to skip all gates and always include the skill |
Environment and API keys
Environment and API keys
Wire an API key to a skill entry in The key is injected into the host process for that agent turn only.
It does not reach the sandbox — see
sandboxed env vars.
openclaw.json:Propose via Skill Workshop
For agent-drafted skills or when you want operator review before a skill goes live, use Skill Workshop proposals instead of writingSKILL.md directly.
--proposal-dir when the proposal includes support files:
PROPOSAL.md. Support files can go in assets/,
examples/, references/, scripts/, or templates/.
After review:
Publishing to ClawHub
Ensure your SKILL.md is complete
Make sure
name, description, and any metadata.openclaw gating fields
are set. Add a homepage URL if you have a project page.Install the ClawHub skill
The ClawHub skill documents the current publish command shape and required
metadata:
Publish
Best practices
Related
Skills reference
Loading order, gating, allowlists, and SKILL.md format.
Skill Workshop
Proposal queue for agent-drafted skills.
Skills config
Full
skills.* config schema.ClawHub
Browse and publish skills on the public registry.
Building plugins
Plugins can ship skills alongside the tools they document.