Install an OpenClaw skill from ClawHub
openclaw skills install pulls a skill from ClawHub, the public registry, into the active workspace's skills/ folder. OpenClaw itself is an open-source assistant that runs on your own computer and answers you in chat apps such as Discord, Slack and Telegram. Before an install, open the skill's ClawHub page. It shows the latest security scan.
A skill in the workspace folder wins a name clash with every other location. With --global, the install lands in ~/.openclaw/skills instead, where every local agent can see it unless an allowlist narrows that.
openclaw skills search "calendar"
openclaw skills install @owner/skill-name
openclaw skills list
openclaw skills update --all- Search with
openclaw skills search "calendar". Leave the query out to browse ClawHub's Trending feed. - Install with
openclaw skills install @owner/skill-name. Add--versionand a version number to choose a release. - Run
openclaw skills listto confirm OpenClaw found the skill. - If an open chat doesn't offer the skill, send
/newto start a fresh session.
Use a skill, and find out why one is missing
You don't have to call a skill by name. OpenClaw puts a short list of eligible skills into the agent's system prompt, each with its name, description and location, and the agent picks one by reading the descriptions.
To call one anyway, open the Control UI with openclaw dashboard, type $ and pick from your skills, as in $release_notes. One message can name up to eight. In chat, a skill named hello-world also runs as /hello-world or /skill hello-world. That slash command exists because user-invocable is true by default. Setting disable-model-invocation: true works the other way: the instructions stay out of the prompt and the model never picks the skill, though an explicit $name still runs it.
Run openclaw skills list --eligible to see what an agent can use, and openclaw skills check to learn why a listed skill isn't ready.
- A
metadata.openclaw.requiresblock hides the skill until every binary inbinsis onPATH, every variable inenvis set and every path inconfigis truthy. TheanyBinskey needs only one binary from its list, andosfilters by platform. - In a sandbox, the binary has to be inside the container as well, since
requires.binsis checked on the host only. - An agent allowlist can hide it. A non-empty
agents.entries.*.skillslist replaces the defaults instead of adding to them, and an empty one exposes nothing at all.
Write a skill of your own
The sample below turns recent git commits into a draft changelog. Its folder is named changelog-from-git, and so is its name, which must use lowercase letters, digits and hyphens and match the folder. The description is a single line under 160 characters, since it is what the agent reads in its context and what slash-command discovery shows.
Write the description as what the skill does plus the requests that should bring it in, here a changelog, release notes or what changed since the last tag. The metadata line keeps the skill hidden on any machine without git.
---
name: changelog-from-git
description: Drafts a changelog from recent git commits. Use when the user asks for a changelog, release notes or what changed since the last tag.
metadata: { "openclaw": { "requires": { "bins": ["git"] } } }
---
# Changelog from git
1. Run `git describe --tags --abbrev=0` to find the last tag. If there is none, ask which commit to start from.
2. Run `git log TAG..HEAD --oneline`, with that tag in place of TAG, and read the list.
3. Group the commits under Added, Changed and Fixed. Skip merge commits.
4. Write one plain line per change. Never invent an issue number.
- Create the folder:
mkdir -p ~/.openclaw/workspace/skills/changelog-from-git. - Save the sample as
SKILL.mdinside it. - Run
openclaw skills list. OpenClaw watchesSKILL.mdfiles by default, so the skill should appear. - Try it from the terminal with
openclaw agent --message "write a changelog since the last tag", or name it in a chat with/skill changelog-from-git.
A skill that calls the exec tool needs a prompt that untrusted input can't turn into a shell command. For a file in the skill's own folder, write {baseDir}, as in {baseDir}/scripts/run.sh, not a fixed path.
How OpenClaw skills relate to the Agent Skills format
OpenClaw follows the Agent Skills specification, so a folder with a SKILL.md, a name and a description works in every tool that reads the format. Names follow the same rule in both, up to 64 characters, but descriptions don't. A skill imported from another tool may have one of up to 1,024 characters, so trim it to OpenClaw's one line first. A description written for OpenClaw already fits the specification's limit.
Beyond those two, the specification lists license, compatibility, metadata and an experimental allowed-tools. OpenClaw adds user-invocable, disable-model-invocation, command-dispatch and homepage, none of them in the specification, and stores its gates in metadata, the field the specification leaves to each client. The specification expects strings in that field, though, and OpenClaw reads nested objects.
Sources: OpenClaw docs: Creating skills (read November 3, 2026), Agent Skills specification (read November 3, 2026)
Publish a skill to ClawHub
Publishing uses a separate CLI, clawhub, which the ClawHub quickstart has you install from npm and sign in to with GitHub. A new skill starts at 1.0.0, and each later change goes out as the next patch version. Add --dry-run to preview the upload. Unchanged content is skipped.
The GitHub account can't be brand-new. Peter Steinberger, OpenClaw's creator, announced that gate on X along with a way for users to report skills.
Write the environment variables, tools and permissions the skill needs into its frontmatter before you publish. ClawHub's security analysis holds those declarations up against what the skill does and flags a mismatch.
npm i -g clawhub
clawhub login
clawhub skill publish ./changelog-from-gitThe screenshot is X's own embed of Peter Steinberger's post. Select it to open the post on X.
Read a skill before you install it
Unless you set up sandboxing, tools in the main session run on the host, which means your own machine. Whatever a skill tells the agent to run, it runs there.
ClawHub scans every release, and a skill's audit page shows the outcome: Pass, Review, Warn, Malicious, Pending or Error, with a risk level and the findings. Malicious means don't install. Review is not an accusation. ClawHub's own example is a publishing skill that acts with meaningful authority over an account. And a Pass, the security audits page adds, doesn't replace your own judgment.
Once a skill is installed, openclaw skills verify @owner/skill-name prints ClawHub's trust envelope for it, and --card prints its Skill Card. Installs through skills-sh: carry the label "Not scanned by ClawHub". --force-install lets a GitHub-backed skill in before ClawHub's scan finishes, with no verdict yet. Leave that flag off and install once the scan has one.
Koi Security's audit took every skill on ClawHub at one moment, reported in early February. Antiy CERT counted packages across ClawHub's whole history, all from 12 author IDs. OpenClaw's June dataset covers the latest public skill versions, and its three scanners seldom flagged the same one.
341 of 2,857
skills Koi Security flagged as malicious when it audited every skill on ClawHub, reported in early February 2026
Source: eSecurity Planet (read November 3, 2026)
1,184
malicious skill packages Antiy CERT found in ClawHub's whole history by 5 February 2026, from 12 author IDs
Source: Antiy CERT (read November 3, 2026)
67,453
latest public skill versions in the ClawHub scan dataset OpenClaw published on 1 June 2026
Source: OpenClaw blog: NVIDIA and skill security (read November 3, 2026)
ClawHub skill pages expose scan state before install, but scans are not a complete security boundary. OpenClaw does not run built-in local dangerous-code blocking during plugin/skill install or update.
- Read
SKILL.mdfor every command it tells the agent to run throughexec, and for what it does with the input. - Open every file beside it. ClawHub publishes all regular files in a skill folder, so a
scripts/directory can hold much more than instructions. - Check
requires.envandprimaryEnvfor the secrets and keys the skill asks for. - Look for an
installblock. It can fetch dependencies with brew, node, go, uv or a download, and a download entry may carry asha256that OpenClaw checks before it installs the file. That field is optional.
Malicious skills arrive in bulk
Antiy CERT dates the start of the mass release to this day: 7 attackers deploy 386 malicious skills, 354 of them from one account.
Source: Antiy CERT (read November 3, 2026)
A report button and an upload gate
Peter Steinberger says users can now report skills, and only accounts that are not brand-new on GitHub can upload them.
Source: Peter Steinberger on X (read November 3, 2026)
341 malicious skills reported
Oren Yomtov says his team found 341 malicious skills on ClawHub aimed at OpenClaw bots, and releases Clawdex, a skill that checks other skills.
Source: Oren Yomtov on X (read November 3, 2026)
VirusTotal scans every skill
OpenClaw says every ClawHub skill is now scanned for malware, with verdicts in about 30 seconds and daily re-scans, and calls it not a silver bullet.
Source: OpenClaw on X (read November 3, 2026)
Skill Cards and SkillSpector
Every skill gets a Skill Card, and NVIDIA's SkillSpector scans for hidden instructions. ClawScan weighs it with VirusTotal and OpenClaw's static analysis.
Source: OpenClaw blog: NVIDIA and skill security (read November 3, 2026)
Tencent AIG joins ClawScan
Every skill and plugin uploaded to ClawHub now also runs through Tencent's AI-Infra-Guard as part of its security review.
Source: OpenClaw blog: Tencent AIG joins ClawScan (read November 3, 2026)
Source: OpenClaw blog: NVIDIA and skill security (read November 3, 2026)
On your own machine, security.installPolicy runs a policy command of yours before any install goes ahead. The security FAQ also suggests pinned versions, narrow allowlists and openclaw security audit --deep after a config change. Both screenshots are X's embeds, with the link card under the OpenClaw post left out and its last line shortened by X. Select one to open the post.
Reference: where OpenClaw looks for skills, highest first
A name clash goes to the skill higher in the table. Row 1 is where the creating-skills page builds its first skill, ~/.openclaw/workspace/skills.
Subfolders are fine. OpenClaw finds a SKILL.md up to six folders below a root, so skills/personal/research/SKILL.md loads as research. The grouping is for you alone: the name and the slash command come from the name field, or from the directory name when name is missing.
| Order | Location | Notes |
|---|---|---|
| 1 | WORKSPACE/skills | Only that agent sees it. Wins a name clash. |
| 2 | WORKSPACE/.agents/skills | Only that workspace's agent. |
| 3 | ~/.agents/skills | Agents on the default state. Not read when the state folder has been moved. |
| 4 | STATE_DIR/skills | Shared by every agent on that state. --global installs write here. |
| 5 | STATE_DIR/agents/AGENT_ID/agent/workshop-skills | Skills the agent learned by itself. Only that agent. |
| 6 | Bundled with OpenClaw | Ships with the install. |
| 7 | skills.load.extraDirs | Folders you add in the config, plus skills that plugins ship. |
WORKSPACE is an agent's workspace folder, and STATE_DIR is OpenClaw's state folder, ~/.openclaw unless OPENCLAW_STATE_DIR points elsewhere.
Reference: installing from Git, a local folder or skills.sh
The install command takes other sources too. git:owner/repo@ref clones a Git skill, ./path/to/skill --as my-tool copies a local folder, and skills-sh:owner/repo/slug asks ClawHub to resolve a skills.sh listing to a pinned GitHub commit. Git and local installs need SKILL.md at the source root.
Only ClawHub installs are tracked, in .clawhub/lock.json in the workspace and in .clawhub/origin.json inside each installed skill. Folders named .clawdhub, from before July 2026, are no longer read: rename them to .clawhub before you update or verify an older install.
Frequently asked questions
Can I use a skill written for Claude Code or Codex in OpenClaw?
Usually, since all three read a SKILL.md folder: copy it into one of OpenClaw's roots, such as the workspace skills/ folder. The two .agents/skills roots are folders Codex reads as well, but Codex's own $CODEX_HOME/skills isn't one of OpenClaw's. openclaw migrate plan codex lists what it holds, and openclaw migrate codex copies it into your workspace. For Claude Code and Claude Desktop there is a bundled migrate-claude plugin that brings over instructions, MCP servers and skills.
Can I sell an OpenClaw skill on ClawHub?
No. Every skill published there is licensed MIT-0, so anyone may use, change and redistribute it, commercially too, without attribution. Nor does ClawHub have paid skills, per-skill pricing, paywalls or revenue sharing. A skill that calls a paid service should say so in its instructions and declare the variables it needs.
How do I update or remove a skill?
openclaw skills update --all updates every ClawHub-tracked skill in the workspace, and --global does the same for the shared folder. Git and local installs aren't tracked, so reinstall those with --force over the old folder. Removing a ClawHub skill takes the standalone CLI: clawhub uninstall @owner/skill-name, run against the root it was installed in.
How do I turn a skill off without deleting it?
Give its entry under skills.entries in ~/.openclaw/openclaw.json the line enabled: false. The key is the skill's name, in quotes if it has hyphens, and this works for bundled and installed skills alike. To switch off every bundled skill and nothing else, set allowBundled: [].
What is the difference between a skill and a plugin in OpenClaw?
A skill is a SKILL.md and the files beside it, while a plugin is a code package built for OpenClaw. ClawHub hosts both, skills as versioned text bundles and plugins with compatibility metadata. They overlap when a plugin lists skills directories in openclaw.plugin.json: those skills load whenever the plugin is enabled. Plugins install with openclaw plugins install clawhub:package-name, a prefix that released versions through 2026.10.4 need.
Can my agent write its own skills?
Yes. Skill Workshop, a bundled plugin that is on by default, lets the agent save the procedure behind hard multi-step work as a learned skill. Each change applies at once and keeps the previous version, and a skill nobody uses for 30 days is archived. openclaw skills workshop list shows them, while archive or restore undoes a change. A learned skill belongs to one agent and ignores that agent's allowlists, so you hide one by archiving it.
Do installed skills cost tokens?
Yes, a little per skill. Each one adds about 97 characters to the prompt plus its name, description and location, or roughly 24 tokens before those fields, by the Skills page's count. With enough skills the prompt budget runs out, and OpenClaw then keeps names and locations but shortens descriptions. A skill that drops off the list can still be found with skills_search when that tool is enabled. If you see descriptions cut short, shorten the longest ones in your own skills.
Sources
- OpenClaw docs: Skills https://docs.openclaw.ai/tools/skills
- OpenClaw docs: Creating skills https://docs.openclaw.ai/tools/creating-skills
- OpenClaw docs: Skills config https://docs.openclaw.ai/tools/skills-config
- OpenClaw docs: Skills CLI https://docs.openclaw.ai/cli/skills
- OpenClaw docs: ClawHub https://docs.openclaw.ai/clawhub
- OpenClaw docs: ClawHub quickstart https://docs.openclaw.ai/clawhub/quickstart
- OpenClaw docs: ClawHub skill format https://docs.openclaw.ai/clawhub/skill-format
- OpenClaw docs: ClawHub security audits https://docs.openclaw.ai/clawhub/security-audits
- OpenClaw docs: Security and access control FAQ https://docs.openclaw.ai/help/faq/security-and-access-control
- OpenClaw docs: Skills and automation FAQ https://docs.openclaw.ai/help/faq/skills-and-automation
- OpenClaw docs: Skill Workshop https://docs.openclaw.ai/tools/skill-workshop
- OpenClaw docs: Migrate Claude plugin reference https://docs.openclaw.ai/plugins/reference/migrate-claude
- GitHub: openclaw/openclaw README https://github.com/openclaw/openclaw
- GitHub: openclaw/clawhub README https://github.com/openclaw/clawhub
- ClawHub https://clawhub.ai
- Agent Skills specification https://agentskills.io/specification
- OpenClaw blog: OpenClaw Collaborates with NVIDIA for Stronger Agent Skill Security https://openclaw.ai/blog/openclaw-nvidia-skill-security
- OpenClaw blog: Tencent AIG joins ClawScan https://openclaw.ai/blog/tencent-aig-joins-clawscan
- Antiy CERT: ClawHavoc analysis (English edition) https://www.antiy.net/p/clawhavoc-analysis-of-large-scale-poisoning-campaign-targeting-the-openclaw-skill-market-for-ai-agents/
- eSecurity Planet: Hundreds of Malicious Skills Found in OpenClaw's ClawHub https://www.esecurityplanet.com/threats/hundreds-of-malicious-skills-found-in-openclaws-clawhub/
- Peter Steinberger on X: ClawHub reports and the upload gate https://x.com/steipete/status/2018297794952651111
- Oren Yomtov on X: 341 malicious skills on ClawHub https://x.com/orenyomtov/status/2018323558746014087
- OpenClaw on X: every ClawHub skill now scanned with VirusTotal https://x.com/openclaw/status/2019865921175577029



