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:
- Persistent memory — Your agent remembers conversations, decisions, and context across sessions
- Real tools — File system access, shell commands, web browsing, API calls
- Scheduling — Cron jobs and heartbeats for background automation
- Multi-channel — One agent, all your messaging platforms
- Sub-agents — Spawn background workers for parallel tasks
- Model-agnostic — Anthropic, OpenAI, Google, Ollama, OpenRouter, and more
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:
- SKILL.md — A markdown file that tells the agent what the skill does, when to use it, and how to use it
- scripts/ — Optional helper scripts the agent can execute
- assets/ — Optional configuration files, templates, or other resources
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:
- CLI tools — Binaries that need to be installed (e.g.,
ffmpeg,gh,himalaya) - API keys — Environment variables for service authentication
- Platform support — Some skills are macOS-only (Apple Notes, Things 3) or require specific hardware
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:
Metadata & Dependencies
The frontmatter metadata block tells OpenClaw what a skill needs to function:
| Field | Purpose | Example |
|---|---|---|
requires.bins | CLI tools that must be installed | ["ffmpeg", "curl"] |
requires.anyBins | At least one of these must exist | ["spogo", "spotify_player"] |
requires.env | Required environment variables | ["OPENAI_API_KEY"] |
requires.config | OpenClaw config keys that must be set | ["channels.discord"] |
primaryEnv | Main API key for the skill | "ELEVENLABS_API_KEY" |
os | Supported operating systems | ["darwin"] |
install | Auto-install recipes | Homebrew, 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:
- Browse & search — Find skills by category, popularity, or keyword
- One-command install —
clawhub install <skill-name> - Version management — Skills are versioned; update with
clawhub update - Community contributions — Anyone can publish skills
- Quality signals — Download counts, ratings, and verified publishers
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
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:
- Install required binaries — The SKILL.md metadata lists what's needed. OpenClaw can often auto-install via Homebrew, npm, Go, or pip.
- Set API keys — Add required environment variables to your
.envfile oropenclaw.json:# In ~/.openclaw/.env ELEVENLABS_API_KEY=sk-... OPENAI_API_KEY=sk-... GOOGLE_PLACES_API_KEY=AIza... - 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:
- Is the skill folder in the right location? (
~/.openclaw/agents/main/skills/) - Are the required binaries installed? Run the binary name directly to check.
- Are API keys set? Check with
echo $API_KEY_NAME - Restart the Gateway:
openclaw gateway restart
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
- 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
- OpenClaw Documentation — docs.openclaw.ai
- OpenClaw GitHub Repository — github.com/openclaw/openclaw
- ClawHub Marketplace — clawhub.ai
- OpenClaw Skill Creator Documentation — Bundled skill-creator SKILL.md
- OpenClaw Discord Community — discord.com/invite/clawd