Why a Brand-New Skill Returns Zero Results in a Search

You just saw a neat little skill in a community thread — say, “turn the action items in a weekly report into a checklist” — and the author says it is published on skills.sh. You open a terminal, feeling good about this:
hermes skills search weekly-report
Zero results. You try another keyword. Still zero. Now you are second-guessing your spelling, or the skill’s existence. Half an hour later you install it from the link in the thread, and it works perfectly.
Nothing is wrong with you or with the skill. The path a search takes and the question “does this skill exist” are simply not the same question.
Search runs in two passes
An unfiltered search — CLI, TUI, and dashboard alike — is answered by a central index that covers the external registries. That index is rebuilt periodically, which means it answers “what existed at the last build,” not “what exists right now.”
That leaves a window. A skill published a few minutes ago is probably not in the index yet.
A change merged on September 16 handles the window: when the index returns zero matches for your query, Hermes also asks skills.sh, ClawHub, LobeHub, and well-known endpoints directly. In the words of the docs, a skill published minutes ago still shows up.
A few limits on that fallback are worth remembering:
- At most 8 seconds. It gets a slice of the search budget, so a slow registry cannot turn a miss into a long wait;
- It only fires when the index actually completed with zero results. An index that timed out does not trigger it — a distinction the same change fixed, because otherwise the dashboard falsely accused skills.sh and ClawHub of timing out;
- Provider filters do not trigger it. A filter like
--source nvidiamatches provided sources, and these registries carry no provider data, so it would be four guaranteed-empty network calls; - GitHub is not in the fallback. The reason is practical: one typo would otherwise spend an unauthenticated user’s entire hourly GitHub budget. To search custom GitHub taps, ask for them explicitly.
Want a precise answer? Name the source
hermes skills search takes --source, and the list is longer than most people assume:
hermes skills search kubernetes # every source
hermes skills search react --source skills-sh # only the skills.sh directory
hermes skills search report --source clawhub # only ClawHub
hermes skills search --source official # official optional skills only
Available sources include official, skills-sh, well-known, github, clawhub, lobehub, browse-sh, plus provider-grouped ones such as nvidia, openai, anthropic, huggingface, voltagent, gstack, and minimax — the full set is in --help.
Two sibling commands earn their keep: hermes skills browse pages through everything (official skills first), and hermes skills inspect <name> shows you what a skill does before you install it. Add --json to a search when you want structured output for a script.
The index itself got fixed too: one timed-out shard no longer eats skills
The fallback is a patch; the real fix is making the index reliable. Work on September 17-18 targeted one class of bug: treating a failed fetch as “there is no more data.”
- ClawHub’s catalog walks by cursor. When a page timed out or returned a non-200, the old code read it as the end of the catalog, so every remaining skill vanished. It now retries.
- skills.sh’s sitemap is fetched in shards. A failed shard was read as an empty shard, and the resulting partial catalog was written to the shared cache — dropping skills from search for everyone until the cache expired. Now a failed shard is retried, and if it stays dark the partial slice is returned without being cached.
- The CI timeout moved from 50 minutes to 120. The commit explains why with unusual specificity: since September 17 ClawHub serves roughly one 200-item page every 10 seconds (down from about 2.5), so the ~400-page walk alone takes 60-70 minutes. The scheduled runs on September 17 and 18 were cancelled at 50 minutes with the crawl still going, and another run stopped at 12,145 skills — below the 20,000 floor — after a single failed page. Both halves had to be fixed for the index to ship again.
So next time a search comes up empty, go in this order
One: search again, unchanged. If the skill was just published, the fallback would have asked — but an 8-second budget means a single slow registry can still make it miss.
Two: name the source. --source clawhub or --source skills-sh sends the query straight at that directory and sidesteps index freshness entirely.
Three: search GitHub explicitly. Custom taps are not in the fallback; use --source github.
Four: check whether you are looking for a skill at all. If what you want is a plugin — the kind that adds tools, hooks, or platform adapters — that is a different pipeline: SHA-pinned, human-reviewed, and covered in the plugin catalog post.
For the wider picture — how the skills directory is laid out, external_dirs, and where agent-created skills land via skills.create_dir — see the skill creation directory post. The full command surface is in the skills command reference.
The short version: not seeing something is not the same as it not existing. Search has always been index plus fallback, and both halves got a serious round of repairs in mid-September — so the next time you get zero hits, ask whether the thing you want is inside the set it can actually reach.