- OpenClaw skills are self-contained modules that add tools, prompts, and behaviors to your agent without touching core config
- Each skill lives in its own directory with a SKILL.md manifest — the file that tells OpenClaw what the skill does and how to load it
- Skills install in under 60 seconds via the CLI; ClaWHub hosts hundreds of community-built skills ready to use
- Skill profiles let you group skills per agent — one agent for writing, another for coding, without loading everything at once
- As of early 2025, OpenClaw's skill system supports tool calling, prompt injection, context hooks, and scheduled execution
Your base OpenClaw agent can reason. It can answer questions. But it can't read your emails, browse the web, or trigger a GitHub action — not without skills. Skills are the extension layer that turns a capable assistant into an actual autonomous agent. I've been building and maintaining skills for production OpenClaw deployments since v1.2, and the difference between a bare agent and a skill-loaded one isn't incremental. It's fundamental.
What Skills Actually Are
A skill is a self-contained package that extends your OpenClaw agent. Think of it as a plugin — but with a precise structure the agent runtime understands. Each skill can do one or more of the following:
- Register new tools the agent can call during a conversation
- Inject system prompt fragments to shape agent behavior
- Define slash commands users can trigger directly
- Hook into context events like session start, message received, or cron schedules
The key difference from a simple script is that skills are declared — the agent knows they exist, what they can do, and when to use them. The model sees tool definitions and decides when to call them. You're not hard-coding behavior; you're expanding what the agent can choose to do.
As of early 2025, OpenClaw ships with around 15 built-in skills pre-installed. The ClaWHub registry lists over 400 community skills. And if none of those fit your exact need, the skill format is simple enough that you can write one in an afternoon.
How the Skill System Works
Understanding the internals here will save you debugging time later.
Skill Loading
At startup, OpenClaw scans the skills directory (default: ~/.openclaw/skills/) for any subdirectory containing a valid SKILL.md file. Each valid skill is loaded in alphabetical order by directory name. The manifest is parsed, tools are registered with the model provider's tool-calling interface, and any startup hooks run.
This happens before the first user message. The agent's first response already has full access to every loaded skill.
Tool Registration
Each tool defined in a skill gets registered as a JSON Schema definition that's sent to the model with every API call. The model sees tool names, descriptions, and parameter schemas. When the model decides to use a tool, it emits a tool-call JSON object. OpenClaw intercepts that, routes it to the appropriate skill handler, executes the underlying code, and feeds the result back to the model as a tool result message.
The whole cycle happens transparently. From the user's perspective, the agent just answered their question — but under the hood, it may have called your skill three times to build that answer.
The model decides when to call a tool based entirely on the tool's description string in the manifest. A vague description means the tool gets called at the wrong time — or never. Write descriptions that say exactly what the tool does, what it returns, and when to use it.
Installing Your First Skill
Let's install a real skill and see it work. The web-search skill is a good first choice — it's well-maintained, widely used, and demonstrates exactly how tool calling works in practice.
# Install from ClaWHub
openclaw skills install web-search
# Verify it loaded
openclaw skills list
# Output includes:
# web-search v2.1.0 Built-in · Web Search LOADED
Restart your agent session and ask it something that requires current information. You'll see it call the search tool automatically. No configuration needed.
We'll get to writing your own skills in a moment — but first you need to understand the directory structure, because that's where most people run into problems.
~/.openclaw/skills/
└── web-search/
├── SKILL.md ← the manifest (required)
├── search.sh ← the actual tool implementation
└── README.md ← optional, human documentation
The only required file is SKILL.md. Everything else is what the manifest points to.
OpenClaw loads skills at startup. Installing a skill won't affect a running session — you need to restart the agent process for new skills to appear. Run openclaw restart or kill and relaunch.
Managing Skills
Here are the CLI commands you'll use daily:
openclaw skills list— show all installed skills and their load statusopenclaw skills install [name]— install from ClaWHub by nameopenclaw skills install [path]— install from a local directoryopenclaw skills update— update all installed skills to latest versionsopenclaw skills remove [name]— uninstall a skillopenclaw skills info [name]— show full manifest and version info
Sound familiar? This mirrors how most package managers work — intentionally. The skill system is designed to feel like npm or brew, not like editing config files by hand.
Skill Profiles
Here's where most users leave performance on the table. Loading every skill into every agent session bloats the tool list and can confuse the model. A coding agent doesn't need the Gmail skill. A writing agent doesn't need the GitHub skill.
Skill profiles solve this. Create a profile file:
# ~/.openclaw/profiles/writing.yaml
name: writing
skills:
- web-search
- summarize
- obsidian
- grammar-check
# ~/.openclaw/profiles/coding.yaml
name: coding
skills:
- web-search
- github
- code-runner
- docs-lookup
Launch with a specific profile:
openclaw --profile writing
openclaw --profile coding
Each agent session loads only its assigned skills. Startup is faster, the tool list is focused, and the model makes better decisions about which tool to call.
Common Mistakes
Here's what breaks skill setups consistently:
- Installing skills but not restarting — the most common one. Skills don't hot-reload by default.
- Loading too many skills — the model's context window has limits. 40+ tool definitions eat context. Use profiles.
- Vague tool descriptions in custom skills — the model can't read your mind. Tell it exactly when to use each tool.
- Skill name conflicts — two skills with the same tool name, the second one wins. Check with
openclaw skills list --verbose. - Wrong skills directory permissions — OpenClaw needs read and execute access to skill files. Run
chmod -R 755 ~/.openclaw/skills/if tools fail silently.
Frequently Asked Questions
What is an OpenClaw skill?
An OpenClaw skill is a self-contained module that adds a capability to your agent. Each skill lives in its own directory with a SKILL.md manifest and optional tool code. Skills are loaded at agent startup and can be invoked by name during conversations.
How many skills can I install at once?
There is no hard cap, but loading more than 30–40 skills can slow agent initialization. Group skills into focused agent profiles and only load what each agent actually needs to keep startup times fast.
Can skills conflict with each other?
Yes, two skills that register the same tool name will conflict. OpenClaw loads skills in alphabetical order and the second definition wins. Rename conflicting skills or use namespaced tool names to avoid collisions.
Do skills work across all model providers?
Most skills work with any provider that supports tool calling. A few skills use provider-specific features — the SKILL.md manifest lists required provider capabilities so you know before installing.
Where are skills stored on disk?
By default, skills live in ~/.openclaw/skills/. You can override this path with the OPENCLAW_SKILLS_DIR environment variable or the skills_dir config key.
Can I write a skill in any language?
The SKILL.md manifest is always markdown, but the underlying tool code can call any executable on your system. Most community skills are shell scripts or Python, but Go, Node.js, and Ruby skills all exist in ClaWHub.
How do I update installed skills?
Run openclaw skills update to pull the latest version of all installed skills. For skills installed from ClaWHub, this also verifies the integrity hash against the registry entry.
A. Larsen has built and maintained over 30 production OpenClaw skills across multiple enterprise deployments. She's a regular contributor to ClaWHub and co-authored the OpenClaw skill development style guide used by the community.