Plugins and Skills
Plugins and Skills
OpenClaw extends agent capabilities through two mechanisms: plugins (tool providers that register with the gateway) and skills (markdown instruction files that give agents domain knowledge and workflows).
Plugins
Plugins register tools directly with the gateway. Unlike MCP servers (which require mcporter as a middleman), native plugins run in-process and give agents typed tool access without shell execution overhead.
Plugin Sources
| Source | Where They Live | How to Install |
|---|---|---|
| Stock | Bundled in OpenClaw’s dist/extensions | Always available, enable in config |
| ClawHub | Downloaded to ~/.openclaw/extensions/ | openclaw plugins install <id> |
| Local | Git repos on disk | openclaw plugins install -l /path or plugins.load.paths |
Stock plugins ship with every OpenClaw install. ClawHub is the community marketplace. Local plugins load from your own repos, which makes development and iteration fast.
Stock Plugins (Bundled with OpenClaw)
These ship with OpenClaw and provide core infrastructure. You enable them in config but don’t need to install anything.
Channels
| Plugin | ID | Purpose |
|---|---|---|
| BlueBubbles | bluebubbles | iMessage bridge for DMs and group chats |
whatsapp | WhatsApp channel via Baileys (Web protocol) | |
| Telegram | telegram | Notification channel for exec approval prompts |
BlueBubbles is the primary communication channel. WhatsApp adds a second messaging platform. Telegram delivers exec approval prompts to the owner’s phone.
Infrastructure
| Plugin | ID | Purpose |
|---|---|---|
| Memory (Core) | memory-core | File-backed memory search with vector + BM25 hybrid |
| Browser | browser | Headless browser automation for web interactions |
| OpenProse | open-prose | Structured prose generation via /prose programs |
| Lossless Context | lossless-claw | Context window compaction without losing information |
| Brave Search | brave | Web search |
| ACPX Runtime | acpx | ACP runtime backend for configurable commands |
Added Plugins (What I Installed)
These are the plugins I added to make the agent useful for managing my household. They fall into three groups: ClawHub marketplace plugins, and plugins I built or forked and load from local git repos.
From ClawHub
| Plugin | ID | Version | Purpose |
|---|---|---|---|
| Apple PIM | apple-pim-cli | 3.4.2 | Calendars, reminders, contacts, mail via native Swift CLIs and EventKit |
| Parcel | parcel-cli | 1.2.0 | Package delivery tracking via the Parcel macOS app |
| Trakt | trakt-tools | 1.0.0 | Movie and TV show tracking via trakt.tv |
Apple PIM uses a factory pattern where each agent gets its own config from its workspace directory (apple-pim/config.json). Restricted agents can have blocklists that hide private calendars or contact groups at the plugin level, without needing tool deny entries. It registers five tools: apple_pim_calendar, apple_pim_reminder, apple_pim_contact, apple_pim_mail, and apple_pim_system.
Parcel integrates with the Parcel macOS app to track deliveries. The agent can list active deliveries, add new tracking numbers, and check delivery status.
Trakt lets the agent log movies and shows the family watches, look up what’s trending, and check watch history.
Local (From Git Repos)
These plugins are loaded from local git repos via plugins.load.paths. Edits to the repo are live after a gateway restart.
| Plugin | ID | Repo | Purpose |
|---|---|---|---|
| Fastmail | fastmail-cli | fastmail-mcp-remote/openclaw-plugin | Email access: inbox, search, read, drafts, folders |
| Travel Hub | travel-hub | travel-hub/openclaw | Trip management, flights, hotels, ground transport |
| HomeClaw | homeclaw | HomeClaw/openclaw | HomeKit smart home control via webhooks |
| Obsidian Vault | obsidian-vault | lobster/openclaw-plugins/obsidian | Note management in Obsidian |
| Porsche Connect | porsche-connect-cli | porsche-connect/openclaw | Vehicle status, climatization, location |
Fastmail shells out to the fastmail CLI via execFile (no shell, no injection risk). The CLI handles MCP connection and auth via ~/.config/fastmail-cli/config.json. Tokens last 30 days.
Travel Hub manages trips, flights, hotel reservations, and ground transport. It connects to a remote MCP server via mcporter. Restricted agents access it through a wrapper script that only exposes the travel-hub CLI.
HomeClaw receives HomeKit state-change webhooks, classifies events (door opened, motion detected, temperature change), and notifies the main agent via agent-to-agent messaging when something meaningful happens. It runs as a dedicated webhook agent.
Obsidian Vault provides read/write access to the owner’s Obsidian vault for note management, daily logs, and knowledge capture.
Porsche Connect provides vehicle status, remote climatization, and location tracking via the Porsche Connect API.
Skills
Skills are markdown files (SKILL.md) that inject domain knowledge and workflows into the agent’s context when triggered. Unlike plugins, skills don’t register tools. Instead, they teach the agent how to use existing tools for specific tasks.
Skills live in two places:
- Shared skills (
openclaw-skills/) are accessible to all agents - Agent-specific skills (
openclaw-agents/<id>/skills/) are scoped to one agent
Shared Skills
Available to all agents in the gateway.
| Skill | Purpose |
|---|---|
| Apple PIM | Calendar, reminder, and contact query patterns and best practices |
| BlueBubbles Health | Diagnostics and troubleshooting for the iMessage bridge |
| Cron | Create, edit, and manage scheduled cron jobs |
| Eight Sleep | Eight Sleep pod control (temperature, schedules, sleep data) |
| Find My | Query Find My locations for devices and people |
| Obsidian | Read, edit, search, and create notes in Obsidian vault |
| OpenClaw CLI | CLI reference for openclaw commands and subcommands |
| Sonos | Speaker control (play, pause, volume, grouping) |
| Trafilatura | Extract clean article text from web pages |
| Travel Hub | Trip management patterns and tool usage |
| Update Docs | Update changelog and project documentation after completing work |
Agent-Specific Skills (Main Agent)
Scoped to the primary agent only.
| Skill | Purpose |
|---|---|
| Auto-Dream | Cognitive memory consolidation via periodic “dream cycles” (daily cron at 4 AM). Scans daily logs, extracts decisions and lessons, routes to structured memory layers with importance scoring and forgetting curves. Community skill by MyClaw.ai. |
| Apple Mail | Apple Mail notification handling and email routing |
| Blue Bottle | Blue Bottle Coffee subscription management (skip, pause, status) |
| Eight Sleep | Eight Sleep pod commands specific to the owner’s preferences |
| FlightRadar | Real-time aircraft tracking via FlightRadar24 API |
| Travel Hub | Agent-specific trip concierge patterns and briefing programs |
| Walking Map | Build walking routes with Google Maps links and timing buffers |
| WhatsApp channel management and troubleshooting | |
| Update Docs | Agent-scoped doc update workflow |
How Skills Work
A skill is a directory with a SKILL.md file containing frontmatter (trigger conditions, description) and a markdown body (instructions, examples, tool usage patterns). When the agent encounters a matching trigger, the skill content is injected into context.
openclaw-skills/└── sonos/ └── SKILL.md # Trigger: "sonos", "speaker", "music", "play"Skills can also contain supporting files (data, templates, scripts) that the agent references during execution.
Configuration
Plugin Allowlist
The plugins.allow array acts as a security gate. Only listed plugin IDs can load:
{ "plugins": { "allow": [ "apple-pim-cli", "fastmail-cli", "bluebubbles", "telegram", "memory-core", "browser", "travel-hub", "parcel-cli", "homeclaw", "trakt-tools", "porsche-connect-cli", "obsidian-vault", "open-prose", "lossless-claw", "brave", "acpx", "whatsapp" ] }}Without an allowlist, all discovered plugins auto-load. Always set plugins.allow to explicit trusted IDs.
Local Plugin Paths
{ "plugins": { "load": { "paths": [ "/path/to/Apple-PIM-Agent-Plugin/openclaw", "/path/to/fastmail-mcp-remote/openclaw-plugin", "/path/to/travel-hub/openclaw", "/path/to/HomeClaw/openclaw", "/path/to/lobster/openclaw-plugins/obsidian", "/path/to/porsche-connect/openclaw" ] } }}Each path points to a directory with the plugin’s package.json and entry point.
Plugin Entries
Individual plugin config goes in plugins.entries:
{ "plugins": { "entries": { "fastmail-cli": { "enabled": true, "config": { "cliCommand": "fastmail", "autoDiscover": true } }, "apple-pim-cli": { "enabled": true, "config": {} } } }}Set enabled: false to disable a plugin without removing it from the allowlist.
Per-Agent Tool Policies
Plugins register tools that any agent can call by default. Use per-agent tools.deny to restrict access:
{ "agents": { "list": { "group-agent": { "tools": { "deny": ["fastmail_*", "homeclaw_*"] } } } }}This denies the group chat agent access to all Fastmail and HomeClaw tools. Combined with Apple PIM’s factory config pattern, you get defense-in-depth: tool policy controls which agents can call a plugin, and the plugin’s own config controls what data it exposes.
See Multi-Agent Architecture for the full tool policy design.
Installing Plugins
From ClawHub
openclaw plugins install apple-pim-cliFrom Local Path
openclaw plugins install -l /path/to/plugin-repoVerify
# List all plugins with load statusopenclaw plugins list
# Check a specific pluginopenclaw plugins list | grep apple-pimAfter installing or changing plugin config, restart the gateway:
openclaw gateway restartTroubleshooting
Plugin Not Loading
Check that the plugin ID is in plugins.allow. Without it, the plugin is discovered but blocked.
”plugins.allow is empty” Warning
This means any discovered plugin will auto-load. Set plugins.allow to an explicit list of trusted IDs.
Plugin Tools Not Available to Agent
Check the agent’s tools.deny list. Also verify the plugin is listed in plugins.entries with enabled: true.
ClawHub Plugin Version Mismatch
# Check installed versionopenclaw plugins list | grep parcel
# Update to latestopenclaw plugins install parcel-cli