skillrouter-eval
SkillRouter: Retrieve-and-Rerank Skill Selection for LLM Agents at Scale — YanZhao Zheng et al. (2026) (arXiv:2603.22455, 2026)
What this evaluates
This benchmark evaluates the ability of LLM-based skill routers to accurately select the most relevant tool or function from a large-scale pool of candidate skills based on a user query. It probes retrieval and reranking capabilities under varying difficulty tiers and tests whether models can handle single-skill versus multi-skill routing scenarios.
Datasets
- SkillRouter Benchmark — total 75; splits: test (75)
Metrics
Hit@1 (primary) — range: [0, 1]
- Primary top-1 routing metric. Counts as success if any required skill is ranked first. For multi-skill queries, success is recorded when at least one ground-truth skill appears at rank 1. [0, 1]
MRR@10 — range: [0, 1]
- Mean Reciprocal Rank at 10. Computes the average of 1/rank for the first relevant skill in the top-10 results. [0, 1]
nDCG@10 — range: [0, 1]
- Normalized Discounted Cumulative Gain at 10. Measures ranking quality by discounting the relevance of correctly retrieved skills by their position, normalized by the ideal DCG. [0, 1]
Recall@10 — range: [0, 1]
- Fraction of ground-truth skills retrieved within the top-10 candidates. Computed as |predicted[:10] ∩ gold| / |gold|. [0, 1]
Recall@20 — range: [0, 1]
- Fraction of ground-truth skills retrieved within the top-20 candidates. Computed as |predicted[:20] ∩ gold| / |gold|. [0, 1]
Recall@50 — range: [0, 1]
- Fraction of ground-truth skills retrieved within the top-50 candidates. Computed as |predicted[:50] ∩ gold| / |gold|. [0, 1]
FC@10 — range: [0, 1]
- Full Coverage at 10. Indicates whether all required skills for a multi-skill query are retrieved within the top-10 candidates. [0, 1]
Input / output format
Input: A user query paired with a list of candidate skills. Each skill is represented by three text fields: name, description, and body. For retrievers, the full skill pool (~80K) is used; for rerankers, the top-20 candidates from the retriever are provided.
Output: A ranked list of candidate skills (or a single top-1 skill selection for LLM-as-judge baselines).
Scoring recipe
def compute_metrics(predictions, gold_skills):
# predictions: list of skill IDs ranked by model
# gold_skills: set of required skill IDs for the query
hit1 = 1.0 if any(s in gold_skills for s in predictions[:1]) else 0.0
rr = [1.0/(i+1) for i, s in enumerate(predictions) if s in gold_skills]
mrr = rr[0] if rr else 0.0
recall10 = len(set(predictions[:10]) & gold_skills) / len(gold_skills)
recall20 = len(set(predictions[:20]) & gold_skills) / len(gold_skills)
recall50 = len(set(predictions[:50]) & gold_skills) / len(gold_skills)
fc10 = 1.0 if gold_skills.issubset(set(predictions[:10])) else 0.0
return hit1, mrr, recall10, recall20, recall50, fc10
Common pitfalls
- Ignoring the single-skill vs. multi-skill distinction, which causes Hit@1 and coverage metrics (FC@10) to diverge significantly.
- Using only name and description (nd) inputs for rerankers actively degrades performance below encoder-only retrieval due to insufficient context.
- Assuming zero-shot general-purpose encoders outperform domain-adapted fine-tuned models without empirical verification on skill routing data.
Evidence (verbatim from paper)
We report seven metrics: Hit@1 (our primary top-1 routing metric), MRR@10 (mean reciprocal rank), nDCG@10 (normalized discounted cumulative gain), Recall@10, Recall@20, Recall@50, and FC@10. For multi-skill queries, Hit@1 counts success when any required skill is ranked first, while Recall@10 and FC@10 provide complementary coverage views.
Citation
@misc{zheng2026skillrouter,
title={SkillRouter: Retrieve-and-Rerank Skill Selection for LLM Agents at Scale},
author={YanZhao Zheng et al. (2026)},
year={2026},
note={arXiv:2603.22455}
}
1---2name: skillrouter-eval3description: This benchmark evaluates the ability of LLM-based skill routers to accurately select the most relevant tool or function from a large-scale pool of candidate skills based on a user query. It probes retrieval and reranking capabilities under varying difficulty tiers and tests whether models can handle single-skill versus multi-skill routing scenarios. Use when the user wants to benchmark on SkillRouter Benchmark, or asks about evaluating this task. Reports Hit@1.4---56# skillrouter-eval78> SkillRouter: Retrieve-and-Rerank Skill Selection for LLM Agents at Scale — YanZhao Zheng et al. (2026) (arXiv:2603.22455, 2026)910## What this evaluates1112This benchmark evaluates the ability of LLM-based skill routers to accurately select the most relevant tool or function from a large-scale pool of candidate skills based on a user query. It probes retrieval and reranking capabilities under varying difficulty tiers and tests whether models can handle single-skill versus multi-skill routing scenarios.1314## Datasets1516- **SkillRouter Benchmark** — total 75; splits: test (75)1718## Metrics1920- `Hit@1` **(primary)** — range: [0, 1]21 - Primary top-1 routing metric. Counts as success if any required skill is ranked first. For multi-skill queries, success is recorded when at least one ground-truth skill appears at rank 1. [0, 1]22- `MRR@10` — range: [0, 1]23 - Mean Reciprocal Rank at 10. Computes the average of 1/rank for the first relevant skill in the top-10 results. [0, 1]24- `nDCG@10` — range: [0, 1]25 - Normalized Discounted Cumulative Gain at 10. Measures ranking quality by discounting the relevance of correctly retrieved skills by their position, normalized by the ideal DCG. [0, 1]26- `Recall@10` — range: [0, 1]27 - Fraction of ground-truth skills retrieved within the top-10 candidates. Computed as |predicted[:10] ∩ gold| / |gold|. [0, 1]28- `Recall@20` — range: [0, 1]29 - Fraction of ground-truth skills retrieved within the top-20 candidates. Computed as |predicted[:20] ∩ gold| / |gold|. [0, 1]30- `Recall@50` — range: [0, 1]31 - Fraction of ground-truth skills retrieved within the top-50 candidates. Computed as |predicted[:50] ∩ gold| / |gold|. [0, 1]32- `FC@10` — range: [0, 1]33 - Full Coverage at 10. Indicates whether all required skills for a multi-skill query are retrieved within the top-10 candidates. [0, 1]3435## Input / output format3637**Input**: A user query paired with a list of candidate skills. Each skill is represented by three text fields: name, description, and body. For retrievers, the full skill pool (~80K) is used; for rerankers, the top-20 candidates from the retriever are provided.3839**Output**: A ranked list of candidate skills (or a single top-1 skill selection for LLM-as-judge baselines).4041## Scoring recipe4243```python44def compute_metrics(predictions, gold_skills):45 # predictions: list of skill IDs ranked by model46 # gold_skills: set of required skill IDs for the query47 hit1 = 1.0 if any(s in gold_skills for s in predictions[:1]) else 0.048 rr = [1.0/(i+1) for i, s in enumerate(predictions) if s in gold_skills]49 mrr = rr[0] if rr else 0.050 recall10 = len(set(predictions[:10]) & gold_skills) / len(gold_skills)51 recall20 = len(set(predictions[:20]) & gold_skills) / len(gold_skills)52 recall50 = len(set(predictions[:50]) & gold_skills) / len(gold_skills)53 fc10 = 1.0 if gold_skills.issubset(set(predictions[:10])) else 0.054 return hit1, mrr, recall10, recall20, recall50, fc1055```5657## Common pitfalls5859- Ignoring the single-skill vs. multi-skill distinction, which causes Hit@1 and coverage metrics (FC@10) to diverge significantly.60- Using only name and description (nd) inputs for rerankers actively degrades performance below encoder-only retrieval due to insufficient context.61- Assuming zero-shot general-purpose encoders outperform domain-adapted fine-tuned models without empirical verification on skill routing data.6263## Evidence (verbatim from paper)6465> We report seven metrics: Hit@1 (our primary top-1 routing metric), MRR@10 (mean reciprocal rank), nDCG@10 (normalized discounted cumulative gain), Recall@10, Recall@20, Recall@50, and FC@10. For multi-skill queries, Hit@1 counts success when any required skill is ranked first, while Recall@10 and FC@10 provide complementary coverage views.6667## Citation6869```bibtex70@misc{zheng2026skillrouter,71 title={SkillRouter: Retrieve-and-Rerank Skill Selection for LLM Agents at Scale},72 author={YanZhao Zheng et al. (2026)},73 year={2026},74 note={arXiv:2603.22455}75}76```7778- arXiv: 2603.22455