OpenClaw Skills and Automation: Building Reusable Agent Capabilities
Skills are how you extend OpenClaw agents beyond their default capabilities. Think of them as packaged tools with documentation, config templates, and execution logic that any agent can load and use. Whether you're building GitHub integrations, email automation, or custom API wrappers, skills are the standardized way to make those capabilities reusable across agents and deployments.
This guide covers everything: creating skills from scratch, automating workflows with cron jobs, and building production-grade agent automation systems.
What Are Skills?
A skill is a directory containing:
- SKILL.md: Instructions for the agent (how to use the tool)
- Scripts: Executable code (bash, Python, Node.js, etc.)
- Config: Optional JSON files for tool-specific settings
- Assets: Reference docs, examples, API schemas
When an agent loads a skill, it reads
SKILL.md and gets instructions like:
"When the user asks for GitHub issue status, run gh issue list --json title,state and summarize the results."
The agent then knows how to use the tool without you hard-coding it into every prompt.
Why Skills Matter
Without skills, you write instructions like:
To check GitHub issues:
1. Run: gh issue list --json title,state
2. Parse the JSON output
3. Filter by priority
4. Format as markdown table
With skills, you write:
Use the GitHub skill to check issues.
The skill contains all the details. Your agent learns once; every deployment benefits.
Skill Structure
Here's a minimal skill:
~/.openclaw/skills/my-skill/
├── SKILL.md # Agent instructions
└── scripts/
└── check-status.sh
SKILL.md:
# My Skill
Use this skill to check API status.
## Usage
When the user asks about API health, run:
\`\`\`bash
bash scripts/check-status.sh
\`\`\`
Parse the JSON output and report uptime percentage.
## Script: check-status.sh
Returns JSON:
{
"status": "operational",
"uptime": 99.97
}
That's it. The agent reads SKILL.md, sees the instructions, and knows how to use the script.
Advanced Skill: GitHub Integration
Let's build a real skill that wraps the gh CLI (GitHub's official tool):
~/.openclaw/skills/github/
├── SKILL.md
├── scripts/
│ ├── issues.sh
│ ├── pr-status.sh
│ └── create-issue.sh
└── config/
└── repo.json
SKILL.md:
__CODE_BLOCK_5__bash
brew install gh # macOS
sudo apt install gh # Ubuntu
__CODE_BLOCK_6__bash
gh auth login
__CODE_BLOCK_7__json
{
"owner": "your-org",
"repo": "your-repo"
}
__CODE_BLOCK_8__bash
bash scripts/issues.sh [--state open|closed|all]
__CODE_BLOCK_9__bash
bash scripts/pr-status.sh
__CODE_BLOCK_10__bash
bash scripts/create-issue.sh