#Do custom skills get shown in the openclaw skills list?
1 messages · Page 1 of 1 (latest)
@green crow Yep â custom skills show up in openclaw skills list as long as OpenClaw is loading them from one of the skill directories.
1) Make OpenClaw load your custom skill (local list)
Put your skill folder in one of these locations:
- Per-workspace (most common):
<your workspace>/skills/<skill-name>/SKILL.md - Global on that machine:
~/.openclaw/skills/<skill-name>/SKILL.md - Some other folder: add it via
skills.load.extraDirsin~/.openclaw/openclaw.json
From the docs, precedence is:
<workspace>/skills â ~/.openclaw/skills â bundled â skills.load.extraDirs (lowest)
Then check it:
openclaw skills list
openclaw skills list --eligible
openclaw skills check
If itâs listed but not âeligibleâ, openclaw skills check will usually tell you whatâs missing (bins/env/config gating).
Docs:
- https://docs.openclaw.ai/cli/skills
- https://docs.openclaw.ai/tools/skills
- https://docs.openclaw.ai/tools/skills-config
2) If you meant âadd it to the public skills listâ
If by âthe listâ you mean the public registry (ClawHub), publish it:
clawhub login
clawhub publish ./path/to/your-skill --slug your-skill --name "Your Skill" --version 1.0.0 --tags latest
# or to back up/sync many:
clawhub sync --all
Docs: https://docs.openclaw.ai/tools/clawhub
If you tell me which âskills listâ you mean (CLI list vs macOS Skills UI vs ClawHub), I can give the exact steps for your setup (local/remote mode matters too: skills must live on the gateway host).
@green crow If itâs not showing up at all in openclaw skills list, itâs almost always one of these:
1) You added it to the wrong workspace (or wrong machine)
OpenClaw loads workspace skills from the workspace configured on the gateway host.
Please run and paste the relevant bits:
openclaw --version
openclaw status
openclaw gateway status
In particular, Iâm looking for what it says the workspace path is, and whether your CLI is talking to a remote gateway (common: gateway on VPS, you edited local files â wonât show).
If youâre using multiple agents, each agent has its own workspace. Easiest âmake it visible everywhereâ option: put the skill in:
~/.openclaw/skills/<skill-name>/SKILL.md (global on that gateway machine)
2) Filename / folder structure mismatch
It must be exactly:
<workspace>/skills/<skill-folder>/SKILL.md (note the exact caps)
Quick sanity check:
ls -la "<workspace>/skills"
find "<workspace>/skills" -maxdepth 2 -name SKILL.md -print
3) SKILL.md frontmatter doesnât parse â skill gets skipped
The loader is picky. Minimal valid example:
---
name: my-skill
description: Does X
---
If you paste the first ~30 lines of your SKILL.md, I can spot if the frontmatter/metadata format is the issue.
4) Watcher is off / gateway needs restart (less common)
If skills.load.watch is disabled in config, you may need a restart:
openclaw gateway restart
Also run:
openclaw skills check
That often prints the exact reason itâs ignoring something.
If you paste: (a) your workspace path from openclaw status, and (b) the first lines of SKILL.md, weâll nail it quickly.
@green crow Two things jump out immediately:
1) Your path has a typo: workplace vs workspace
OpenClaw wonât scan ~/.openclaw/workplace/... (unless you explicitly configured that as your workspace).
Default workspace is:
~/.openclaw/workspace
So the expected location is:
~/.openclaw/workspace/skills/bnb-sender/SKILL.md
Quick check:
openclaw status
and look for the Workspace path it reports â put the skill under that folder.
2) Your SKILL.md will load, but tools: wonât do what you think
OpenClaw skills are instructions, not a way to define new executable âbash toolsâ like send_bnb. The openclaw skills list command should still list the skill, but tools: is an unknown frontmatter field (itâll show as a warning in openclaw skills check).
Run:
openclaw skills check
That will usually tell you what it found and any warnings (including unknown fields, name mismatch, etc).
Minimal âknown-goodâ SKILL.md
If you want to avoid parsing/validation weirdness, start with:
---
name: bnb-sender
description: Send BNB on BSC (always ask for confirmation first).
---
# bnb-sender
(put your instructions here; reference files with `{baseDir}`)
If you do those and it still doesnât show
Paste the output of:
openclaw status
openclaw skills check
and I can tell exactly what directory itâs scanning and why itâs skipping it.
@green crow That skills check output is fine (and unrelated to the custom skill). The reason your skill isnât showing is almost certainly location.
1) Your path is wrong: workplace vs workspace
You wrote:
~/.openclaw/workplace/skills/...
but the default workspace is:
~/.openclaw/workspace
So move it to either:
Workspace skill (per workspace):
~/.openclaw/workspace/skills/bnb-sender/SKILL.md
or Managed skill (global on that machine, easiest to avoid workspace confusion):
~/.openclaw/skills/bnb-sender/SKILL.md
Also make sure the folder name matches the skill name exactly (bnb-sender).
2) Verify what workspace OpenClaw is actually using
Run:
openclaw config get agents.defaults.workspace
Whatever it prints, thatâs the <workspace> you should use â put your skill under <workspace>/skills/....
(If OPENCLAW_PROFILE is set, the default can become ~/.openclaw/workspace-<profile>.)
3) Confirm it loaded
After moving the folder, run:
openclaw skills list
openclaw skills info bnb-sender
If skills info bnb-sender says ânot foundâ, itâs still in the wrong directory.
Note on your SKILL.md
Your tools: block wonât register as a new executable tool in OpenClaw (skills are instructions + gating, not âdefine a bash toolâ), but it should still list once itâs in the correct folder.
Docs: https://docs.openclaw.ai/tools/skills and https://docs.openclaw.ai/cli/skills
If you paste the output of openclaw config get agents.defaults.workspace + openclaw skills list | grep bnb -n (or just the relevant lines), I can tell you exactly what itâs seeing.
ok now i see it on the list but when i text the ai to do it, it doesnt recognize the skill. I even added a simple skill to test:
name: one
description: Special reply when user sends "one".
One Skill
When the user sends the exact message "one", reply literally with:
one
Do not add any extra text, explanations, or formatting. Only output the word one.
and this aint working either but it shows on the list
@green crow What youâre expecting (âI type one and it auto-triggers the skillâ) isnât how OpenClaw skills work.
Skills are not message triggers
A skill showing up in openclaw skills list just means itâs discoverable. In normal chat, the model only maybe uses a skill if it decides to read the SKILL.md based on the situation. For a bare message like one, most models wonât think âI should go load a skill fileâ.
How to actually run/test a skill
Use the built-in skill command:
- Send (in chat):
(/skill one one/skill <name> [input]â so youâre explicitly telling OpenClaw ârun skillonewith inputoneâ)
Also try:
-
/skill one
and see what it replies.
If youâre on Telegram/Discord and native skill commands are enabled, you may also get a direct command for the skill (skill names get sanitized; e.g. `bnb-sender` often becomes `/bnb_sender`). But `/skill one ...` always works.
Docs: https://docs.openclaw.ai/tools/slash-commands (see â/skillâ + skill commands)
### Verify the model is even seeing the skill in context
In chat, run:
```text
/context detail
That will show whether the skills list is actually included in the prompt for that session.
About your bnb-sender skill
That tools: frontmatter wonât define a new executable tool in OpenClaw (itâll be treated as an unknown frontmatter field). If you want âsend BNBâ to be a real tool, youâd need a plugin/tool implementation, not just a skill file.
If you tell me what surface youâre using (Telegram? Discord?) I can tell you the exact command name you should see for `bnb-sender` and whether `commands.nativeSkills` needs a restart.
im using Telegram and im not seeing my added skills in /context detail
@green crow On Telegram, the key detail is: only âeligibleâ skills are injected into the prompt, and the skills list is snapshotted per-session.
So if your skill shows up in openclaw skills list but not in /context detail, it usually means one of these:
1) Your skill is not âeligibleâ (so it wonât be in the prompt)
Run this on the gateway host:
openclaw skills list --eligible
# or:
openclaw skills check
Your skill (one, bnb-sender) must appear under Eligible / Ready to use.
If itâs missing there, paste openclaw skills info one (and/or ... info bnb-sender) and weâll see why itâs being filtered.
2) Your Telegram chat session started before you added the skill
OpenClaw snapshots eligible skills when the session starts. New skills often wonât appear until you start a fresh session.
In Telegram, send:
/new
Then immediately:
/context detail
Now you should see your custom skill listed in the skills section.
3) Even when skills are in context: they donât âauto-triggerâ
Typing one will not automatically run a skill. To explicitly invoke it, use:
/skill one one
(Thatâs the reliable way to test.)
If you paste:
openclaw skills check(after adding the skills), and- the
/context detailoutput after/newin Telegram,
I can pinpoint exactly whether itâs ânot eligibleâ vs âold session snapshotâ vs âinvocation expectationâ.
when my SKILL.md is used I want to run an external file called ./send_bnb.sh". How to do it?
@green crow To run ./send_bnb.sh from a skill, you canât do it via tools: in SKILL.md (OpenClaw doesnât treat that as âdefine a new toolâ). A skill is instructions, so the only way to execute a script is to have the model call an existing exec tool.
In practice you have two options:
Option A (recommended): run the script via nodes.run (system.run)
- Put the script in the skill folder and make it executable:
# on the machine where the command will run
chmod +x ~/.openclaw/workspace/skills/bnb-sender/send_bnb.sh
- Make sure you have a node that can execute commands on that machine.
If youâre on Linux/Windows, start a headless node host and pair it:
openclaw node run --host <your-gateway-host> --port 18789
(Then approve the node pairing in the gateway UI / prompts.)
Docs: https://docs.openclaw.ai/nodes#headless-node-host-cross-platform
- In your
SKILL.md, instruct the agent to callnodesârun, and use{baseDir}so the path is correct (donât rely on./):
---
name: bnb-sender
description: Send BNB on BSC (requires explicit confirmation).
---
When the user asks to send BNB:
1) Collect `to` and `amount`.
2) Repeat them back and ask for an explicit "CONFIRM".
3) Only after CONFIRM, execute:
Use the nodes tool with action "run" to run:
- cwd: "{baseDir}"
- command: ["bash", "{baseDir}/send_bnb.sh", "<to>", "<amount>"]
That will trigger an exec approval flow (good). Docs: https://docs.openclaw.ai/tools/exec-approvals
Option B: make it a real âtoolâ (plugin)
If you want a deterministic /send_bnb to=⊠amount=⊠style command with strict input validation (highly recommended for anything involving money), youâll want to implement a plugin tool rather than relying on the model to run shell scripts.
One more important note: automating crypto sends is prompt-injection bait. Keep it DM-only, require explicit confirmation every time, and donât store private keys in the skill file. If you tell me where the gateway is running (Linux VPS? local machine?) and whether you already have a node paired, I can give you the exact nodes.run shape to use.
Hi Guys, I'm bumping this thread because I'm having a similar issue and I can't figure out why it's happening, even after trying everything above.
The skill I've made is not showing up on openclaw skills list or the dashboard
- Output of
openclaw config agents.defaults.workspace:/home/node/.openclaw/workspace - Output of
ls /home/node/.openclaw/workspace/skills/deepseek-balance/:SKILL.md references scripts(meaning it is supposedly in the correct folder - First few lines of my SKILL.md:
---
name: deepseek-balance
description: Check DeepSeek API balance and usage. Use when the user asks about - "Check my DeepSeek balance", "How much API credit do I have left?", "What's my DeepSeek usage?", "DeepSeek account status", "API token balance", or any query related to DeepSeek platform credits, usage, or account information.
---
# deepseek-balance
## Quick Start
-
Output of the
quick_validate.pyscript in theskill-creatorskill:Skill is valid!(meaning the validations shoudl have passed) -
I even tried moving the skill to where the rest of the system skills are in the system files, and it is still not finding it. Any ideas?
It goes without saying that I've been restarting openclaw every time I make a change đ
Short answer: yes â custom skills are shown. If yours doesn't appear, the cause is nearly always one of these: the CLI/gateway is scanning a different workspace than the one you edited, the skill was parsed/merged away, or the skill is present but gated/hidden by config or session snapshot. Below is a focused troubleshooting checklist (copy/paste the commands and report back the outputs you see).
- Confirm which workspace the CLI is actually scanning
- Run:
openclaw skills list --json - Look at the
workspaceDirfield (this is the folder the CLI scanned). If you don't havejq, just run the command and read the JSON. - Verify the file exists where that JSON says:
ls -la <workspaceDir>/skills/deepseek-balancehead -n 10 <workspaceDir>/skills/deepseek-balance/SKILL.md
Why: the CLI looks at the default agent workspace resolved from config/env. Common mismatch causes: different container/user, OPENCLAW_PROFILE, or a per-agent workspace override.
- See if the skill was loaded at all
- Run:
openclaw skills list --json | jq '.skills[] | {name,source,eligible,disabled,primaryEnv,homepage}' - Or directly:
openclaw skills info deepseek-balance --json
What to expect: if the skill is loaded you'll see an entry (with source telling where it came from). If not present, the loader didn't see it.
- If it's present but not usable / not in the agent prompt
- Check eligibility & missing requirements:
openclaw skills check -voropenclaw skills list -v - If
metadata.openclawin frontmatter requires bins/env/os/config that are missing, the skill will be marked ineligible. (Note: the CLI shows all loaded skills by default;--eligiblefilters to ready ones.)
- Quick checks for common file/parse problems
- Ensure frontmatter is a top-level YAML block starting with
---and closed with---(no hidden BOM before the first---).- Check for BOM:
xxd -p -l 3 <workspaceDir>/skills/deepseek-balance/SKILL.mdâ if output isefbbbfyou have a UTF-8 BOM (remove it).
- Check for BOM:
- Validate file name & location: must be exactly
SKILL.md(case sensitive) directly inside<skill-dir>/. - Try a minimal test skill to verify scanning works:
mkdir -p <workspaceDir>/skills/hello_test && cat > <workspaceDir>/skills/hello_test/SKILL.md <<'EOF'\n---\nname: hello_test\ndescription: test skill\n---\nEOF- Then
openclaw skills list --json | jq '.skills[] | select(.name==\"hello_test\")'
- Bundled vs managed vs workspace confusion
- Skills are loaded from (lowestâhighest): extraDirs â bundled â managed (
~/.openclaw/skills) â workspace (<workspace>/skills). Workspace wins on name conflicts. - If you copied the skill into the bundled location (installed node_modules), that may be subject to
skills.allowBundledconfig (an allowlist). Check:openclaw config get skills.allowBundled
- If you used
~/.openclaw/skills, checkopenclaw config get skills.entriesin case a skill override disables it.