{"id":106387,"date":"2026-07-15T05:54:14","date_gmt":"2026-07-15T05:54:14","guid":{"rendered":"https:\/\/www.europesays.com\/ai\/106387\/"},"modified":"2026-07-15T05:54:14","modified_gmt":"2026-07-15T05:54:14","slug":"google-deepminds-schmid-most-ai-agent-skills-are-untested-ai-written-and-making-your-product-worse-biggo-finance","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/ai\/106387\/","title":{"rendered":"Google DeepMind&#8217;s Schmid: Most AI Agent Skills Are Untested, AI-Written, and Making Your Product Worse \u2014 BigGo Finance"},"content":{"rendered":"<p>Google DeepMind&#8217;s Philipp Schmid has a blunt message for the thousands of engineering teams racing to ship AI agents: you are almost certainly doing skills wrong. His team analyzed over 50,000 skills deployed in coding agents and found that the overwhelming majority were AI-generated, untested, and frequently made agent performance worse rather than better. Worse still, almost none included any kind of evaluation to detect the regression.<\/p>\n<p>&#8220;Human-written skills are the best we can provide,&#8221; Schmid said, speaking on the AI Engineer podcast. &#8220;AI-generated skills can impact performance negatively.&#8221;<\/p>\n<p>The finding lands at a moment when companies across the technology sector are betting heavily on agent-based products \u2014 even as Meta&#8217;s Mark Zuckerberg recently admitted his own company&#8217;s AI agent push &#8220;hasn&#8217;t really accelerated in the way that we expected,&#8221; triggering a $70 billion market value wipeout. Schmid&#8217;s argument is that the problem isn&#8217;t agent technology itself. It&#8217;s that teams are treating skills \u2014 the instruction files that tell agents how to behave \u2014 as documentation rather than as code. And code without tests fails.<\/p>\n<p>The Two Types of Skills, and Why One of Them Should Die<\/p>\n<p>Schmid draws a line through the skill landscape that most teams haven&#8217;t thought about. There are capability skills, which teach a model to do something it can&#8217;t yet handle consistently \u2014 scaffolding a React app, tracing a distributed log, generating a specific API call pattern. These skills exist because the underlying model has a gap. And because models improve with every release, these skills have an expiration date.<\/p>\n<p>Then there are preference skills, which encode durable, company-specific knowledge: your team&#8217;s code review workflow, your deployment conventions, your style guide. The foundation model will never absorb these on its own because they&#8217;re specific to your organization. These skills are permanent investments.<\/p>\n<p>Skill typePurposeLifespanRetirement triggerCapabilityTeaches model something it cannot do consistentlyTemporaryEval shows equal performance without skillPreferenceEncodes company-specific workflows, styles, conventionsDurableNever \u2014 replaced only if workflow itself changes<\/p>\n<p>&#8220;Capability skills are temporary,&#8221; Schmid said. &#8220;As models improve, these skills will become unnecessary and can be removed.&#8221; The problem, he argues, is that most teams never remove them. They keep capability skills in production long after the model has learned the behavior natively, burning tokens on instructions that add zero value.<\/p>\n<p>The only way to know when a capability skill has become dead weight is to run evaluations with and without it \u2014 what Schmid calls an ablation test. Without that test, teams are guessing. And the SkillBench data suggests they&#8217;re guessing wrong.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/07\/eecdea548263429d_1784072849_inline_1.jpg\" alt=\"\"\/><\/p>\n<p>The SkillBench Finding: Most Skills Are AI-Generated and Unverified<\/p>\n<p>The SkillBench analysis of those 50,000 skills revealed a structural problem. AI-generated skills \u2014 produced by asking one language model to write instructions for another \u2014 consistently underperformed human-written ones. The AI-generated files also suffered from bloat, drifting into territory Schmid described as &#8220;no-ops&#8221;: instructions that sound useful but change nothing about the model&#8217;s output. Phrases like &#8220;write clean code,&#8221; &#8220;ensure readability,&#8221; or &#8220;follow best practices&#8221; add token cost without altering behavior.<\/p>\n<p>The fix is simple but rarely applied. &#8220;Run evals with your skill loaded and without your skill loaded,&#8221; Schmid said. &#8220;Only that way will you know when you can retire a skill.&#8221; An instruction that scores identically in both conditions is dead weight. Remove it.<\/p>\n<p>Schmid also offered a concrete sizing rule: keep skill bodies under 500 words. Beyond that threshold, the signal-to-noise ratio degrades sharply, and the no-op problem compounds. The 500-word ceiling emerged from the SkillBench data and is now baked into Schmid&#8217;s team&#8217;s internal review process. Any skill file exceeding it gets flagged for scrutiny.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.europesays.com\/ai\/wp-content\/uploads\/2026\/07\/eecdea548263429d_1784072969_inline_2.jpg\" alt=\"\"\/><\/p>\n<p>How Skills Actually Work \u2014 and Why Your Description Is Failing<\/p>\n<p>The architecture Schmid described operates on a principle he calls &#8220;progressive disclosure&#8221;: the model only pays the token cost of the layer it actually needs to access, avoiding the waste of loading an entire 5,000-word instruction file into every context window.<\/p>\n<p>The first layer is the title and description, which are always present in the model&#8217;s context. The description \u2014 roughly 100 to 200 tokens \u2014 must tell the model why to use the skill, how to use it, and critically, when not to use it. Schmid estimates that roughly half of all skill failures originate in this layer. A description that says &#8220;use for web development&#8221; will over-trigger in any JavaScript context, even when the skill was built for React-specific patterns. The fix is to include explicit negative cases in the description.<\/p>\n<p>The second layer is the skill body, which is read into context only when the model decides to invoke the skill. This is where the actual instructions live. Schmid&#8217;s advice here cuts against common practice: favor directives over essays. &#8220;Use the Interactions API for multi-chat&#8221; outperforms &#8220;The Interactions API is recommended for multi-chat because it handles session state.&#8221; Models respond to instructions, not explanations.<\/p>\n<p>The third and deepest layer is reference files \u2014 optional documents containing platform-specific or branch-specific detail that the model navigates to only when needed. This keeps the main skill body lean while still giving the agent access to deep context.<\/p>\n<p>The architecture matters because Schmid sees a fundamental divide between how developers use agents and how customers use them. &#8220;When you build an agent inside your application for consumers or customers, they have no idea about what a skill is,&#8221; he said. &#8220;They don&#8217;t start their prompt with &#8216;use customer support skill to help me refund&#8217; or &#8216;use refund skill to help me solve my problem.'&#8221; In production, only model-invoked skills \u2014 where the model decides based on the description \u2014 actually matter. If the description fails, the skill never fires.<\/p>\n<p>A Concrete Eval Framework: 117 Tests That Block Bad Changes<\/p>\n<p>Schmid walked through the evaluation harness his team built for a specific capability skill: teaching Gemini the Interactions API, which was released after the model&#8217;s training cutoff, meaning Gemini had zero native knowledge of the interface. The team constructed 117 test cases drawn from real user traces and synthetic edge cases.<\/p>\n<p>The harness has three components. A JSON file stores test cases with fields for the user&#8217;s prompt, the programming language (TypeScript or Python), whether the skill should activate, and regex-based assertions that check for correct SDK imports, model IDs, method names, and the absence of deprecated patterns. A Python runner invokes the agent harness with each test case and captures the output. Assertions then validate the result.<\/p>\n<p>The critical operational rule is that the eval runs on every change to the skill file. A merge is blocked unless the change improves scores or adds new test cases. Schmid noted that regex-based assertions are cheap and catch the majority of failures \u2014 wrong import paths, deprecated API calls, incorrect model versions. For more nuanced behavioral checks, an LLM-as-judge component with a rubric can be layered on, but the regex layer alone catches most regressions.<\/p>\n<p>Ten Rules That Change How Teams Ship Skills<\/p>\n<p>Schmid distilled his team&#8217;s experience into ten operational rules. Several are non-obvious and worth pulling out.<\/p>\n<p>First, test across harnesses. A skill that works flawlessly with Gemini may fail with Claude Code or Codex. If your users operate across multiple agent frameworks, evaluate on all of them.<\/p>\n<p>Second, run multiple trials. Agent outputs are non-deterministic. A single pass or fail is noise. Schmid recommends three to six trials per test case and measuring reliability as a percentage.<\/p>\n<p>Third, use isolated workspaces. If the agent can find the skill context from prior chat history or cached files, it may &#8220;cheat&#8221; by never actually triggering the skill. The eval needs to simulate a fresh session.<\/p>\n<p>Fourth, test outcomes, not paths. Do not require the model to invoke the skill on turn one. It can activate on turn five after exploring. The assertion should check whether the final output is correct, not whether the model followed a specific sequence of steps.<\/p>\n<p>Fifth, keep the eval after retiring the skill. If a model improvement makes a capability skill redundant, don&#8217;t delete the test suite. Keep it as a regression detector. If the next model release regresses on that capability, the eval will catch it, and you can reintroduce the skill.<\/p>\n<p>Sixth, retire aggressively. This is the rule Schmid emphasized most. Model releases improve fast. A capability skill that was essential six months ago may now be pure overhead. Evals make the retirement decision objective rather than gut-feel.<\/p>\n<p>&#8220;If you have those type of use cases,&#8221; Schmid said, referring to rigid step-by-step workflows, &#8220;you should not use skills. You should write a script.&#8221; His point is that skills should define goals and constraints, not paths. The model knows how to change a port; tell it the constraints and let it navigate. Over-specification of workflows is a signal that the problem is better solved with deterministic code.<\/p>\n<p>The Gaps Schmid Didn&#8217;t Close<\/p>\n<p>The framework Schmid described is rigorous but assumes infrastructure that most teams lack. Running isolated agent invocations at scale, with CI\/CD integration that blocks merges on eval failure, requires investment that many organizations have not made. Schmid&#8217;s suggestion to start with 10 to 20 manual test cases is honest about this gap \u2014 even a minimal test set will surface failures \u2014 but the distance between &#8220;run 10 manual tests&#8221; and &#8220;automated evals on every skill change&#8221; is where most teams will remain stuck.<\/p>\n<p>There is also an open question about the 500-word ceiling on skill bodies. As context windows grow and token costs fall, the economics of longer skills may shift. But Schmid&#8217;s core insight \u2014 that longer AI-generated skills accumulate no-ops \u2014 suggests the problem is not cost but signal degradation. A longer instruction file full of filler is worse than a short one, regardless of whether the tokens are cheap.<\/p>\n<p>The more immediate implication is for investors trying to separate signal from noise in the agent boom. Companies that have built internal eval infrastructure for their skills are operating with a fundamentally different quality bar than those that have not. The absence of evals \u2014 not the presence of flashy agent demos \u2014 is the variable that predicts whether a skill is helping or hurting. And on Schmid&#8217;s reading of 50,000 skills, most teams are on the wrong side of that line.<\/p>\n<p>That gap will close, but the closure will be uneven. Teams building preference skills for internal developer tools have the incentive and the expertise to adopt eval-driven workflows. Teams building customer-facing agents where end users have no concept of skills face a harder problem: the description layer is the only interface, and if it fails, the skill never activates. In those products, description quality isn&#8217;t a nice-to-have. It&#8217;s the entire product. And right now, Schmid&#8217;s data suggests, it&#8217;s the layer most teams are getting wrong.<\/p>\n","protected":false},"excerpt":{"rendered":"Google DeepMind&#8217;s Philipp Schmid has a blunt message for the thousands of engineering teams racing to ship AI&hellip;\n","protected":false},"author":2,"featured_media":106388,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[9599,2317,5044,37781,55078,132,7543,1112,1122,55076,55077],"class_list":["post-106387","post","type-post","status-publish","format-standard","has-post-thumbnail","category-google","tag-anthropic-claude-code","tag-codex","tag-deepmind","tag-gemini-3-5","tag-gemini-interactions-api","tag-google","tag-google-deepmind","tag-mark-zuckerberg","tag-meta","tag-philipp-schmid","tag-skillbench"],"_links":{"self":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts\/106387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/comments?post=106387"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts\/106387\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/media\/106388"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/media?parent=106387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/categories?post=106387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/tags?post=106387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}