The hubskillz CLI
The CLI inventories the skills in ~/.claude/skills and in <repo>/.claude/skills, reports the state of each one against the directory, and applies the approved set after a preview. A skill you customized stays untouched unless you ask. It also pushes a local skill to the directory as a draft.
Install
Requires Node 22. Install it once, or run every command through npx.
npm i -g hubskillz npx hubskillz <command> hubskillz help [command]
Sign in
Create a device token in the app under Settings, Device tokens, then paste it when the CLI asks. Device tokens
hubskillz login [--token TOKEN] [--base-url URL] hubskillz logout
Self-hosted? Pass --base-url or set HUBSKILLZ_BASE_URL. The CLI keeps its settings in ~/.hubskillz/config.json.
In CI or a container, set HUBSKILLZ_TOKEN instead of signing in: no file is written. hubskillz logout removes the stored token.
Check the state
hubskillz status [--path DIR] [--yes]
Scans the project skills of the current directory (or --path DIR), falls back to the global ~/.claude/skills, sends the inventory and prints one line per skill with its state, installed hash and approved version. Reads only.
Apply the approved set
hubskillz sync [--path DIR] [--all] [--adopt] [--yes] [--dry-run] [--force]
Shows the plan, then installs or updates every skill your teams require or recommend once you confirm. --all covers the global root and the project. --dry-run stops after the plan, --yes skips the question, --force also replaces skills you customized.
--adopt takes every skill installed on this machine that the directory does not know yet and adds it as an approved version, without asking. Without the flag, sync asks you once. Skills from skills.sh are pinned at the installed version. Private skills are created from the copy the CLI sent with the inventory. Maintainers only.
Push a draft
hubskillz push <skill-dir> [-m MESSAGE]
Uploads the files of one skill folder to the directory as a new draft version, with an optional message. A maintainer reviews it from there.
Register your repos
hubskillz projects [add|remove [DIR] | discover [--yes] | list]
Records the current directory (or DIR) so sync --all and status cover it from anywhere, together with the global root. discover scans your home directory for repos with .claude/skills and lets you pick which ones to register (--yes takes them all). The first sync --all or status with nothing registered runs that scan for you. A registered path without .claude/skills is skipped with a note.
States
| State | Rule |
|---|---|
| in sync | Installed content matches the approved version. |
| drifted | Installed content matches an older version of the same skill. |
| customized | Installed content matches no known version. |
| missing | Not installed, and one of your teams requires or recommends it. |
| unmanaged | Installed, and the directory has no skill with that name. |