Skills
Skills: managed vs workspace, gating rules, and config/env wiring
OpenClaw uses ''''AgentSkills''-compatible'' skill folders to teach the agent how to use tools. Each skill is a directory containing a ''SKILL.md'' with YAML frontmatter and instructions. OpenClaw loads ''bundled skills'' plus optional local overrides, and filters them at load time based on environment, config, and binary presence.
Locations and precedence
Skills are loaded from <strong>three</strong> places:
1. <strong>Bundled skills</strong>: shipped with the install (npm package or OpenClaw.app)
2. '<strong>'Managed/local skills'</strong>': '<code className="bg-white/10 px-1.5 py-0.5 rounded text-emerald-300 text-sm">'~/.openclaw/skills'</code>'
3. '<strong>'Workspace skills'</strong>': '<code className="bg-white/10 px-1.5 py-0.5 rounded text-emerald-300 text-sm">'<workspace>/skills'</code>'
If a skill name conflicts, precedence is:
''<workspace>/skills'' (highest) β ''~/.openclaw/skills'' β bundled skills (lowest)
Additionally, you can configure extra skill folders (lowest precedence) via
''skills.load.extraDirs'' in ''~/.openclaw/openclaw.json''.
Per-agent vs shared skills
In <strong>multi-agent</strong> setups, each agent has its own workspace. That means:
- ''Per-agent skills'' live in ''<workspace>/skills'' for that agent only.
- ''Shared skills'' live in ''~/.openclaw/skills'' (managed/local) and are visible
to <strong>all agents</strong> on the same machine.
- ''Shared folders'' can also be added via ''skills.load.extraDirs'' (lowest
precedence) if you want a common skills pack used by multiple agents.
If the same skill name exists in more than one place, the usual precedence
applies: workspace wins, then managed/local, then bundled.
Plugins + skills
Plugins can ship their own skills by listing ''skills'' directories in
''openclaw.plugin.json'' (paths relative to the plugin root). Plugin skills load
when the plugin is enabled and participate in the normal skill precedence rules.
You can gate them via ''metadata.openclaw.requires.config'' on the plugin's config
entry. See ''Plugins'' for discovery/config and ''Tools'' for the
tool surface those skills teach.
ClawHub (install + sync)
ClawHub is the public skills registry for OpenClaw. Browse at
https://clawhub.com. Use it to discover, install, update, and back up skills.
Full guide: ''ClawHub''.
Common flows:
- Install a skill into your workspace:
- ''clawhub install <skill-slug>''
- Update all installed skills:
- ''clawhub update --all''
- Sync (scan + publish updates):
- ''clawhub sync --all''
By default, ''clawhub'' installs into ''./skills'' under your current working
directory (or falls back to the configured OpenClaw workspace). OpenClaw picks
that up as ''<workspace>/skills'' on the next session.
Security notes
- Treat third-party skills as untrusted code. Read them before enabling.
- Prefer sandboxed runs for untrusted inputs and risky tools. See ''Sandboxing''.
- ''skills.entries.*.env'' and ''skills.entries.*.apiKey'' inject secrets into the ''host'' process
for that agent turn (not the sandbox). Keep secrets out of prompts and logs.
- For a broader threat model and checklists, see ''Security''.
Format (AgentSkills + Pi-compatible)
''SKILL.md'' must include at least:
Notes:
- We follow the AgentSkills spec for layout/intent.
- The parser used by the embedded agent supports <strong>single-line</strong> frontmatter keys only.
- ''metadata'' should be a ''single-line JSON object''.
- Use ''{baseDir}'' in instructions to reference the skill folder path.
- Optional frontmatter keys:
- ''homepage'' β URL surfaced as "Website" in the macOS Skills UI.
- ''user-invocable'' β ''true|false'' (default: ''true'').
- ''disable-model-invocation'' β ''true|false'' (default: ''false'').
Gating (load-time filters)
OpenClaw ''filters skills at load time'' using ''metadata'' (single-line JSON):
Fields under ''metadata.openclaw'':
- ''always: true'' β always include the skill (skip other gates).
- ''emoji'' β optional emoji used by the macOS Skills UI.
- ''homepage'' β optional URL shown as "Website" in the macOS Skills UI.
- ''os'' β optional list of platforms (''darwin'', ''linux'', ''win32'').
- ''requires.bins'' β list; each must exist on ''PATH''.
- ''requires.anyBins'' β list; at least one must exist on ''PATH''.
- ''requires.env'' β list; env var must exist ''or'' be provided in config.
- ''requires.config'' β list of ''openclaw.json'' paths that must be truthy.
- ''primaryEnv'' β env var name associated with ''skills.entries.<name>.apiKey''.
- ''install'' β optional array of installer specs used by the macOS Skills UI.
Config overrides
Bundled/managed skills can be toggled and supplied with env values:
Note: if the skill name contains hyphens, quote the key (JSON5 allows quoted keys).
Config keys match the <strong>skill name</strong> by default. If a skill defines
''metadata.openclaw.skillKey'', use that key under ''skills.entries''.
Rules:
- ''enabled'' (default: ''true'') β set to ''false'' to disable.
- ''apiKey'' β injected as ''primaryEnv'' (if set) or ''<SKILLNAME>_API_KEY''.
- ''env'' β map of additional env vars to inject.
- ''config'' β map of config values exposed to the skill.