OpenClaw Custom Skills Development: Build Your Own Extensions
OpenClaw Custom Skills Development: Build Your Own Extensions
By Sarah Chen | February 7, 2026
OpenClaw Custom Skills Development: Build Your Own Extensions
Skills are what make OpenClaw powerful. While OpenClaw comes with built-in tools, custom skills let you teach your agent entirely new capabilities.
---
What Are Skills?
Skills are reusable instruction packages that define:
Think of skills as recipes — they tell OpenClaw how to combine tools to accomplish specific goals.
---
Skill Structure
A skill is a folder with specific files:
my-custom-skill/ ├── SKILL.md # Required: Skill definition ├── prompt.md # Optional: Agent instructions ├── skill.py # Optional: Python logic ├── config.json # Optional: Configuration schema └── README.md # Optional: Documentation SKILL.md (Required)
--- name: weather description: Get current weather and forecasts keywords: [weather, forecast, temperature, conditions] platforms: [macOS, Linux, Windows] authors: [OpenClaw Team] ---Weather Skill
Provides current weather conditions and forecasts for any location.
Usage
When the user asks about weather:
1. Ask for their location if not provided 2. Use the web_fetch tool to get weather data 3. Parse the temperature and conditions 4. Format a friendly response
Examples
"What's the weather in New York?" "Will it rain tomorrow?" "How's the weather out there?" prompt.md (Optional)
# Weather PromptYou are a weather assistant. When asked about weather:
1. Get the location from context or ask the user 2. Use web_fetch to call: https://wttr.in/{location}?format=%C+%T+%h 3. Parse the response for temperature and conditions 4. Reply with: "Currently [conditions] at [temperature]"
Keep responses brief and friendly.
skill.py (Optional)
#!/usr/bin/env python3 """Weather skill Python implementation"""import requests import json
def run(location: str) -> dict: """Get weather for a location""" try: response = requests.get( f"https://wttr.in/{location}", params={"format": "json"} ) return { "success": True, "weather": response.json() } except Exception as e: return { "success": False, "error": str(e) }
---
Creating Your First Skill
Step 1: Create the Skill Folder
mkdir -p ~/.openclaw/skills/my-first-skill cd ~/.openclaw/skills/my-first-skill Step 2: Write SKILL.md
Create the skill definition:
--- name: my-first-skill description: A simple skill for learning keywords: [tutorial, example, first-skill] platforms: [macOS, Linux, Windows] authors: [Your Name] ---My First Skill
This skill demonstrates the basic skill structure.
Usage
When the user says "test my skill", respond with: "This is my first OpenClaw skill working!"
Triggers
"test my skill" "check my skill" Step 3: Enable the Skill
# Enable the skill openclaw skills enable my-first-skillVerify it's loaded
openclaw skills list Step 4: Test the Skill
# Send a test message openclaw message send --message "test my skill" ---
Advanced Skill Development
Using Tools in Skills
Skills can define which tools are available:
## Available Toolsread - Read files from disk write - Create or modify files exec - Run shell commandsRestrictions
Maximum 5 file reads per session Only execute commands in /Users/you/projects Configuration in Skills
## ConfigurationThis skill requires configuration:
Parameter Type Required Description apiKey string Yes API key for service mode string No Operation mode (default: normal)
User Configuration
# Configure the skill openclaw config set skills.entries.my-first-skill.apiKey "YOUR_KEY" openclaw config set skills.entries.my-first-skill.mode "advanced"
---
Publishing to ClawHub
Share your skills with the community:
Step 1: Prepare Your Skill
Ensure you have:
Complete SKILL.md with all sections Working implementation README with examples License file (MIT recommended) Step 2: Package the Skill
# Create a package tar -czvf my-first-skill-1.0.0.tar.gz my-first-skill/
Step 3: Publish via CLI
# Login to ClawHub openclaw clawhub loginPublish the skill
openclaw clawhub publish ./my-first-skill
Step 4: Add Metadata
Edit SKILL.md with community info:
--- name: my-first-skill description: A simple skill for learning keywords: [tutorial, example, first-skill] platforms: [macOS, Linux, Windows] authors: [Your Name] homepage: https://github.com/yourusername/openclaw-skills repository: https://github.com/yourusername/openclaw-skills license: MIT version: 1.0.0
---
Skill Development Workflow
1. Plan the Skill
What problem does it solve? What tools does it need? How should it be triggered? 2. Create the Skeleton
openclaw skills create my-skill --template basic
3. Implement and Test
# Develop locally openclaw skills dev my-skillTest in isolation
openclaw skills test my-skill --verboseCheck for errors
openclaw skills lint my-skill
4. Iterate
# Make changes nano ~/.openclaw/skills/my-skill/SKILL.mdReload skill
openclaw skills reload my-skill
5. Share
openclaw clawhub publish my-skill --public
---
Useful Skill Templates
API Integration Skill
--- name: api-integration description: Call external APIs with authentication keywords: [api, http, rest, integration] ---API Integration Skill
Calls external REST APIs with proper authentication.
Configuration
Parameter Type Required baseUrl string Yes apiKey string Yes headers object No
Usage
json { "action": "api-call", "url": "/endpoint", "method": "GET" } `File Processing Skill
markdown
name: file-processor description: Process and transform files keywords: [files, processing, transform, csv, json] ---File Processor Skill
Processes files in various formats.
Supported Formats
CSV JSON XML Markdown Usage
When user asks to process a file:
1. Read the file using read tool 2. Parse the format 3. Apply transformations 4. Write output using write tool
---Troubleshooting Skill Issues
Skill Not Loading
bash Check skill status
openclaw skills list --verboseCheck for syntax errors
openclaw skills validate my-skillView error logs
openclaw gateway logs | grep skill Tools Not Working
bash Check tool availability
openclaw tools listVerify permissions
openclaw config get tools.entries Configuration Errors
bash Validate configuration
openclaw config validateCheck skill config
openclaw config get skills.entries.my-skill `---
Further Reading
OpenClaw Skills Documentation Zen van Riel: Custom Skill Creation Guide ClawHub Skills Directory ---
Related Articles:
OpenClaw Tools vs Skills: Understanding the Mental Model OpenClaw ClawHub Marketplace: Browse and Install Community Skills OpenClaw Custom Skills Development: Build Your Own Extensions
Tags: OpenClaw, AI, Tutorial
Comments
Post a Comment