← Log
6 min read

Two thousand plugins and no way to find one

There is a public catalog of Claude Code plugins. I pulled it expecting a few hundred entries and got this:

2,269

plugins in the public community catalog, one of several catalogs

788

of them mentioning skills or prompts — the largest single theme

99

that say which other AI tools they work with, out of all 2,269

That last number is the one worth sitting with. Ninety-nine out of two thousand two hundred and sixty-nine. Everything else leaves you to guess whether it runs anywhere except the tool it was written for — and, as it turns out, most of it does.

What is actually being distributed

A skill is a folder with a SKILL.md in it: some frontmatter saying when it applies, then the instructions. Its economics are unlike anything else you put in front of a model.

“A skill's body loads only when it's used, so long reference material costs almost nothing until you need it.”
Claude Code documentation, on skills ↗

Only the description sits in context. The body loads when the task matches. That is why a skill is the right container for a practice — a review checklist, a deployment recipe, a policy capping how much an agent may spend — in a way that pasting the same text into a config file is not. Pasted, you pay for it on every turn of every session. As a skill, you pay for it on the turns that use it.

A plugin is a bundle of those, plus agents, hooks, MCP servers and a manifest. A marketplace is a catalog of plugins somebody can add with one command.

Skills travel. The packaging does not.

The format is an open standard — written by Anthropic, released rather than kept, and adopted across the ecosystem. Roughly forty-five products support it: Cursor, OpenAI Codex, GitHub Copilot, VS Code, Gemini CLI, Goose, OpenHands, Roo Code, opencode, Amp, Kiro, Factory, Mistral Vibe, Tabnine and more.

whattravels to other tools?why
A skill: SKILL.md and its filesyesan open standard, adopted by around forty-five products
An MCP server inside a pluginyesits own cross-tool standard
The plugin wrapper: hooks, agents, manifestnothat part is Claude Code packaging
The install commandno/plugin marketplace add is a Claude Code command
The valuable part is portable and the wrapper around it is not, which decides what a catalog should be indexing.

So the ecosystem is portable in principle and unlabelled in practice. Two thousand skills that would work in Cursor, filed under a format whose install command Cursor does not have, described in pages that mostly do not mention Cursor exists.

That gap is the entire opening. The most useful column a catalog could carry — does this run in my tool — is the one nobody fills in.

Curation is subtraction

Here is what selecting for one point of view actually looks like, from two thousand entries down to a shelf:

2269 plugins in the public catalog
226 matching cost and token themes, the angle this site already has
10 read, named, and worth a closer look
9 carrying a licence — one dropped for having none
Each stage throws work away. Nothing here was written by us; the only thing we did is the narrowing.

The step from 226 to 10 is judgement and the step from 10 to 9 is a rule. The rule is worth explaining because it came out stricter than the law requires.

The licence rule, and why it is stricter than it needs to be

Of the ten candidates, nine carry MIT or Apache-2.0. One has no licence file at all.

No licence does not mean free. It means all rights reserved — the default, absent an explicit grant. We could lawfully link to it, because linking is not copying, and for a while the plan was to list it with a note.

That was the wrong call, and the reason has nothing to do with our exposure. A catalog exists so people can install things. Sending somebody to a repository they cannot lawfully use does not inform them; it hands them a problem wearing the costume of a recommendation. So an entry without a licence is not listed, full stop, and its author can add one and be listed the same day.

The rule is now a test in the codebase rather than a paragraph in a policy, because paragraphs get forgotten by whoever edits the list in six months and tests do not.

Credit is the design, not the disclaimer

Aggregators have a reliable failure mode: they slowly become the brand on other people's work. The listing gets restyled, the collection becomes a "section", the author's name shrinks into grey type, and eventually the catalog is what people cite.

what appearswhose name is on it
A plugin or skillits author — named on the listing, linked to the source
A collectionits creator — it stays their collection, not a section of ours
The selection itselfours — choosing what to list is the only part we did
The last row is the entire extent of the claim. Everything above it belongs to somebody else and says so.

Which is also why we index and link rather than host. Installing pulls from the author's source, so nothing is mirrored or vendored and no licence's redistribution terms are ever exercised on our side. Updates come from the author's repository, not from a copy under our control. The catalog is a pointer.

And because a pointer is a weak form of possession, the relationship has to be the author's to set — in both directions, as many times as they like:

  1. take my work down
  2. put me back
  3. list me, I have never been here

The first two are the creator's decision rather than ours and are honoured without conditions. Leaving is not a ban. Only the third is a judgement call.

One index, not a directory of directories

The direction is to end up above the catalogs rather than beside them. There are two versions of that and one is a trap.

The trap is a page listing the official catalog, the community catalog, this vendor's and that team's. It inherits the fragmentation instead of removing it — the reader still opens four tabs and searches each. A bookmark page is not a product.

The version worth building is a single index across all of them, at the level of the skill. You search once and get every match from every catalog, each labelled with its author, its licence, and the tools it runs in. The catalogs become sources, the way a search engine has sources.

Indexing at skill level rather than plugin level matters more than it sounds. A plugin bundling four skills is four things somebody might want, and today they are invisible unless you already know the bundle exists.

A single surface also removes an ambiguity that a curated shelf sitting next to a bigger catalog cannot avoid. If you find something in one and not the other, what did that mean — judged and rejected, or never looked at? With one index there is no such question: present means it cleared the bar, absent means it did not.

The cost of that decision is real. Curation can no longer lag behind the index, because there is no staging area for entries nobody has assessed yet. That turns the quality question from a nice-to-have into a blocker.

What is genuinely undecided

Three things, published rather than hidden, because a launch page that conceals its open questions is a brochure.

What curation screens for beyond "it works", and whether that bar is published. It has to be, now that anyone can ask to be listed against it.

How the three requests above are received and tracked. A ticket queue on the site is the obvious shape and it does not exist yet. Until it does, the commitment stands regardless of how you reach us — a creator should not have to wait for our tooling to get their own work taken down.

Whether it is public from day one or starts private while the set settles.

And one question the whole strategy rests on: whether "which tools does this run in" can be established at scale. Hand-checked it does not scale, self-declared it is unreliable, tested it is expensive. That label is the reason to be the layer above at all, so how it gets filled decides whether any of this is worth doing.

The selection so far, with every author and licence, is at Marketplace.