Apply to my task
arXiv:2610.18522 ★ 89 Oct 13, 2026

Skill Routing Collapse: the more skills you install, the less often the agent opens the right one

Key result

Finding: with a thousand installed skills, the agent opens none in half of its runs, even though the right one is sitting right there in the list. Skills are folders of instructions the agent opens as it works. The preselection method brings the right skills back into play with a large library: up to 5 are picked by a separate request, not by the agent itself. The trick: a large language model (LLM) recognizes the right skills when you ask it directly. Only picking mid-task breaks. Move skill selection into a separate request, so the agent sees only a short list. The final outcome barely drops, though: a strong model pulls the task off even without the skill. That's why the breakage is easy to miss.

01

TL;DR

Skills (Agent Skills) are folders of instructions an agent opens on demand. Up front it only sees the name and a short description of each skill and decides on the fly which one to open. The study found that the more skills are installed, the less often the agent opens the ones it needs, even though they're sitting right there in the list. With a hundred extra skills, the agent already runs with no skills at all noticeably more often. With a thousand, it opens none in half of its runs.

The agent doesn't mix skills up or swap in look-alikes. It simply stops loading them and quietly solves the task “its own way.” Worse, the final outcome drops far less: strong models pull the task off even without the skill. So the results look fine while the skills are dead weight. Ask the same model directly “which skills does this need?” and it gets it right most of the time. It recognizes the right skills; what breaks is picking a skill mid-task.

What helps: preselection. A separate request picks up to 5 relevant skills, and the agent sees only those. What doesn't help: asking “first think through which skills you need” in the same prompt. The main culprit turned out to be the descriptions of the extra skills: hide them and loading almost fully recovers.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

STEP 1 (separate request, not in the agent's working chat):
  task + “name + description” list of all skills
  → pick up to 5 needed → list of names

STEP 2 (working request to the agent):
  task + only the selected skills
  → the agent opens them and gets to work

For libraries with thousands of skills (hybrid):
  the LLM writes several search queries for the task
  → candidate search for each query
  → the LLM picks the final ≤5 from the combined pool

Steps 1 and 2 are two separate requests. Don't merge them into one: that's exactly the anti-pattern.

03

Example in Practice

Task: An Amazon seller has built a library of ~150 skills in Claude Code: he downloaded a batch from a skills marketplace and added a few of his own. He needs to take a sales export from Seller Central, calculate unit economics per SKU, and build a deck for a supplier. He notices the agent often does everything “from scratch” and ignores his Amazon fee-calculation skill.

Prompt (step 1, in a separate chat):

You are selecting skills for an agent. Below are a task and a list of skills
(name: description). Pick no more than 5 skills that
will actually be needed for this task. Don't solve anything yourself,
just pick.

Task: from an Amazon sales export (xlsx, 40,000 rows)
calculate unit economics per SKU, accounting for Amazon fees,
fulfillment and returns, build 3 charts and put together
an 8-slide deck for the supplier.

Skills:
{paste the “name: description” list from the skills folder}

Response format: a list of skill names, each with one line
on why it's needed.

Prompt (step 2, in the working agent):

Task: from the file sales_amazon.xlsx, calculate unit economics per
SKU (Amazon fees, fulfillment, returns), build 3 charts
and put together an 8-slide deck for the supplier.

You must open and use these skills: amazon-fee-calc,
xlsx, charts, pptx. If you think another skill is needed, first
say which one and why.

Result: The first chat returns a short list of a few skills with explanations. In the second, the agent should open exactly those instead of trying to write the calculations and slides on its own. You can verify this in the agent's work log.

04

Why It Works

The weakness. While solving a task, the agent is also juggling a long list of descriptions. Descriptions of unrelated skills read like plausible alternative actions, and that mush drowns out the right ones. Choosing a skill also competes with the work itself: the agent has already started reading files and writing commands and doesn't stop to pick skills. The authors showed this two ways. Hide only the descriptions of the extra skills, and loading nearly returns to baseline. Just ask it to “think about skills first,” and the gain is small, far behind a separate request.

The strength. When picking skills is the request's only goal, the model does well. Even with a thousand skills it finds most of the right ones. The right skills are recognizable; you just can't combine choosing with doing.

How the method exploits this. Preselection turns choosing into a separate, clean task. The agent gets a short list and doesn't burn attention on choosing.

Levers: - Number of skills in the output list (≤5 in the study). Fewer means less noise but a higher risk of missing one you need. - Selection method. Up to roughly a hundred skills, a simple LLM request is enough. At a thousand and beyond, a hybrid works better (several queries + search + LLM). Plain similarity search works too, but less precisely. - List size in the request. A request with the full list of 10,000 skills simply doesn't fit in the context. - Naming the skill explicitly in the task. This is manual preselection, the cheapest option.

05

Prompt Template

You are a skill dispatcher. Your only job is to choose which
skills are needed for the work. Do not do the work itself.

<Task>
{task_description}
</Task>

<Skills>
{name_1}: {description_1}
{name_2}: {description_2}
...
</Skills>

Rules:
- pick no more than {skill_count} skills;
- pick only the ones without which the task gets done worse;
- don't pick a skill “just in case”;
- if none fit, say so.

Response format: a list of “name — why it's needed (one line)”.

What to fill in: - {task_description} — the task text exactly as you'll hand it to the agent. - The <Skills> block — “name: description” lines from the skill folders (in SKILL.md these are the name and description fields). - {skill_count} — 5 in the study. For your task, start with 3–5.

Then, in the working request to the agent, list the chosen skills by name and ask it to open them before it starts.

06

Limitations

⚠️ Preselection can cut out what you need: skills chosen up front won't include what turns out to be needed later in the work. In the study, the share of needed skills available to the agent is noticeably lower with preselection than with the full list.

⚠️ It's a mitigation, not a cure: even the best option didn't bring skill loading back to the “no extra skills” level, especially on very large libraries.

⚠️ Latency: preselection adds a few seconds of waiting before the start, more for the hybrid version.

⚠️ Experiment scope: one task suite (SkillsBench), with the extra skills drawn at random from a public marketplace. With your own skills, where descriptions resemble each other, the effect may differ, most likely it will be stronger.

⚠️ No universal numbers: the main experiments ran on open models; closed ones (Claude, Gemini, GPT) were tested on a smaller sample and showed the same trend. Don't carry the numbers over to your case, carry over the direction.

⚠️ Small libraries: with a dozen skills the drop is small. It becomes noticeable at around a hundred.

⚠️ The paper is truncated: the explanation of exactly how descriptions play “two roles” is cut off in the provided text; the conclusions below rely on the parts given in full.

07

How They Studied It

The researchers took the existing SkillsBench benchmark: 82 tasks with verifiable outcomes (a code verifier, no LLM judge) and “gold” skills known in advance. Then they changed one variable: how many extra skills were added to the library (0, 10, 100, 1,000, 10,000). The task, the files and the needed skills stayed the same. Extra skills were drawn at random from 20,000+ skills on a real marketplace, and three open models were each run three times: over 15,000 runs and 10 billion tokens. Closed models were tested on a subset.

The main metric is the share of needed skills the agent actually opened, plus the share of runs where none were opened. Control question: maybe the agent swaps in other, similar skills? No: that's rare (about 2% of runs), and these are essentially duplicates like “pdf-reader” instead of “pdf”. The collapse is under-loading.

Then the authors tested the cause. In the first experiment, they hid the names and descriptions of the extra skills behind placeholders of the same length. The context stayed long, but loading almost recovered. So the culprit is the meaning of the descriptions, not the length. In the second, they asked the agent to pick skills separately from solving. The choice came out far more accurate than when the agent was asked to “plan the skills and solve.”

The surprise: overall task success drops far less than skill loading, because a strong agent can solve the task without the skill. Practical takeaway: don't look only at the result, check whether the skill was opened.

08

Adaptations and Extrapolations

💡 Adaptation for manual work (the simplest form of preselection): instead of a separate request, just name the skills in the task.

Use these skills: {skill_1}, {skill_2}. Open them before you start.
Task: {task}

This is manual preselection that you do yourself. With a library of a hundred skills or more, it's the cheapest way to restore loading. The paper didn't test this variant directly, but it follows from the finding that separate selection works better.

🔧 Technique: load check (extrapolation, not tested in the paper)

Add this to the end of the task: “At the end of your answer, list which skills you opened and which you deliberately skipped.” That way you'll quickly notice when the agent worked without skills, even if the result looks fine. The paper shows you can't tell from the final result alone.

🔧 Technique: library cleanup (extrapolation, not tested in the paper)

The paper shows that it's specifically the descriptions of extra skills that create the noise. So: disable skills you don't need in a given project, and write descriptions that are narrow and distinct from one another. To be fair: only stripping the meaning out of descriptions entirely was tested, not rewriting them.

09

Resources

  • Lost in Implicit Routing: How LLM Agents Fail to Load Relevant Skills at Scale — Jinlin Liu (The University of Hong Kong), Wei Chen and Xiaojin Zhang (Huazhong University of Science and Technology)
  • Code and data: github.com/jinlinll/lost-in-implicit-routing
  • SkillsBench (Li et al., 2026) — the benchmark the experiments ran on
  • Anthropic Agent Skills — the skill format with progressive disclosure that was studied

Research digest

Key result

Finding: with a thousand installed skills, the agent opens none in half of its runs, even though the right one is sitting right there in the list. Skills are folders of instructions the agent opens as it works. The preselection method brings the right skills back into play with a large library: up to 5 are picked by a separate request, not by the agent itself. The trick: a large language model (LLM) recognizes the right skills when you ask it directly. Only picking mid-task breaks. Move skill selection into a separate request, so the agent sees only a short list. The final outcome barely drops, though: a strong model pulls the task off even without the skill. That's why the breakage is easy to miss.

Principle

Two separate requests instead of one. First the dispatcher: it gets the task and a “name: description” list, picks up to 5 skills and solves nothing. Then the working agent: it sees the task and only the selected skills. For libraries with thousands of skills, add a hybrid. The LLM writes several search queries, search gathers candidates, and the LLM picks the final five. It's like the front desk at a clinic: the doctor doesn't flip through the whole list of specialists while treating you. Don't combine choosing and working in one prompt: that's exactly the anti-pattern. Asking “first think through which skills you need” in the same chat gives a small gain. A separate request is far better. The cheapest manual option: write the name of the needed skill right into the task.

Why it works

While the agent works, it's juggling a long list of descriptions. Descriptions of unrelated skills read like plausible alternative actions and drown out the right ones. Choosing a skill competes with the work itself. The agent is already reading files and writing commands, and it has no bandwidth left for choosing. The agent doesn't mix skills up or swap in look-alikes. It simply stops loading them. With a hundred extra skills, it already runs with no skills at all noticeably more often. Hide only the descriptions of the extra skills, and loading almost returns to normal. So the culprit is the noise from the descriptions, not the skills themselves. When picking a skill is the request's only goal, the model does well. Even with a thousand skills it finds most of the right ones.

When to apply

Agents with large skill libraries (Claude Code and similar) → tasks that need a specific skill while the agent does everything “from scratch,” especially with a hundred skills or more. Up to a hundred, a simple LLM request is enough. From a thousand up, a hybrid with search is better. A request with the full list of 10,000 skills simply won't fit in the context. NOT a fit for libraries of a dozen skills: the drop there is small. Be careful with tasks where the needed skills only become clear along the way: preselection can cut them out. It softens the problem but doesn't fully cure it.

Mini recipe

1. Confirm the problem exists: check the agent's log to see whether it opens the right skills. If it does everything itself while the skill sits right there, that's it. 2. Build the list: from each `SKILL.md`, take the `name` and `description` fields and stack them as “name: description” lines. 3. Open a separate chat: not the working one. Assign the dispatcher role: `You are a skill dispatcher. Do not do the work itself.` 4. Cap the choice: no more than 3–5 skills. Add rules: don't pick “just in case,” and if nothing fits, say so. 5. Ask for a rationale: one line per skill on why it's needed. That way you see right away where the dispatcher got it wrong. 6. Hand off to the working agent: the task plus the names of the selected skills. Tell it to open them before it starts. 7. Leave an escape hatch: `If you need another skill, first say which one and why.` This guards against cutting out something you need. 8. For thousands of skills: have the LLM first write several search queries for the task. Then search gathers candidates, and the LLM picks the final five.

Examples

[BAD]: `Calculate unit economics from the Amazon export and make a deck for the supplier` (an agent with 150 skills ignores the Amazon fee skill and calculates everything itself) [GOOD]: Step 1, separate chat: `You are selecting skills for an agent. Pick no more than 5 that will actually be needed. Don't solve anything yourself. Task: from an Amazon sales export (40,000 rows), calculate unit economics per SKU including fees, fulfillment and returns, build 3 charts, put together an 8-slide deck. Skills: {“name: description” list}. Format: the skill name and one line on why it's needed.` Step 2, working agent: `Task: from the file sales_amazon.xlsx, calculate unit economics per SKU, build 3 charts and put together a deck. You must open and use these skills: amazon-fee-calc, xlsx, charts, pptx. If you need another skill, first say which one and why.` Check: look at the log. The agent should open exactly these skills instead of writing the calculations and slides on its own.

In plain words

LLM agents get dumber when they have too many tools. On paper, skills are elegant: the model sees a catalog of short descriptions and picks the right script for the task on its own. In practice, implicit routing kicks in: the agent tries to reason about the problem while scanning a wall of other people's instructions at the same time. Attention gets smeared thin, a wild amount of informational noise builds up, and the model just blows off the ready-made solutions and tries to reinvent the wheel from scratch.

It's like walking into Home Depot for a single quarter-inch drill bit. Instead of a quick purchase, you spend two hours wandering past hundreds of aisles of cement mixers and tillers, hit sensory overload, and end up gouging the wall with a rusty nail from your pocket. Technically the tool was right there on the shelf, but your brain flat-out refused to dig for it in that junkyard.

The study's authors measured exactly where the models' patience runs out. Throw 100 extra skills at an agent and it's already fumbling regularly and writing the code itself. Add 1,000 skills and in a full 50% of runs the agent opens nothing at all. Other skills' descriptions look like plausible alternatives to the model and drown out the right choice. Meanwhile, a throwaway line in the prompt like “think about skills first” barely helps: what saves you is cleaning up the catalog or a separate routing step.

The experiment ran on Claude Code, but this rake is lying in wait for the whole industry: from ChatGPT plugins to agents on the MCP protocol and heavyweight pipelines. The more tools you feed the model “just in case,” the higher your odds of a failure. Brute-force tool scaling doesn't work — agents are physically unfit to keep hundreds of available options in working memory.

Bottom line: stop building giant junk drawers of hundreds of extensions in the hope of an all-powerful intelligence. Routing architecture is everything. Either set up a two-stage lookup for the right tool through a separate lightweight request, or keep exactly 3-5 targeted skills active for a specific scenario. Otherwise your tricked-out agent with a library of a thousand utilities will perform dumber than a bare model with no skills at all.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on Skill Routing Collapse: the more skills you install, the less often the agent opens the right one arXiv:2610.18522

Sign in to apply this study New accounts get 50 free credits.