npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

skills-admin

v0.1.0

Published

Local CLI to administer installed agent skills across all major AI coding agents (scan, inspect, remove, doctor).

Downloads

41

Readme

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.