cd /news/ai-agents/skill-retriever-semantic-skill-disco… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-50620] src=github.com β†— pub= topic=ai-agents verified=true sentiment=↑ positive

Skill Retriever semantic skill discovery for AI agents via 10K-category taxonomy

AgentSkillOS released Skill Retriever, a semantic skill discovery plugin for Hermes AI agents that uses a 10,000-category taxonomy to surface relevant skills from a corpus of 1,200+ skills. The plugin runs as a pre_llm_call hook with zero core modification and no additional API cost, transforming skill discovery from a flat catalog into a search engine. It pre-filters skills to the top-5 most relevant per query, addressing the limitations of pure semantic retrieval by navigating a capability hierarchy to find functionally relevant skills.

read4 min views1 publishedJul 8, 2026
Skill Retriever semantic skill discovery for AI agents via 10K-category taxonomy
Image: source

AgentSkillOS-powered semantic skill retrieval for Hermes Agent.

Pre-filters 1,200+ skills (998 community corpus + 211 Hermes skills) organized in a 10,000-category capability taxonomy to the top-5 most relevant per query. Runs as a Hermes pre_llm_call

plugin β€” zero core modification, zero additional API cost (borrows your existing Hermes LLMs via borrow-mode).

Pure semantic retrieval prioritizes textual similarity and misses skills that look unrelated in embedding space but are crucial for solving the task. Our LLM + Skill Tree navigates the capability hierarchy to surface non-obvious but functionally relevant skills.

*Left: Pure semantic retrieval is narrow and myopic. Right: Skill Tree navigation surfaces functionally relevant skills the embedding space hides.*Skills are organized into a coarse-to-fine capability hierarchy. At scale, this is the difference between finding the right skill and drowning in an invisible pile.

The 10,000-category capability tree β€” the structure our 1,200 skills are mapped into.

User Query
    β”‚
    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ pre_llm_call hook (plugin)           β”‚
β”‚ Checks DISABLE flag, skips short Qs  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Searcher.search()                    β”‚
β”‚ 1. Load capability tree from YAML    β”‚
β”‚ 2. LLM-navigate tree (select nodes)  β”‚
β”‚ 3. Parallel child search (ThreadPool)β”‚
β”‚ 4. LLM prune (dedup + rank)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Hint Injection                       β”‚
β”‚ Prepends top-5 skill hints as        β”‚
β”‚ natural-language block. LLM may call β”‚
β”‚ skill_view(name) to load any.        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Hermes already ships with skill discovery β€” every user-installed skill appears in the <available_skills>

block of the system prompt. The LLM scans this flat list every turn and calls skill_view()

when needed. For small sets it works fine.

skill-retriever adds a semantic retrieval layer that transforms skill discovery from "read the catalog" into "search for what you need":

Dimension Hermes OOTB skill-retriever
Skill source
Your local ~/.hermes/skills/ only (~100-200)
Community corpus (998) + Hermes skills (200) = 1,198 total
Discovery
Flat name+desc list in system prompt every turn LLM-navigated taxonomy tree β†’ top-5 relevant injected as hints
Token cost
Every turn burns tokens for all skills, even irrelevant ones Zero system prompt overhead β€” hints only in user message, only when found
Categorization
Filesystem directory names 10,000-category AgentSkillOS capability taxonomy
Scales to
~200 skills before prompt bloat 10K+ (tree handles it)
Latency per turn
0 (passive β€” always visible) +1-3 cheap LLM calls for tree traversal (when it has results)
Community corpus
No Yes β€” 998 community skills alongside yours

The difference: OOTB gives you a flat skill catalog you read every turn. skill-retriever turns it into a search engine β€” describe what you need, the tree navigates to the right category, and only relevant suggestions appear. The tradeoff is a small latency cost per turn vs constant system prompt bloat.

git clone https://github.com/ChonSong/skill-retriever.git
cd skill-retriever
bash scripts/install.sh
hermes gateway restart

Every skill carries a source tag and a safety scan result:

Badge Meaning
πŸ”’hermes
Installed via Hermes β€” trusted
🌐community
From AgentSkillOS corpus β€” unreviewed
⚠️ (suffix)
Flagged by safety scan β€” review before

All 1,200 skills were scanned for dangerous patterns (rm -rf /

, curl | sh

to raw IPs, base64 payloads, crypto miners). Zero flagged β€” every match was standard installer documentation inside code blocks.

python -m skill_retriever search "set up CI/CD pipeline"
python -m skill_retriever build              # rebuild capability tree
python -m skill_retriever list               # list all skills in corpus
python -m skill_retriever info               # system info + tree stats

All settings via environment variables β€” no config files needed.

Env Variable Default Description
SKILL_RETRIEVER_DISABLE
β€” Set 1 to disable entirely
SKILL_RETRIEVER_LLM_MODEL
gpt-4o
LLM model for skill gate
SKILL_RETRIEVER_LLM_API_KEY
OPENAI_API_KEY
API key
SKILL_RETRIEVER_LLM_BASE_URL
OPENAI_BASE_URL
Base URL
SKILL_RETRIEVER_BRANCHING_FACTOR
3
Tree branching (search)
SKILL_RETRIEVER_MAX_PARALLEL
5
Parallel search branches
SKILL_RETRIEVER_TEMPERATURE
0.3
LLM temperature
SKILL_RETRIEVER_PRUNE
true
Enable dedup/ranking step
SKILL_RETRIEVER_TREE_PATH
bundled tree_10000.yaml
Override capability tree

See ARCHITECTURE.md for a technical deep-dive covering:

  • Capability tree structure and build process

  • LLM node selection algorithm

  • Searcher internals (parallel search, early stop, pruning)

  • Plugin hook integration

  • Directory layout

  • Hermes Agent v0.18+

  • Python 3.10+

  • ~500MB for capability tree index

  • ~4GB for full skill corpus (optional, for rebuilding tree)

skill-retriever/
β”œβ”€β”€ plugin/                 # Hermes plugin (pre_llm_call hook)
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ skill_retriever/    # Core engine
β”‚   β”‚   β”œβ”€β”€ cli.py          # CLI (search, build, list, info)
β”‚   β”‚   β”œβ”€β”€ search/         # Searcher (multi-level LLM tree search)
β”‚   β”‚   β”œβ”€β”€ tree/           # Tree builder, schema, prompts, scanner
β”‚   β”‚   └── capability_tree/# Pre-built trees (YAML + HTML)
β”‚   └── scanner.py  # Hermes skills scanner
β”œβ”€β”€ data/                   # Skill corpus (gitignored)
β”œβ”€β”€ tests/                  # 40 tests
β”œβ”€β”€ scripts/install.sh      # One-click Hermes plugin install
└── ARCHITECTURE.md

MIT. Built on AgentSkillOS (MIT).

── more in #ai-agents 4 stories Β· sorted by recency
── more on @agentskillos 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/skill-retriever-sema…] indexed:0 read:4min 2026-07-08 Β· β€”