2026-01-01 10:07:31 +01:00
|
|
|
|
---
|
|
|
|
|
|
summary: "Skills config schema and examples"
|
|
|
|
|
|
read_when:
|
|
|
|
|
|
- Adding or modifying skills config
|
|
|
|
|
|
- Adjusting bundled allowlist or install behavior
|
2026-01-31 16:04:03 -05:00
|
|
|
|
title: "Skills Config"
|
2026-01-01 10:07:31 +01:00
|
|
|
|
---
|
2026-01-31 21:13:13 +09:00
|
|
|
|
|
2026-01-01 10:07:31 +01:00
|
|
|
|
# Skills Config
|
|
|
|
|
|
|
2026-01-30 03:15:10 +01:00
|
|
|
|
All skills-related configuration lives under `skills` in `~/.openclaw/openclaw.json`.
|
2026-01-01 10:07:31 +01:00
|
|
|
|
|
|
|
|
|
|
```json5
|
|
|
|
|
|
{
|
|
|
|
|
|
skills: {
|
2026-01-15 04:07:29 +00:00
|
|
|
|
allowBundled: ["gemini", "peekaboo"],
|
2026-01-01 10:07:31 +01:00
|
|
|
|
load: {
|
2026-01-31 21:13:13 +09:00
|
|
|
|
extraDirs: ["~/Projects/agent-scripts/skills", "~/Projects/oss/some-skill-pack/skills"],
|
2026-01-16 03:45:03 +00:00
|
|
|
|
watch: true,
|
2026-01-31 21:13:13 +09:00
|
|
|
|
watchDebounceMs: 250,
|
2026-01-01 10:07:31 +01:00
|
|
|
|
},
|
|
|
|
|
|
install: {
|
|
|
|
|
|
preferBrew: true,
|
2026-01-31 21:13:13 +09:00
|
|
|
|
nodeManager: "npm", // npm | pnpm | yarn | bun (Gateway runtime still Node; bun not recommended)
|
2026-01-01 10:07:31 +01:00
|
|
|
|
},
|
|
|
|
|
|
entries: {
|
|
|
|
|
|
"nano-banana-pro": {
|
|
|
|
|
|
enabled: true,
|
|
|
|
|
|
apiKey: "GEMINI_KEY_HERE",
|
|
|
|
|
|
env: {
|
2026-01-31 21:13:13 +09:00
|
|
|
|
GEMINI_API_KEY: "GEMINI_KEY_HERE",
|
|
|
|
|
|
},
|
2026-01-01 10:07:31 +01:00
|
|
|
|
},
|
|
|
|
|
|
peekaboo: { enabled: true },
|
2026-01-31 21:13:13 +09:00
|
|
|
|
sag: { enabled: false },
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2026-01-01 10:07:31 +01:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Fields
|
|
|
|
|
|
|
|
|
|
|
|
- `allowBundled`: optional allowlist for **bundled** skills only. When set, only
|
|
|
|
|
|
bundled skills in the list are eligible (managed/workspace skills unaffected).
|
|
|
|
|
|
- `load.extraDirs`: additional skill directories to scan (lowest precedence).
|
2026-01-16 03:45:03 +00:00
|
|
|
|
- `load.watch`: watch skill folders and refresh the skills snapshot (default: true).
|
|
|
|
|
|
- `load.watchDebounceMs`: debounce for skill watcher events in milliseconds (default: 250).
|
2026-01-01 10:07:31 +01:00
|
|
|
|
- `install.preferBrew`: prefer brew installers when available (default: true).
|
2026-01-01 17:57:57 +01:00
|
|
|
|
- `install.nodeManager`: node installer preference (`npm` | `pnpm` | `yarn` | `bun`, default: npm).
|
2026-01-13 07:58:47 +00:00
|
|
|
|
This only affects **skill installs**; the Gateway runtime should still be Node
|
|
|
|
|
|
(Bun not recommended for WhatsApp/Telegram).
|
2026-01-01 10:07:31 +01:00
|
|
|
|
- `entries.<skillKey>`: per-skill overrides.
|
|
|
|
|
|
|
|
|
|
|
|
Per-skill fields:
|
2026-01-31 21:13:13 +09:00
|
|
|
|
|
2026-01-01 10:07:31 +01:00
|
|
|
|
- `enabled`: set `false` to disable a skill even if it’s bundled/installed.
|
|
|
|
|
|
- `env`: environment variables injected for the agent run (only if not already set).
|
|
|
|
|
|
- `apiKey`: optional convenience for skills that declare a primary env var.
|
|
|
|
|
|
|
|
|
|
|
|
## Notes
|
|
|
|
|
|
|
|
|
|
|
|
- Keys under `entries` map to the skill name by default. If a skill defines
|
2026-01-30 03:15:10 +01:00
|
|
|
|
`metadata.openclaw.skillKey`, use that key instead.
|
2026-01-16 03:45:03 +00:00
|
|
|
|
- Changes to skills are picked up on the next agent turn when the watcher is enabled.
|
2026-01-20 15:00:03 +00:00
|
|
|
|
|
|
|
|
|
|
### Sandboxed skills + env vars
|
|
|
|
|
|
|
|
|
|
|
|
When a session is **sandboxed**, skill processes run inside Docker. The sandbox
|
|
|
|
|
|
does **not** inherit the host `process.env`.
|
|
|
|
|
|
|
|
|
|
|
|
Use one of:
|
2026-01-31 21:13:13 +09:00
|
|
|
|
|
2026-01-20 15:00:03 +00:00
|
|
|
|
- `agents.defaults.sandbox.docker.env` (or per-agent `agents.list[].sandbox.docker.env`)
|
|
|
|
|
|
- bake the env into your custom sandbox image
|
|
|
|
|
|
|
|
|
|
|
|
Global `env` and `skills.entries.<skill>.env/apiKey` apply to **host** runs only.
|