The Problem

OpenClaw users need a central place to discover, publish, and manage reusable skills and plugins. Existing methods rely on ad‑hoc GitHub repos or manual installs, making it hard to version, moderate, or search skills. The lack of a curated catalog slows adoption and increases the risk of duplicate or insecure code.

What This Does

ClawHub supplies a web UI, CLI, and API that handle skill lifecycle operations.

  • Skill registry – packages/clawhub/src/cli.ts exposes skill publish, search, and merge commands that call Convex HTTP actions defined in convex/lib/skills/index.ts.
  • Vector search – embeddings are generated with text‑embedding‑3‑small and stored in Convex’s vector index; the UI queries them via the same Convex functions.
  • Package catalog – the packages/schema package exports TypeScript types for OpenClaw plugin metadata (openclaw.compat.pluginApi, openclaw.build.openclawVersion) and is imported by the CLI (packages/clawhub/src/schema/index.ts).

How It Is Wired

  • Entry point – convex/_generated/server.js boots the Convex backend.
  • Convex actions – convex/lib/skills/index.ts defines publishSkill, searchSkills, and moderation functions. These actions read/write the Convex database, store uploaded skill files, and invoke the OpenAI embedding endpoint.
  • CLI – packages/clawhub/src/cli.ts parses arguments, authenticates via Convex Auth (packages/clawhub/src/auth.ts), and calls the appropriate Convex action through the generated client (convex/_generated/client.js).
  • Web app – served by Convex; the UI components (React, TSX files in src/) call the same Convex actions through the client.

The control path is: CLI/UI → Convex client → Convex action → Convex DB / OpenAI → response. The widest blast radius is the publishSkill action; it writes skill metadata, files, and embeddings, and triggers moderation hooks.

How To Use It

  1. Setup – clone the repo: ``bash git clone https://github.com/moses-y/clawhub cd clawhub npm install ``
  2. Configuration – create a .env file at the repo root (see convex/.env.example) with CONVEX_DEPLOYMENT, OPENAI_API_KEY, and GITHUB_TOKEN.
  3. Running the server – start Convex locally: ``bash npx convex dev ``
  4. Using the CLI – publish a skill: ``bash npx ts-node packages/clawhub/src/cli.ts skill publish ./my-skill ` Search: `bash npx ts-node packages/clawhub/src/cli.ts search "image classification" ``

Real‑World Use

A data‑science team maintains a set of image‑processing skills. They use the CLI to publish new versions nightly, and the web UI to let teammates search by semantic intent. Moderators flag questionable code; the skill delete command soft‑deletes the entry, preserving the URL for audit.

Code Health & Issues

  • Low – Missing lockfile in fixtures/claws/hosted‑e2e/package/package.json → non‑reproducible builds.
  • Medium – No Dockerfile; container deployment instructions absent.
  • High – No license badge in the root LICENSE file (MIT is declared, but no badge).
  • Low – 675 test files, 69 docs – good test coverage but no CI fail‑fast strategy documented.

The Bottom Line

ClawHub offers a solid, Convex‑powered registry that covers skill publishing, moderation, and vector search. Its TypeScript codebase is well‑structured, and the CLI is straightforward to use. The main gaps are the missing lockfile and lack of containerization documentation, but for teams already using OpenClaw, ClawHub is a practical, minimal‑friction solution.