You have hundreds of agent skills installed. Your agent uses about six of them.
Skills are matched to a request by their description. That works at twenty skills. At a thousand it stops working, and the pack you installed last week never fires again.
Stars measure popularity. They do not tell you whether the skills load.
Every pack is cloned and measured on things that can be checked: does the frontmatter parse, is the description specific enough to route on, does it say when to use it, do names match directories, are there duplicates, how much context does an average skill cost. Same commit in, same score out. Nothing here asks a model.
A pack is listed only at 85 or above. Anything below stays listed only with a written exception, and validation fails without one. Scores regenerate every day, so a pack that rots falls off the bar on its own rather than coasting on its stars.
| Pack | Score | Skills | Stars | Licence | Install |
|---|---|---|---|---|---|
| addyosmani/agent-skills | 100 | 24 | 89k | MIT | skillister install addy-agent-skills |
| kepano/obsidian-skills | 100 | 5 | 47k | MIT | skillister install obsidian |
| phuryn/pm-skills | 100 | 68 | 26k | MIT | skillister install pm-skills |
| obra/superpowers | 98 | 14 | 277k | MIT | skillister install superpowers |
| trailofbits/skills | 96 | 80 | 6.8k | CC-BY-SA-4.0 caution | skillister install trailofbits |
| google/skills | 96 | 169 | 19k | Apache-2.0 caution | skillister install google-skills |
| JuliusBrussee/caveman | 93 | 24 | 101k | NOASSERTION caution | skillister install caveman |
| calesthio/OpenMontage | 92 | 138 | 50k | AGPL-3.0 caution | skillister install openmontage |
| blader/humanizer | 89 | 1 | 38k | MIT | skillister install humanizer |
| github/awesome-copilot | 89 | 429 | 38k | MIT caution | skillister install awesome-copilot |
| anthropics/skills | 88 | 20 | 171k | NONE caution | skillister install anthropic-skills |
| virgiliojr94/book-to-skill | 88 | 1 | 25k | MIT | skillister install book-to-skill |
| KKKKhazix/khazix-skills | 88 | 6 | 20k | MIT | skillister install khazix-skills |
| muratcankoylan/Agent-Skills-for-Context-Engineering | 87 | 23 | 18k | MIT | skillister install context-engineering |
| mattpocock/skills | 85 | 36 | 235k | MIT | skillister install mattpocock |
| mvanhorn/last30days-skill | 80 | 1 | 59k | MIT exception | skillister install last30days |
A long name beats a precise one by accident. The prior fixes that.
Naive matching counts how many query words appear in a skill's name and description. A five-word name contains more of your query than a two-word one without being a better answer, so a thousand-skill pack wins every search it enters. Skillister weights how much of the name your query actually covers, then down-weights hits drawn from very large collections.
$ skillister compare open source a repo naive (substring count) skillister (coverage + prior) -------------------------------------- -------------------------------------- collecting-open-source-intelligence open-sourcing performing-open-source-intelligence... collecting-open-source-intelligence open-sourcing performing-open-source-intelligence... naive picked from "Anthropic-Cybersecurity-Skills" (753 skills), skillister picked from "open-sourcing" (1 skill).
The gain shows up on queries built from common words, which is exactly where a large pack's keyword-dense names crowd out a short precise one. On queries containing a distinctive term the two agree, because there was no ambiguity to resolve. Run skillister find --naive against your own machine and judge it yourself.
19 routes, 60 prompt evals, zero routes that point at nothing.
A route maps a task shape to exact skill names. Each declares prompts that must fire it and prompts that must not, and CI runs all of them. It also asserts every routed name resolves in a real built index, so a route can never recommend a skill nobody installed.
| Shape | Skills | Fires on |
|---|---|---|
| debug | systematic-debuggingdiagnosing-bugs | “the login page is broken” |
| plan | brainstorminggrillingwriting-plans | “how should I structure the auth layer” |
| spec | to-specto-ticketswayfinder | “turn this into a spec” |
| review | code-reviewdifferential-reviewfp-check | “review my changes before I commit” |
| tests | test-driven-developmentproperty-based-testingmutation-testing | “add unit tests for the parser” |
| deps | supply-chain-risk-auditor | “check my package.json for vulnerabilities” |
| open-source | open-sourcing | “I want to make this repo public” |
| python | modern-python | “starting a new python project” |
| orient | audit-context-buildingcodebase-design | “help me understand this codebase” |
| branches | git-cleanup | “clean up merged branches” |
| prose | humanizer | “this paragraph sounds like ai” |
| recent | last30days | “what is trending in agent tooling” |
| frontend | frontend-ui-engineeringbrowser-testing-with-devtools | “fix the tailwind layout on mobile” |
| web-perf | performance-optimizationobservability-and-instrumentation | “our lighthouse score dropped” |
| refactor | codebase-designimprove-codebase-architecture | “this file is a god class” |
| handoff | handoff | “I am running out of context” |
| authoring | writing-skillswriting-for-agents | “help me write a skill” |
| verify | verification-before-completion | “are we done here” |
| orchestrate | orchestrate | “which skills should I use here” |
Curation means saying no in public.
Catalogue-scale dump. Adding it swamps discovery for every other pack and buries the skills you actually want.
Bulk mixed-language marketing, business and dev content of uneven quality. Not curated.
Excellent but narrow: bioinformatics, astronomy, quantum. Install it deliberately if you work in those fields, not by default.
Not a skill pack. It is the `npx skills` installer tool, frequently miscatalogued as a collection.
A curated list of AI applications, not a skill pack. The nine SKILL.md files are incidental to a repository whose purpose is showcasing projects.
Scores 77, below the 85 bar, and ships no licence at all, so the terms of use are all rights reserved.
Scores 64. It is a CLI that happens to ship skills; most descriptions are too thin to route on.
Scores 10. Frontmatter does not parse, so the skill will not load at all.
Works with whatever you already run.
$ npm install -g skillister $ skillister index indexed 1203 skills from 6 roots $ skillister route "the login page is broken" - "systematic-debugging" + "diagnosing-bugs" :: Hypothesis loop, no guess-patching. Find the root cause before editing. $ skillister init claude-code # hooks $ skillister init generic # AGENTS.md snippet
Claude Code gets hooks that arm the index at session start and route every prompt. Codex, Cursor, Gemini CLI and opencode get an instruction snippet. One index serves every host CLI on the machine at once.