{"slug": "skill-retriever-semantic-skill-discovery-for-ai-agents-via-10k-category-taxonomy", "title": "Skill Retriever semantic skill discovery for AI agents via 10K-category taxonomy", "summary": "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.", "body_md": "AgentSkillOS-powered semantic skill retrieval for Hermes Agent.\n\nPre-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`\n\nplugin — zero core modification, zero additional API cost (borrows your existing Hermes LLMs via borrow-mode).\n\nPure 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.\n\n*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.\n\n*The 10,000-category capability tree — the structure our 1,200 skills are mapped into.*\n\n```\nUser Query\n    │\n    ▼\n┌──────────────────────────────────────┐\n│ pre_llm_call hook (plugin)           │\n│ Checks DISABLE flag, skips short Qs  │\n└──────────────┬───────────────────────┘\n               │\n               ▼\n┌──────────────────────────────────────┐\n│ Searcher.search()                    │\n│ 1. Load capability tree from YAML    │\n│ 2. LLM-navigate tree (select nodes)  │\n│ 3. Parallel child search (ThreadPool)│\n│ 4. LLM prune (dedup + rank)          │\n└──────────────┬───────────────────────┘\n               │\n               ▼\n┌──────────────────────────────────────┐\n│ Hint Injection                       │\n│ Prepends top-5 skill hints as        │\n│ natural-language block. LLM may call │\n│ skill_view(name) to load any.        │\n└──────────────────────────────────────┘\n```\n\nHermes already ships with skill discovery — every user-installed skill appears in the `<available_skills>`\n\nblock of the system prompt. The LLM scans this flat list every turn and calls `skill_view()`\n\nwhen needed. For small sets it works fine.\n\nskill-retriever adds a **semantic retrieval layer** that transforms skill discovery from \"read the catalog\" into \"search for what you need\":\n\n| Dimension | Hermes OOTB | skill-retriever |\n|---|---|---|\nSkill source |\nYour local `~/.hermes/skills/` only (~100-200) |\nCommunity corpus (998) + Hermes skills (200) = 1,198 total |\nDiscovery |\nFlat name+desc list in system prompt every turn | LLM-navigated taxonomy tree → top-5 relevant injected as hints |\nToken cost |\nEvery turn burns tokens for all skills, even irrelevant ones | Zero system prompt overhead — hints only in user message, only when found |\nCategorization |\nFilesystem directory names | 10,000-category AgentSkillOS capability taxonomy |\nScales to |\n~200 skills before prompt bloat | 10K+ (tree handles it) |\nLatency per turn |\n0 (passive — always visible) | +1-3 cheap LLM calls for tree traversal (when it has results) |\nCommunity corpus |\nNo | Yes — 998 community skills alongside yours |\n\n**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.\n\n```\ngit clone https://github.com/ChonSong/skill-retriever.git\ncd skill-retriever\nbash scripts/install.sh\nhermes gateway restart\n```\n\nEvery skill carries a **source tag** and a **safety scan result**:\n\n| Badge | Meaning |\n|---|---|\n`🔒hermes` |\nInstalled via Hermes — trusted |\n`🌐community` |\nFrom AgentSkillOS corpus — unreviewed |\n`⚠️` (suffix) |\nFlagged by safety scan — review before loading |\n\nAll 1,200 skills were scanned for dangerous patterns (`rm -rf /`\n\n, `curl | sh`\n\nto raw IPs, base64 payloads, crypto miners). **Zero flagged** — every match was standard installer documentation inside code blocks.\n\n```\npython -m skill_retriever search \"set up CI/CD pipeline\"\npython -m skill_retriever build              # rebuild capability tree\npython -m skill_retriever list               # list all skills in corpus\npython -m skill_retriever info               # system info + tree stats\n```\n\nAll settings via environment variables — no config files needed.\n\n| Env Variable | Default | Description |\n|---|---|---|\n`SKILL_RETRIEVER_DISABLE` |\n— | Set `1` to disable entirely |\n`SKILL_RETRIEVER_LLM_MODEL` |\n`gpt-4o` |\nLLM model for skill gate |\n`SKILL_RETRIEVER_LLM_API_KEY` |\n`OPENAI_API_KEY` |\nAPI key |\n`SKILL_RETRIEVER_LLM_BASE_URL` |\n`OPENAI_BASE_URL` |\nBase URL |\n`SKILL_RETRIEVER_BRANCHING_FACTOR` |\n`3` |\nTree branching (search) |\n`SKILL_RETRIEVER_MAX_PARALLEL` |\n`5` |\nParallel search branches |\n`SKILL_RETRIEVER_TEMPERATURE` |\n`0.3` |\nLLM temperature |\n`SKILL_RETRIEVER_PRUNE` |\n`true` |\nEnable dedup/ranking step |\n`SKILL_RETRIEVER_TREE_PATH` |\nbundled `tree_10000.yaml` |\nOverride capability tree |\n\nSee [ARCHITECTURE.md](/ChonSong/skill-retriever/blob/master/ARCHITECTURE.md) for a technical deep-dive covering:\n\n- Capability tree structure and build process\n- LLM node selection algorithm\n- Searcher internals (parallel search, early stop, pruning)\n- Plugin hook integration\n- Directory layout\n\n- Hermes Agent v0.18+\n- Python 3.10+\n- ~500MB for capability tree index\n- ~4GB for full skill corpus (optional, for rebuilding tree)\n\n```\nskill-retriever/\n├── plugin/                 # Hermes plugin (pre_llm_call hook)\n├── src/\n│   ├── skill_retriever/    # Core engine\n│   │   ├── cli.py          # CLI (search, build, list, info)\n│   │   ├── search/         # Searcher (multi-level LLM tree search)\n│   │   ├── tree/           # Tree builder, schema, prompts, scanner\n│   │   └── capability_tree/# Pre-built trees (YAML + HTML)\n│   └── scanner.py  # Hermes skills scanner\n├── data/                   # Skill corpus (gitignored)\n├── tests/                  # 40 tests\n├── scripts/install.sh      # One-click Hermes plugin install\n└── ARCHITECTURE.md\n```\n\nMIT. Built on [AgentSkillOS](https://github.com/ynulihao/AgentSkillOS) (MIT).", "url": "https://wpnews.pro/news/skill-retriever-semantic-skill-discovery-for-ai-agents-via-10k-category-taxonomy", "canonical_source": "https://github.com/ChonSong/skill-retriever", "published_at": "2026-07-08 05:36:19+00:00", "updated_at": "2026-07-08 06:00:10.051950+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "large-language-models", "natural-language-processing", "developer-tools"], "entities": ["AgentSkillOS", "Hermes Agent", "Skill Retriever", "ChonSong"], "alternates": {"html": "https://wpnews.pro/news/skill-retriever-semantic-skill-discovery-for-ai-agents-via-10k-category-taxonomy", "markdown": "https://wpnews.pro/news/skill-retriever-semantic-skill-discovery-for-ai-agents-via-10k-category-taxonomy.md", "text": "https://wpnews.pro/news/skill-retriever-semantic-skill-discovery-for-ai-agents-via-10k-category-taxonomy.txt", "jsonld": "https://wpnews.pro/news/skill-retriever-semantic-skill-discovery-for-ai-agents-via-10k-category-taxonomy.jsonld"}}