🎧
Listen to this article

1. What Is OpenClaw?

OpenClaw is an open-source, self-hosted AI agent framework. It runs a Gateway daemon on your machine that connects to your messaging apps — Telegram, WhatsApp, Discord, Slack, Signal, iMessage — and turns them into interfaces for an always-available AI assistant.[1]

What makes OpenClaw different from ChatGPT or other cloud AI services:

But out of the box, OpenClaw is a generalist. It can read files, run commands, and chat. To make it truly powerful — controlling your smart lights, managing your email, ordering food, generating images — you need Skills.

2. What Are Skills?

Skills are modular, self-contained capability packages that extend what your OpenClaw agent can do. Think of them like plugins, but designed for AI agents rather than traditional software.

Each skill is a folder containing:

The key insight: skills are declarative, not imperative. The SKILL.md file doesn't contain code that runs automatically — it contains knowledge that the agent reads and applies when relevant. It's like giving someone a manual rather than a script to execute blindly.

Skills can require:

💡 Why this approach works Because skills are just markdown + scripts, they're incredibly flexible. The AI agent reads the SKILL.md in context and applies its own reasoning. This means skills can handle edge cases, combine with other skills, and adapt to situations that rigid plugin APIs can't.

3. How Skills Work (Technical)

Skill Structure

Every skill lives in a folder under the skills directory. Here's the anatomy of a typical skill:

skills/
  weather/
    SKILL.md          # Agent-readable instructions
    scripts/
      get_weather.sh  # Helper scripts (optional)
    assets/
      config.json     # Templates or config (optional)

The SKILL.md file is the heart of every skill. It follows a consistent structure:

---
name: weather
description: Get current weather and forecasts (no API key required).
homepage: https://wttr.in/:help
metadata:
  openclaw:
    emoji: "🌤️"
    requires:
      bins: ["curl"]
---

# Weather

Two free services, no API keys needed.

## wttr.in (primary)

Quick one-liner:

```bash
curl -s "wttr.in/London?format=3"
# Output: London: ⛅️ +8°C
```

How Skills Load

When your agent starts a session, OpenClaw scans the skills directory and loads the frontmatter metadata from each SKILL.md. This gives the agent a manifest of available capabilities without loading the full content of every skill into the context window.

When the agent encounters a task that matches a skill's description — for example, "what's the weather in Berlin?" — it reads the full SKILL.md and follows the instructions. This lazy-loading approach keeps the context window efficient.

The flow looks like:

User: "What's the weather in Vienna?" │ ▼ Agent scans skill manifests → matches "weather" skill │ ▼ Agent reads weather/SKILL.md for full instructions │ ▼ Agent runs: curl -s "wttr.in/Vienna?format=j1" │ ▼ Agent formats response for user

Metadata & Dependencies

The frontmatter metadata block tells OpenClaw what a skill needs to function:

FieldPurposeExample
requires.binsCLI tools that must be installed["ffmpeg", "curl"]
requires.anyBinsAt least one of these must exist["spogo", "spotify_player"]
requires.envRequired environment variables["OPENAI_API_KEY"]
requires.configOpenClaw config keys that must be set["channels.discord"]
primaryEnvMain API key for the skill"ELEVENLABS_API_KEY"
osSupported operating systems["darwin"]
installAuto-install recipesHomebrew, npm, Go, pip, etc.

The install block is particularly clever — it gives OpenClaw recipes to automatically install missing dependencies. Each recipe specifies the package manager, package name, and resulting binary:

install:
  - id: brew
    kind: brew
    formula: steipete/tap/camsnap
    bins: ["camsnap"]
    label: "Install camsnap (brew)"
  - id: go
    kind: go
    module: "github.com/steipete/camsnap@latest"
    bins: ["camsnap"]
    label: "Install camsnap (go)"

4. The ClawHub Marketplace

ClawHub (clawhub.ai) is the community marketplace for OpenClaw skills. Think of it as npm or the VS Code marketplace, but for AI agent capabilities.

What ClawHub offers:

The ClawHub CLI integrates directly with OpenClaw:

# Install the ClawHub CLI
npm install -g clawhub

# Search for skills
clawhub search weather

# Install a skill
clawhub install weather

# Update all installed skills
clawhub update

# Publish your own skill
clawhub publish ./my-skill
🌐 Visit ClawHub Browse available skills at clawhub.ai. The marketplace is growing rapidly with community contributions across messaging, productivity, smart home, media, and developer categories.

5. Top Skills Available Today

OpenClaw ships with 50+ bundled skills covering messaging, productivity, media, smart home, and developer tooling. Here are the highlights by category:

Messaging & Chat

🫧 BlueBubbles (iMessage)

Send and manage iMessages via BlueBubbles — texts, tapbacks, group management, and media. The recommended iMessage integration for OpenClaw.

Requires: channels.bluebubbles config

📱 wacli (WhatsApp)

Send WhatsApp messages, search history, and sync conversations via the wacli CLI. Useful for sending messages to people outside your OpenClaw channels.

Install: brew install steipete/tap/wacli

🎮 Discord

Full Discord control — send messages, react, polls, threads, pins, channel management, bot presence, and moderation actions.

Requires: channels.discord config

💬 Slack

React to messages, manage pins, send/edit/delete, and fetch member info in Slack workspaces.

Requires: channels.slack config

Productivity

📧 Himalaya (Email)

Full email management via IMAP/SMTP — list, read, write, reply, forward, search, and organize emails. Supports multiple accounts.

Install: brew install himalaya

🎮 gog (Google Workspace)

Gmail, Calendar, Drive, Contacts, Sheets, and Docs — all from the command line. The Swiss Army knife for Google Workspace.

Install: brew install steipete/tap/gogcli

📝 Apple Notes

Create, view, edit, delete, search, move, and export Apple Notes via the memo CLI. macOS only.

Install: brew install antoniorodr/memo/memo

Things 3

Manage Things 3 tasks — add, update, complete, list inbox/today/upcoming, search, and inspect projects. macOS only.

Install: go install github.com/ossianhempel/things3-cli/cmd/things@latest

📋 Trello

Manage Trello boards, lists, and cards via the REST API. Create, move, assign, and track tasks.

Requires: TRELLO_API_KEY, TRELLO_TOKEN

Media & Audio

🗣️ sag (ElevenLabs TTS)

High-quality text-to-speech via ElevenLabs with mac-style say UX. Generate voiceovers, narration, and audio content.

Install: brew install steipete/tap/sag

🎵 Spotify Player

Terminal Spotify playback and search via spogo. Control playback, search tracks, manage playlists.

Install: brew install steipete/tap/spogo

🎙️ OpenAI Whisper

Local speech-to-text transcription — no API key needed. Runs Whisper models locally for privacy.

Install: brew install openai-whisper

🖼️ OpenAI Image Gen

Batch-generate images via OpenAI's Images API. Random prompt sampler plus HTML gallery output.

Requires: OPENAI_API_KEY

🍌 Nano Banana Pro (Gemini Image)

Generate and edit images via Google's Gemini 3 Pro Image model.

Requires: GEMINI_API_KEY

Smart Home & IoT

💡 OpenHue (Philips Hue)

Control Philips Hue lights and scenes — turn on/off, set colors, brightness, activate scenes.

Install: brew install openhue/cli/openhue-cli

🔊 Sonos CLI

Control Sonos speakers — discover, play, pause, volume, grouping, and room management.

Install: go install github.com/steipete/sonoscli/cmd/sonos@latest

🎛️ Eight Sleep

Control Eight Sleep pods — temperature, alarms, schedules, and sleep tracking.

Install: go install github.com/steipete/eightctl/cmd/eightctl@latest

📸 CamSnap

Capture frames and clips from RTSP/ONVIF security cameras. Snap, record, and monitor.

Install: brew install steipete/tap/camsnap

Developer Tools

🐙 GitHub

Full GitHub integration via gh CLI — issues, PRs, CI runs, code review, and API queries.

Install: brew install gh

🧩 Coding Agent

Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent in background processes for complex programming tasks.

Requires: claude, codex, opencode, or pi CLI

📦 MCPorter (MCP)

List, configure, authenticate, and call MCP (Model Context Protocol) servers and tools directly.

Install: npm install -g mcporter

🧾 Summarize

Summarize or extract text/transcripts from URLs, podcasts, YouTube videos, and local files.

Install: brew install steipete/tap/summarize

6. How to Install Skills

Method 1: ClawHub CLI (Recommended)

The easiest way to add skills is through ClawHub:

# Install a skill from ClawHub
clawhub install weather

# Install multiple skills at once
clawhub install weather spotify-player openhue

# Update all installed skills to latest versions
clawhub update

# Check what's installed
clawhub list

Method 2: Manual Installation

Skills are just folders — you can download or create them manually:

# Clone a skill from GitHub
git clone https://github.com/example/my-skill.git \
  ~/.openclaw/agents/main/skills/my-skill

# Or create a symlink
ln -s /path/to/my-skill \
  ~/.openclaw/agents/main/skills/my-skill

Setting Up Dependencies

After installing a skill, check its requirements:

  1. Install required binaries — The SKILL.md metadata lists what's needed. OpenClaw can often auto-install via Homebrew, npm, Go, or pip.
  2. Set API keys — Add required environment variables to your .env file or openclaw.json:
    # In ~/.openclaw/.env
    ELEVENLABS_API_KEY=sk-...
    OPENAI_API_KEY=sk-...
    GOOGLE_PLACES_API_KEY=AIza...
  3. Configure channels — Some skills (Discord, Slack) require channel configuration in openclaw.json

Testing a Skill

After installation, just message your agent with a relevant request:

# Weather skill
You: "What's the weather in Tokyo?"

# Spotify skill
You: "Play some jazz on Spotify"

# Hue skill
You: "Turn the living room lights to warm white at 50%"

If the skill isn't working, check:

7. Building Your Own Skills

Building a skill is straightforward — you're writing a manual for your AI agent.

Step 1: Create the Folder Structure

mkdir -p ~/.openclaw/agents/main/skills/my-skill/scripts
touch ~/.openclaw/agents/main/skills/my-skill/SKILL.md

Step 2: Write the SKILL.md

Start with the frontmatter metadata, then write clear instructions:

---
name: my-skill
description: One-line description of what this skill does.
homepage: https://example.com
metadata:
  openclaw:
    emoji: "🔧"
    requires:
      bins: ["my-tool"]
    install:
      - id: brew
        kind: brew
        formula: my-tool
        bins: ["my-tool"]
        label: "Install my-tool (brew)"
---

# My Skill

## Overview
What this skill does and when to use it.

## Setup
One-time configuration steps.

## Usage
Step-by-step instructions with examples.

## Examples
```bash
my-tool --action do-something --input "example"
```

Step 3: Add Helper Scripts (Optional)

If your skill needs complex logic, add scripts:

#!/bin/bash
# scripts/do-something.sh
# Called by the agent when it needs to perform the action

INPUT="$1"
my-tool process --input "$INPUT" --format json

Step 4: Test Locally

Restart your Gateway and test by asking your agent to use the skill. Watch the agent's reasoning to ensure it finds and follows your SKILL.md correctly.

Step 5: Publish to ClawHub

# Publish your skill
clawhub publish ./my-skill

# Update an existing published skill
clawhub publish ./my-skill --update
✅ Tips for Great Skills
  • Be specific — Tell the agent exactly what commands to run and what output to expect
  • Include examples — Real command examples with expected output help the agent learn
  • Handle errors — Document common failure modes and how to recover
  • Keep it focused — One skill, one capability. Don't try to do everything
  • Test with multiple models — Different LLMs may interpret instructions differently

References

  1. OpenClaw Documentation — docs.openclaw.ai
  2. OpenClaw GitHub Repository — github.com/openclaw/openclaw
  3. ClawHub Marketplace — clawhub.ai
  4. OpenClaw Skill Creator Documentation — Bundled skill-creator SKILL.md
  5. OpenClaw Discord Community — discord.com/invite/clawd
🛡️ No Third-Party Tracking