A retrieval benchmark for matching natural-language user requests to AI agent skills
SkillRet is a retrieval benchmark for matching natural-language user requests to AI agent skills. It contains a curated library of 17,810 public agent skills harvested from GitHub, along with synthetic training queries and human-quality evaluation queries.
The dataset consists of three core components:
Additionally, the dataset includes a taxonomy with 6 major categories and 18 sub-categories that classify every skill.
Each JSONL file stores one record per line. Below are example records (long text values truncated with …).
(skills.jsonl)18 fields per skill: identifiers, metadata, taxonomy labels, and the SKILL.md content.
{
"id": "a1299c1e-12ab-44af-a931-d7fa0254de10",
"name": "brainstorming",
"namespace": "@obra/superpowers/brainstorming",
"description": "You MUST use this before any creative work - creating features, building components, adding functionality, or modifying ...",
"author": "obra",
"stars": 16795,
"installs": 2847,
"license": "mit",
"repo": "obra/superpowers",
"source_url": "https://github.com/obra/superpowers/tree/main/skills/brainstorming",
"raw_url": "https://raw.githubusercontent.com/obra/superpowers/main/skills/brainstorming/SKILL.md",
"major": "Software Engineering",
"sub": "Development",
"primary_action": "design",
"primary_object": "agent_skill",
"domain": "ai_agents",
"body": "---\nname: brainstorming\ndescription: \"You MUST use this before any creative work - creating features, building component...",
"skill_md": "---\nname: brainstorming\ndescription: \"You MUST use this before any creative work - creating features, building component..."
}
(queries/*.jsonl)7 fields: the natural-language request, its matching skill IDs, the number of relevant skills (k), and the generator model.
{
"id": "q-00001",
"original_id": "q-00001",
"query": "Design a system where an LLM-based assistant can autonomously manage a small e-commerce store's customer support: it sho...",
"skill_ids": [
"57ca9c6b-c2c3-446a-b695-09f824efc80d"
],
"skill_names": [
"agents"
],
"k": 1,
"generator_model": "Claude Opus 4.6"
}
(qrels/*.jsonl)3 fields: a binary relevance judgment linking a query to a skill.
{
"query_id": "q-00001",
"skill_id": "57ca9c6b-c2c3-446a-b695-09f824efc80d",
"relevance": 1
}
Per the Agent Skills specification, a skill is a
directory containing a required SKILL.md file plus optional companion folders:
scripts/ — executable code the agent can runreferences/ — additional documentation loaded on demandassets/ — templates, data files, static resourcesThe dataset only captured the SKILL.md content for each skill (body == skill_md
for all 17,810 records). To determine how many skills are bare SKILL.md (nothing
else in the directory) versus skills that have companion sub-folders, we analyzed the SKILL.md text
for references to scripts/, references/, assets/, and other local file paths.
scripts/,
3,703 reference references/, and
677 reference assets/.
Important caveat: While these skills reference sub-folders and companion files in their
SKILL.md instructions (e.g., “Run scripts/extract.py”), the actual content of
those files is not included in the dataset. The dataset only provides the SKILL.md text.
This means the retrieval benchmark operates exclusively on SKILL.md content, missing the richer
context that ~36% of skills were designed to include.
The SKILLRET taxonomy organizes skills into 6 major categories and 18 sub-categories:
| Major Category | Sub-Categories | Skill Count |
|---|---|---|
| Software Engineering | Development, Analysis & Testing, Infrastructure & DevOps, Security, Version Control, Documentation | 11,085 |
| AI Agents | Agent Development, Agent Orchestration, Agent Evaluation | 2,074 |
| Data & ML | Data Engineering, Data Analysis, ML Development | 1,311 |
| Content Creation | Writing & Text, Visual & Media | 1,176 |
| Business & Planning | Business Analysis, Project Management | 1,609 |
| Information Retrieval | Technical Search, General Search | 555 |
Software Engineering dominates with 11,085 skills (62.2%), followed by AI Agents (2,074) and Data & ML (1,311).
| Stat | Value |
|---|---|
| Mean | 574 |
| Median | 6 |
| Max | 137,174 |
| Min | 0 |
| Std Dev | 3,729 |
| Stat | Value |
|---|---|
| Mean | 4 |
| Median | 0 |
| Max | 2,847 |
| Min | 0 |
| Std Dev | 34 |
| Stat | Value |
|---|---|
| Mean | 8,518 chars |
| Median | 6,553 chars |
| Max | 183,832 chars |
| P25 | 3,239 chars |
| P75 | 11,101 chars |
| Stat | Value |
|---|---|
| Mean | 217 chars |
| Median | 193 chars |
| Max | 2,472 chars |
| P25 | 123 chars |
| P75 | 272 chars |
Queries are synthetic natural-language user requests designed to match one or more skills. They were generated by two different LLMs:
| Stat | Value |
|---|---|
| Count | 4,392 |
| Mean length | 171 words |
| Median length | 169 words |
| Mean chars | 1,136 |
| Generator | Claude Opus 4.6 |
| Stat | Value |
|---|---|
| Count | 63,259 |
| Mean length | 71 words |
| Median length | 70 words |
| Mean chars | 470 |
| Generator | Qwen3.5-122B-A10B |
Each query record includes:
id / original_id — unique query identifierquery — the full natural-language request textskill_ids — list of relevant skill UUIDsskill_names — human-readable names of relevant skillsk — number of relevant skills for this querygenerator_model — which LLM generated the queryA golden skill is a distinct skill_id with a positive relevance label
(relevance > 0) for that query. We count all queries in each split, including queries
with zero golden skills. Duplicate positive qrel rows count only once.
| Golden skills | Train queries | Test queries | All queries |
|---|---|---|---|
| 0 | 0 (0.00%) | 0 (0.00%) | 0 (0.00%) |
| 1 | 20,776 (32.84%) | 2,143 (48.79%) | 22,919 (33.88%) |
| 2 | 21,035 (33.25%) | 1,703 (38.78%) | 22,738 (33.61%) |
| 3 | 21,448 (33.91%) | 546 (12.43%) | 21,994 (32.51%) |
| Total | 63,259 (100.00%) | 4,392 (100.00%) | 67,651 (100.00%) |
Mean golden skills per query: 2.011 in train; 1.636 in test. The maximum is 3 in train and 3 in test.
Validation: query IDs are unique; no qrels refer to unknown queries;
every query's skill_ids and k agree with the positive-qrel set.
Duplicate positive qrel rows: 0. The histogram totals match every query,
and its weighted totals match 127,190 train and
7,187 test distinct golden pairs.
Sources: query splits,
qrel splits, and the
dataset manifest for
revision
6583d7d2ed07644d0fb8938ed8178f3a7dc42a12.
Download verified counts and input hashes.
Scope: these are the dataset's labeled targets, not an exhaustive inventory of every skill that could satisfy a real request. Public query text was privacy-redacted; the query IDs, golden skill IDs, and relevance labels were preserved.
Qrels (query relevance judgments) are the ground-truth labels that link queries to their correct skills.
Each qrel is a triple: (query_id, skill_id, relevance) where relevance is binary (1 = relevant).
| Stat | Value |
|---|---|
| Total judgments | 7,187 |
| Unique queries | 4,392 |
| Unique skills | 5,640 |
| Mean qrels/query | 1.6 |
| Max qrels/query | 3 |
| Stat | Value |
|---|---|
| Total judgments | 127,190 |
| Unique queries | 63,259 |
| Unique skills | 10,123 |
| Mean qrels/query | 2.0 |
| Max qrels/query | 3 |
The dataset uses a disjoint skill split: train and test skills do NOT overlap. This ensures that evaluation measures true generalization to unseen skills, not memorization.
scripts/, references/, or assets/ sub-folders, but the dataset only
captured the SKILL.md content — the actual sub-file contents are not included.
references/ is the most common sub-folder: 3,703 skills reference a
references/ directory (20.8%), followed by scripts/
(2,658, 14.9%) and assets/ (677,
3.8%).
body and
skill_md fields that are byte-identical for all 17,810 records. Skills that were designed
with scripts, references, or assets folders lose that context in this dataset. A retrieval model trained
on SKILLRET can only match based on SKILL.md text, not the full skill package.