Back to blog
tutorialskillsopenclaw

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.

By ClawPort Team

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

TypeWhat it doesExample
API skillsCall external APIsWeather, stock prices, search
Data skillsRead/write dataFile management, database queries
Integration skillsConnect to servicesSlack, HubSpot, Google Calendar
System skillsControl the agentMemory management, session handling
Custom skillsYour own logicBusiness-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:

SkillWhat it doesWhy it matters
web-searchSearch the web in real-timeAnswer questions about current info
knowledge-baseQuery your docs/FAQAnswer product questions accurately
ticket-createCreate support ticketsEscalate complex issues
handoffTransfer to human agentWhen the bot can't help

For personal assistants:

SkillWhat it doesWhy it matters
calendarRead/create calendar eventsScheduling
remindersSet time-based remindersTask management
web-searchSearch the webResearch and fact-checking
notesSave and retrieve notesPersistent memory

For business bots:

SkillWhat it doesWhy it matters
hubspot-suiteCRM read/writeLead management
email-sendSend emailsNotifications, follow-ups
analyticsQuery analytics dataReporting
spreadsheetRead/write spreadsheetsData 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 running rm -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 Free