Skip to content

fatwang2/skills-admin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skills-admin

Local CLI to administer installed agent skills across all major AI coding agents.

Command name: skm · npm package: skills-admin

skills-admin focuses on everything that comes after installation — listing, auditing, deduplicating, and removing skills that are already on disk. Pair it with whatever installer you use (npx skills add, manual git clone, etc.); skm doesn't install or update from remote sources.

It scans every skill directory across 53 supported agents (Claude Code, Cursor, Codex, OpenCode, Cline, Warp, Droid, Kiro, OpenClaw, Antigravity, Gemini CLI, …) and gives you one tool to see and clean them up.

Install

# Run without installing
npx skills-admin ls
bunx skills-admin ls

# Or install globally
npm install -g skills-admin
bun install -g skills-admin

# Then use the short command
skm ls

What it does

  • skm ls — list every installed skill across every agent directory that exists on this machine, with kind (real dir / symlink / broken / file), size, description, and grouping.
  • skm rm — remove a skill from one specific agent dir, multiple, or all at once. Interactive picker by default; non-interactive with --all -y.
  • skm doctor — find broken symlinks, missing SKILL.md, and cross-location name collisions. --fix auto-cleans broken symlinks.

Quick examples

# Where is `cold-email` installed?
skm ls -n cold-email -g

# Show only broken symlinks
skm ls --broken

# Remove a skill from every agent dir (with preview first)
skm rm tempo-request --all --dry-run
skm rm tempo-request --all -y

# Remove only from one agent
skm rm tempo-request -a cursor -y

# Remove only from a specific path
skm rm tempo-request -p ~/.cursor/skills -y

# Audit health
skm doctor

# Clean broken symlinks left over from `npx skills remove`
skm doctor --fix --dry-run
skm doctor --fix -y

Concepts

  • Location — a physical directory on disk (e.g. ~/.claude/skills). Same path is never listed twice, even when multiple agents share it (e.g. Cline + Warp both bind to ~/.agents/skills).
  • Binding — an (agent, scope) pair that resolves to a location.
  • Kinddir (real directory) · link (symlink) · BROK (broken symlink) · file (stray file).
  • Scopeglobal (in user home) vs project (relative to cwd). A single location can cover both.

Discovery is cwd-independent: $HOME is always considered alongside the current working directory, so OpenClaw's bare skills/ directory at ~/skills is found no matter where you run skm from.

Command reference

skm ls

skm ls [options]

  -s, --scope <scope>          global | project | all (default: all)
  -a, --agent <agents...>      filter by agent name (claude-code, cursor, codex, ...)
  -n, --name <name>            filter to a single skill name
  -p, --path <paths...>        filter to specific absolute skills-dir paths
  -g, --group-by-name          group output by skill name (show duplicates)
  -l, --long                   show extra columns (symlink target)
  -k, --kind <kinds...>        filter by kind: link | dir | broken | file
      --broken                 shortcut for --kind broken
      --json                   emit JSON

skm rm

skm rm [names...] [options]

  -s, --scope <scope>          global | project | all (default: all)
  -a, --agent <agents...>      restrict to specific agents
  -p, --path <paths...>        restrict to specific absolute skills-dir paths
      --location-id <ids...>   restrict to specific location ids (the absolute path)
      --all                    remove from EVERY matching location without picker
  -y, --yes                    skip confirmation prompts
      --dry-run                print what would happen without deleting

skm doctor

skm doctor [options]

  -s, --scope <scope>          global | project | all (default: all)
  -a, --agent <agents...>      restrict to specific agents
  -p, --path <paths...>        restrict to specific absolute skills-dir paths
      --fix                    delete broken symlinks (others are reported only)
      --dry-run                with --fix, print without deleting
  -y, --yes                    skip confirmation when --fix is set
      --json                   emit JSON

Recipes

Migrate a skill to "Claude-only"

When a Claude Code entry is a symlink pointing at ~/.agents/skills/<name> (the universal canonical source), deleting the source breaks Claude. Two-phase recipe:

# Phase 1: materialize Claude's symlink into a real directory
SRC=~/.agents/skills/<name>
DST=~/.claude/skills/<name>
TMP=~/.claude/skills/.skm-migrate-<name>
[ -d "$SRC" ] && [ -L "$DST" ] || { echo "preconditions fail"; exit 1; }
cp -R "$SRC" "$TMP" && rm "$DST" && mv "$TMP" "$DST"

# Phase 2: now safe to delete from every other dir
skm rm <name> --all -y

Find duplicates across agents

skm ls --json | jq '
  group_by(.name) | map(select(length>1)) |
  map({name: .[0].name, count: length, locations: map(.location.path)})
'

Inspect what an installer just put on disk

skm ls -p ~/.claude/skills

Why this exists

Once skills are installed, they sprawl: copies, symlinks, dead links from upstream removals, accidental duplicates across agents. There's no built-in way to ask "where is seo-audit actually installed?" or "delete this skill from Cursor but keep it in Claude". skills-admin covers that gap.

This tool deliberately does not install or update from remote sources — many installers already do that well. skm picks up where they leave off.

Supported agents

skills-admin knows about 53 AI coding agents — Claude Code, Cursor, Codex, OpenCode, Cline, Warp, Droid, Kiro, OpenClaw, Antigravity, Gemini CLI, GitHub Copilot, Continue, Goose, Crush, Roo Code, Windsurf, Zencoder, and more. Environment variables (CLAUDE_CONFIG_DIR, CODEX_HOME, VIBE_HOME, XDG_CONFIG_HOME) are honored.

Only directories that actually exist on disk and contain at least one entry are shown.

What it doesn't do (yet)

  • Install / update / sync from remote sources — use a dedicated installer like npx skills add or plain git clone
  • Edit SKILL.md — open it directly with $EDITOR ~/.claude/skills/<name>/SKILL.md
  • Full-text search inside skill content — use rg <query> ~/.claude/skills
  • Convert between symlink and copy in-place
  • Track install source per skill (no manifest)
  • Manage MCP servers, hooks, plugins (planned for future siblings)

Development

git clone <repo-url> && cd <repo-dir>
bun install
bun run bin/skm.ts ls    # run locally
bun run typecheck        # tsc --noEmit
chmod +x bin/skm.ts
bun link                 # makes `skm` available globally

Source layout:

.
├── bin/skm.ts              # CLI entry (Commander)
├── src/
│   ├── core/
│   │   ├── agents.ts       # agent skill directory registry (53 agents)
│   │   ├── locations.ts    # path discovery + cross-scope dedupe
│   │   └── scan.ts         # walks dirs, parses SKILL.md frontmatter
│   ├── commands/
│   │   ├── ls.ts
│   │   ├── rm.ts
│   │   └── doctor.ts
│   └── ui/format.ts        # tables + colors
└── skills/skm/SKILL.md     # the agent-facing skill that teaches `skm`

License

MIT.

About

Skill management CLI for AI agents

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors