Vyctor H. BrzezowskiandCursor 0dafef6c8b feat(web): polish skill and plugin detail pages (#2780)
* fix: polish skill detail hero metadata

* fix: improve skill readme presentation

* chore: outline skill detail structure

* fix: narrow detail page container

* fix: compact skill sidebar on detail pages

* fix: use body font for install switcher

* fix: align plugin detail sidebar

* fix: shorten skill readme preview

* fix: soften related skills heading

* fix: remove duplicate stars metadata

* fix: remove related skill hover underline

* chore: remove detail debug outlines

* fix: align hero with content column

* fix: rename summary disclosure action

* fix: wrap tab content in contrast panel

* fix: restore full width hero layout

* fix: refine skill detail surfaces

* fix: soften skill readme body copy

* fix: hide skill detail breadcrumbs

* fix: place skill taxonomy above title

* fix: reduce skill detail title size

* fix: add skill hero top spacing

* fix: standardize skill markdown formatting

* fix: refine related skills navigation

* fix: align plugin detail hero with skills

* fix: increase hero taxonomy spacing

* fix: mark official plugin owners

* fix: tune detail sidebar labels

* fix: restyle install tab switcher

* fix: add subtle skill detail wash

* fix: horizontalize skill versions panel

* fix: animate install tab switcher

* fix: align plugin versions layout

* fix: improve tab markdown surface contrast

* fix: separate detail categories with commas

* fix: remove detail tab underline bars

* fix: bleed skill wash behind header

* fix: polish detail versions changelog

* fix: add file tree to skill files view

* fix: anchor skill wash to page top

* fix: restore plugin version download actions

* fix: align detail sidebar top spacing

* fix: restore active detail tab bar

* fix: collapse detail version changelogs

* fix: clarify version changelog toggles

* fix: tune detail tab and install polish

* fix: polish markdown code blocks

* fix: refine markdown code wrap control

* docs: capture detail polish direction

* fix: refine release history layout

* feat: simplify detail file navigation

* fix: align detail hero sidebar patterns

* fix: unify plugin and skill detail polish

* fix: refine detail hero and release rows

* fix: move related skills below detail content

* fix: align detail hero title with main content column

Keep the hero wash full width while constraining taxonomy, title, and
summary to the same grid column as install and tab content on desktop.

* fix: increase star count badge font to 14px

Make the sidebar star action count easier to read on detail pages.

* fix: align shiki code block surfaces with detail markdown

Override Shiki's inline pre background so fenced blocks use the shared
markdown-code-block surface on skill and plugin README tabs.

* fix: remove code wrap toggle blur flicker

Drop the wrap-state blur reveal so toggling nowrap/wrap keeps the code
DOM stable without flashing highlighted tokens.

* fix: contain detail markdown overflow in tab bodies

Keep README and SKILL surfaces clipped to the tab column while preserving
horizontal scroll only inside code blocks and tables.

* fix: use neutral hover border on detail sidebar actions

Override the accent outline hover on Star, Share, and Download sidebar
buttons so detail pages keep a quieter action treatment.

* fix: tighten release row checks and download actions

Keep scan badges on one horizontal row, left-align package actions with
the column header, and show an icon-only download control.

* fix: collapse long plugin README previews like SKILL.md

Reuse the skill readme preview limiter with Read more/Show less on plugin
README.md tabs so long documentation stays scannable by default.

* fix: match activity metric info icon to security audit

Reuse the quiet sidebar info button styling so download labels no longer
show a circular hover treatment on the help icon.

* chore: remove unused activity metric info button styles

* fix: use neutral colors for download trend sparklines

Keep sidebar activity graphs muted with ink-soft tones instead of accent
red on skill and plugin detail pages.

* fix(ui): style related skills category link as outline button

Give the compact hero "More in …" footer full-width outline button affordance with neutral hover, matching sidebar secondary actions.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): compact skill/plugin detail hero on mobile

Tighten vertical rhythm below 1100px: side-by-side Star/Share, smaller
action buttons, denser metadata rows, shorter download sparkline, and
reduced gaps between hero, sidebar, and install sections.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): reduce sidebar action count font to 13px

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): reduce sidebar action count font to 13px

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): shrink sidebar star count badge height

Lower the action-count pill so Star and Share buttons align at the same height.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): restore markdown ordered and bullet list markers

Tailwind preflight strips list-style from ol/ul; re-apply disc and decimal
markers inside .markdown so SKILL.md and plugin README numbering renders.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: add download period tabs to detail sidebar

Replace the static 30-day downloads row with All time, 30d, and 7d tabs
that update the sparkline and total on skill and plugin detail pages.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): polish audit sidebar, badges, and chart theme tokens

Make creator badges fully clickable, collapse Latest audit to one inline row,
and tune download sparkline colors per theme with softer blue tones.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: make creator user badges fully clickable

Use fallbackHandle for profile links, pass plugin ownerHandle when the
owner record omits it, and add sidebar hover affordance on the whole badge.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): tighten audit sidebar and related skills footer

Center the category footer action, remove the secondary-actions negative
margin hack, and keep Latest audit on one compact inline row.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): refine downloads tabs, report row, and related summaries

Move download period tabs inline with the Downloads label using listing-style
underline tabs, drop the Report block top border, and cap related skill
descriptions at 80 characters.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat: polish skill and plugin detail pages

* feat: add diff viewer skeleton

* fix: retain diff skeleton while versions load

* feat: restructure skill card review layout

* feat: add category icons to related skills

* fix: keep primary skill file first

* fix: keep skill card context expanded

* fix: refine skill card overview and risk contrast

* fix: show stars in related skill rows

* fix: refine install requirement tabs

* fix: join skill card risk rail

* fix: align plugin versions panel behavior

* fix: polish plugin repository and requirement panels

* fix: stabilize detail page skeleton layouts

* fix: resolve detail hydration gaps and finish polish pass

Keep mobile/desktop detail markup stable for SSR hydration, sync Shiki
theme selection with useSyncExternalStore, and complete tabpanel ARIA for
Files and Versions. Also lands remaining plugin categorize, install, and
metadata dialog polish from the detail-page iteration.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: stabilize detail page CI contracts

* feat(web): polish detail install shell and checkpoint branch WIP

Add subtle terminal $ prompt to skill/plugin install commands with
vertical alignment and descender-safe line height. Bundle remaining
detail-page polish, dialog tweaks, and local PR proof artifacts as a
restore point before further agent work.

* fix(web): polish plugin sidebar download and detail hero alignment

Move plugin download inline with the downloads count when no activity graph
is shown, and to the sidebar footer when a graph is present. Align skill/plugin
hero summary rows, compact management toolbar actions, and plugin mobile
About/Stats tabs. Remove accidental local proof artifacts from the branch.

* fix(web): stabilize detail page CI

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-22 19:32:12 -07:00
2026-02-14 02:15:12 +01:00
2026-06-19 11:36:01 -07:00
2026-04-30 23:39:28 -07:00
2026-01-03 18:14:33 +01:00
2026-01-07 18:28:51 +01:00
2026-04-30 23:39:28 -07:00
2026-01-03 14:49:41 +01:00

ClawHub

ClawHub banner

ClawHub

CI status Discord MIT License

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

What you can do with it

  • Browse skills + render their SKILL.md.
  • Publish new skill versions with changelogs + tags (including latest).
  • Rename an owned skill without breaking old links or installs.
  • Merge duplicate owned skills into one canonical slug.
  • Search via embeddings (vector index) instead of brittle keywords.
  • Star + comment; admins/mods can curate and approve skills.
  • Pin local skill installs so updates and force reinstalls cannot overwrite frozen copies.
  • Browse OpenClaw packages with family/trust/capability metadata.
  • Publish native code plugins and bundle plugins through /packages APIs and CLI flows.

How it works (high level)

  • Web app: TanStack Start (React, Vite/Nitro).
  • Backend: Convex (DB + file storage + HTTP actions) + Convex Auth (GitHub OAuth).
  • Search: OpenAI embeddings (text-embedding-3-small) + Convex vector search.
  • API schema + routes: packages/schema (clawhub-schema).

CLI

Common CLI flows:

  • Auth: clawhub login, clawhub whoami
  • Remote/headless auth: clawhub login --device
  • Discover: clawhub search ..., clawhub explore
  • Browse unified catalog (skills + plugins): clawhub package explore, clawhub package inspect <name>
  • Manage local installs: clawhub install @openclaw/demo, clawhub pin <skill>, clawhub unpin <skill>, clawhub uninstall <skill>, clawhub list, clawhub update --all
  • Inspect without installing: clawhub inspect @openclaw/demo
  • Publish skills: clawhub skill publish <path>
  • Publish plugins: clawhub package publish <source>
  • Code-plugin manifests must include openclaw.compat.pluginApi and openclaw.build.openclawVersion; see docs/cli.md for a minimal example.
  • Canonicalize owned skills: clawhub skill rename <skill> <new-name>, clawhub skill merge <source> <target>

Docs: docs/quickstart.md, docs/cli.md.

Removal permissions

  • clawhub uninstall <skill> only removes a local install on your machine.
  • Uploaded registry skills use soft-delete/restore (clawhub delete <skill> / clawhub undelete <skill> or API equivalents).
  • Soft-delete/restore is allowed for the skill or package owner, publisher owner/admin, moderators, and admins.
  • Packages use clawhub package delete <name> / clawhub package undelete <name>.
  • Hard delete is admin-only (management tools / ban flows).
  • Owner rename keeps the old slug as a redirect alias.
  • Owner merge hides the source listing and redirects the old slug to the canonical target.

Telemetry

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.

Repo layout

  • 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).

Local dev

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.

Environment

  • 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.

Nix plugins (nixmode skills)

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.

Skill metadata

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
---

Scripts

bun run dev
bun run build
bun run test
bun run coverage
bun run lint
S
Description
No description provided
Readme MIT
218 MiB
Languages
TypeScript 87.8%
Python 4%
CSS 3.9%
Shell 2.4%
JavaScript 1.8%