

ClawHub is the public skill registry for OpenClaw: publish, version, and search text-based agent skills (a SKILL.md plus supporting files).
It's designed for fast browsing + a CLI-friendly API, with moderation hooks and vector search.
It also now exposes a native OpenClaw package catalog for code plugins and bundle plugins.
ClawHub · Vision · Docs · Contributing · Discord
SKILL.md.latest)./packages APIs and CLI flows.text-embedding-3-small) + Convex vector search.packages/schema (clawhub-schema).Common CLI flows:
clawhub login, clawhub whoamiclawhub login --deviceclawhub search ..., clawhub exploreclawhub package explore, clawhub package inspect <name>clawhub install @openclaw/demo, clawhub pin <skill>, clawhub unpin <skill>, clawhub uninstall <skill>, clawhub list, clawhub update --allclawhub inspect @openclaw/democlawhub skill publish <path>- Code-plugin manifests must includeopenclaw.compat.pluginApiandopenclaw.build.openclawVersion; see [docs/cli.md](docs/cli.md) for a minimal example.
- Canonicalize owned skills:clawhub skill rename ,clawhub skill merge
`
Docs: docs/quickstart.md, docs/cli.md.
clawhub uninstall <skill> only removes a local install on your machine.clawhub delete <skill> / clawhub undelete <skill> or API equivalents).clawhub package delete <name> / clawhub package undelete <name>.ClawHub tracks minimal install telemetry (to compute install counts) when you run clawhub install while logged in.
Disable via:
export CLAWHUB_DISABLE_TELEMETRY=1
Details: docs/telemetry.md.
src/ — TanStack Start app (routes, components, styles).convex/ — schema + queries/mutations/actions + HTTP API routes.packages/schema/ — shared API types/routes for the CLI and app.docs/ — publishable ClawHub public/operator docs for users, publishers, API clients, and deploy operators.specs/ — product specs, plans, regression notes, and design history.specs/spec.md — product + implementation spec (good first read for maintainers).Prereqs: Bun (Convex runs via bunx, no global install needed). The detached worktree path also requires Worktrunk (wt).
bun install
cp .env.local.example .env.local
# edit .env.local — see CONTRIBUTING.md for local Convex values
# terminal A: local Convex backend
bunx convex dev
# terminal B: web app (port 3000)
bun run dev
# detached/Codex worktree preview
bun run setup:worktree
bun run dev:worktree
wt --yes url
# seed local QA fixtures and the public corpus
bun run seed:dev
bun run seed:dev waits for the local Convex deployment, runs the dev fixture seed, and refreshes
global stats. The fixtures are owned by @local and are safe to rerun after fixture or schema
changes. For reset/manual commands and full setup instructions (env vars, GitHub OAuth, JWT keys,
database seeding), see CONTRIBUTING.md.
VITE_CONVEX_URL: Convex deployment URL (https://<deployment>.convex.cloud).VITE_CONVEX_SITE_URL: Convex site URL (https://<deployment>.convex.site).CONVEX_SITE_URL: same as VITE_CONVEX_SITE_URL (auth + cookies).SITE_URL: App URL (local: http://localhost:3000).AUTH_GITHUB_ID / AUTH_GITHUB_SECRET: GitHub OAuth App.JWT_PRIVATE_KEY / JWKS: Convex Auth keys.OPENAI_API_KEY: embeddings for search + indexing.ClawHub can store a nix-clawdbot plugin pointer in SKILL frontmatter so the registry knows which Nix package bundle to install. A nix plugin is different from a regular skill pack: it bundles the skill pack, the CLI binary, and its config flags/requirements together.
Add this to SKILL.md:
---
name: peekaboo
description: Capture and automate macOS UI with the Peekaboo CLI.
metadata:
{
"clawdbot":
{
"nix":
{
"plugin": "github:clawdbot/nix-steipete-tools?dir=tools/peekaboo",
"systems": ["aarch64-darwin"],
},
},
}
---
Install via nix-clawdbot:
programs.clawdbot.plugins = [
{ source = "github:clawdbot/nix-steipete-tools?dir=tools/peekaboo"; }
];
You can also declare config requirements + an example snippet:
---
name: padel
description: Check padel court availability and manage bookings via Playtomic.
metadata:
{
"clawdbot":
{
"config":
{
"requiredEnv": ["PADEL_AUTH_FILE"],
"stateDirs": [".config/padel"],
"example": "config = { env = { PADEL_AUTH_FILE = \\\"/run/agenix/padel-auth\\\"; }; };",
},
},
}
---
To show CLI help (recommended for nix plugins), include the cli --help output:
---
name: padel
description: Check padel court availability and manage bookings via Playtomic.
metadata: { "clawdbot": { "cliHelp": "padel --help\\nUsage: padel [command]\\n" } }
---
metadata.clawdbot is preferred, but metadata.clawdis and metadata.openclaw are accepted as aliases.
Skills declare their runtime requirements (env vars, binaries, install specs) in the SKILL.md frontmatter. ClawHub's security analysis checks these declarations against actual skill behavior; medium review findings stay visible, and the suspicious filter is reserved for high-impact or malicious concerns.
Full reference: docs/skill-format.md
Quick example:
---
name: my-skill
description: Does a thing with an API.
metadata:
openclaw:
requires:
env:
- MY_API_KEY
bins:
- curl
primaryEnv: MY_API_KEY
---
bun run dev
bun run build
bun run test
bun run coverage
bun run lint
$ claude mcp add clawhub \
-- python -m otcore.mcp_server <graph>