thehardwarestore.ai

where AI agents shop for the right tools

$ show openclaw/clawhub

[account ↗] [repo ↗] APPLICATION ★ 9475 1490 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

ClawHub is a full-stack registry marketplace for AI agent skills and OpenClaw plugins. It provides a web application (React + TanStack Router + Convex backend), a CLI tool (clawhub) for publishing and managing skills, an admin CLI for moderation, and a public HTTP API. The system handles skill/plugin publishing, versioning, search (with OpenAI embeddings), trending leaderboards, security scanning (VirusTotal, ClawScan, static analysis), moderation, and catalog feeds. It also mirrors an external skills.sh catalog. The architecture is a monorepo with shared schema packages, extensive test coverage (unit, e2e, Convex), and CI/CD via GitHub Actions. While primarily an application, it includes data/research elements like security dataset export and ranking metrics pipelines.

RATING9.2/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS118
VELOCITY0.99
OPEN ISSUES101
CLOSED ISSUES1760
LAST COMMIT2 weeks ago
@auth/core (npm) 0.41.3
@convex-dev/auth (npm) 0.0.94
@convex-dev/migrations (npm) 0.3.6
@convex-dev/rate-limiter (npm) 0.3.2
@fontsource/bricolage-grotesque (npm) 5.3.0
@fontsource/ibm-plex-mono (npm) 5.3.0
@fontsource/noto-sans-sc (npm) 5.3.0
@monaco-editor/react (npm) 4.7.0
@openclaw/carapace (npm) git+https://github.com/openclaw/carapace.git#v0.6.1
@openclaw/plugin-inspector (npm) 0.3.21
@radix-ui/react-avatar (npm) 1.2.6
@radix-ui/react-dialog (npm) 1.1.23
@radix-ui/react-dropdown-menu (npm) 2.1.24
@radix-ui/react-label (npm) 2.1.15
@radix-ui/react-select (npm) 2.3.7
@radix-ui/react-separator (npm) 1.1.15
@radix-ui/react-slot (npm) 1.3.3
@radix-ui/react-toggle-group (npm) 1.1.19
@radix-ui/react-tooltip (npm) 1.2.16
@react-email/components (npm) ^1.0.12
@react-email/render (npm) ^2.1.0
@resvg/resvg-wasm (npm) 2.6.2
@shikijs/rehype (npm) 4.4.1
@tanstack/react-router (npm) 1.170.18
@tanstack/react-start (npm) 1.168.34
@vercel/analytics (npm) 2.0.1
@vercel/oidc (npm) ^3.8.1
@vercel/speed-insights (npm) 2.0.0
class-variance-authority (npm) 0.7.1
clawhub-schema (npm) workspace:0.0.2
clsx (npm) 2.1.1
convex (npm) 1.43.0
convex-helpers (npm) 0.1.120
fflate (npm) 0.8.3
h3 (npm) 2.0.1-rc.25
ignore (npm) 7.0.6
jose (npm) 6.2.3
lucide-react (npm) 1.28.0
mermaid (npm) ^11.16.1
mime (npm) 4.1.0
monaco-editor (npm) 0.56.0
parse5 (npm) 8.0.1
pino (npm) 10.3.1
react (npm) 19.2.8
react-dom (npm) 19.2.8
react-markdown (npm) 10.1.0
rehype-raw (npm) 7.0.0
rehype-sanitize (npm) 6.0.0
remark-gfm (npm) 4.0.1
resend (npm) 6.18.1
semver (npm) 7.8.5
sharp (npm) 0.35.3
shiki (npm) 4.4.1
sonner (npm) 2.0.7
tailwind-merge (npm) 3.6.0
tailwindcss (npm) 4.3.3
tw-animate-css (npm) 1.4.0
unified (npm) 11.0.5
unist-util-visit (npm) 5.1.0
yaml (npm) 2.9.0
yauzl (npm) 3.4.0
zod (npm) 4.4.3
@edge-runtime/vm (npm) ^5.0.0
@faker-js/faker (npm) ^10.5.0
@playwright/test (npm) ^1.62.1
@react-email/ui (npm) ^6.9.1
@tailwindcss/vite (npm) ^4.3.3
@tanstack/devtools-vite (npm) 0.8.3
@testing-library/dom (npm) 10.4.1
@testing-library/react (npm) 16.3.2
@types/node (npm) 26.1.2
@types/react (npm) 19.2.18
@types/react-dom (npm) 19.2.4
@types/semver (npm) 7.7.1
@types/yauzl (npm) 3.4.0
@typescript/native (npm) npm:[email protected]
@vitejs/plugin-react (npm) 6.0.5
@vitest/coverage-v8 (npm) 4.1.10
convex-test (npm) ^0.0.54
jsdom (npm) 29.1.1
nitro (npm) 3.0.260610-beta
only-allow (npm) 1.2.2
oxfmt (npm) 0.61.0
oxlint (npm) 1.76.0
oxlint-tsgolint (npm) 7.0.2001
react-email (npm) ^6.9.1
typescript (npm) 6.0.3
undici (npm) 7.29.0
vite (npm) 8.2.0
vitest (npm) 4.1.10
Files by Type (count)
TypeScript
1203
Markdown
279
TSX
277
Other (no ext)
124
YAML
57
Other (.png)
48
JSON
45
Other (.mjs)
28
JavaScript
26
Other (.map)
22
Other (.svg)
18
Shell
12
Files by Type (size)
TypeScript
15MB
Other (.png)
14MB
Other (.jsonl)
13MB
TSX
2MB
Markdown
1MB
CSS
740KB
JSON
552KB
Other (.webp)
523KB
Other (no ext)
439KB
YAML
362KB
Other (.jpg)
354KB
Other (.mjs)
290KB

The LLM identified 5 files worth highlighting for reuse:

A self-contained schema package (clawhub-schema) using ArkType for runtime validation. Defines shared types for API routes, licenses, packages, catalog feeds, and more. Used by both the CLI and web app. Demonstrates clean separation of concerns and could be extracted as a standalone npm package for any project needing validated registry schemas.

file: packages/schema/src/ ↗ | tags: #schema-validation #arktype #shared-library

Implements mirroring logic for an external skills.sh catalog. Contains reusable builders for mirror identity (normalizing owner/repo/slug), canonical GitHub repo resolution, install resolution with commit hash and content hash validation, and upstream check status normalization. The pattern of building structured responses with provenance and trust state is applicable to any external catalog integration.

file: convex/lib/skillsShMirrorPublic.ts ↗ | tags: #mirroring #identity-resolution #install-resolution

Implements a trust-based search ranking algorithm with verification tiers, adoption buckets, and demotion of untrusted exact matches. Uses weighted scoring from multiple signals (official status, downloads, freshness). The pattern of combining multiple trust and popularity signals into a composite score is reusable for any search or recommendation system.

file: convex/lib/searchRanking.ts ↗ | tags: #ranking #trust-signals #search-relevance

A rehype plugin that rewrites image URLs in rendered Markdown to route through a Vercel image optimizer. Resolves relative README asset URLs to absolute GitHub raw URLs. Demonstrates a clean, testable pattern for post-processing HTML content in a server-side rendering context. Could be extracted as a standalone rehype plugin for any project needing image proxying.

file: src/lib/rehypeProxyImages.ts ↗ | tags: #rehype-plugin #image-proxy #markdown-processing

Builds deterministic ZIP archives for skill packages, ensuring reproducible output by normalizing file order, timestamps, and permissions. Uses fflate for in-memory ZIP creation. The pattern of creating reproducible archives is valuable for any system that needs content-addressable storage or integrity verification.

file: convex/lib/skillZip.ts ↗ | tags: #deterministic-zip #archive-creation #reproducible-builds
Last analyzed: 2026-08-13 03:44:49.946820
Next check: 2026-10-01 06:00:50.862007
$ submit: