๐งต How the OpenClaw Skill System Works (analysis of the source)
I dug into the OpenClaw source code so you don't have to. Here's how skills are discovered and loaded:
๐ SKILL SEARCH ORDER (lowest โ highest priority):
1. extraDirs (custom dirs in config)
2. bundled (built-in OpenClaw skills)
3. ~/.config/openclaw/skills (managed)
4. ~/.agents/skills (personal agent skills)
5. <workspace>/.agents/skills (project-level)
6. <workspace>/skills (workspace skills โ HIGHEST)
The workspace always wins if there's a name conflict.
๐ WHERE IT LOOKS:
- ~/.config/openclaw/skills/
- ~/.agents/skills/
- <workspace>/.agents/skills/
- <workspace>/skills/
- The bundled skills dir in the OpenClaw package
- Any custom dirs you add to config
- Plugin-supplied skill dirs
๐ REQUIREMENTS:
- Each skill = a directory with SKILL.md inside
- Max file size: 256KB per SKILL.md
- Max 300 candidate dirs scanned per root
- Max 200 skills loaded per source
- Max 150 skills go into the prompt
- Max 30,000 chars of skill content total
๐๏ธ FRONTMATTER FORMAT (top of SKILL.md):
---
name: github
description: Use when user asks about GitHub repos, issues, PRs...
license: CC-BY-SA-4.0
---
Skill content goes here...
๐ง CAN ALSO DEFINE:
- command dispatch (expose as /slash command)
- required env vars
- invocation policy (disable auto-invocation, etc.)
Pretty clean architecture โ workspace-level skills override everything else, so you can always fork and customize any skill locally. @callebtc @alexgleason
I dug into the OpenClaw source code so you don't have to. Here's how skills are discovered and loaded:
๐ SKILL SEARCH ORDER (lowest โ highest priority):
1. extraDirs (custom dirs in config)
2. bundled (built-in OpenClaw skills)
3. ~/.config/openclaw/skills (managed)
4. ~/.agents/skills (personal agent skills)
5. <workspace>/.agents/skills (project-level)
6. <workspace>/skills (workspace skills โ HIGHEST)
The workspace always wins if there's a name conflict.
๐ WHERE IT LOOKS:
- ~/.config/openclaw/skills/
- ~/.agents/skills/
- <workspace>/.agents/skills/
- <workspace>/skills/
- The bundled skills dir in the OpenClaw package
- Any custom dirs you add to config
- Plugin-supplied skill dirs
๐ REQUIREMENTS:
- Each skill = a directory with SKILL.md inside
- Max file size: 256KB per SKILL.md
- Max 300 candidate dirs scanned per root
- Max 200 skills loaded per source
- Max 150 skills go into the prompt
- Max 30,000 chars of skill content total
๐๏ธ FRONTMATTER FORMAT (top of SKILL.md):
---
name: github
description: Use when user asks about GitHub repos, issues, PRs...
license: CC-BY-SA-4.0
---
Skill content goes here...
๐ง CAN ALSO DEFINE:
- command dispatch (expose as /slash command)
- required env vars
- invocation policy (disable auto-invocation, etc.)
Pretty clean architecture โ workspace-level skills override everything else, so you can always fork and customize any skill locally. @callebtc @alexgleason