agentsclimarketplace

Skill manager

Skill forhadkhan/skill-manager/skills/skill-manager

Three-tier activation manager for agent assets (skills, subagents, commands, workflows): keep a large library dormant at zero context cost and activate only what each project needs. Use whenever the user wants to enable, disable, activate, or organize skills or agents; asks which skills are active or loaded; complains about context overhead, bloat, or token cost from installed skills; wants to install or import many skills or a skill pack without them loading everywhere; starts work in a project whose skills haven't been configured; or says things like "set up skills for this project", "skill status", "add/remove a skill here", "clean up my skills". Also use right after installing new skills to decide their tier.From its SKILL.md

Install
npx -y skills add forhadkhan/skill-manager --skill skill-manager

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.2 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

Skill Manager

Every skill and subagent installed globally adds its description to the context of every session, in every project. The cost is bounded (agent hosts budget the listing), but the bound is the trap: with many assets installed, descriptions get truncated to fit, auto-triggering degrades for everything, and irrelevant entries become selection noise. The fix is scoped activation — an asset should cost context only where it's useful.

The three-tier model

TierLocationContext costBelongs here
Library (dormant)~/.agents/library/<kind>/zeroEverything. Grows freely.
Global (always on)~/.claude/<kind>/every sessionUniversal tools only — keep under ~8
Project (scoped)<project>/.claude/<kind>/that project's sessionsWhatever the project's stack needs

Kinds: skills (directories), agents, commands, workflows (single files). Activation = presence: a symlink where possible, or a tracked copy (hash-recorded in a manifest, so drift is detectable and sync-able).

The library deliberately lives at ~/.agents/library/, not ~/.agents/skills/ — several agent CLIs (Gemini, Cursor, Codex, Zed) now auto-scan ~/.agents/skills/, so assets stored there are not dormant on multi-agent machines.

The engine

All mechanics go through scripts/skillmgr.py (Python 3.8+, stdlib only, no network, no subprocess). Run commands with --json when you need to parse results:

python3 <skill-dir>/scripts/skillmgr.py <command> [--kind skills|agents|commands|workflows] [--json]
CommandPurpose
scaffoldcreate library layout + config (idempotent)
index / index --checkrebuild the library index / report staleness
status [--kind all] [--project DIR]every asset's tier + problems needing attention
detect [--project DIR]stack signals: manifests, languages, deps, infra, git-ness
link NAME... --tier global|project [--copy]activate (symlink, else tracked copy)
unlink NAME... --tier ... [--force]deactivate; refuses foreign/modified content without --force
adopt NAME... --tier ... [--relink] [--force]move real content into the library, transactionally (batch OK; --relink keeps it active, plain adopt = adopt + demote in one step; refuses to drop embedded symlinks without --force)
import SRC [--name N] [--kind ...]copy an external asset in (single files need a file kind; embedded symlinks are stripped)
sync --tier ... [--force]refresh drifted tracked copies from the library
doctor [--fix] [--project DIR]find/repair dangling links, orphans, drifted/modified copies, corrupt state
uninstall [--project DIR] [--all]remove managed activations — global tier by default, only the project's with --project, both with --all; library untouched

Every mutating command supports --dry-run. The engine handles mechanics; you supply judgment: which assets matter here, and what to ask the user.

Workflows

status — what's active where

Run status (it auto-detects the project when the cwd has a .claude/ dir; --project overrides). Summarize by tier; surface the attention entries with their built-in hints — including copied-drifted (library moved ahead of a copy; sync fixes) and copied-modified (local edits; decide between sync --force and keeping them). Offer doctor --fix for dangling links.

init — first-time setup and migration

This is the critical path for users who already have many skills. Never lose data; prefer --dry-run previews before mutating.

  1. scaffold, then status --kind all to see the existing landscape.
  2. Existing global assets: real directories/files get adopt --tier global --relink (content moves to the library, activation stays). Existing symlinks into some other store (e.g. ~/.agents/skills/ from the npx skills CLI): leave the store in place, import each asset into the library, then replace the old link via unlink --force
    • link — or, if the user prefers the npx-skills store as-is, manage only new assets and say so plainly.
  3. Interview: propose a minimal always-on set (this skill, skill-creation and discovery tools, anything genuinely used in every project). One question, their context budget, their call.
  4. Demote the rest (unlink from global). Remind: everything stays in the library, one link away; changes land in new sessions.
  5. Plugin packs (marketplace installs): do not move their files. Gate them per-project with enabledPlugins in settings.json instead — see references/mechanisms.md.

setup — configure a project

  1. index (cheap — always refresh), detect --project DIR, then read <library>/index.json.
  2. Match signals against asset descriptions across all kinds. Be honest: a Dockerfile alone doesn't justify kubernetes tooling. Drop candidates already active in the global tier. If the global tier is bloated (well over ~8), suggest init.
  3. Bundle every decision into one exchange: a multi-select of proposed assets (include near-misses you rejected so the user can add them), plus — only if detect reported a git repo — personal vs team: personal = links + gitignore .claude/ additions (say so before editing .gitignore); team = link --copy
    • commit, refreshed later with sync. Default personal.
  4. link the chosen set with --tier project. Show final status --project.
  5. Say when it lands: typically the next session; some builds hot-reload watched directories — check the live listing before promising either. Suggest verifying the assets appear (e.g. /skills or asking Claude); host loaders have had symlink-discovery regressions, and if one bites, link --copy is the fallback.

add / remove — manual toggles

Map to link / unlink. Default tier: project when inside one, else global. On name misses, check the index for near-matches; offer import for assets that exist elsewhere on disk.

import — grow the library

Local dir/file: import SRC. Repo: clone to a temp dir, import each asset, delete the clone. Plugin packs: prefer per-project enabledPlugins; import individual pieces only when the license permits.

Safety rules

  • The library is sacred: nothing in this skill ever deletes or edits library content. Deactivation removes links/tracked copies in tier directories only.
  • Never unlink --force or sync --force without telling the user what will be discarded; prefer showing the --dry-run output first.
  • Don't edit .gitignore, settings files, or anything outside tier directories without saying so first.
  • If a command errors, read its message — the engine's errors are specific (traversal-safe names, case collisions, lock contention) and usually name the fix.
  • In managed/enterprise environments, admin policy can override or block local assets entirely; if assets don't load despite correct linking, say so and point at references/mechanisms.md.

Platform notes

Windows without Developer Mode can't create symlinks — the engine silently falls back to tracked copies; nothing for you to do, but mention sync for copy freshness after library updates. Filesystem assets only load in Claude Code CLI/desktop/IDE surfaces, not claude.ai web or mobile. Deeper facts: references/mechanisms.md.

What ships with it: 2 files

64.9 KB alongside SKILL.md, 1 of them executable

references/

scripts/

Gives 0 of the 12 instructions most token cost skills give in ~1.8k tokens

Counted across 84 of the 95 authors here whose files we hold, read 2026-09-06

  • Set explicit budget limits before processing batchesin 14 of 84, across 9 files
  • Define model names as constants or configin 14 of 84, across 9 files
  • Route simple tasks to cheaper modelsin 14 of 84, across 9 files
  • Log model selection decisionsin 14 of 84, across 9 files
  • Retry only transient errorsin 14 of 84, across 9 files
  • Track spend with immutable cost recordsin 13 of 84, across 8 files
  • Cache system prompts over 1024 tokensin 12 of 84, across 7 files
  • Check the budget before each API callin 12 of 84, across 7 files
  • Start with the cheapest modelin 9 of 84, across 8 files
  • Back off exponentially between retriesin 9 of 84, across 8 files
  • Review costs weeklyin 8 of 84, across 6 files
  • Use reserved capacity for steady workloadsin 8 of 84, across 6 files

Said here and by no other author read

  • Route all mechanics through the manager script.
  • Prefer dry-run previews before mutating.
  • Warn the user before any force flag.
  • Announce edits outside tier directories first.
  • Interview the user for a minimal always-on set.
  • Bundle proposals into one multi-select exchange.

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.