Skip to content
Skill Authoring
Skill

/manage-skills

Manage the user's shared agent-skill library via skills-manager-cli — install, update, remove, deploy or undeploy skills per agent, manage presets, organize tags, search, and adopt existing skills. Use this whenever the user wants Claude Code, Codex, Cursor, or another agent to

BOOST
From plugin
xingkongliang-skills-manager
5.6k1 skill
Install
$ npx -y skills add xingkongliang/skills-manager --skill manage-skills --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/manage-skills

Context preview

The summary Claude sees to decide when to auto-load this skill.

Manage the user's shared agent-skill library via skills-manager-cli — install, update, remove, deploy or undeploy skills per agent, manage presets, organize tags, search, and adopt existing skills. Use this whenever the user wants Claude Code, Codex, Cursor, or another agent to

SKILL.md

manage-skills.SKILL.md
name: manage-skills
description: Manage the user's shared agent-skill library via skills-manager-cli — install, update, remove, deploy or undeploy skills per agent, manage presets, organize tags, search, and adopt existing skills. Use this whenever the user wants Claude Code, Codex, Cursor, or another agent to gain or lose a skill, wants to organize the central library, or asks what is installed or deployed. Prefer this over direct agent-folder installs because Skills Manager preserves source metadata, preset membership, updates, and cross-agent deployment state.

Before doing anything

1. **Resolve the CLI first, then use the path it prints.** Run this once (POSIX shell):

   D="$HOME/.skills-manager/bin"
   B="$D/skills-manager-cli"; [ -e "$B" ] || B="$B.exe"   # .exe on Windows
   if [ -s "$D/.version" ] && [ -x "$B" ]; then
     echo "$B"
   elif [ -s "$D/.version" ] || [ -e "$B" ]; then
     echo BRIDGE_BROKEN
   else
     P="$(command -v skills-manager-cli 2>/dev/null || true)"
     [ -x "$P" ] && echo "$P"
   fi

**Substitute the printed path into every command below**, wherever the examples write `$SM`. Do not carry `$SM` as a shell variable: each command you run is a new shell, so an assignment made here is gone by the next one.

The three outcomes:

  • **A path under `~/.skills-manager/bin`** — the desktop app published this

copy, and the `.version` stamp appears only after it has been verified, so it always matches the app the user is running. Use it.

  • **`BRIDGE_BROKEN`** — something the app left behind is here but does not

add up: an unstamped binary, or a stamp with no binary beside it. Either is what a copy that failed half-way leaves. **Stop.** Do not go looking for another CLI: that binary may predate a safety fix, and the machine has a desktop app whose version nothing here can match. Ask the user to open the Skills Manager app once, which republishes it.

  • **A path from PATH** — nothing was ever published here, so there is no

stale copy to worry about: this is a CLI-only machine (a server install, a standalone download, a hand-built binary). Use it, but note it can be older than a desktop app if one is also installed.

If nothing is printed at all, this skill doesn't apply — fall back to find-skills, or tell the user to install Skills Manager. 2. **Always pass `--json` when you parse output yourself.** Pretty-printed output is for the user; JSON is for you. Errors include `ok=false`, a stable `code`, and `message` on stderr with a non-zero exit code.

"$SM" --json skills list

When a deployment is refused

A deploy that would overwrite something that is not ours is refused outright — nothing at those paths is deleted, and nothing else in the batch is applied. That failure is machine-readable, so report the actual paths rather than the sentence:

{"ok": false, "code": "TARGET_CONFLICT", "kind": "target_conflict",
 "message": "Refusing to deploy: 1 of 2 target(s) …",
 "details": {"conflicts": [{"path": "/Users/me/.claude/skills/db",
                            "reason": "is not a managed deployment"}]}}

Tell the user which path is in the way, that its contents are untouched, and offer the two ways out: adopt it into the library (`skills adopt`), or move it aside and retry. Never delete it for them.

Mental model

There's **one central library** at `~/.skills-manager/skills/` that all agents share. Each skill has source metadata, preset membership, tags, and zero or more real deployments in agent directories. A **preset** is a reusable group; several presets may be deployed at the same time.

Keep these three states separate:

  • **Library**: install/remove controls whether Skills Manager owns the skill.
  • **Preset membership**: `presets add-skill/remove-skill` organizes the library only.
  • **Deployment**: `skills deploy/undeploy` and `presets deploy/undeploy` control what an agent can actually see.

Internally, presets are still stored as scenarios for backward-compatible Git Backup. The CLI and UI call them presets.

Install

# From skills.sh marketplace
"$SM" skills install vercel-labs/agent-skills@react-best-practices

# Any git URL (use /tree/branch/subpath form when the skill lives in a sub-directory)
"$SM" skills install https://github.com/anthropics/skills.git
"$SM" skills install https://github.com/foo/bar/tree/main/skills/baz

# Local folder
"$SM" skills install ./my-skill

# Force a source type when the ref is ambiguous
"$SM" skills install foo/bar --skillssh
"$SM" skills install ./looks-like/owner-repo --local

**Default is library-only** — the skill enters the DB but doesn't appear in any agent yet. Prefer an explicit follow-up deployment so scope is unambiguous:

"$SM" skills deploy <skill> --agent claude_code --agent codex

`--sync` and `--sync-preset` remain legacy shortcuts for the exclusive active-preset workflow.

**Ref resolution** is deterministic, no path-existence guessing: 1. Starts with `./`, `../`, `/`, or `~/` → local path 2. Contains `://`, ends in `.git`, or starts with `git@` → git URL 3. Matches `owner/repo`, `owner/repo/skill`, or `owner/repo@skill` → skillssh 4. Otherwise → error; pass `--local` / `--git` / `--skillssh` to disambiguate

**Always verify after install** with `skills list` or `skills show <name>` so you can confirm the skill landed and report the preset / sync state back to the user.

Search

"$SM" --json skills search "react performance" --limit 5

Each result has `install_ref` (paste straight into `skills install`), `installs` (popularity proxy), and `skills_sh_url`. Show the top 1–3 with install counts before installing — anything with 10K+ installs is battle-tested; anything under 100 needs a careful look at the source repo.

Update / Check

# Re-fetch one skill (git/skillssh re-clones, local/import re-imports source dir)
"$SM" skills
Read more
Ships withxingkongliang-skills-manager

A lightweight desktop app to manage, sync, and organize AI agent skills across 50+ coding tools — Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

Get the whole plugin
Stats
5,663
Stars
481
Forks
Active
Maintenance
Rust
Language
MIT
License
2d ago
Last commit
7mo ago
Created
14h ago
Added

Repo: xingkongliang/skills-manager