The Skillset CLI exposes ten commands that cover the full lifecycle of a Skill: authenticating against a Registry, searching and reading the catalog, installing and managing Skills locally, and publishing new ones. Every command acceptsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/org-quicko/skillset/llms.txt
Use this file to discover all available pages before exploring further.
--json for machine-readable output; see CI & Automation for non-interactive usage.
--json mode replaces all formatted output with a structured JSON payload on stdout. Errors go to stderr as {"error": {"code", "message"}} with a non-zero exit code. --json never prompts — see each command for which flags become required.login — Authenticate the CLI against a Registry
login — Authenticate the CLI against a Registry
Stores a Token for a Registry so subsequent commands can authenticate. The Token is verified before being stored; a rejected Token leaves the existing config untouched.FlagsExamples
The Registry’s URL. Required.
A Token minted from the Registry’s web interface. If omitted when a terminal is attached, the CLI prompts for it interactively (masked). Required under
--json — there is no terminal to prompt.Permit a plain-
http Registry whose host is not on this machine. Without this flag, the CLI refuses to send a Token over an unencrypted connection to a remote host.Emit the result as JSON on stdout. Requires
--token.--json outputwhoami — Show the active session
whoami — Show the active session
Confirms which Registry the CLI is authenticated against and as whom.FlagsExamples
Emit the result as JSON on stdout.
--json outputsearch — Search the Registry catalog
search — Search the Registry catalog
Searches the Registry’s catalog of published Skills. When no query is given, lists the entire catalog. Reads need no Token — this works against a Registry you have never logged in to.FlagsExamplesImported Skills include their
A term to match against Skill names and descriptions. Omit to list everything. When a term is given, results are sorted by relevance; without one, by recency.
Narrow results to Skills carrying this Tag. The value is the Tag’s display name, not an id.
Maximum number of results to return. Must be a positive whole number.
Emit the result as JSON on stdout.
--json outputnamespace in results — this is the value to pass to install --namespace when a name matches more than one publisher.info — Read a Skill without installing it
info — Read a Skill without installing it
Shows a Skill’s full FlagsExamplesWhen
SKILL.md body, metadata (install count, tags, allowed tools, source), and optionally its artifact file listing. No Token required.The Skill’s name in the Registry.
Also list every file the Skill ships. This costs a second round-trip to the Registry and reports what storage actually holds rather than what was declared at publish time.
Emit the result as JSON on stdout.
--json output--files is passed, files is an array of { "path": string, "size": number } objects instead of null.install — Install a Skill for a coding agent
install — Install a Skill for a coding agent
Installs a Skill by name from the Registry, or directly from a GitHub or GitLab URL. Skills are written into FlagsExamplesURL installs and SubmissionsWhen you install from a URL, the CLI clones the repository using your own
.agents/skills/<name> and linked (or copied) into the chosen agent’s own directory. The Lockfile (skillset-lock.json) is updated to record the installed state.A Skill’s name in the Registry, or a GitHub or GitLab URL (a repository, or a folder within one).
Required when the target is a URL: the Skill to install, identified by the
name field in its SKILL.md. Refused when the target is a plain name.Which party named the Skill, when a bare name matches more than one publisher. Refused with a URL — the URL already identifies the source.
Which coding agent to install for. If omitted and a terminal is attached, the CLI presents an interactive picker. If omitted with no terminal (including
--json mode), the agent is detected from the environment and the project’s agent directories.Install scope:
project or user. If omitted and a terminal is attached, the CLI prompts. Required when no terminal is attached (including --json mode).Copy the Skill into the agent’s own directory instead of creating a symlink to
.agents/skills. Useful on systems where symlinks are unavailable or unwanted.Replace a Skill that has local changes since installation, or one that was installed by a different publisher under the same name. Without
--force, both cases are refused with a descriptive error.Emit the result as JSON on stdout. Requires
--scope — if --agent is omitted, the agent is auto-detected rather than prompted for.git credentials. Any repository you can clone works — private ones included, over HTTPS or SSH. After installation, if you are logged in, the Skill is automatically submitted to the Registry for Admin approval (Settings → Submissions).Until approved, skillset update reports the Skill as pending. Once approved, update switches it to the Registry’s copy.Namespace collisionsA project holds one .agents/skills/<name> directory regardless of how many publishers use that name. Installing a Skill over one installed from a different namespace is refused — pass --force to replace it explicitly.list — Show installed Skills and their status
list — Show installed Skills and their status
Lists every Skill recorded in the Lockfile at the given scope, and whether each is FlagsStatus values
Examples
current, outdated, modified, or missing against the Registry.Which scope to list:
project or user. Defaults to project.Skip the Registry entirely. Nothing can be reported as
outdated when offline; current, modified, and missing are determined from the local filesystem and Lockfile alone.Emit the result as JSON on stdout.
| Status | Meaning |
|---|---|
current | Installed files match the Registry’s latest version |
outdated | The Registry has a newer version |
modified | Files have been edited since installation |
missing | Recorded in the Lockfile but the directory is gone |
--json outputIf the Registry is unreachable,
list degrades gracefully: it still reports what is installed and whether files have been locally modified. Only outdated becomes unknowable — the command does not fail.update — Re-download outdated Skills
update — Re-download outdated Skills
Brings installed Skills back in line with the Registry. When no names are given, every Skill in the Lockfile is considered.FlagsOutcomes per Skill
Examples
One or more Skill names to update. When omitted, every installed Skill is considered.
Which scope to update:
project or user. Defaults to project.Update a Skill that has local changes, discarding them. Without
--force, modified Skills are skipped with a warning.Emit the result as JSON on stdout. Exit code is
1 if any Skill’s outcome is error.| Outcome | Meaning |
|---|---|
updated | Re-downloaded and written successfully |
restored | Was missing (directory gone); re-downloaded |
up-to-date | Already at the Registry’s latest version |
skipped | Has local changes — pass --force to replace |
gone | No longer on the Registry; left installed |
pending | Installed from a URL, Submission not yet approved |
error | An error occurred; see message for details |
--json outputremove — Uninstall a Skill
remove — Uninstall a Skill
Removes a Skill’s canonical directory, the agent’s link to it, and its entry in the Lockfile. All three steps are independent — a Skill in partial state (files present but no Lockfile entry, or vice versa) is cleaned up cleanly either way.FlagsExamplesFields are
The Skill’s name.
Which scope to remove from:
project or user. Defaults to project.Emit the result as JSON on stdout.
--json outputnull or false when there was nothing to remove (e.g. skillDirectory: null if the files were already gone).publish — Publish a Skill to the Registry
publish — Publish a Skill to the Registry
Publishes a Skill from a local path or directly from a GitHub or GitLab URL. When the target is a directory that contains multiple Skills, all are discovered (up to maximum depth) and published as a batch. Requires Writer role or higher.FlagsExamplesSingle-Skill Batch URL publishesWhen
A path (defaults to the current directory) or a GitHub or GitLab URL. A path may be a single Skill’s directory or a parent directory holding several.
Required when
target is a URL: which Skill to publish, by the name in its SKILL.md. Refused with a path target.Skip the confirmation prompt when publishing more than one Skill. Required under
--json for a batch publish.Emit the result as JSON on stdout. Exit code is
1 if any Skill in a batch failed.--json output--json outputtarget is a URL, the CLI clones the repository using your own git credentials. The repository is recorded as the Skill’s Source and, through it, its Namespace. A Skill published from a path records no Source and is treated as published directly to your Registry.Every Skill is validated locally against the same rules the API enforces before the Registry is contacted — a bad Skill in a batch stops the entire publish before any changes reach the Registry.