Reusable instruction sets for specialized workflows
Skills are directories containing a SKILL.md file with instructions and metadata. They’re compatible with OpenClaw’s skill format and the skills.sh registry.
---name: weatherdescription: Get current weather and forecasts (no API key required).homepage: https://wttr.in/:helpsource_repo: skills/weather---# Weather SkillUse wttr.in for free weather data:```bashcurl "wttr.in/San%20Francisco?format=3"
For detailed forecasts:
curl "wttr.in/San%20Francisco"
No authentication required.
<ParamField path="name" type="string" required> Skill identifier (used for lookups, case-insensitive)</ParamField><ParamField path="description" type="string" required> Short summary shown in skill listings</ParamField><ParamField path="homepage" type="string"> URL for documentation or tool homepage</ParamField><ParamField path="source_repo" type="string"> GitHub repo if installed from a registry (format: `owner/repo`)</ParamField>## Loading SkillsSkills load from two locations (workspace wins on name conflicts):1. **Instance-level**: `{instance_dir}/skills/` — shared across all agents2. **Agent workspace**: `{workspace}/skills/` — agent-specific overrides```rust src/skills.rsimpl SkillSet { pub async fn load(instance_skills_dir: &Path, workspace_skills_dir: &Path) -> Self { // Instance skills (lowest precedence) // Workspace skills (highest precedence, overrides instance) }}
Skills are loaded at agent startup. Reload via the API to pick up changes without restarting.
Channels see a summary with skill names and descriptions. They’re instructed to delegate skill work to workers:
<available_skills>You have access to the following skills. To use a skill, spawn a workerand suggest the skill name in the spawn_worker suggested_skills parameter.<skill> <name>weather</name> <description>Get current weather and forecasts (no API key required).</description> <location>/workspace/skills/weather/SKILL.md</location></skill><skill> <name>github</name> <description>Interact with GitHub using the gh CLI.</description> <location>/workspace/skills/github/SKILL.md</location></skill></available_skills>
Workers see the full skill listing with suggested skills flagged. They decide which skills are relevant and read them via the read_skill tool:
<available_skills>You have access to these skills. Use the read_skill tool to load fullinstructions when you need them. Skills marked as suggested="true" wererecommended for this task.<skill suggested="true"> <name>github</name> <description>Interact with GitHub using the gh CLI.</description> <location>/workspace/skills/github/SKILL.md</location></skill><skill> <name>weather</name> <description>Get current weather and forecasts (no API key required).</description> <location>/workspace/skills/weather/SKILL.md</location></skill></available_skills>
Workers call read_skill to load the full content:
{"skill_name": "github"}
Returns the skill’s markdown body with {baseDir} placeholders resolved to the skill’s directory path.
---name: exampledescription: Example skill with bundled script---Run the helper script:```bashbash {baseDir}/helper.sh
When read via `read_skill`, `{baseDir}` resolves to the skill's absolute path:```markdownRun the helper script:```bashbash /workspace/skills/example/helper.sh
This lets workers execute bundled scripts or read templates from the skill directory.## Managing Skills### List All Skills```bashcurl http://localhost:3000/api/agents/spacebot/skills