OpenClaw Skills: The Complete Guide to Extending Your AI Agent
OpenClaw ships with basic chat. Skills turn it into something useful — web search, calendar integration, file management, CRM updates, and 10,000+ more. Here's how they work, which ones matter, and how to install them.
Out of the box, OpenClaw can chat. That's it. It receives messages, sends them to an AI model, and returns the response. Useful, but not much different from pasting into ChatGPT.
Skills are what make it an agent instead of a chatbot. A skill gives your agent the ability to do something — search the web, check a calendar, query a database, send an email, update a CRM. The agent decides when to use which skill based on the conversation.
OpenClaw's skill ecosystem (ClawHub) has over 10,000 published skills. Most are junk. Here's how to find the ones that matter and install them properly.
How skills work
A skill is a tool definition that tells the AI model: "You can call this function with these parameters, and it will do this thing."
When a user asks your bot "What's the weather in Amsterdam?", the AI model sees that a weather skill is available, calls it with location: "Amsterdam", gets the response, and formats it into a natural message.
The user never sees the function call. They just see the answer.
Skill types
| Type | What it does | Example |
|---|---|---|
| API skills | Call external APIs | Weather, stock prices, search |
| Data skills | Read/write data | File management, database queries |
| Integration skills | Connect to services | Slack, HubSpot, Google Calendar |
| System skills | Control the agent | Memory management, session handling |
| Custom skills | Your own logic | Business-specific functions |
Finding skills on ClawHub
ClawHub is OpenClaw's skill marketplace. Browse it from the CLI:
npx clawhub@latest explore
Or search for specific capabilities:
npx clawhub@latest search "web search"
npx clawhub@latest search "crm"
npx clawhub@latest search "calendar"
Skills worth installing
After testing hundreds of skills across our customer deployments, here are the ones that actually provide value:
For customer support bots:
| Skill | What it does | Why it matters |
|---|---|---|
web-search | Search the web in real-time | Answer questions about current info |
knowledge-base | Query your docs/FAQ | Answer product questions accurately |
ticket-create | Create support tickets | Escalate complex issues |
handoff | Transfer to human agent | When the bot can't help |
For personal assistants:
| Skill | What it does | Why it matters |
|---|---|---|
calendar | Read/create calendar events | Scheduling |
reminders | Set time-based reminders | Task management |
web-search | Search the web | Research and fact-checking |
notes | Save and retrieve notes | Persistent memory |
For business bots:
| Skill | What it does | Why it matters |
|---|---|---|
hubspot-suite | CRM read/write | Lead management |
email-send | Send emails | Notifications, follow-ups |
analytics | Query analytics data | Reporting |
spreadsheet | Read/write spreadsheets | Data management |
Skills to avoid
Not everything on ClawHub is production-ready:
exec-shell— Lets the agent run shell commands. Never enable this on a customer-facing bot. One prompt injection and someone is runningrm -rf /on your server.browser-automation— Lets the agent control a web browser. Resource-heavy, slow, and a security risk.file-system— Full filesystem access. Your agent doesn't need to read/etc/passwd.- Anything with 0 downloads and no docs — ClawHub doesn't curate aggressively. Check the source before installing.
Installing skills
Method 1: Config file (recommended)
Add skills to your OpenClaw configuration:
{
"skills": [
{
"name": "web-search",
"version": "latest",
"config": {
"provider": "brave",
"apiKey": "${BRAVE_SEARCH_API_KEY}"
}
},
{
"name": "knowledge-base",
"version": "1.2.0",
"config": {
"source": "./workspaces/main/docs/",
"format": "markdown"
}
}
]
}
Restart the container to load new skills:
docker compose restart
Method 2: CLI
openclaw skills install web-search
openclaw skills install [email protected]
This modifies the config file and installs the skill. You still need to restart for it to take effect.
Method 3: Workspace file
Some skills can be enabled by adding a file to your workspace:
# workspaces/main/skills.json
{
"enabled": ["web-search", "knowledge-base"],
"disabled": ["exec-shell", "browser-automation"]
}
Configuring skill permissions
Just because a skill is installed doesn't mean your agent should use it freely. Set permissions:
{
"tools": {
"profile": "messaging",
"exec": { "security": "deny" },
"elevated": { "enabled": false },
"allowList": [
"web-search",
"knowledge-base",
"ticket-create"
]
}
}
The allowList means ONLY these skills are available. Everything else is blocked, even if installed.
Use deny lists for broad permissions, allow lists for restrictive permissions. For customer-facing bots, always use an allow list.
Building custom skills
If the skill you need doesn't exist, build it:
// skills/check-order-status/index.js
module.exports = {
name: 'check-order-status',
description: 'Look up the status of a customer order by order number',
parameters: {
type: 'object',
properties: {
orderNumber: {
type: 'string',
description: 'The order number (e.g., ORD-12345)'
}
},
required: ['orderNumber']
},
async execute({ orderNumber }) {
const response = await fetch(`https://api.yourstore.com/orders/${orderNumber}`, {
headers: { 'Authorization': `Bearer ${process.env.STORE_API_KEY}` }
});
const order = await response.json();
return {
status: order.status,
estimatedDelivery: order.estimated_delivery,
trackingUrl: order.tracking_url
};
}
};
Place it in your workspace and reference it in the config:
{
"skills": [
{
"name": "check-order-status",
"path": "./workspaces/main/skills/check-order-status"
}
]
}
Custom skills are where OpenClaw becomes truly powerful. Your bot isn't just chatting — it's querying your database, checking inventory, creating orders, whatever your business needs.
Skill management at scale
When you're running multiple agents (or agents for multiple customers), skill management becomes work:
- Each agent needs its own skill config
- API keys for skills need to be managed per-agent
- Skill versions need to be tracked and updated
- Broken skills need debugging (was it the skill or the model?)
For a single bot, editing JSON files via SSH is fine. For 5+ bots, it's a maintenance burden.
# The skill management workflow for self-hosters:
ssh root@your-server
cd /opt/openclaw
nano config/openclaw.json # Edit skill config
docker compose restart # Restart to load changes
docker logs openclaw-main # Check for errors
# Repeat for every agent, every server, every update
That's 4 commands per change. Not terrible — but it adds up across agents and gets error-prone with complex configs.
ClawPort includes a visual skill manager — browse ClawHub, install with one click, configure with a form, and see which skills each agent is using at a glance. No SSH, no JSON editing, no restarts. Set up your agent →
Ready to deploy your AI agent?
Get started with ClawPort in 60 seconds. No credit card required.
Get Started FreeRelated Articles
Your First OpenClaw Skill: Build It, Test It, Ship It (Under 30 Minutes)
The step-by-step approach that works: build one skill at a time, test it in production, then move to the next. Proven by teams automating 60% of their workload.
Add an AI Chatbot to Your Shopify Store (Without Apps)
How to connect an OpenClaw agent to your Shopify store for product recommendations, order tracking, and FAQ automation — without paying $50/month for a chatbot app.
How to Migrate From ChatGPT Assistants API to OpenClaw
Why developers are moving away from the OpenAI Assistants API, a full feature comparison, and step-by-step migration guide — including conversation history, file search, and function calling.
Build an AI Appointment Booking Agent (Google Calendar + OpenClaw)
How to build an AI agent that checks availability, books appointments, and sends confirmations using Google Calendar — ideal for service businesses, coaches, and consultants.