By · Founder, Stacktree · Last updated
blog · hands-on · receipts included

Your skill probably is indexed. It just cannot be installed.

The agent-skills index has no submission form, no error messages, and 191 open GitHub issues from people asking to be listed. We shipped a listed skill, discovered it had been broken on install the whole time, then found a second failure hiding five more skills. Here is what the index actually does, and the checklist we wish had existed.

Get started free

No card · 3 pages free · about a minute

Why is my skill not showing up on skills.sh?

Almost always one of three silent failures, not a missing submission: a YAML parse error in the SKILL.md frontmatter (an unquoted colon is enough), a root SKILL.md shadowing the skills/ directory so only one skill enumerates, or the custom-layout path bug tracked in vercel-labs/skills issue #1716. The installer and the index skip what they cannot parse without telling anyone, so the failure looks like absence.

The scale, honestly stated

The numbers are startling and worth stating carefully. The vercel-labs/skills repo was created on 14 January 2026 and sits around 29,400 stars. Downloads of the skills npm package went from 240,000 in January to 44.4 million in July. The skills.sh homepage advertises over 1.29 million indexed skills, though the page payload also carries a much smaller totalSkills figure, so treat the headline number as a claim rather than a count. The bundled find-skills skill, which instructs agents to consult the leaderboard before recommending anything, has over 3 million installs on its own.

Against that: 1,090 open issues, of which 191 are titled "request indexing" — three filed on 21 August alone. There is no submission form, so when discovery fails silently, a GitHub issue is the only lever people can find. Most of those issues will never need answering, because the fix is on the skill author's side.

Failure one: the YAML that looked fine

Our skill was listed, showed an install count, and had been recommended in our own docs for weeks. Then we watched an actual install:

⚠ Skipped SKILL.md — YAML parse error: Nested mappings are not
  allowed in compact mappings

description: Share an HTML page privately with someone outside the chat: a clie…
                                                                        ^

One unquoted colon inside the description. YAML reads everything after it as a nested mapping, the frontmatter fails to parse, and the installer skips the file. The listing page kept rendering; the install delivered nothing. Every SKILL.md we had ever copied that description into carried the same fault — including one pinned into a marketplace submission. The fix is a pair of quotes.

Failure two: the shadowed directory

The same repo held seven skills: one at the root, six under skills/<name>/. Every install reported Found 1 skill — the root one. The six others did not exist as far as the CLI was concerned, and no search would ever surface them.

Moving the root SKILL.md into skills/publish/ — changing nothing else — flipped the same command to Found 7 skills. A root SKILL.md shadows the directory. The indexed multi-skill repos all share the same shape: everything under skills/, nothing at the root. Issue #1716 documents the wider class, where a recognised path prefix silently swallows files in unrecognised locations, and has sat open with zero comments since July.

How ranking and search actually work

Installs are the ranking signal, counted via CLI telemetry (opt out with SKILLS_NO_TELEMETRY=1), across all-time, trending, and hot windows. Search matches name and description text. That has a consequence authors consistently miss: a description written in product language is invisible to the queries people actually type. Ours surfaced for its own brand name and for nothing else — not "publish html", not "share a page privately" — while a 59-install skill outranked it on our own use case, purely on wording. The index is server-side and recrawls on its own schedule; a description edit takes days to show, so fix wording before chasing installs.

The checklist

In order, because each failure hides the ones behind it:

  • Run npx skills add you/your-repo@your-skill yourself and read every line. The installer reports what it skipped nowhere else.
  • Quote any frontmatter description containing a colon. Validate the YAML if in doubt.
  • Multi-skill repo: everything under skills/<name>/SKILL.md, no root SKILL.md.
  • Dedicated repo beats a corner of a monorepo — issue #1469 documents skills add pulling 1,831 files from one.
  • Write the description in the words of the job, not the product. It is the entire search surface.
  • Then wait out the recrawl before concluding anything.

What changed this month

Two updates worth knowing while you are in there. Skill Packs shipped on 7 August: bundle skills from folders, zips, or repos into one shareable URL with one-command install — with no versioning, checksums, or signatures yet, which others have rightly flagged as a supply-chain gap. And v1.5.23, released 18 August, stopped the CLI extracting your stored GitHub CLI token via gh auth token and stopped sending private repo identifiers to telemetry endpoints — a quiet fix to a long-standing pair of issues that is worth an upgrade on its own.

Disclosure of the receipts: the skill in these war stories is ours — stacktree-publish, which publishes HTML from any agent to a private link on Stacktree. Both failures above are reproduced from its commit history, not reconstructed from memory.

See it in one call, no account

curl -X POST https://api.stacktr.ee/sites -F file=@index.html
# → a private URL, live for 24h. Claim it free to keep it.

If your agents emit HTML, they need a durable publish target: publish once, then update_site on every revision keeps the same URL forever. MCP, REST, and skills all speak it — the map is at agent.txt.

Get an API key free
FAQ

Frequent questions

What is skills.sh? +
The leaderboard and search index for agent skills installed by the npx skills CLI (the vercel-labs/skills project, roughly 29,000 GitHub stars). Skills install straight from GitHub repos with npx skills add owner/repo@skill; skills.sh indexes them, counts installs via the CLI's telemetry, and ranks all-time, trending, and hot. Its bundled find-skills skill tells agents to check the leaderboard before recommending anything, which is what makes placement matter.
Do I need to submit my skill to skills.sh? +
No. There is no submission form; the index discovers skills from public GitHub repos. That is also why 191 open issues on the repo are titled "request indexing": when discovery silently fails, filing an issue is the only lever people can find. In our experience the fix is almost never "ask for indexing" and almost always one of the silent failures below.
Why does npx skills add say no matching skills found? +
The two silent causes we hit ourselves: a YAML parse failure in the SKILL.md frontmatter, which makes the installer skip the file entirely, and a root SKILL.md shadowing a skills/ directory, which makes a seven-skill repo enumerate as one. A third documented cause is the custom-layout bug in issue #1716, where recognised path prefixes swallow files in unrecognised locations. The installer reports what it found, not what it skipped, so all three look like your skill simply does not exist.
What breaks SKILL.md parsing most often? +
An unquoted colon in the description. YAML reads "description: Share a page: a client" as a nested mapping and fails with "Nested mappings are not allowed in compact mappings". The listing can still render on skills.sh while every install silently skips the file, which is the worst of both worlds: you look listed and ship nothing. Quote any description containing a colon.
How do skills rank on the skills.sh leaderboard? +
By installs, counted through CLI telemetry (users can opt out with SKILLS_NO_TELEMETRY=1), with all-time, trending, and hot windows. Search matches the name and description text, so a description written in the words of the job ("publish HTML", "share a page privately") is findable and a description written in product language is not. The index is server-side and recrawls on its own schedule; edits take days, not minutes, to show.
How should a multi-skill repo be laid out? +
One skill per directory under skills//SKILL.md, and no SKILL.md at the repo root. The root file shadows the directory: our repo reported "Found 1 skill" until we moved the root skill into skills/publish/, after which the same command reported "Found 7 skills" with nothing else changed. Indexed multi-skill repos like anthropics/knowledge-work-plugins follow exactly this shape.
Keep reading

Related guides

References

Sources and further reading

The skill in the story.

npx skills add stevysmith/stacktree-skill — publish HTML from any agent to a private link.

Sign up free →