Logo
Features

Skills

Extending the agent with skills from ClawHub or your own custom 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

FieldRequiredDescription
nameYesSkill identifier
descriptionYesShort description of what the skill does
metadataNoJSON 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 }
    }
  }
}
FieldTypeDefaultDescription
enabledbooleantrueWhether the skill is loaded
apiKeystring--API key (mapped to the skill's primaryEnv)
envobject--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:

RequirementWhat it checks
binsAll listed binaries must exist on your PATH
anyBinsAt least one of the listed binaries must exist
envListed environment variables must be set (or provided via config)
configListed 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.