Skip to content

Command reference

Command Does Writes?
plan Reports what each version should be No
apply Writes the warranted versions; optionally commits and pushes Yes
check Fails when a version is behind — the CI gate No
tag Creates <segment>--v<version> tags Tags only
version Prints the version, commit and build date No

completion and help come from Cobra and behave as they do everywhere.

What is not here

GTB ships thirteen commands by default; skillup enables seven. update, init, mcp, docs, doctor and changelog are disabled, because skillup reads git history, compares it to manifests and writes a version — it serves no MCP surface, ships no docs site from the binary, has nothing to initialise, and self-updates through whatever installed it.

version stays: "which build produced this answer" is a fair question to ask of a tool that decides what ships.

Common to all

Flag Default Meaning
-p, --path . Repository root — the directory holding .claude-plugin/marketplace.json

Plus the framework's global flags, which every command inherits:

Flag Meaning
--output text or json. Honoured by plan; the others print text.
--debug Verbose logging, including stack traces on failure
--ci Signals a CI environment
--config Unused — skillup reads no configuration file

Credentials for the commands that push arrive through the SKILLUP_TOKEN environment variable, never a flag.

What it reads

Path Role
<path>/.claude-plugin/marketplace.json The catalogue. Its plugins[].source entries define which segments exist.
<source>/.claude-plugin/plugin.json Each segment's manifest — the version field is what skillup computes and writes.
<path>/plugins/* Scanned by check only, to find segments on disk that the catalogue never lists.

Everything else comes from git history. skillup needs the full history: with a shallow clone it computes a wrong answer rather than failing, so set GIT_DEPTH: "0" (GitLab) or fetch-depth: 0 (GitHub).

Bump rules

Commit Bump
feat: minor
fix: patch
! or BREAKING CHANGE: major — but minor below 1.0
anything else none

Scoping is by changed path, not by the commit's scope label: a commit messaged feat(alpha): that touches no alpha file bumps nothing.