Skip to content

Npm-valid package scopes with dots/underscores cannot map to ClawHub publishers #2367

@Patrick-Erichsen

Description

@Patrick-Erichsen

Summary

ClawHub currently requires scoped package names to match the selected/owning publisher handle exactly. That is good for preventing ambiguous ownership, but we found four existing plugin packages whose package.json.name scopes are valid on npm and already published on npm, while the same scopes are invalid as ClawHub publisher handles.

ClawHub publisher handles currently allow only lowercase letters, numbers, and hyphens. npm scopes can include dots and underscores, so these packages cannot be repaired by creating matching ClawHub orgs under the current handle rules.

Affected packages

cc for visibility: @bitrouter @gelin-cloud @thepluglabai @juan-xin-cai

Package Current ClawHub owner Source repo npm status Problem
@bitrouter.ai/openclaw-plugin @takasaki404 bitrouter/bitrouter-openclaw exists on npm as 0.1.1 scope contains .
@glin_1/miniabc @gelin-cloud gelincloud/miniabc-plugin exists on npm as 2.0.14 scope contains _
@pluglab_thinkly/thinkly-openclaw-plugin @thepluglabai pluglabai/thinkly-openclaw-plugin exists on npm as 0.1.3 scope contains _
@souls_market/openclaw-plugin @juan-xin-cai Gyliiiiii/souls-market exists on npm as 0.0.7 scope contains _

Why this matters

For scoped plugin packages, ClawHub now enforces:

package.json name scope == ClawHub publisher handle

That means a package named:

"name": "@bitrouter.ai/openclaw-plugin"

must publish under ClawHub publisher:

bitrouter.ai

But ClawHub rejects bitrouter.ai as a publisher handle. Creating a similar handle like bitrouter-ai does not help, because --owner bitrouter-ai still mismatches the package scope @bitrouter.ai.

Current behavior

These packages remain in a mismatched ownership state after the org-repair migration because ClawHub cannot create matching publishers for their npm scopes.

Expected publish failure shape:

Cannot publish @bitrouter.ai/openclaw-plugin: package.json name is scoped to "@bitrouter.ai", but ClawHub publisher handles may only use lowercase letters, numbers, and hyphens.

or, if using a similar owner:

Package scope "@bitrouter.ai" must match selected owner "@bitrouter-ai".

Options

  1. Allow npm-compatible scope characters in ClawHub publisher handles

    • At minimum, consider . and _.
    • This aligns ClawHub publisher handles with package scopes already valid on npm.
  2. Keep ClawHub handles slug-safe and require package renames

    • Example: @bitrouter.ai/openclaw-plugin -> @bitrouter-ai/openclaw-plugin.
    • This is cleaner for ClawHub URLs, but it forces users to change existing npm package identity.
  3. Add explicit scope-to-publisher aliases

    • Example: npm scope bitrouter.ai maps to ClawHub publisher bitrouter-ai.
    • This avoids broad handle changes but adds a new ownership indirection that publish, install, UI, and transfer flows must understand.

Recommendation

We should decide intentionally whether ClawHub publisher handles are meant to be URL slugs or npm-scope-compatible identities.

Given ClawHub now uses package scope as the ownership source of truth for scoped packages, my lean is to support npm-compatible scope characters for publisher handles, or introduce a first-class alias mechanism. Otherwise these packages cannot be made publishable without asking maintainers to rename already-published npm packages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:not-repro-on-mainClawSweeper found high-confidence evidence that this issue no longer reproduces on main.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦪 silver shellfishThin issue quality; more reproduction proof or environment detail is needed.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions