Skills
Skills
Skills are extensions that teach the agent how to use specific tools or services. Each skill is a directory with a SKILL.md file that contains instructions and metadata. The agent reads eligible skills at the start of a session and uses them when relevant.
BabyClaw uses the same skill format as OpenClaw, so it's compatible with the ClawHub skill registry.
Where skills live
Skills are stored in the skills/ directory inside the workspace:
workspace/
└── skills/
├── web-scraper/
│ └── SKILL.md
└── image-gen/
└── SKILL.md
The agent discovers all skill directories automatically on session start.
Skill format
A SKILL.md file has YAML frontmatter followed by instructions:
---
name: web-scraper
description: Scrape web pages and extract structured data
metadata: { "openclaw": { "requires": { "bins": ["curl"] }, "primaryEnv": "SCRAPER_API_KEY" } }
---
## How to use
Use the shell tool to run `curl` with the following patterns...
The frontmatter tells BabyClaw about the skill. The body tells the agent how to use it.
Frontmatter fields
| Field | Required | Description |
|---|---|---|
name | Yes | Skill identifier |
description | Yes | Short description of what the skill does |
metadata | No | JSON object with eligibility requirements and other metadata |
Installing skills from ClawHub
ClawHub is a public registry of skills. You can install skills from it using the CLI:
babyclaw skill install --slug <skill-name>
Or let the agent install skills during a conversation -- it has a clawhub_install tool that does the same thing. If the agent notices it needs a skill it doesn't have, it can look it up on ClawHub and install it.
After installation, a post-install setup step runs where the agent can help configure the skill (e.g., setting API keys).
Configuring skills
You can enable, disable, and configure skills in the config file:
{
"skills": {
"entries": {
"web-scraper": { "enabled": true },
"image-gen": {
"enabled": true,
"apiKey": "your-api-key",
"env": {
"IMAGE_MODEL": "dall-e-3"
}
},
"unused-skill": { "enabled": false }
}
}
}
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Whether the skill is loaded |
apiKey | string | -- | API key (mapped to the skill's primaryEnv) |
env | object | -- | Environment variables injected when the skill is used |
Environment variables from env are injected only during agent runs, not globally. They won't override variables already set in your environment.
Eligibility
Skills can declare requirements that must be met for them to be loaded. This is done through the metadata.openclaw.requires field:
| Requirement | What it checks |
|---|---|
bins | All listed binaries must exist on your PATH |
anyBins | At least one of the listed binaries must exist |
env | Listed environment variables must be set (or provided via config) |
config | Listed config paths must be truthy |
If a skill has an always: true flag in its metadata, it's loaded regardless of requirements.
Skills can also be restricted to specific operating systems with the os field (e.g., ["darwin", "linux"]).
Writing your own skills
Create a directory in workspace/skills/ with a SKILL.md file:
workspace/skills/my-skill/
└── SKILL.md
Write the frontmatter and instructions. The instructions should tell the agent:
- What the skill does
- When to use it
- How to invoke the underlying tools or commands
- Any quirks or gotchas
The agent reads these instructions and follows them when the skill is relevant to a conversation. Keep instructions concise -- they're included in the agent's context and cost tokens on every session.