SkillHub

publish

Validate, scan, pack, and publish a skill version — single-dir or bulk.

skillhub publish validates, scans, packs, and publishes a skill version. A single-dir publish is promptless; passing multiple directories is the bulk path, which confirms each skill (use --yes to batch). A blocking local scan exits with code 4 before any network call is made.

The target registry comes from the manifest's publishConfig, or you can override it with --to <@owner/registry>. Visibility is not set here — there is no --access flag. A registry's visibility (private or public) is chosen when the registry is created, via registry create --visibility or the dashboard.

Synopsis

skillhub publish [dir…] [--to <@owner/registry>] [--version <semver>] [--tag <tag>] [--type <type>] [--allow-warnings] [--yes] [--force]

Flags

FlagDescription
--to <@owner/registry>Target registry (@owner/registry); overrides the manifest's publishConfig
--version <semver>Exact version to publish; overrides the manifest's version metadata (cannot be used with a bulk multi-dir publish)
--tag <tag>Dist-tag to move on success (default: latest, per server policy)
--type <type>Skill type override: project, general, or meta
--allow-warningsAcknowledge benign structural warnings (nesting depth, entry count) and publish without prompting
--yesConfirm every skill in a bulk multi-dir publish without prompting
--forceUpload despite blocking scan findings (registry admins only)

Examples

skillhub publish --to @studio/design-systems
skillhub publish ~/.claude/skills/* --to @studio/design-systems --type general
skillhub publish --tag beta

JSON output

With --json, the data object contains:

  • published[] — each { ref, version, tag (string|null — null when a review policy withheld it), scanStatus: pass | warn | fail | pending, warnings[] (structural warnings recorded on the version) }.
  • skipped[] — directories whose per-skill confirmation was declined.

On this page