docs/clawhub/publishing.md
ClawHub publishing is owner-scoped: every publish targets a publisher, and the server decides whether the signed-in user is allowed to publish there.
An owner is a ClawHub publisher handle, such as @alice or @openclaw.
Personal owners are created for users. Org owners can have multiple members.
When you publish, you either use your personal owner or choose an org owner where you have publisher access.
Skills are published from a skill folder. The public page is:
https://clawhub.ai/<owner>/<slug>
Example:
https://clawhub.ai/alice/review-helper
The publish request includes the selected owner, slug, version, changelog, and files. The server verifies that the actor can publish as that owner before it creates the release.
Plugins use npm-style package names. Scoped package names include the owner in the first part of the name:
@owner/package-name
The scope must match the selected publish owner. If your package is named
@openclaw/dronzer, it can only be published as @openclaw. If you publish as
@vintageayu, rename the package to @vintageayu/dronzer.
This prevents a package from claiming an org namespace that the publisher does not control.
If validation fails, the release is not created.
If the package scope and selected owner do not match, ClawHub rejects the publish:
Package scope "@openclaw" must match selected owner "@vintageayu".
Publish as "@openclaw" or rename this package to "@vintageayu/dronzer".
To fix it, either choose the owner named by the package scope, or rename the package so the scope matches the owner you can publish as.
If the package name already has the right scope but the package is owned by the wrong publisher, transfer ownership instead:
clawhub package transfer @opik/opik-openclaw --to opik
Use package transfer only when you have admin access to both the current package owner and the destination publisher. It does not let you publish into a scope you cannot manage.
This protects org namespaces. A package named @openclaw/dronzer claims the
@openclaw namespace, so only publishers with access to the @openclaw owner
can publish it.