306 Commits
Author SHA1 Message Date
Patrick Erichsen 60b02c09f9 fix: stream legacy skill downloads (#3451)
* fix: stream legacy skill downloads

* fix: stream zip entries in bounded chunks

* fix: stream large archives through api owner

* fix: normalize streamed archive chunks

* fix: authenticate archive streaming handoff

* fix: authenticate archive manifest requests

* test: bound archive determinism fixture

* fix: align archive oidc trust with vercel targets

* fix: harden archive runtime boundaries

* test: isolate archive proxy credentials

* test: exercise streamed manifest size cap
2026-08-12 12:19:37 -07:00
Gio Della-Libera 82313c2bb1 feat: require exact ClawPack publication (#3359)
Accept artifact-only publication for experimental Claws so ClawHub can attest, retry, and serve the exact stored bytes. Preserve exact actor, owner, and digest identity across staged retries and validate current release state before reuse. Add durable contract documentation and real-stack publish, poll, download, and retry proof.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-09 12:37:04 -07:00
Gio Della-Libera 348851eeb9 feat(claws): align package layers with schema v1 (#3328)
Adds conventional harness profiles, package-root BOOTSTRAP.md, strict OpenClaw validation, portable path hardening, and an official upstream contract pin.
2026-08-09 07:46:06 -07:00
Sergio PeschieraandPatrick Erichsen 6d935f0595 feat: forward package catalog metadata in publish workflow (#3074)
* feat: forward package catalog metadata in publish workflow

* docs: make package publish metadata example event-safe

* fix: preserve package metadata clearing

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-05 21:03:32 -07:00
Conor BronsdonandClaude Fable 5 fd3bef4ae7 docs: document skill categories and topics (#3380)
* docs: document skill categories and topics

Add a Catalog metadata section to docs/publishing.md covering --categories
and --topics, the 14 valid category slugs, the limits ClawHub enforces, the
reserved topic names, the `other` default, and how stored values change on a
later publish. Cross-reference it from the skill publish and sync entries in
docs/cli.md.

Values read from packages/schema/src/catalogMetadata.ts,
convex/lib/skillPublish.ts, and packages/clawhub/src/cli.ts.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: cover the CI and plugin paths for catalog metadata

Three gaps in the first pass, all the same shape as the one this PR set
out to fix -- a way to publish with no way to set catalog metadata:

The reusable skill-publish.yml workflow has no categories or topics
input. It builds the command with --owner and --tags only, so a catalog
repo publishing through CI lands every skill in `other`, exactly like
sync. The new section sat directly under the workflow snippet and said
"set both when you publish," which read as though the block above it
could. Documented in both files.

`package publish` takes the same two flag names against
PLUGIN_CATEGORY_DEFINITIONS -- a different 12-slug list documented
nowhere -- so a reader who followed the new link would try
`development` and have the publish rejected. The cli.md entry now names
the plugin slugs and says the topic rules are shared, which they are:
convex/packages.ts:8585 resolves through resolvePluginCategories but
reuses normalizeCatalogTopics.

Moved the metadata section above the catalog-repo prose so the flags sit
with the command they belong to, and gave the CI content its own
heading rather than leaving it to trail the section. No wording in the
moved block changed.

Also two enforced rules the first pass omitted: repeats are dropped
rather than rejected and are matched after normalization (so `git,Git`
is one topic, and both limits count what survives), and topics cannot
contain invisible formatting characters. Qualified the 3-category limit,
which is applied after `other` is dropped, so `other,development,
operations` stores two rather than failing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: scope plugin-category validation to code and bundle plugins

Review caught that the package-publish bullet claimed every publish
validates --categories against the 12 plugin slugs. The claw family
does not: convex/packages.ts branches on family === "claw" and stores
the declared slugs without resolvePluginCategories, while
normalizeCatalogTopics still runs for every family. The bullet now
limits the slug check to code and bundle plugins, links docs/claws.md
for the exception, and keeps the shared-topic-rules claim, which held.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 15:51:27 -07:00
Peter Steinberger f9ea25e14f fix(api): qualify batch skill security verdicts by owner (#3409) 2026-08-05 08:47:19 -07:00
Patrick Erichsen 7571488ab3 fix: allow safe skill latest rollback (#3388)
* fix: allow safe skill latest rollback

* chore(release): prepare clawhub 0.23.2
2026-08-03 19:42:03 -07:00
Vincent Koc 1a3ee6e015 fix(publish): wait for definitive package publication 2026-08-01 01:00:02 +08:00
Gio Della-Libera 79ef4af17f feat(claws): publish CLAW.md prompts (#3262)
* feat(claws): publish CLAW.md prompts

* docs(claws): link prompt bridge PR

* fix(claws): align prompt package validation

* test(claws): repin OpenClaw prompt contract

* test(claws): repin updated OpenClaw contract

* test(claws): pin merged OpenClaw prompt contract
2026-07-28 21:42:27 -07:00
Deepak JainandPatrick Erichsen 9bceec249e fix: add exact and paginated prefix skill discovery (#2969)
* fix: add exact and prefix skill search modes

* docs: document exact and prefix skill search

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-07-28 18:11:58 -05:00
Gio Della-LiberaandPatrick Erichsen 5a3b050751 Add gated Claw hosted feed and lifecycle proof (#3092)
* feat(claws): publish hosted feed with OpenClaw proof

* test(claws): prove package-local profile feed flow

* fix(claws): encode scoped package artifact routes

* fix(claws): enforce feed rollback and binding

* test(claws): pin hosted OpenClaw contract proof

* test(claws): add Convex feed runtime smoke

* chore(schema): refresh experimental feed declarations

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-07-24 19:29:12 -05:00
Gio Della-LiberaandPatrick Erichsen 6efbcb768f Add gated Claw discovery and API projection (#3091)
* feat(claws): add gated discovery APIs

* test(claws): distinguish latest and exact summaries

* fix(claws): bound public release projection

* chore(claws): refresh schema declarations

* fix(claws): select release projection by family

* fix(claws): hide unpublished release summaries

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-07-24 19:10:55 -05:00
Gio Della-Libera 85a3fde608 feat(claws): add gated publication and profile validation (#3090)
Gate Claw publication before storage access or mutation, validate bounded exact package/profile bytes and archive hierarchy, implement the managed CLAW.md body envelope, and prevent disabled-family list/search starvation.

Validated at exact head a9f1bb419f with all repository CI, CodeQL, secret scanning, focused tests, real local Convex schema/function validation, and clean final autoreview.

Co-authored-by: Gio Della-Libera <giodl73@gmail.com>
2026-07-24 18:14:12 -05:00
Patrick Erichsen 0f84533e9c feat: add permanent skills.sh mirror storage (#3227)
* feat: add staged skills.sh mirror storage

* ci: allow guarded CLAW-563 Test deploy

* ci: expose guarded Test deploy diagnostics

* ci: defer branch guard to deploy step

* ci: deploy CLAW-563 PR head to Test

* ci: admit CLAW-563 PR Test job

* fix: make mirror source recovery durable

* ci: trigger labeled mirror load

* feat: activate mirror search queries

* fix: tighten mirror source typing

* fix: bypass protected Test mirror proof

* feat: attribute skill metrics by source

* feat: present stars as bookmarks

* style: format mirror proof changes

* fix: bypass protected mirror readback

* fix: resume mirror past missing scanner pages

* fix: fetch skills.sh mirror audits from api

* fix: validate structural skills.sh identities

* fix: resolve ambiguous skills.sh mirror identities

* feat: stabilize skills.sh mirror ingestion

* fix: account mirror identity conflicts in proof

* fix: quarantine invalid skills.sh detail ids

* fix: resume skills.sh mirror proof

* fix: preserve skills.sh mirror provenance

* fix: recover exact skills.sh mirror runs

* fix: recover stale skills.sh mirror runs

* fix: normalize skills.sh mirror topic facets

* feat: prove complete skills.sh leaderboard mirror

* fix: canonicalize skills.sh source page hashes

* test: enable skills.sh rollout in mirror tests

* ci: skip unrelated Test deploy pull requests

* fix: preserve Vercel preview marker in Test deploy

* fix: tighten Test deploy and metric reconciliation

* fix: bound mirror detail proof pages

* fix: delegate controlled mirror rate limits

* fix: preserve mirror reconciliation progress

* fix: release mirror retry responses

* fix: preserve stale mirror replay state

* fix: authenticate mirror source starts

* fix: delegate mirror identity rate limits

* ci: trigger mirror proof when labeled

* ci: couple mirror deploy and proof opt-in

* fix: admit permanent Vercel Test runtime

* fix: pass Test target to Vercel runtime

* test: align bookmark sync browser labels

* fix: preserve skills.sh source accounting

* fix: preflight active mirror runs

* fix: bind mirror snapshot accounting

* fix: reject truncated replay hashes

* fix: preserve live mirror overlay metadata
2026-07-24 14:32:00 -05:00
Patrick Erichsen fec0f5bd23 feat: count successful OpenClaw plugin installs (#3242) 2026-07-23 12:12:58 -07:00
Patrick Erichsen 8d8e99a65f feat: make owner version deletion reversible (#3199) 2026-07-20 21:18:35 -07:00
Patrick Erichsen 3097319ef6 fix: publish complete skill artifacts (#3196)
* fix: preserve complete skill artifacts

* test: align artifact metadata expectations

* fix: harden complete skill artifact handling

* fix: close complete artifact review gaps

* fix: preserve legacy skill file metadata hints

* fix: close artifact presentation review gaps

* fix(cli): preserve legacy skill file collector export

* refactor: centralize artifact upload helpers

* fix: preserve artifact scan and publish bounds

* fix: scan complete published text artifacts

* fix: harden artifact download presentation

* test: avoid secret-like fixture text

* refactor: preview artifacts by content

* chore(deps): patch transitive audit advisories
2026-07-20 15:54:47 -07:00
Patrick Erichsen b0d9cc4297 fix: render published plugin manifest icons (#3126) 2026-07-16 19:55:09 -07:00
Andy Ye 29b887ce29 fix(web): preserve long catalog names (#2962)
Preserve full skill and plugin display names through publish and sync, while limiting public catalog previews to 70 characters.
2026-07-11 11:09:25 -03:00
Patrick Erichsen a230d962db chore: bump plugin inspector session sdk checks (#2932)
* chore: bump plugin inspector session sdk checks

* chore: prepare clawhub cli 0.23.1

* test: update clawhub cli release fixture
2026-06-29 19:11:41 -07:00
Jesse Merhi 77e79d3a06 Warn before publisher abuse autobans
Publisher-abuse automatic enforcement now uses warning-first daily pressure scans behind an audited kill switch. The flow warns eligible publishers, requires a newer post-deadline confirming score before autoban, excludes official/staff publishers, and reuses the existing account-ban path for enforcement, audit, email, and appeal compatibility.
2026-06-26 15:29:20 +10:00
Vincent Koc 11d70e3f88 feat(search): add freshness-aware discovery ranking
feat(search): add freshness-aware discovery ranking
2026-06-25 15:11:24 +08:00
Jesse Merhi 088339b5d2 fix: harden API rate limits (#2783) 2026-06-25 16:22:00 +10:00
Patrick Erichsen 63ca5c2a2e feat: add github-backed skill handoffs to downloads and export 2026-06-23 17:08:46 -07:00
Patrick Erichsen 55fe4a8563 feat: add owner-qualified catalog routes
Adds canonical owner-qualified publisher, skill, and plugin routes while preserving legacy redirects.\n\nIncludes API, CLI, docs, and user-facing copy updates for /<owner>/skills/<slug> and /<owner>/plugins/<slug>.\n\nMerged by request before the local-auth matrix was green; static, unit, packages, types-build, e2e-http, and playwright-smoke were green on a1328b8.
2026-06-22 21:35:56 -07:00
Patrick Erichsen bbe887faac feat(cli): restore skill sync command
Restores the ClawHub CLI sync command as a one-way skill publish workflow without install/download telemetry updates.
2026-06-22 18:45:59 -07:00
Jesse Merhi 379c1871f4 Add skill and plugin download activity graphs
Restore downloads as the public activity metric and add deferred 30-day download graphs for skills and plugins.
2026-06-22 11:59:30 +10:00
Patrick Erichsen f381b01829 feat: surface plugin manifest icons (#2747) 2026-06-18 20:15:35 -07:00
Patrick Erichsen c13a2514da docs: add namespace claims guide
Adds a dedicated ClawHub namespace claims guide and routes existing claim references through it.
2026-06-17 17:59:12 -07:00
Jason (Json)andPatrick Erichsen 04ec212100 feat: add controlled catalog taxonomy and topics (#2699)
* feat: add controlled catalog taxonomy and topics

* refactor: limit taxonomy input to publish surfaces

* fix: omit inactive official-first filter

* fix: preserve unsaved catalog metadata edits

* fix: enforce catalog taxonomy invariants

* fix: close catalog taxonomy review gaps

* fix: tolerate retired stored skill categories

* fix: bound catalog metadata filter scans

* fix: preserve comma-containing topic labels

* fix: tolerate retired stored plugin categories

* fix: ignore empty secret integration metadata

* fix: honor explicit categories in related skills

* fix: harden taxonomy rollout migration

* fix: harden taxonomy browse pagination

* fix: preserve skill topic recommendation fallback

* fix: scale curated skill category browse

* fix: preserve legacy plugin category filters

* fix: preserve taxonomy compatibility semantics

* fix: preserve legacy catalog browse links

* feat: make catalog metadata editing explicit

* test: update plugin manage context contract

* fix: address taxonomy review findings

* fix: preserve empty category publish flags

* fix: preserve catalog search and publish metadata

* chore: keep taxonomy migration operator-run

* docs: keep taxonomy migrations operator-run

* fix: reject inherited category aliases

* fix: preserve normalized topic search behavior

* test: cover full topic pagination cursors

* fix: tolerate invalid stored topics

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-06-17 18:20:54 -06:00
Patrick Erichsen 11ad31aa4e feat: scope skill slugs by owner (#2299)
* feat: scope skill slugs by owner

* test: cover owner-scoped skill slug publishes

* feat: scope skill slugs by owner

* fix: restore owner-scoped skill ci

* fix: keep package names separate from skill slugs
2026-06-17 15:31:40 -07:00
Vyctor H. Brzezowski 5f0e1ee639 feat: import owned public GitHub skills (#2444)
* feat: add GitHub skill import flow

* polish: refine GitHub import review states

* feat: link publish page to GitHub import

* test: keep import route checks lint-clean

* fix: harden GitHub import review flow

* polish: show copied state for GitHub import links

* fix: stabilize GitHub import slug review state

* fix: harden GitHub import discovery

* fix: address GitHub import review feedback

* fix: preserve legacy GitHub skill filenames

* fix: allow public GitHub URL imports

* style: format github import

* fix: remove stale import route imports

* fix: enforce owned GitHub import URLs

* fix: align GitHub import with main
2026-06-17 12:43:51 -07:00
Patrick Erichsen 5be7035a69 docs: add org namespace claim form (#2637) 2026-06-17 12:31:00 -07:00
Jesse Merhi 0189ddd5c2 fix: add install sort support to package catalog APIs
- Add install sorting to package and plugin catalog API paths.
- Reject removed downloads sort requests with 400.
- Keep recommended browse stable during recommendation-score backfill.
- Normalize stale plugin UI downloads sort URLs back to the default browse state.
2026-06-17 17:36:36 +10:00
Patrick Erichsen effd52a4ea docs: fix acceptable usage table formatting 2026-06-16 17:36:02 -07:00
Patrick Erichsen 3a46cdd07e docs: clarify acceptable usage policy 2026-06-16 17:19:10 -07:00
Patrick Erichsen 1e7de4a2a2 fix: remove retired capability metadata surfaces
Remove retired capabilities/capabilityTags/executesCode surfaces for skills and plugins, add guarded cleanup tooling for legacy rows, and sanitize pre-cleanup legacy seed/release payloads.
2026-06-16 17:03:44 -07:00
Jesse Merhi 303075c82b Remove retired moderation surfaces (#2658)
* chore: remove retired moderation surfaces

* test: cover retired moderation action wrappers

* chore: retain moderation security gates

* test: cover retired moderation compatibility paths

* fix: stop settings queries during account deletion

* docs: add retired comment purge command

* chore: delete retired scanner tombstones
2026-06-16 08:01:11 -07:00
Patrick Erichsen a3d4509102 docs: simplify content rights reporting page (#2683) 2026-06-15 21:35:20 -07:00
Patrick Erichsen e8a75de2b1 refactor: remove root install telemetry (#2673)
* refactor: remove root install telemetry

* chore: add root telemetry cleanup job

* fix: preserve legacy root telemetry deletion

* fix: handle token list after account deletion

* test: isolate local-auth e2e from production crons
2026-06-15 19:42:51 -07:00
Patrick Erichsen e3e5705d89 feat(cli)!: remove sync command (#2669)
* feat(cli)!: remove sync command

* feat(cli): reconcile skill publishes

* chore: release clawhub cli 0.22.0

* fix(cli): publish new skills after resolver miss

* feat(workflow)!: remove bump input
2026-06-15 18:22:52 -07:00
Patrick Erichsen f366269519 feat: add owner version deletion
Add owner-only one-way deletion for individual skill versions and plugin releases, with CLI --version support, latest/only-version guards, and browser proof.
2026-06-15 17:52:28 -07:00
Patrick Erichsen 89bb8fe938 feat: add content rights case tooling (#2657) 2026-06-15 17:32:07 -07:00
Patrick Erichsen 44ce895b44 fix: use installs across public adoption surfaces (#2653)
* fix: use installs across public adoption surfaces

* fix(cli): expose install-based explore sorting

* test: type legacy publisher sort coverage

* fix: preserve install compatibility paths

* fix: bound legacy hover install fallback

* docs: stop advertising downloads sort

* fix: preserve install rollout compatibility

* chore: update ws security override

* test: stub image optimizer in local browser smoke

* fix: normalize legacy download sort aliases
2026-06-15 11:06:29 -07:00
Jesse Merhi 078425f074 feat: add plugin install ranking (#2633) 2026-06-15 09:28:26 -07:00
clawsweeper[bot]momothemageclawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>momothemage
44a552f3da fix: add guarded personal publisher recovery (#2642)
Summary:
- The PR adds an admin-only personal publisher recovery flow with HTTP API, admin CLI support, shared response schema, docs/spec notes, and tests.
- Reproducibility: yes. Source inspection shows current main lacks a publisher-recovery route and personal pub ...  to an existing ClawHub user, so a replacement GitHub principal has no staff recovery path without this PR.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix: migrate publisher recovery resource owners
- PR branch already contained follow-up commit before automerge: fix: add guarded personal publisher recovery

Validation:
- ClawSweeper review passed for head 5cfb360520.
- Required merge gates passed before the squash merge.

Prepared head SHA: 5cfb360520
Review: https://github.com/openclaw/clawhub/pull/2642#issuecomment-4704078560

Co-authored-by: momothemage <niuzhengnan@163.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: momothemage
Co-authored-by: momothemage <35096042+momothemage@users.noreply.github.com>
2026-06-15 02:57:31 +00:00
Patrick Erichsen 03f97349b0 fix: preserve legacy package ZIP hashes (#2636)
* test: fix indexed row helper lint

* fix: preserve legacy package zip hashes
2026-06-14 18:56:31 -07:00
Patrick Erichsen fdb4d312f4 docs: restore OpenClaw-hosted ClawHub docs (#2631)
* Revert "fix: serve docs subdomain root (#2630)"

This reverts commit 9ef33726b8.

* Revert "feat: move docs to canonical subdomain"

This reverts commit 6afb91b772.

* Revert "docs: serve ClawHub docs with shared OpenClaw renderer (#2609)"

This reverts commit 71156751ff.

* fix: restore ClawHub email docs host

* test: preserve non-docs validation fixes

* test: remove stale docs proxy test

* docs: keep ClawHub contributor references current

* fix: keep docs auth callback outside docs routes
2026-06-14 16:05:34 -07:00
Peter Steinberger 6afb91b772 feat: move docs to canonical subdomain 2026-06-13 15:38:43 -07:00
Patrick Erichsen 71156751ff docs: serve ClawHub docs with shared OpenClaw renderer (#2609)
* feat: serve clawhub docs under docs route

* feat: build ClawHub docs with openclaw docs

* chore: remove unused nav icon export

* docs: use ClawHub logo in docs shell

* docs: prepare ClawHub docs for Mintlify

* test: use static preview readiness for playwright

* chore: ignore current esbuild audit advisories

* docs: build ClawHub docs with shared OpenClaw renderer

* test: print package publish e2e failures
2026-06-12 19:02:44 -07:00