A starter template for creating OpenClaw Skills. Skills are language-agnostic Markdown files with YAML frontmatter that extend OpenClaw's capabilities by providing access to tools, APIs, and external systems.
Fork this repo and start building your own skill. Every claw extends the reach.
An OpenClaw Skill is a Markdown file (SKILL.md) containing:
- YAML frontmatter: Metadata (name, description, requirements, installation instructions)
- Markdown body: Documentation describing purpose, usage, commands, and examples
Skills are distributed via the ClawHub registry and installed locally to ~/.openclaw/workspace/skills/<skill-name>/. They enable Claude to interact with external systems without requiring code deployments or complex plugin infrastructure.
Click the "Use this template" button on GitHub to create a new repo based on this template.
git clone https://github.com/YOUR_USERNAME/my-skill.git
cd my-skillEdit SKILL.md with your skill's metadata and documentation:
---
name: my-skill
description: "What my skill does and when to use it."
metadata:
openclaw:
emoji: 🎯
requires:
bins:
- my-cli-tool
install:
- id: brew
kind: brew
formula: my-tool
bins: [my-cli-tool]
label: "Install via Homebrew"
---
## Purpose
...# Install to your local skills directory
cp -r . ~/.openclaw/workspace/skills/my-skill
# Verify it loads
openclaw skills list | grep my-skill
# Test invocation
openclaw invoke my-skill --help# From within the skill directory
clawhub publish
# Verify it's published
clawhub search my-skillmy-skill/
├── SKILL.md # Main skill file with frontmatter and docs
├── README.md # This file
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions validation
└── examples/ # Example skill implementations
├── hello-world/
│ └── SKILL.md
└── api-connector/
└── SKILL.md
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Unique skill identifier (kebab-case) |
description |
string | Yes | One-line description of the skill's purpose |
metadata.openclaw.emoji |
string | No | Single emoji for UI display |
metadata.openclaw.requires.bins |
array | No | Required executables/binaries |
metadata.openclaw.requires.env |
array | No | Required environment variables |
metadata.openclaw.install |
array | No | Installation methods (brew, apt, manual) |
Define how users should install your skill's dependencies:
install:
- id: brew
kind: brew
formula: package-name # Homebrew package name
bins: [binary-name] # Resulting binary to verify
label: "Install via Homebrew"
- id: apt
kind: apt
package: package-name # APT package name
bins: [binary-name]
label: "Install via APT"
- id: manual
kind: manual
label: "Manual installation"
steps:
- "Step 1: ..."
- "Step 2: ..."Recommended sections in your SKILL.md body:
- Purpose: What the skill does
- When to Use: Specific use cases
- When NOT to Use: Where this skill is inappropriate
- Setup: Prerequisites and local testing instructions
- Commands / Actions: Available operations
- Examples: Copy-paste-ready examples
- Notes: Limitations, security, troubleshooting
This template includes two example skills in the examples/ directory:
The simplest possible skill with no dependencies. Great for understanding the basics.
A more complex skill that requires environment variables and a CLI tool. Demonstrates real-world patterns.
This template includes GitHub Actions (.github/workflows/ci.yml) that automatically validates:
SKILL.mdexists- YAML frontmatter is syntactically valid
- Required fields (
name,description) are present - All referenced binaries are valid
Validation runs on every push and pull request.
When your skill is complete:
- Update
CHANGELOG.mdwith your changes - Ensure
SKILL.mdhas all required fields - Push to your repo and tag a release (e.g.,
v1.0.0) - Run
clawhub publishto submit to the registry - (Optional) Submit a PR to awesome-openclaw
For macOS and Linux users:
- id: brew
kind: brew
formula: my-package
bins: [my-binary]
label: "Install via Homebrew"For Debian/Ubuntu users:
- id: apt
kind: apt
package: my-package
bins: [my-binary]
label: "Install via APT"For tools without package managers or custom setups:
- id: manual
kind: manual
label: "Manual installation"
steps:
- "Download from https://example.com/download"
- "Extract the archive"
- "Add to PATH or move to /usr/local/bin"
- "Verify: my-binary --version"- Clear description: Make it obvious what your skill does in one sentence
- Real examples: Include working examples that users can copy
- Document limitations: Explain what your skill can't do
- Test locally: Always test with
~/.openclaw/workspace/skills/before publishing - Semantic versioning: Follow SEMVER in your
CHANGELOG.md - Security: Never store credentials in the skill; use environment variables
- OpenClaw Docs: https://docs.openclaw.io
- ClawHub Registry: https://clawhub.io
- GitHub Skills Repository: https://github.com/OpenClawHQ/skills
- Contributing Guide: https://github.com/OpenClawHQ/.github/blob/main/CONTRIBUTING.md
Have questions or found an issue? Open an issue or submit a PR on GitHub.
MIT License. See LICENSE for details.
Built with the OpenClaw Skill Template. Every skill extends Claude's reach.