ClawHub is the public skill registry for Clawdbot: 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.
onlycrabs.ai is the SOUL.md registry: publish and share system lore the same way you publish skills.
Live: https://clawhub.ai
onlycrabs.ai: https://onlycrabs.ai
SKILL.md.latest).SOUL.md.onlycrabs.ai./souls.SOUL.md for now (no extra files).text-embedding-3-small) + Convex vector search.packages/schema (clawhub-schema).Common CLI flows:
clawhub login, clawhub whoamiclawhub search ..., clawhub exploreclawhub install <slug>, clawhub uninstall <slug>, clawhub list, clawhub update --allclawhub inspect <slug>clawhub publish <path>, clawhub syncDocs: docs/quickstart.md, docs/cli.md.
ClawHub tracks minimal install telemetry (to compute install counts) when you run clawhub sync 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/spec.md — product + implementation spec (good first read).Prereqs: Bun + Convex CLI.
bun install
cp .env.local.example .env.local
# terminal A: web app
bun run dev
# terminal B: Convex dev deployment
bunx convex dev
Create a GitHub OAuth App, set AUTH_GITHUB_ID / AUTH_GITHUB_SECRET, then:
bunx auth --deployment-name <deployment> --web-server-url http://localhost:3000
This writes JWT_PRIVATE_KEY + JWKS to the deployment and prints values for your local .env.local.
VITE_CONVEX_URL: Convex deployment URL (https://<deployment>.convex.cloud).VITE_CONVEX_SITE_URL: Convex site URL (https://<deployment>.convex.site).VITE_SOULHUB_SITE_URL: onlycrabs.ai site URL (https://onlycrabs.ai).VITE_SOULHUB_HOST: onlycrabs.ai host match (onlycrabs.ai).VITE_SITE_MODE: Optional override (skills or souls) for SSR builds.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.
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