Enjoying this issue?
Get tomorrow's AI & engineering digest in your inbox — hand-picked, summarized, and always spam-free.
TLDR
Databricks研究人员测量发现,将agent技能库从基线扩大到202个技能导致pass rate下降21个百分点,其中三分之二来自技能选择失败(shadowing)而非上下文膨胀。Anthropic自己的Claude code文档也承认,技能描述会被截断,且从最不常用的开始,直接导致匹配失败。修复方向是减少前端技能数量、使用检索式工具搜索代替静态加载,以及路由时读取技能正文而非仅依赖标签。
Key points
Anthropic在8月17日修复了Claude code中内置技能上下文过大的问题,从200k tokens降至25k tokens。
Databricks的研究发现,技能库从基线增至202个导致pass rate下降21点,主要原因是技能选择失败。
路由信号中91.7%来自技能正文,描述仅占1%,渐进式披露导致路由无法访问正文。
Anthropic文档承认技能描述会被截断,且从最不常用的技能开始截断。
GitHub工程师将Copilot默认工具集从40个减至13个,成功率提高2-5个百分点,延迟降低400ms。
Tools mentioned
Techniques
- progressive disclosure
- shadowing analysis
- context overhead decomposition
- content-based skill routing
- embedding-based tool routing
- retrieval over installation
Stop scrolling. Start reading smarter.
Receive the day's most important AI & engineering updates in one concise email. No spam.
Transcript (captions)
On the 17th of August, Anthropic shipped a one-line fix to Claude code. Read it slowly. Reduce the context cost of loading the built-in Claude API skill from over 200,000 tokens to about
25,000. One skill Anthropic's own, eating a context window before you typed anything. A developer had already measured it in July. One migration document inside it was 36,000 tokens. An
August report found the worst case. The skill could not detect the project language, so it loaded all of them. C#, curl, go, Java, PHP, Python, Ruby, TypeScript, plus 26 shared markdown
files. 812 kilobytes. The reproduction task needed 33 kilobytes of that. The other 96% was freight, so the diagnosis writes itself. Skills got fat, context filled, agents got worse. Delete tokens,
fix the agent. That diagnosis is correct. It is also the smaller half of the problem and the half you can see. In May, Hong Wen Song and Song Wei at Databricks measured the other half. It
does not appear in your token counter. They loaded 202 skills into an agent instead of only the ones it needed. Pass rate fell 21 points. Then they did the thing the field had skipped. They asked
how much of that drop was actually the tokens. Here's their setup and the control is what makes it worth your time. Start with what they call Oracle skills, only the ones already proven to
help that exact task. That is the baseline. Then pad the library out to 52 skills, then 102, then 202 without removing anything that works. The task does not change. The helpful skill is
still sitting right there. The only thing that grows is the crowd it is standing in and the pass rate falls at each step, eight points, then 14, then 21 across two and a half thousand runs.
Then the split and this is the contribution. There are only two ways extra skills can hurt you. Either the agent picks correctly and executes worse because its
context got heavier, call that context overhead, or it picks the wrong skill in the first place, call that shadowing. So, the Databricks pair read every run, sorted it by which skills the agent
actually invoked, and measured the two effects separately. The paper says no prior work had decomposed it. Skills were being evaluated one at a time against a no skill baseline. The two
numbers behave nothing alike. Context overhead comes in at six points, six points, seven points. It barely moves while the library quadruples, and its confidence interval does not clear zero.
The authors will not claim it is real. Their word is suggestive. Shadowing goes three, then eight, then 14. It scales with the library. At the largest one, it is 2/3 of the whole
drop, and across the bigger libraries, it is the only component the statistics can confirm. Their conclusion is one sentence, and I will read it exactly. The skill selection failure, not the
enlarged context, is the primary bottleneck when expanding the skill libraries. And the behavior underneath that number is stranger than a wrong pick. With only the correct skills
loaded, the agent invoked the correct ones in 88% of runs. At the largest library, that falls to 52.6. So, where did the other third go? Not mostly into wrong skills. Wrong skill runs went from
zero to about 9%. The big migration was into runs where the agent invoked nothing at all, 12% up to 38.5. Abandonment, not error. The agent is not making a mistake there. It is looking at
a shelf of 200 jars, recognizing nothing on it, and doing the job from scratch the hard way. Your skill library did not get overruled. It got skipped, and your logs will not say so. One row of their
table makes it concrete. The task is called Mario coin counting. The correct answer is a bundle of three skills, FFmpeg, image editing, and an object counter, and all three are loaded and
available. Also loaded is a skill called video frame extraction, written for a completely different task, whose description happens to match the words of the query better. The agent picked it
in 26 runs out of 26. So, why does a system that can read your entire codebase fail to recognize a folder somebody handed it? The answer is not incompetence. It is the design, and
the design is a good one. It is the reason skills are cheap at all. Progressive disclosure. Three levels, and Anthropic's own documentation puts numbers on each. Level one is metadata,
the name and the description out of the front matter. Loaded at startup, about 100 tokens per skill. Level two is the body. Under 5,000 tokens, and it loads only after the skill has already been
selected. Level three is bundled reference material, and it costs nothing until something reads it. The documentation summary of all this, you can install many skills without context
penalty. That sentence is accurate. It is also the whole problem, because it is a claim about tokens, and it gets read as a claim about safety. The description is
not merely it is the entire ballot your router gets to read, which raises a measurable question. How much of the signal needed to route a task actually lives in a one-line
description? In March, a team published skill router, a system that routes across roughly 80,000 skills, and they ran an attention analysis on their own re-ranker.
Across 75 queries, the attention split like this. The name, 7.3%. The description, 1.0%. The body, the part progressive disclosure has deliberately not loaded yet, 91.7%.
Take the body away, and routing accuracy falls 37 to 44 points. They tried the obvious repair, distilling the body down into better descriptions, and it still came in 7 to 21 points short. The signal
does not compress into a label. One caveat, because it matters, that is their re-ranker on their benchmark, not Anthropic's model on your machine. What it establishes is where the routing
signal lives, not how any particular vendor routes. The mechanism generalizes. The exact numbers do not. And out in the wild, that 1% is often not filled in at all. A study of 55,000
public skills found 26.4% shipping with no routing description whatsoever. A skill with no description cannot be chosen on purpose. It can only be chosen by accident. In July,
researchers collected 3.8 million skill files off public GitHub, spread across 282,000 repositories. Half of them were verbatim copies of each other. That is the shelf
your agent is now expected to read, which brings us to the sentence that earns this video its title. And Anthropic wrote it themselves in the Claude Code docs under a heading you
would not go looking for. Skill descriptions are cut short. The listing has a character budget scaled at 1% of the context window. Names fit. Descriptions do not. When it overflows,
Claude Code shortens them, and I am quoting, which can strip the keywords Claude needs to match your request. It drops them starting with the skills you invoke least. So installing skill 51 can
shorten skill 12 until it stops matching. That is the title in shipped code. So what do you actually do about it? Three moves in rising order of effort, and not one of them is delete
your skills. The first is the one people hate, and it has the best evidence behind it. Cut the shelf. In November 2025, two engineers at GitHub, Anisha Agarwal and Connor Peat, trimmed
Copilot's default tool set 40 built-in tools down to 13. Success rates went up two to five percentage points on SWE Lancer and SWE Bench verified. Those runs used GPT-5. The other model was
Sonnet 4.5. Both measured back in November 2025. Response latency fell 400 milliseconds. Their own line for it, "Too many tools doesn't always make it smarter. Sometimes it just makes it
slower." The tools they cut are not gone. They are routed by embeddings, and Agarwal and Pete measured that, too. 94.5% tool use coverage from embedding routing against 69% from the static list
it replaced. Move to search instead of load. Five days after that GitHub post, Anthropic shipped tool search on its API. And the way the docs ordered the
benefits is the giveaway. Bullet one is tokens, over 85% off a 55,000 token setup. Bullet two is this. The model's ability to pick the right tool degrades once you exceed 30 to 50 available
tools. That is a vendor writing down the shadowing result in its own documentation months before anyone measured it in a paper. Their November 2025 evaluation moved accuracy on tool
use on Opus 4.5 from 79.5 to 88.1. Same tools, same model. The only change was that the model had to go and find them. It runs today on Opus 5, Fable 5, and Mythos 5. Claude code switches it on for
you once MCP tool descriptions get large, which tells you Anthropic has already conceded this argument for tools. Skills are the same shape, one layer up. Move three, and hardly any
harness does it yet. Route on the content, not on the label. Skill router is a small encoder and a small re-ranker, 1.2 billion parameters between them, that actually read the
body. 74% top one routing across 80,000 skills. The 16 billion parameter pipeline it beats manages 68. 13 times fewer parameters, 5.8 times lower serving
latency. The winning move was not a bigger router. It was letting the router read the thing it is routing. So, here is where I land without hedging it. Retrieval beats installation, and it is
not close. For most people running an agent today, the right number of skills in front of it is small and chosen by a search step, not large and chosen by whatever you happen to install. Three
receipts, 202 skills cost 21 points of pass rate, and 2/3 of that was the agent picking wrong. 91.7% of the routing signal sits in a body the router is not shown. And a shipping harness truncates
descriptions by design, starting with the ones you use least. Now, the case against me, because it is a real one. The Data Brick study is two models from one provider on a library that tops out
around 200, and they say so in their own limitations. Their contest overhead interval is wide enough that they refuse to call it zero. At 10 times that library size, tokens
could come back as the villain, and retrieval is not a cure, either. On the 20th of August, a benchmark landed that measures the failure which survives it, and it is a specific and nasty one.
Public skill routers find the helpful skill roughly 85 to 89% of the time in their top three. In about a third of those same top three, they also surface a same
capability sibling, right family, wrong execution contract. The fix moves you from wrong shelf to wrong jar. The villain was not a company, it is a habit. Treating skills like apps, where
one more install is free, and the pile is an asset. It is a search index that was never built, queried by a model that is not allowed to read it. So, which do you want your routing layer
to be? A vendor default you cannot inspect, or something you own and can measure?