<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tessl</title>
    <description>The latest articles on DEV Community by Tessl (@tessl-io).</description>
    <link>https://dev.clauneck.workers.dev/tessl-io</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3865880%2Fae4ef80f-404f-4ed5-849f-f94683a6e7b0.png</url>
      <title>DEV Community: Tessl</title>
      <link>https://dev.clauneck.workers.dev/tessl-io</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.clauneck.workers.dev/feed/tessl-io"/>
    <language>en</language>
    <item>
      <title>AI Agent Governance: 10 Takeaways from Engineering Leaders on Agentic Development</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Fri, 26 Jun 2026 08:31:25 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/ai-agent-governance-10-takeaways-from-engineering-leaders-on-agentic-development-4ph0</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/ai-agent-governance-10-takeaways-from-engineering-leaders-on-agentic-development-4ph0</guid>
      <description>&lt;p&gt;Agentic development starts as a productivity story, but at scale it quickly becomes a governance problem.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://tessl.io/devcon" rel="noopener noreferrer"&gt;AI Native DevCon&lt;/a&gt; London, we hosted a set of Chatham House roundtables with senior engineering leaders from a range of organizations. I won’t attribute comments to individuals or companies, but the patterns were strikingly consistent: agentic development is moving from an individual tooling conversation into an enterprise operating model question.&lt;/p&gt;

&lt;p&gt;The first wave was familiar enough: devs tried GitHub Copilot, Cursor, Claude Code, Codex, Devin and similar tools, and many found obvious value. They wrote code faster, produced tests faster, explored ideas faster, and in some cases revived work that had been sitting in the backlog because it was too costly to attempt.&lt;/p&gt;

&lt;p&gt;The interesting question is what happens once agents stop being a personal accelerator and start touching the way an engineering organization works. At that point, the problem shifts from “does the tool help?” to “can we make this safe, repeatable, measurable, and economically sane?”&lt;/p&gt;

&lt;p&gt;That shift is why I think the most useful frame is &lt;strong&gt;AI agent governance&lt;/strong&gt;. It means the systems that let teams move faster without losing control, including identity, permissions, context, evals, model routing, cost visibility, policy, ownership, and feedback loops.&lt;/p&gt;

&lt;p&gt;On a side note, you can hear my talk “skills are the new code”, where I share my personal framework towards agent governance and a proposed solution towards enterprise agent enablement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=KpfnldjO3Iw" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s now look at the 10 main takeaways from our roundtable.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Agent adoption starts with enthusiasm, but scaling it requires deliberate rollout
&lt;/h2&gt;

&lt;p&gt;Most organizations seem to start the same way: give developers access to AI coding tools and let the motivated teams run.&lt;/p&gt;

&lt;p&gt;This is the right instinct at the start, because the space is moving too quickly for a purely top-down programme to discover all the useful patterns. Bottom-up energy creates learning quickly. It also surfaces where agents are genuinely useful, rather than where a transformation deck hoped they might be.&lt;/p&gt;

&lt;p&gt;But it also creates fragmentation.&lt;/p&gt;

&lt;p&gt;Different teams adopt different tools, build different prompts, store skills in different repos, and develop different assumptions about what is safe enough to automate. One group may use agents for test generation, another for code review, another for product specs, another for deployment automation. Before long, the organization can have dozens of useful experiments that don’t yet add up to a system.&lt;/p&gt;

&lt;p&gt;The trick is not to kill the experimentation but to create a path from local learning to shared practice.&lt;/p&gt;

&lt;p&gt;The first wave of adoption was mostly about individual productivity. The next wave has to be about repeatable, governed team workflows. That means rollout phases, clear ownership, a view of which tools are approved for which classes of work, and a way to convert the best local experiments into standards others can reuse.&lt;/p&gt;

&lt;p&gt;This is a familiar pattern from cloud and DevOps: the early adopters prove what is possible, then the platform forms around them. The difference this time is that the cycle is much faster, and the unit being governed is not just infrastructure or code, but the agentic workflow itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The strongest ROI case is not productivity. It is increased &lt;em&gt;ambition&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;A lot of the public conversation around AI in software development is still framed around productivity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Can engineers do the same work faster?&lt;/li&gt;
&lt;li&gt;  Can teams ship more with the same number of people?&lt;/li&gt;
&lt;li&gt;  Can the business do the same with less?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many business leaders will look for savings, and it would be naive to pretend otherwise. It is also worth acknowledging that some of this is hard to say openly in a group setting, however intimate. In practice, some leaders will seek to capitalize on productivity by doing the same work with fewer people, reducing costs, or slowing future hiring.&lt;/p&gt;

&lt;p&gt;But the roundtables reinforced a concern I have had for a while: if we hype AI productivity too aggressively, we may slow adoption by making people fear what adoption means.&lt;/p&gt;

&lt;p&gt;If the internal narrative is mostly about headcount reduction, people will defend themselves. They may hide the real gains, avoid showing how much faster a workflow became, or keep their best agent patterns private because sharing them feels like making the case for fewer people.&lt;/p&gt;

&lt;p&gt;That is not a cultural foundation for transformation. A better frame is &lt;em&gt;ambition.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Agents make prototypes cheaper. They let senior engineers explore ideas that have been trapped behind calendar time. They change the build-versus-buy equation, because a capability that once required an RFP and a vendor project may now be plausible for a small internal team to try.&lt;/p&gt;

&lt;p&gt;This is the version of the story that leaders should emphasize publicly and internally. The question should be “what can we now attempt that we previously would not have attempted?”&lt;/p&gt;

&lt;p&gt;That framing does not deny the economics but it does point them in a healthier direction. The long-term narrative should not be about lowering the floor, but about raising the ceiling. If AI is understood as a way to increase ambition rather than quietly reduce capacity, more people will lean in, and the organization is more likely to discover the compounding benefits.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Why context engineering is becoming a first-class engineering asset
&lt;/h2&gt;

&lt;p&gt;Agents are only as useful as the context they can apply.&lt;/p&gt;

&lt;p&gt;That context includes specs, tests, policies, architecture guidance, product requirements, runbooks, coding conventions, incident patterns, security rules, and domain language. Most organizations already have some of this knowledge, but it is rarely as clean or discoverable as the agentic era requires. Some of it lives in docs, some in Slack, some in tickets, some in code comments, and a great deal of it lives in people’s heads.&lt;/p&gt;

&lt;p&gt;In the pre-agent world, weak documentation was annoying but survivable. A dev could ask the person who knew the system, or learn the convention through review comments. In the agentic world, missing context becomes a direct limit on what the agent can do.&lt;/p&gt;

&lt;p&gt;This is why skills matter.&lt;/p&gt;

&lt;p&gt;Skills turn tacit engineering knowledge into reusable context that agents can apply. They are not just prompts with nicer packaging; they are a way to encode how an organization wants work done, from API usage to security checks to writing style to deployment workflow.&lt;/p&gt;

&lt;p&gt;This is also where Tessl’s view of agentic development comes in. If agents are going to participate across the SDLC, organizations need a way to collaboratively develop, discover, evaluate, and improve the context those agents rely on. Skills and evals are two sides of that problem: skills package the knowledge agents need, while evals show whether that knowledge actually improved the outcome.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl09sikdgfvlxvyhajr3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl09sikdgfvlxvyhajr3h.png" alt="sdlc" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you see context this way, and move the mental framework from SDLC → CDLC (Context Development Lifecyle illustrated above), documentation stops being a hygiene task and becomes infrastructure. The teams that write down how they work, keep that knowledge current, and make it available to agents will have a structural advantage over teams that treat context as tribal knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Cost matters, but the wrong framing leads to the wrong decisions
&lt;/h2&gt;

&lt;p&gt;Model costs are becoming real.&lt;/p&gt;

&lt;p&gt;In the earliest adoption phase, many teams did not feel the cost directly. Usage was limited, pilots were small, and in some cases vendor pricing or subsidies made the economics look less material than they would eventually become. But that phase is ending…&lt;/p&gt;

&lt;p&gt;As agents become part of daily development, cost shows up in more places: large context windows, repeated attempts, long-running tasks, model upgrades, autonomous workflows, and agents that call other tools in loops.&lt;/p&gt;

&lt;p&gt;A prompt that is cheap as a one-off experiment can become expensive when it runs across hundreds of devs every day, each with a large repo context, multiple retries, and a frontier model selected by default.&lt;/p&gt;

&lt;p&gt;This is why &lt;em&gt;AI FinOps&lt;/em&gt; needs to become a real discipline!&lt;/p&gt;

&lt;p&gt;The cloud analogy is useful (but only up to a point). In cloud, cost followed infrastructure usage. In AI, cost follows cognition-like work: reasoning, context, retries, tool calls, evals, and orchestration. That makes it harder to map spend to value, because the bill may be attached to a workflow that saved a week of engineering time, avoided a security incident, accelerated a customer feature, or simply produced three bad attempts before a human rewrote it.&lt;/p&gt;

&lt;p&gt;Even in the few weeks since these roundtables took place, awareness of AI costs has increased substantially. That will continue as agent adoption broadens. Leaders will need visibility into where spend goes, which models are used for which tasks, where context is being wasted, and which workflows justify their cost because they improve delivery, quality, risk, or ambition.&lt;/p&gt;

&lt;p&gt;The wrong answer is to suppress usage blindly. The better answer is to manage it deliberately: model routing, caching, context discipline, budgets, observability, and evals that help teams know whether cheaper options are good enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Model routing will be part of AI agent governance
&lt;/h2&gt;

&lt;p&gt;There was broad agreement that not every task should use the largest or most expensive frontier model. A good example is how we’ve recently switched Tessl’s default eval model from Sonnet 4.6 to GLM 5.1. The principle is easy to accept, but the operational question is harder: how does an organization know which model is good enough for which job?&lt;/p&gt;

&lt;p&gt;The answer will not be one model - it will be &lt;em&gt;routing&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Frontier models will remain valuable for ambiguous reasoning, complex planning, and tasks where the cost of a poor answer is high. Smaller models may be better for bounded, repeatable work where the task is well specified and the output can be validated. Open models have become capable enough that, for many narrow tasks, they may be more than sufficient and much cheaper. Local or private deployments may make sense when data sensitivity, latency, or control matters more than raw capability.&lt;/p&gt;

&lt;p&gt;The risk is that every team solves this independently. One team standardises on Claude Code, another on Cursor, another on Codex, another experiments with open models, and the organization ends up with duplicated eval work and no shared view of quality, cost, or risk.&lt;/p&gt;

&lt;p&gt;This is why model routing belongs inside AI agent governance. The decision should depend on the task, the data, the quality bar, the blast radius, the cost, and the validation available. The real capability is not choosing a favorite model; it is building the measurement and routing layer that lets teams use the right model for the right task.&lt;/p&gt;

&lt;p&gt;The important test is not whether a smaller model works once. It is whether it meets the quality bar repeatedly under realistic inputs, with the context and constraints the workflow will actually have in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Why AI agent governance is becoming the enterprise security bottleneck
&lt;/h2&gt;

&lt;p&gt;Cost is rising, but security is still the concern most likely to limit enterprise adoption.&lt;/p&gt;

&lt;p&gt;The risks are easy to understand once you stop thinking about agents as chatbots and start thinking about them as actors inside the development environment. A coding agent running with a developer’s credentials may be able to access internal repositories, package registries, logs, deployment systems, tickets, customer data, and production-adjacent systems. If that agent can browse the web, install packages, execute scripts, or move data between systems, the blast radius changes materially.&lt;/p&gt;

&lt;p&gt;This does not mean the right answer is to block agents. It means the trust model has to mature.&lt;/p&gt;

&lt;p&gt;One useful mental model from the roundtables was to treat agents like new employees or interns. You would not give an intern every credential and full production access on day one. You would start with a defined scope, observe their work, review their decisions, and expand trust over time. Agents need a version of the same path.&lt;/p&gt;

&lt;p&gt;That path includes identity, entitlements, sandboxing, audit trails, tool restrictions, policy enforcement, and incident response. It also includes a decision about whether the agent acts as the human, as a separate identity, or as a constrained delegated identity. Without that, security teams are left with a choice between approving risky autonomy or blocking usage entirely.&lt;/p&gt;

&lt;p&gt;There is also an important cost dynamic here. In many enterprises, security constraints currently limit usage, which means they also shield the organization from the full cost curve. If only a small number of teams can use agents in limited ways, the token bill remains constrained. Once identity, permissions, sandboxing, and audit controls mature, adoption will expand, and costs that were previously hidden by limited rollout will become much more visible.&lt;/p&gt;

&lt;p&gt;So security may be the immediate bottleneck, but cost is waiting behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. As coding gets cheaper, alignment becomes the bottleneck
&lt;/h2&gt;

&lt;p&gt;Agents reduce the cost of implementation, but that does not mean the organization automatically moves faster. It means the bottleneck moves.&lt;/p&gt;

&lt;p&gt;If code becomes cheaper to produce, the relative cost of everything around code increases: product clarity, architecture decisions, security approvals, change management, compliance, release coordination, and cross-team alignment. Several leaders described a version of the same pattern, where teams can now build faster than the organization can decide, approve, or absorb.&lt;/p&gt;

&lt;p&gt;This changes the economics of software delivery.&lt;/p&gt;

&lt;p&gt;For years, engineering organizations optimised heavily against duplication. Build the shared capability once, coordinate across teams, extract commonality, and reuse the platform. That instinct still matters, but the trade-off changes when implementation becomes cheaper and coordination remains expensive. In some cases, duplicating a capability inside a clear domain boundary may be more effective than forcing multiple teams through a shared dependency.&lt;/p&gt;

&lt;p&gt;This is not an argument against architecture. It is an argument for architecture that recognises where the bottleneck has moved.&lt;/p&gt;

&lt;p&gt;Agentic development works best when work has clear ownership, limited dependencies, strong tests, and a constrained blast radius. It struggles when success depends on many teams agreeing before anything can move. The practical leadership question is therefore not just “how do we make developers faster?” but “what will become the constraint once they are?”&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Enterprise AI agent governance needs explicit, automated controls
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foi6y9ef9sd6zfx4ubbf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foi6y9ef9sd6zfx4ubbf5.png" alt="meme" width="799" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most organizations already have controls for software delivery: code review, change management, access approval, security review, compliance checks, deployment gates, incident response, and audit logging.&lt;/p&gt;

&lt;p&gt;The problem is that many of those controls were designed for humans.&lt;/p&gt;

&lt;p&gt;They rely on judgement, institutional memory, informal interpretation, or manual process. People know what the policy really means. Reviewers know when something feels risky. Security teams know which exceptions matter. Auditors accept a workflow because they recognise the human pattern behind it.&lt;/p&gt;

&lt;p&gt;Agents force these assumptions into the open.&lt;/p&gt;

&lt;p&gt;If a policy is ambiguous, an agent cannot reliably follow it. If a control depends on a human noticing something subtle, it may not scale. If a process is only documented in training material, it is not agent-ready. If an approval exists mainly so another team can find out what is happening, it may need to be redesigned.&lt;/p&gt;

&lt;p&gt;This is governance debt, and agentic development exposes it.&lt;/p&gt;

&lt;p&gt;The answer is not to invent an entirely new governance model from scratch. It is to make existing controls explicit, automated, and measurable. That means clearer policies, better identity systems, structured workflows, automated checks, traceability across agent actions, and evals that test whether the agent is actually following the standards it was given.&lt;/p&gt;

&lt;p&gt;You cannot govern what you cannot see, and you cannot improve what you cannot evaluate. That is why skills, observability, and evals belong in the same conversation as security.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Standardization matters, but premature standardization can kill learning
&lt;/h2&gt;

&lt;p&gt;Every organization adopting agents faces the same tension: how much freedom should teams have?&lt;/p&gt;

&lt;p&gt;Too little standardization creates chaos. Too much standardization too early kills discovery.&lt;/p&gt;

&lt;p&gt;The roundtables surfaced many examples of parallel experimentation: multiple teams creating skills, multiple repositories collecting prompts, different approaches to code review, different rules for test generation, different ideas about how much autonomy is acceptable. Some duplication happened because teams wanted control. Some happened because they did not know someone else had already solved the problem.&lt;/p&gt;

&lt;p&gt;Early duplication is not always bad. It can be how teams learn. It can reveal which patterns work across different environments, and it can create local champions who are credible because they solved a real problem rather than followed a mandate.&lt;/p&gt;

&lt;p&gt;But local learning only becomes organizational advantage if it becomes visible.&lt;/p&gt;

&lt;p&gt;The healthiest pattern is to let teams experiment, make the work discoverable, then converge deliberately. That requires communities of practice, internal demos, shared repos, skill registries, lightweight review processes, and a platform team that sees its job as amplifying the good patterns rather than suppressing all variation.&lt;/p&gt;

&lt;p&gt;The question is not whether to standardise. The question is &lt;em&gt;when&lt;/em&gt;. Experimentation should be broad while the organization is learning. Production patterns should become intentional once that learning starts to repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. The talent model is shifting from writing code to directing, verifying, and integrating work
&lt;/h2&gt;

&lt;p&gt;Agentic development changes what great engineering looks like.&lt;/p&gt;

&lt;p&gt;It does not remove the need for engineering skill. If anything, judgement becomes more important. But the work shifts from producing every line of code to defining the task, supplying the context, delegating to agents, verifying the output, integrating the result, and knowing when something is subtly wrong.&lt;/p&gt;

&lt;p&gt;Some engineers will thrive in that environment. They are comfortable with ambiguity, orchestration, and context switching. They can hold the goal in their head while inspecting partial outputs. They know how to specify, review, and correct without needing to manually produce every detail.&lt;/p&gt;

&lt;p&gt;Others may struggle, especially if their identity is tied primarily to deep, single-threaded implementation or writing every line by hand. That style of work will not disappear, but it will become part of a larger system in which humans increasingly design and supervise the machinery of software creation.&lt;/p&gt;

&lt;p&gt;One analogy that came up in the discussions was the shift from building the furniture to building or operating the factory that builds the furniture. Another is management: working with agents can feel like defining work, delegating it, reviewing the output, and intervening when needed.&lt;/p&gt;

&lt;p&gt;That does not mean every engineer becomes a people manager. It means more engineers will need management-like skills for systems of agents: specification, delegation, verification, feedback, and accountability.&lt;/p&gt;

&lt;p&gt;The emerging role is less “the person who writes all the code” and more “the person who ensures the right system gets built.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts: What are the main blockers for enterprise agent adoption?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Blocker&lt;/th&gt;
&lt;th&gt;What leaders are seeing&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Agents inherit human permissions, touch sensitive systems, browse the web, or act without enough containment.&lt;/td&gt;
&lt;td&gt;It limits rollout today, but also defines the trust model for everything that follows.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Usage grows through larger context windows, repeated runs, frontier models, and always-on workflows.&lt;/td&gt;
&lt;td&gt;AI FinOps becomes a durable discipline, not a one-off optimisation project.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model deployment&lt;/td&gt;
&lt;td&gt;Frontier models are powerful, but many enterprise tasks may be better served by smaller, open, or specialised models.&lt;/td&gt;
&lt;td&gt;The capability to route work across models becomes more strategic than picking a single model.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;Agents need specs, policies, tests, docs, runbooks, examples, and domain language to do useful work reliably.&lt;/td&gt;
&lt;td&gt;Context becomes infrastructure, and weak documentation becomes an adoption blocker.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alignment&lt;/td&gt;
&lt;td&gt;Implementation gets cheaper, while decisions, approvals, architecture, and cross-team coordination still move at human speed.&lt;/td&gt;
&lt;td&gt;The bottleneck moves from writing code to agreeing what should be built and how it should fit.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most of the roundtable discussion reinforced what enterprise leaders already feel: agentic development is useful, the tools are improving quickly, and adoption is uneven.&lt;/p&gt;

&lt;p&gt;From my perspective, three novel points stood out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Hyping AI productivity can hinder adoption&lt;/strong&gt;. If the story inside a company is mostly about doing the same work with fewer people, employees will quite reasonably hear a threat. A better transformation narrative is ambition: agents let teams attempt more, build more, explore more, and pursue work that previously looked out of reach. This shift turns the questions around and focuses on nurturing an enterprise culture directed at empowering devs (not scaring them!).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;We need AI FinOps!&lt;/strong&gt; Managing AI costs is not a short-lived problem that disappears once models get cheaper. As agents become embedded in development workflows, usage expands, model choice diversifies, and context-heavy workflows become normal. Cost needs to be observed, managed, and tied to value.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;In the enterprise, the security bottleneck currently shields organizations from the full cost curve&lt;/strong&gt;. Many companies are not yet seeing the true cost of broad agent adoption because security constraints are limiting usage. Once the controls mature, adoption will expand, and the cost question will become much sharper.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The next generation of engineering teams won’t be defined by how many agents they use, but by how well they govern them.&lt;/p&gt;

&lt;p&gt;At Tessl, this is the approach we’re building towards: agent governance rooted in context, evaluations, and security. A practical place to start is to point your coding agent at the Tessl CLI and ask it to evaluate your context. It is a simple way to see assess the quality of your context, understand where the gaps are, and think what governance will need to cover next.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Cursor's new leaderboard shows teams the most popular plugins, skills and MCPs</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:28:02 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/cursors-new-leaderboard-shows-teams-the-most-popular-plugins-skills-and-mcps-3d1n</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/cursors-new-leaderboard-shows-teams-the-most-popular-plugins-skills-and-mcps-3d1n</guid>
      <description>&lt;p&gt;As engineering teams adopt more agent tooling, keeping track of what's actually running across an organisation has become its own problem. Plugins, skills, and MCP servers get configured differently by different developers, with no shared view of what teammates are using, what's proven out, or what's worth standardising on. The result is a sprawl of JSON config files and scattered settings that nobody has full visibility into.&lt;/p&gt;

&lt;p&gt;Cursor's &lt;a href="https://x.com/cursor_ai/status/2069512593887092811" rel="noopener noreferrer"&gt;latest update&lt;/a&gt; takes aim at that. Version 3.9, &lt;a href="https://cursor.com/changelog/customize" rel="noopener noreferrer"&gt;released June 22&lt;/a&gt;, introduces what the company calls a "Customize" page — a single interface for managing plugins, skills, MCP servers, subagents, rules, commands, and hooks across an organisation, controllable at user, team, or workspace level.&lt;/p&gt;

&lt;h2&gt;
  
  
  A leaderboard that shows what teammates actually use
&lt;/h2&gt;

&lt;p&gt;The headline feature is a leaderboard showing which plugins, skills, and MCPs are most used both within a team and across the broader Cursor community. For skills, the leaderboard surfaces how many times each has been used by the team in the past 30 days, and what proportion of those invocations were agent-initiated versus human-initiated — useful signal for understanding which skills are genuinely being put to work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx1nmtjr1itfpozza2tya.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx1nmtjr1itfpozza2tya.gif" alt="Leaderboard (Skills)" width="799" height="471"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Leaderboard (Skills)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For plugins, teams can see how many teammates have already added a given plugin, and click through to add it to their own setup in one step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiaolt90w5b7rowyssqe0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiaolt90w5b7rowyssqe0.gif" alt="Leaderboard (plugins)" width="720" height="423"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Leaderboard (plugins)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Previously, there was no way to see what teammates had configured — adoption was an individual, manual process with no shared signal. The leaderboard turns it into a discovery surface driven by real usage data, drawing on both internal team behaviour and community-wide trends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Canvases, shared dashboards, and broader marketplace support
&lt;/h2&gt;

&lt;p&gt;The update also introduces prebuilt plugin canvases — shared, interactive dashboards that render live data from partner tools directly inside Cursor. The Atlassian canvas, for instance, pulls a real-time view of Jira issues, sprint progress, and project documents into the editor, giving teams a live window into their project state without switching context. Teams get a ready-made starting point they can open and reuse, rather than building the wiring themselves.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fagf4e38i1fqso35sa84s.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fagf4e38i1fqso35sa84s.gif" alt="Plugin canvas" width="599" height="406"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Plugin canvas&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Team marketplaces, which allow organisations to distribute private plugins internally, &lt;a href="https://cursor.com/changelog/customize#new-team-marketplaces" rel="noopener noreferrer"&gt;now also support&lt;/a&gt; GitLab, Bitbucket, and Azure DevOps repositories — previously the feature was limited to GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor's bigger picture: SpaceX, a GitHub challenger, and a quiet acqui-hire
&lt;/h2&gt;

&lt;p&gt;The update lands at a moment when Cursor is the most closely watched company in developer tools. &lt;a href="https://www.cnbc.com/2026/06/16/spacex-spcx-cursor-acquisition-ipo.html" rel="noopener noreferrer"&gt;SpaceX recently confirmed&lt;/a&gt; a $60 billion all-stock deal to acquire Cursor's parent company Anysphere — the largest acquisition of a venture-backed startup on record. Around the same time, &lt;a href="https://thenewstack.io/cursor-origin-github-disruption/" rel="noopener noreferrer"&gt;Cursor unveiled Origin&lt;/a&gt;: an agent-native code hosting platform designed as a challenger to GitHub, which has been logging hundreds of incidents over the past year as it struggles to keep pace with the volume of code AI agents are generating.&lt;/p&gt;

&lt;p&gt;Elsewhere, &lt;a href="https://thenewstack.io/cursor-acquires-continue-coding/" rel="noopener noreferrer"&gt;Cursor also quietly absorbed&lt;/a&gt; open-source coding assistant &lt;a href="https://www.continue.dev/" rel="noopener noreferrer"&gt;Continue&lt;/a&gt;, in an acqui-hire that shut down the product and handed its codebase to the community under its existing Apache 2.0 licence.&lt;/p&gt;

&lt;p&gt;For engineering leaders already managing Cursor deployments at scale, the governance question is only going to grow as agent tooling becomes more embedded in how teams work. A unified control plane and a usage leaderboard won't resolve every challenge, but they give platform teams something they didn't have before: a clear view of what's actually running.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>The new Tessl review: now you decide what "good" looks like:</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Wed, 24 Jun 2026 06:41:25 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl/the-new-tessl-review-now-you-decide-what-good-looks-like-581n</link>
      <guid>https://dev.clauneck.workers.dev/tessl/the-new-tessl-review-now-you-decide-what-good-looks-like-581n</guid>
      <description>&lt;h2&gt;
  
  
  The new Tessl review: now you decide what "good" looks like:
&lt;/h2&gt;

&lt;p&gt;For a while now Tessl has been able to review the quality of your skills straight out of the box. By simply running &lt;code&gt;tessl skill review&lt;/code&gt; you get a score against Anthropic's best practices with no setup required. That is a sensible default and it has served most people well, but a default is still somebody else's opinion that you or your organisation might look at and disagree with.&lt;/p&gt;

&lt;p&gt;Today we are launching a new version of Tessl’s review functionality. It does three new things: reviews your skills &lt;strong&gt;agentically&lt;/strong&gt; with greater accuracy, and lets you define what &lt;strong&gt;good&lt;/strong&gt; actually means for your skills, and keeps a sharable &lt;strong&gt;history&lt;/strong&gt; of your skill review runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with one definition of good
&lt;/h2&gt;

&lt;p&gt;On one of my skills, the current review provides a quality score of 82%. The description review scores a perfect 100%, but the content section drops to 55%, with conciseness at 1 out of 3 and progressive disclosure at 1 out of 3.&lt;/p&gt;

&lt;p&gt;In some people’s view, nothing is wrong with the skill, but the judge is marking it down for keeping one tight, self-contained skill rather than spreading it across five files. That is a reasonable position and it is Anthropic's position. But what if your org prefers larger, consolidated skills, in which case an 82 is punishing me for doing exactly what we want. Perhaps we even have further constraints which are being missed in my skill but completely being overlooked by the review and giving me a false sense of quality.&lt;/p&gt;

&lt;p&gt;Here’s a video of the new Tessl review in action:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=2O2cQ2x_nbo" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Offering a more accurate review
&lt;/h2&gt;

&lt;p&gt;The new Tessl review is invoked using &lt;code&gt;tessl review run&lt;/code&gt; from the CLI or via the agent (but make sure it’s calling the new version!) and you need to pass a workspace name where your review results will be stored.&lt;/p&gt;

&lt;p&gt;One of the bigger changes is under the hood. Whereas the previous review used an LLM as a judge in a single pass, the new version uses an agent. It takes more turns, gathers more information about the skill and associated files and reaches a better more grounded verdict. You will still see some variation between runs, since an LLM judge is non-deterministic by it’s very nature, but the results are more accurate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining what good skills look like for your organization
&lt;/h2&gt;

&lt;p&gt;This is the exciting part that changes how reviews determine what’s right, as the new review allows you to pass your own rubric, as a plugin, and review against it.&lt;/p&gt;

&lt;p&gt;We’ve made a plugin called &lt;code&gt;review-plugin-creator&lt;/code&gt; that walks you through building a custom review plugin. This allows you to fork the Anthropic best practices if you only wish to change a few things, so everything sensible stays in place by default and you only change what you disagree with. In my case I flipped a single rule, the one that punishes consolidated skills.&lt;/p&gt;

&lt;p&gt;The creator produces a plugin holding your guidelines and rubric. To reference it on a &lt;code&gt;tessl review run&lt;/code&gt;, you can reference it locally in the file system, or link to a private or public plugin on the Tessl Registry.&lt;/p&gt;

&lt;p&gt;Running the same skill again, this time with your rules, and you’ll see updated scores. In my case, the consolidated skill now scores full marks on conciseness and progressive disclosure, and the content section reflects what my org actually values rather than what a generic default assumes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Seeing your reviews
&lt;/h2&gt;

&lt;p&gt;Everything you see at the CLI is also on the Tessl Registry. Head to your workspace and you will find your review plugin alongside a full history of review runs. Each run shows the same breakdown you get in the terminal, plus the plugin that produced it, so you always know which definition of good a score was measured against.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo5wy2gtfkjs2j9wmibx0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo5wy2gtfkjs2j9wmibx0.png" alt="image1" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In your workspace settings you can set a default review plugin. From then on every review run from that workspace uses it automatically. You can still override it per run with the &lt;code&gt;--review-plugin&lt;/code&gt; flag whenever you need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rest of the toolkit
&lt;/h2&gt;

&lt;p&gt;A few more commands worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;tessl review list --workspace &amp;lt;workspace-name&amp;gt;&lt;/code&gt; lists every review run against a workspace&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;tessl review view &amp;lt;review-id&amp;gt;&lt;/code&gt; opens a single run and shows its full output.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;tessl review fix&lt;/code&gt; is the new home for the &lt;code&gt;--optimize&lt;/code&gt; behaviour you already know from our previous review. It agentically applies fixes to the skill based on a review outcome and can update your &lt;code&gt;SKILL.md&lt;/code&gt; directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What does this mean for the old command?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tessl skill review&lt;/code&gt; is not going anywhere yet. We have deliberately left it in place so nothing breaks for anyone relying on it today, although you may see a deprecation message. That said, &lt;code&gt;tessl review run&lt;/code&gt; is where all the work is going from here, so please move across and start using it, so you’re not caught out when we do turn off the older review feature. We’ll also be releasing updates to our GitHub actions soon to make use of the new tessl review functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it now
&lt;/h2&gt;

&lt;p&gt;The new Tessl review is live and you can use it today, do note that you’ll need a free account in order to use the Tessl review command (you can check the full documentation &lt;a href="https://docs.tessl.io/improving-your-skills/tessl-review?utm_source=website&amp;amp;utm_medium=website&amp;amp;utm_content=header-banner" rel="noopener noreferrer"&gt;here&lt;/a&gt;. There is plenty more to come and we will keep you posted as it lands. For now, run it against your own skills, write a rubric that matches how your team actually thinks about quality, then tell us how it performs in your environment. Your feedback shapes what we build next.&lt;/p&gt;

&lt;p&gt;Customise Tessl review: &lt;a href="https://tessl.io/registry/tessl/review-plugin-creator?utm_source=website&amp;amp;utm_medium=website&amp;amp;utm_content=header-banner" rel="noopener noreferrer"&gt;https://tessl.io/registry/tessl/review-plugin-creator&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Learn more about Tessl: &lt;a href="https://tessl.io" rel="noopener noreferrer"&gt;https://tessl.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Common Pitfalls of Skills Development (And How to Fix Them)</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Tue, 23 Jun 2026 06:28:50 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/common-pitfalls-of-skills-development-and-how-to-fix-them-461e</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/common-pitfalls-of-skills-development-and-how-to-fix-them-461e</guid>
      <description>&lt;p&gt;&lt;em&gt;I recently gave a version of this talk at &lt;a href="https://ai.engineer/" rel="noopener noreferrer"&gt;AI Engineer Europe&lt;/a&gt; in London. What follows is the fuller story — what we found when we looked at thousands of skills, what goes wrong, and how to fix it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You know that scene in The Matrix? Neo gets a spike in the back of his head, they upload kung fu directly into his brain, and he just... knows it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frn97szxdmjgr3v7f8gps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frn97szxdmjgr3v7f8gps.png" alt="image1" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's what a skill is for an AI coding agent. You write a markdown file — a &lt;code&gt;SKILL.md&lt;/code&gt; — and the agent loads it when the task matches. Suddenly it knows your team's deployment process, or how your API handles pagination, or that you never use semicolons.&lt;/p&gt;

&lt;p&gt;It's not code. It's context. Procedural knowledge, injected at the right moment.&lt;/p&gt;

&lt;p&gt;The thing is — Neo's upload worked perfectly. Ours? Not always.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills are everywhere now
&lt;/h2&gt;

&lt;p&gt;We spent some time analysing essentially all of public GitHub. In November last year, 12 repos had &lt;code&gt;SKILL.md&lt;/code&gt; files. By March — five thousand four hundred and sixty. That's 450x growth in fourteen weeks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1xrqj8xjl8w31e3gxti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1xrqj8xjl8w31e3gxti.png" alt="image2" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Skills went from zero to 27% of all agent config activity in three months. Faster adoption than &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, or any of the dotfile formats before them. And 1 in 12 merged PRs on GitHub now touches an agent config file — 8.4%, up from basically zero eighteen months ago.&lt;/p&gt;

&lt;p&gt;This is not a niche thing anymore. This is how people are working.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/BfGgwIK8f60" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  But are they electrifying?
&lt;/h2&gt;

&lt;p&gt;Ninety percent of agent config files are never updated after creation. Write once, forget forever.&lt;/p&gt;

&lt;p&gt;Your codebase evolves every day. Your dependencies change. Your API contracts shift. But the instructions you gave your agent? Frozen in time.&lt;/p&gt;

&lt;p&gt;For Gemini files it's even worse — 97% are write-once. And the purpose-built "skill-as-product" repos? Over half are under 50 kilobytes. Wrapper repos. Many are AI-generated. High churn, low staying power.&lt;/p&gt;

&lt;p&gt;We have this explosion of skills, and most of them are going stale the moment they're committed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we did about it
&lt;/h2&gt;

&lt;p&gt;The DevRel team at Tessl spent a couple of months doing something pretty hands-on. We went out and found open-source projects with &lt;code&gt;SKILL.md&lt;/code&gt; files. We ran them through our review tooling. And where we could improve them, we opened pull requests. To strangers. On the internet.&lt;/p&gt;

&lt;p&gt;622 PRs. 559 different repos. Nearly six thousand skills touched.&lt;/p&gt;

&lt;p&gt;We weren't just theorising about what goes wrong. We were in the trenches, reading other people's skills, fixing them, and learning from the maintainer responses.&lt;/p&gt;

&lt;p&gt;At the time of writing, 96 of those PRs got merged. 140 were closed. The rest were still open. That's a 15% merge rate on cold PRs to strangers' repos — which honestly isn't bad.&lt;/p&gt;

&lt;p&gt;And along the way, we learned exactly where skills break.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #1: Vague descriptions
&lt;/h2&gt;

&lt;p&gt;Your description field is your activation signal. It's the if-clause the agent evaluates before it decides to load your skill. If it's generic, the agent has no signal. It either ignores you, or worse, activates on the wrong task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"A helpful skill for code review and quality improvement"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Runs ESLint with project rules, flags type-safety violations, and suggests fixes. Use when reviewing TypeScript PRs or running pre-commit checks."&lt;/p&gt;

&lt;p&gt;From our outreach, 105 of our merged PRs specifically fixed descriptions. It was the single most common fix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femz5xt0uz1xphg9dt27v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femz5xt0uz1xphg9dt27v.png" alt="image3" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And our research team measured this. When skills are installed but the agent isn't forced to use them, activation drops to 41%. Less than half. The skill is right there, installed, ready to go — and the agent walks right past it.&lt;/p&gt;

&lt;p&gt;The strongest predictor of activation is what we call "distinctiveness conflict risk" — does your description use terms unique enough that the agent can tell your skill apart from its own built-in behaviours?&lt;/p&gt;

&lt;p&gt;Skills with strong domain-specific nouns — "Remotion", "Calendly", "path-traversal-finder" — those activate well. Skills described with generic terms like "API", "code", "debugging"? They compete with the agent's own capabilities and lose.&lt;/p&gt;

&lt;p&gt;What matters isn't how detailed your skill is. It's whether the description signals a concrete, bounded task that doesn't overlap with what the agent already knows how to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #2: God skills
&lt;/h2&gt;

&lt;p&gt;We found a Microsoft Foundry skill with 50 files in it. Fifty. Even with progressive disclosure, no agent is loading all of that context effectively.&lt;/p&gt;

&lt;p&gt;And our review scores said it was fine. The evals passed. But three scenarios can't cover the surface area of fifty files. There's more content in that skill than can possibly be tested.&lt;/p&gt;

&lt;p&gt;This is the God Skill problem. A skill that tries to do everything produces a description so broad it either never activates, or activates for the wrong reason. One skill, one workflow. That's the rule.&lt;/p&gt;

&lt;p&gt;The SkillsBench paper from earlier this year confirmed it: 16 out of 84 tasks showed negative skill deltas. The skill actively made the agent worse. Usually because it introduced conflicting guidance or unnecessary complexity for something the model already handled well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #3: Context bloat
&lt;/h2&gt;

&lt;p&gt;We know that leaner skills perform better. One of our users reported that after optimising their skill, it used 40% fewer tokens and finished in half the time compared to scanning source code directly.&lt;/p&gt;

&lt;p&gt;But here's the irony: when we run our own optimiser, the output is on average 17% longer than the input. The machine adds examples, caveats, edge cases. It's thorough — but thoroughness burns context window.&lt;/p&gt;

&lt;p&gt;Human-written skills often contain things the LLM already knows. You don't need to explain what a REST API is. You don't need to define what TypeScript generics are. The agent knows. What it doesn't know is &lt;em&gt;your&lt;/em&gt; specific conventions.&lt;/p&gt;

&lt;p&gt;The fix is progressive disclosure. Core instructions in the body. Detailed reference material in separate resource files, loaded on demand. Not upfront.&lt;/p&gt;

&lt;p&gt;There's a related subtlety that bit us too. When you generate eval scenarios automatically, there's a risk that the scenario description accidentally tells the agent what to do to score well. We call it criteria leakage. The task says "implement audit logging with structured JSON output" — and the scoring rubric checks for structured JSON output. The baseline scores 80% just from reading the task description, without the skill.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bysecnog7krb9if2g9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bysecnog7krb9if2g9y.png" alt="image4" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our research team measured this: 30% of auto-generated scenarios had meaningful leakage. And when leakage is high but the scenario is generic, the skill can actually score &lt;em&gt;worse&lt;/em&gt; than baseline. The leaked info is enough for the agent without the skill, and the skill just adds noise.&lt;/p&gt;

&lt;p&gt;If your baseline scores are suspiciously high, your scenarios might be doing the agent's homework for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #4: Activation varies by agent
&lt;/h2&gt;

&lt;p&gt;Activation isn't just about your description. It varies dramatically by agent harness.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;Activation Rate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code (forced)&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single skill installed&lt;/td&gt;
&lt;td&gt;62%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 skills installed&lt;/td&gt;
&lt;td&gt;58%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code (not forced)&lt;/td&gt;
&lt;td&gt;41%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;With a single skill installed in a controlled test, activation is 62%. Add nine more skills and it drops to 58%. And installing too many skills can mean they conflict — the agent gets confused about which one to use, picks the wrong one, or picks none.&lt;/p&gt;

&lt;p&gt;One of our colleagues tested a security review skill via MCP and reported: "The agent took the hint and just carried on" — completely ignoring the skill instructions. It acknowledged the skill existed but didn't follow it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest bit
&lt;/h2&gt;

&lt;p&gt;"We disagree pretty strongly with some of Tessl's guidance. Please stop submitting automated rewrites of our skills." — Open source maintainer&lt;/p&gt;

&lt;p&gt;Not everyone loved our pull requests. And that's fair.&lt;/p&gt;

&lt;p&gt;Reviewing a skill isn't just checking markdown formatting. If a skill augments a library, there's institutional knowledge baked in. The skill might encode proprietary details about how an org operates. Running a review without access to the project's test suite, without the external APIs, without the full context — you can't prove the "improvement" actually improves anything.&lt;/p&gt;

&lt;p&gt;We can tell you if the description follows best practices. We can tell you if the structure is right. But we can't tell you if the content is correct for your specific domain without running it against your actual workload.&lt;/p&gt;

&lt;p&gt;That's why evals matter. Static review is necessary but not sufficient. It's like static analysis versus actually running your tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix: the Context Development Lifecycle
&lt;/h2&gt;

&lt;p&gt;So how do you actually fix all of this? Our very own Patrick Debois wrote about this as the &lt;a href="https://tessl.io/blog/context-development-lifecycle-better-context-for-ai-coding-agents/" rel="noopener noreferrer"&gt;Context Development Lifecycle&lt;/a&gt;. The idea is that context needs engineering rigour. The same discipline you'd give a shared library.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhubm4q0g65xs39k0mo2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhubm4q0g65xs39k0mo2.png" alt="image5" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate:&lt;/strong&gt; Capture the implicit knowledge. Your conventions, your architecture decisions, your API quirks. The agent can draft, but the human decides what's true.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluate:&lt;/strong&gt; Test it. Reviews check structure. Task evals run the agent on real scenarios with and without the skill and measure the difference. That's the only way to know.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distribute:&lt;/strong&gt; Version it, publish it, secure it. Skills need owners, changelogs, and semver. A skill without version history is technical debt from the moment it's shared.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observe:&lt;/strong&gt; Watch what happens in production. Monitor activation. Check adherence. Close the loop.&lt;/p&gt;

&lt;p&gt;The teams that win won't be the ones with the best models. They'll be the ones with the best context.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers that matter
&lt;/h2&gt;

&lt;p&gt;Our large-scale eval study across 1,200 skills showed roughly 20% absolute improvement in accuracy when the agent has skill access. Even more interesting: smaller, cheaper models remain competitive with larger models when given good skills. That's a direct cost saving.&lt;/p&gt;

&lt;p&gt;And when you optimise properly — trim the fat, fix the description, use progressive disclosure — you get the same results with 40% fewer tokens in half the time.&lt;/p&gt;

&lt;p&gt;But here's the caveat: human-curated skills improve performance by over 16 percentage points. Self-generated skills? Negligible or even negative. The quality of the skill matters enormously.&lt;/p&gt;

&lt;p&gt;Skill adherence across projects ranges from 19% to 94%, with an average of 62%. The variance is huge — and that's the gap where good engineering practices make the difference.&lt;/p&gt;

&lt;p&gt;Skills aren't just nice-to-have. They're a multiplier. But only if you treat them like software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start fixing your skills today
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Submit for review:&lt;/strong&gt; Send your skill to the &lt;a href="https://tessl.io/registry" rel="noopener noreferrer"&gt;Tessl registry&lt;/a&gt; for review and scoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate it:&lt;/strong&gt; Add the &lt;a href="https://github.com/tesslio/skill-review" rel="noopener noreferrer"&gt;&lt;code&gt;tesslio/skill-review&lt;/code&gt;&lt;/a&gt; GitHub Action to your repo so every PR that touches a &lt;code&gt;SKILL.md&lt;/code&gt; gets reviewed automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run it locally:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`npx tessl skill review ./SKILL.md`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The review gives you a score and line-level suggestions. The &lt;code&gt;--optimize&lt;/code&gt; flag applies them. Iterate until you're above 70% before publishing. And when you're ready to go further, generate eval scenarios and run task evals — that's where you move from "does this look right" to "does this actually help."&lt;/p&gt;

&lt;p&gt;If you're looking to bring this rigour to your engineering team, &lt;a href="https://tessl.io/enterprise/" rel="noopener noreferrer"&gt;we can help with that too&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Anthropic, OpenAI, or Cursor model for your agent skills? 7 learnings from running 880 evals (including Opus 4.7)</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Mon, 22 Jun 2026 06:42:40 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/anthropic-openai-or-cursor-model-for-your-agent-skills-7-learnings-from-running-880-evals-5gh6</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/anthropic-openai-or-cursor-model-for-your-agent-skills-7-learnings-from-running-880-evals-5gh6</guid>
      <description>&lt;p&gt;Claude Opus 4.7 shipped last week, and the question any engineering team reaches for is how it compares to its peers.&lt;/p&gt;

&lt;p&gt;It is the strongest frontier coding model we tested on the baseline leaderboard, and it will be the easy default a lot of teams reach for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But in 2026, the model you reach for could matter less than the skill you load with it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is what 880 evals across nine models (Opus 4.7, Opus 4.6, Sonnet 4.6, Haiku 4.5, gpt-5.4, gpt-5.3-codex, gpt-5-codex, and Cursor's Composer-2) tell us.&lt;/p&gt;

&lt;p&gt;Let’s take a step back. It’s now 2026, and agent skills are spreading like wildfire… (even our favourite movies are catching up to them).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/BfGgwIK8f60" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every major agent ecosystem now has some version of them.&lt;/p&gt;

&lt;p&gt;So the question worth asking, whether you are a dev, a platform engineer, or an engineering leader, is which skills actually earn their context weight, and which ones just add cost.&lt;/p&gt;

&lt;p&gt;At Tessl, we believe context -particularly agent skills- and the broader concept of a &lt;a href="https://tessl.io/blog/context-development-lifecycle-better-context-for-ai-coding-agents/" rel="noopener noreferrer"&gt;context development lifecycle&lt;/a&gt; are where this space is heading (see also: &lt;a href="https://tessl.io/blog/the-context-flywheel-why-the-best-ai-coding-teams-will-win-on-context/" rel="noopener noreferrer"&gt;Why the best AI coding teams will win on context&lt;/a&gt;). The results below add to a growing body of signals pointing to a shift that is already underway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top-line results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Native behavior rate coverage (e.g "without skill")&lt;/th&gt;
&lt;th&gt;Adherence to skill ("with skill")&lt;/th&gt;
&lt;th&gt;Lift&lt;/th&gt;
&lt;th&gt;$/run (with skill)&lt;/th&gt;
&lt;th&gt;Avg time (with skill)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-7&lt;/td&gt;
&lt;td&gt;80.5%&lt;/td&gt;
&lt;td&gt;94.5%&lt;/td&gt;
&lt;td&gt;+14.0&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;td&gt;158.9s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-6&lt;/td&gt;
&lt;td&gt;77.1%&lt;/td&gt;
&lt;td&gt;93.8%&lt;/td&gt;
&lt;td&gt;+16.7&lt;/td&gt;
&lt;td&gt;$0.53&lt;/td&gt;
&lt;td&gt;126.6s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-sonnet-4-6&lt;/td&gt;
&lt;td&gt;75.6%&lt;/td&gt;
&lt;td&gt;93.3%&lt;/td&gt;
&lt;td&gt;+17.7&lt;/td&gt;
&lt;td&gt;$0.31&lt;/td&gt;
&lt;td&gt;125.1s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-haiku-4-5&lt;/td&gt;
&lt;td&gt;61.2%&lt;/td&gt;
&lt;td&gt;84.3%&lt;/td&gt;
&lt;td&gt;+23.1&lt;/td&gt;
&lt;td&gt;$0.12&lt;/td&gt;
&lt;td&gt;77.8s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.4&lt;/td&gt;
&lt;td&gt;75.9%&lt;/td&gt;
&lt;td&gt;92.7%&lt;/td&gt;
&lt;td&gt;+16.8&lt;/td&gt;
&lt;td&gt;N/A*&lt;/td&gt;
&lt;td&gt;135.4s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.3-codex&lt;/td&gt;
&lt;td&gt;75.8%&lt;/td&gt;
&lt;td&gt;91.9%&lt;/td&gt;
&lt;td&gt;+16.1&lt;/td&gt;
&lt;td&gt;N/A*&lt;/td&gt;
&lt;td&gt;87.9s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5-codex&lt;/td&gt;
&lt;td&gt;73.8%&lt;/td&gt;
&lt;td&gt;85.1%&lt;/td&gt;
&lt;td&gt;+11.3&lt;/td&gt;
&lt;td&gt;N/A*&lt;/td&gt;
&lt;td&gt;136.2s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cursor-composer-2&lt;/td&gt;
&lt;td&gt;73.6%&lt;/td&gt;
&lt;td&gt;90.5%&lt;/td&gt;
&lt;td&gt;+16.9&lt;/td&gt;
&lt;td&gt;N/A*&lt;/td&gt;
&lt;td&gt;152.0s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;We’ve evaluated &lt;a href="https://github.com/mcollina/skills%20(https://github.com/mcollina/skills" rel="noopener noreferrer"&gt;11 node.js development skills&lt;/a&gt;&lt;/em&gt; (&lt;em&gt;documentation, fastify-best-practices, init, linting-neostandard-eslint9, node-best-practices, nodejs-core, oauth, octocat, skill-optimizer, snipgrapher, typescript-magician&lt;/em&gt;)&lt;em&gt;, and aggregated “with vs without” skill performance. For each skill we generated up to 5 realistic tasks from its content, each paired with evaluation criteria - full. We then solved each task with an agent under two conditions: with access to the skill and without access to the skill (full set up explained &lt;a href="https://tessl.io/blog/a-proposed-framework-for-evaluating-skills-research-eng-blog/" rel="noopener noreferrer"&gt;here&lt;/a&gt;). Codex and Cursor per-run costs aren't reported by the eval platform - source those directly from OpenAI and Cursor pricing for now.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Seven things the numbers told us
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Every single configuration got positive lift
&lt;/h3&gt;

&lt;p&gt;Eight models, 11 skills, 5 scenarios each. 88 configurations. Every single one posted a positive average lift with a skill loaded.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Smallest: gpt-5-codex at +11.3 points.&lt;/li&gt;
&lt;li&gt;  Largest: Haiku 4.5 at +23.1.&lt;/li&gt;
&lt;li&gt;  Most configurations landed somewhere around +16 points.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a story about Opus 4.7 winning and another model losing. Cursor's Composer-2 lifted from 73.6% to 90.5%, a +16.9 bump that puts it mid-pack alongside Sonnet and gpt-5.4. Across the Codex family alone, lifts ranged from +11.3 (gpt-5-codex) to +16.8 (gpt-5.4), so not every variant within a vendor benefits equally, but all of them benefited. Skills lifted scores across vendors, across tiers, across model generations. That is about as clean a signal as benchmark data gets.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Skills helped weaker models the most
&lt;/h3&gt;

&lt;p&gt;Haiku 4.5 went from 61.2% to 84.3% with a skill loaded. That is a 23.1-point lift, the biggest gain of any configuration we tested. Opus 4.7 gained 14 percentage points. Sonnet gained 17.7.&lt;/p&gt;

&lt;p&gt;The pattern holds across every model family in the set. If you are reaching for a smaller, cheaper model to control cost, skills could be where your adherence is going to come from, not the next tier up.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. A cheap model with a skill can beat an expensive one without
&lt;/h3&gt;

&lt;p&gt;The skill set we leveraged is a Node.js-focused skill, so models can leverage certain Node.js scenarios directly from their pre-training. In our analysis, Haiku 4.5 with a skill, at 84.3%, outperformed every single baseline configuration we tested, including Opus 4.7 at 80.5%.&lt;/p&gt;

&lt;p&gt;Meanwhile, up at the frontier, Opus 4.7 (94.5%), Opus 4.6 (93.8%), and Sonnet 4.6 (93.3%) all landed within 1.2 points of each other with skills loaded. Without skills, that spread was closer to 5 points. Skills appear to compress the adherence gap between different mode tiers. This confirms the same result as a &lt;a href="https://tessl.io/blog/a-proposed-framework-for-evaluating-skills-research-eng-blog/" rel="noopener noreferrer"&gt;deeper research&lt;/a&gt; we recently released: small models with context become powerful!&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The biggest gains came from context no model was trained on
&lt;/h3&gt;

&lt;p&gt;The single largest skill lift in the benchmark: &lt;code&gt;snipgrapher&lt;/code&gt; at +36 points (51.9% → 88.0%). &lt;code&gt;snipgrapher&lt;/code&gt; is a niche CLI by Matteo Collina - public on npm, but not exactly a household name. Whatever frontier models absorbed about it from training data, they clearly had not absorbed enough: its 51.9% baseline is one of the lowest in the set. Loading the skill closed that gap fast. Second place: &lt;code&gt;node-best-practices&lt;/code&gt; at +29.2 points.&lt;/p&gt;

&lt;p&gt;The skills that pulled the most weight were the ones encoding knowledge the model had no way to pick up from pretraining: private APIs, internal conventions, uncommon domains. Wrappers over material a frontier model already knows rarely justified their token cost. For anyone publishing skills, that looks like the bet worth making.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Loading a skill is a real context budget decision
&lt;/h3&gt;

&lt;p&gt;We’ve seen loading a skill can be as much as a &lt;code&gt;3x&lt;/code&gt; cost increase for &lt;code&gt;+2pp&lt;/code&gt; performance. Here is what "add a skill" costs Opus 4.7 at the frontier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Input tokens: &lt;code&gt;557K&lt;/code&gt; → &lt;code&gt;1,016K&lt;/code&gt; per run. An &lt;code&gt;82%&lt;/code&gt; increase.&lt;/li&gt;
&lt;li&gt;  Cost per run: &lt;code&gt;$0.61&lt;/code&gt; → &lt;code&gt;$1.00&lt;/code&gt;. Two-thirds more per invocation.&lt;/li&gt;
&lt;li&gt;  Turns taken: &lt;code&gt;17.5&lt;/code&gt; → &lt;code&gt;24.4&lt;/code&gt;. A &lt;code&gt;40%&lt;/code&gt; jump. (Opus 4.6 jumped from &lt;code&gt;13.7&lt;/code&gt; to &lt;code&gt;22&lt;/code&gt;, a &lt;code&gt;63%&lt;/code&gt; jump.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skills at this capability level look less like brief hints and more like importing a big dependency: they can buy you capability, and they can cost you size, speed, and complexity. If you are orchestrating agents at scale, plan the context weight as deliberately as you plan the skill.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Sonnet-plus-skill might be the Opus-replacer hiding in the numbers
&lt;/h3&gt;

&lt;p&gt;Sonnet 4.6 with a skill: &lt;code&gt;93.3%&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Opus 4.7 with a skill: &lt;code&gt;94.5%&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A 1.2-point gap. At a third of the per-run cost (&lt;code&gt;$0.31&lt;/code&gt; vs &lt;code&gt;$1.00&lt;/code&gt;) and around &lt;code&gt;34&lt;/code&gt; seconds faster on average.&lt;/p&gt;

&lt;p&gt;For teams already running Opus on every workload and wondering whether it is earning its keep, that gap looks slim on anything that is not the hardest &lt;code&gt;5%&lt;/code&gt; of tasks. On almost every scenario we tested, Sonnet with a skill produced an output a senior developer would be hard pressed to separate from Opus with a skill. And you get the change back on every invocation.&lt;/p&gt;

&lt;p&gt;If your top constraint is latency rather than cost, gpt-5.3-codex with a skill is the other sweet spot worth stress-testing. It landed at &lt;code&gt;91.9%&lt;/code&gt; skill adherence in &lt;code&gt;87.9&lt;/code&gt; seconds, nearly half the run time of Opus-with-skill for a 2.6-point adherence gap. For latency-sensitive agentic pipelines, that combination is arguably the speed champion of the benchmark.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Haiku-plus-skill is the most underrated production config we tested
&lt;/h3&gt;

&lt;p&gt;Haiku 4.5 with a skill: &lt;code&gt;84.3%&lt;/code&gt; at &lt;code&gt;$0.12&lt;/code&gt; per run. Average run time: &lt;code&gt;77&lt;/code&gt; seconds. Roughly half the latency of Opus-with-skill, and &lt;code&gt;12%&lt;/code&gt; of the cost.&lt;/p&gt;

&lt;p&gt;Adding the skill to Haiku barely moved the cost needle either. The run went from &lt;code&gt;$0.104&lt;/code&gt; to &lt;code&gt;$0.119&lt;/code&gt;, a &lt;code&gt;1.5-cent&lt;/code&gt; marginal increase. Compare that to Opus, where the same skill switch added &lt;code&gt;39&lt;/code&gt; cents per run. The lift on Haiku is enormous. The cost of getting it is effectively free at scale.&lt;/p&gt;

&lt;p&gt;For throughput-heavy workloads such as batch jobs, eval loops, retries, or anything running at volume, that looks like the ROI champion of this benchmark.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; We are not saying every team should default to Haiku. We are saying the question worth asking before reaching for the most expensive tier is a simple one: would 84% with a skill be &lt;em&gt;good enough&lt;/em&gt; for this workload?&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for you
&lt;/h2&gt;

&lt;h3&gt;
  
  
  If you are a dev
&lt;/h3&gt;

&lt;p&gt;The skills that pulled the most weight were the ones encoding context the model was never trained on. If you are building or choosing skills for your own workflow, the ones that will move your skill adherence most are tied to your specific stack: your internal APIs, your company's style guide, the framework nobody outside your repo has ever seen. Thin wrappers over library docs the model already knows are rarely going to earn their token cost.&lt;/p&gt;

&lt;p&gt;There is also a practical implication for day-to-day work. Your wallet already knew this, but you perhaps do not need Opus for every task. For routine work such as code review, commit message generation, or refactor suggestions, Haiku 4.5 with a well-built skill is fast enough and accurate enough, and the round trip is roughly half the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you are a platform engineer or DX lead
&lt;/h3&gt;

&lt;p&gt;You are the one rolling agentic tooling out across developers at scale.&lt;/p&gt;

&lt;p&gt;Take 100 devs running their agent 20 times a day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Opus 4.7 with a skill at &lt;code&gt;$1.00&lt;/code&gt; per run: around &lt;code&gt;$60,000&lt;/code&gt; a month.&lt;/li&gt;
&lt;li&gt;  Sonnet 4.6 with a skill at &lt;code&gt;$0.31&lt;/code&gt; per run: around &lt;code&gt;$18,600&lt;/code&gt; a month.&lt;/li&gt;
&lt;li&gt;  Haiku 4.5 with a skill at &lt;code&gt;$0.12&lt;/code&gt; per run: around &lt;code&gt;$7,200&lt;/code&gt; a month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An 82% increase in input tokens when you switch skills on is not an edge case at scale, it is the main cost driver. Governance matters, context budgets matter, and the skills you bless need to earn their weight, not just their skill adherence.&lt;/p&gt;

&lt;p&gt;That is exactly the problem the Tessl &lt;a href="https://tessl.io/registry" rel="noopener noreferrer"&gt;registry&lt;/a&gt; aims to solve. Every skill in the Registry ships with eval scores, security scores, and impact metrics so you can see which skills actually earn their weight before you ship them to your org. Run evals against your own workloads to quantify the productivity you are losing on generic outputs versus what you can win back with the right skills in context. That is the kind of governance layer a platform team could take into a budget conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you are a VP of engineering
&lt;/h3&gt;

&lt;p&gt;You may now have defensible data to make a tier-down case where it makes sense. Sonnet-with-skill delivers output within &lt;code&gt;1.2&lt;/code&gt; points of Opus-with-skill at a third of the cost. For most workloads that are not the hardest &lt;code&gt;5%&lt;/code&gt; of tasks, that gap will not show up in the output quality your team is shipping.&lt;/p&gt;

&lt;p&gt;Also worth knowing if you are picking a default for your org: skills lifted every configuration we tested, across Claude, Codex and Cursor. Your agent choice does not have to be locked to a single vendor to benefit from a skill-first strategy. That is useful leverage in procurement conversations and in any "should we standardise on X?" discussion.&lt;/p&gt;

&lt;p&gt;If you want to run this decision with numbers for your own org, head over to your terminal, spin up an agent, and ask it to run evaluation with Tessl for your skill across different models. That could turn a procurement conversation into a data conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Closing thoughts for AI enablement leads (even if your job title doesn't say so yet!)
&lt;/h3&gt;

&lt;p&gt;This is the role that looks most directly at numbers like these. It doesn't always come with a standard title. Right now, the responsibility is sitting inside platform teams, developer experience functions, senior devs who have taken on the hat, and VPs of engineering wearing it as a second role.&lt;/p&gt;

&lt;p&gt;What the role is responsible for: making sure hundreds of devs in an org have agentic tooling that is reliable, affordable, and performant. Which model a team defaults to, which skills are blessed, how much context a workload is allowed to pull, which workloads run where. These decisions land on whoever has that scope.&lt;/p&gt;

&lt;p&gt;A few things to pay attention to in this data if that is you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The Sonnet-with-skill vs Opus-with-skill comparison could be a procurement conversation. At a &lt;code&gt;3x&lt;/code&gt; cost difference for effectively equivalent output on most tasks, this is the kind of number that should be going into your infra budget chats.&lt;/li&gt;
&lt;li&gt;  The &lt;code&gt;82%&lt;/code&gt; token increase when you switch a skill is the argument for context governance. Your skills need to be evaluated on what they lift, not just on whether they are available.&lt;/li&gt;
&lt;li&gt;  Haiku with a skill is the config worth testing for internal, high-frequency workloads. Running evals on your own skills, generating routine summaries, drafting internal docs. The output doesn't have to be Opus-grade. It has to be good enough, often enough, at a price your org can afford across hundreds of developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We believe the AI enablement lead will become a titled role inside engineering orgs over the next twelve to eighteen months, the same way DevOps lead and developer experience lead emerged before it. If you are that person in your org today, the above table is for you.&lt;/p&gt;

&lt;p&gt;Opus 4.7 is a solid upgrade, but if you only take one thing from this piece: in 2026, picking the skill might matter more than picking the model.&lt;/p&gt;

&lt;p&gt;Spin up your agent and request to leverage Tessl scenario evals for your skills, or speak to sales about &lt;a href="https://calendly.com/d/ct5n-tsn-v62/introduction-to-tessl" rel="noopener noreferrer"&gt;Tessl for enterprise.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>article</category>
    </item>
    <item>
      <title>Evaluating Kimi 2.5 vs Kimi 2.6: What happens to agent skills when the model gets smarter?</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Sun, 21 Jun 2026 06:41:07 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/evaluating-kimi-25-vs-kimi-26-what-happens-to-agent-skills-when-the-model-gets-smarter-c84</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/evaluating-kimi-25-vs-kimi-26-what-happens-to-agent-skills-when-the-model-gets-smarter-c84</guid>
      <description>&lt;p&gt;When a stronger model ships, there are two questions every skill author should want answered, and evals are the only honest way to answer either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Which skills just got absorbed?&lt;/strong&gt; A model that now knows how to do X natively does not need a skill telling it to do X. Fewer skills to maintain, leaner context, lower cost.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Which skills still matter?&lt;/strong&gt; Behaviour-level guidance (conventions, preferences, project-specific workflows) is not something pretraining will fill in for you. Those skills should keep paying.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Moonshot gave us early access to Kimi K2.6. We ran the Tessl agent skill evaluation harness on the same 21 skills and 100 paired scenarios against three solvers: Kimi K2.5, Kimi K2.6, and Claude Sonnet 4.5.&lt;/p&gt;

&lt;p&gt;A solver is the model whose output the grader scores; a paired scenario is the same task run twice per solver, once without the skill installed and once with it. These are early signals from one pre-release on one skill set. A deeper cross-model analysis with clean baselines across the board is in progress and will be its own piece.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What does our setup look like?
&lt;/h2&gt;

&lt;p&gt;Scenarios and rubrics are held fixed across the two Moonshot runs. The only variable is the solver.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Solver A:&lt;/strong&gt; Kimi &lt;strong&gt;K2.5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Solver B:&lt;/strong&gt; Kimi &lt;strong&gt;K2.6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Scenario generator:&lt;/strong&gt; Claude Sonnet 4.5, up to 5 scenarios per skill, derived from each skill's &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Grader:&lt;/strong&gt; Claude Sonnet 4.5, weighted-checklist rubric derived from the same &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Per skill × per solver:&lt;/strong&gt; every scenario solved twice, baseline (no skill installed) and with-skill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per-skill n=5 is noisy; the aggregate over 100 scenarios is where the signal lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three findings:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Kimi 2.6 is a better model than K2.5:&lt;/strong&gt; Without skills, K2.6 sits &lt;code&gt;~2 pp&lt;/code&gt; (percentage points) above K2.5 in aggregate, with double-digit moves on specific skills.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Kimi 2.6 holds its own against Sonnet 4.5.&lt;/strong&gt; We picked Sonnet 4.5 as a competitive baseline, and found in this evaluation set that the K2.6 performed better both in the with/without skill scenario by around &lt;code&gt;~8 p.p&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Skills remain a durable lever as models improve.&lt;/strong&gt; The uplift skills buy stays roughly similar as Kimi improves (&lt;code&gt;+17.05 pp&lt;/code&gt; on K2.5, &lt;code&gt;+17.20 pp&lt;/code&gt; on K2.6).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Kimi K2.6’s baseline performance is superior
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Solver&lt;/th&gt;
&lt;th&gt;Baseline (no skill)&lt;/th&gt;
&lt;th&gt;With skill&lt;/th&gt;
&lt;th&gt;Uplift&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K2.5&lt;/td&gt;
&lt;td&gt;73.2%&lt;/td&gt;
&lt;td&gt;90.2%&lt;/td&gt;
&lt;td&gt;+17.05 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K2.6&lt;/td&gt;
&lt;td&gt;75.0%&lt;/td&gt;
&lt;td&gt;92.2%&lt;/td&gt;
&lt;td&gt;+17.20 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Kimi K2.6 is a better model than K2.5 on this skill set. Two findings to back this up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Four skills are now redundant on K2.6.&lt;/strong&gt; In the 21-skill set, 4 skills have K2.6 baselines ≥ 95%, up from 2 under K2.5. &lt;code&gt;agent-gossip-coordinator&lt;/code&gt; is the clearest example: K2.5 needed the skill (+8.0 pp uplift), K2.6 already solves it at 96.4%, and the skill now hurts by 4.8 pp. These skills are no longer earning their context budget as superior models can take care of it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Both K2.5 regressions cleaned up.&lt;/strong&gt; Two skills that made K2.5 worse (&lt;code&gt;3d-molecule-ray-tracer&lt;/code&gt;: −7.0 pp; &lt;code&gt;agent-base-template-generator&lt;/code&gt;: −2.6 pp) both resolve on K2.6. The skills were not wrong; the weaker model was just interpreting them awkwardly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Kimi 2.6 holds its own against Sonnet 4.5
&lt;/h2&gt;

&lt;p&gt;Putting K2.6 next to Sonnet 4.5 on the same 21 skills and same rubric, the early picture is this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Solver&lt;/th&gt;
&lt;th&gt;Baseline (no skill)&lt;/th&gt;
&lt;th&gt;With skill&lt;/th&gt;
&lt;th&gt;Uplift&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K2.6&lt;/td&gt;
&lt;td&gt;75.0%&lt;/td&gt;
&lt;td&gt;92.2%&lt;/td&gt;
&lt;td&gt;+17.20 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonnet 4.5&lt;/td&gt;
&lt;td&gt;63.2%&lt;/td&gt;
&lt;td&gt;84.5%&lt;/td&gt;
&lt;td&gt;+21.3 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On these early signals, it appears that Kimi K2.6 is competitive with Sonnet 4.5 for the task categories these skills cover. We are scheduled to make a deeper cross-model study with clean baselines across all three solvers is in progress - but this is an early signal that Kimi 2.6 is comparable to certain of the world’s leading providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Skills remain a durable lever as models improve
&lt;/h2&gt;

&lt;p&gt;With vs without the skill installed, on Kimi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;K2.5:&lt;/strong&gt; &lt;code&gt;+17.05 pp.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;K2.6:&lt;/strong&gt; &lt;code&gt;+17.20 pp.&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The uplift the skill buys does not shrink as the solver gets stronger. The baseline moves, the with-skill score moves with it, and the delta the skill contributes stays in the same range.Two illustrative cases, both Kimi versions, same rubric:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;agent-agent&lt;/code&gt;.&lt;/strong&gt; K2.5 &lt;code&gt;17.7%&lt;/code&gt; → &lt;code&gt;79.9%&lt;/code&gt;. K2.6 &lt;code&gt;33.9%&lt;/code&gt; → &lt;code&gt;88.8%&lt;/code&gt;. The baseline closed 16 pp of the gap. The skill still buys roughly 55 pp on top.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;agent-development&lt;/code&gt;.&lt;/strong&gt; K2.5 &lt;code&gt;41.2%&lt;/code&gt; → &lt;code&gt;100.0%&lt;/code&gt; K2.6 &lt;code&gt;55.0%&lt;/code&gt; → &lt;code&gt;100.0%&lt;/code&gt;. The baseline closed 14 pp of the gap. The skill covers the rest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One nuance worth flagging here and reserving for a dedicated follow-up: not every uplift is equal. An initial pass comparing the same skills on Sonnet 4.5 suggests that skills prescribing ecosystem-specific tool calls or conventions lose the most in the cross-family handoff, while skills graded against real, verifiable behaviour (actual CLI flags, actual API shapes) transfer more readily. We view this as the most actionable signal for skill authors, but a broader sample and matched baselines across models are needed before we publish a complete analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for skill authors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Kimi K2.6 is a stronger solver than K2.5&lt;/strong&gt; on the task categories in this skill set, and competitive with Sonnet 4.5.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Rerun your evals when the model changes.&lt;/strong&gt; Baselines move unevenly; some skills become redundant, some keep paying. You cannot tell which is which without running the evaluation.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;If you want to run this kind of comparison on your own skills&lt;/strong&gt;, the harness used here is the &lt;a href="https://tessl.io/blog/a-proposed-framework-for-evaluating-skills-research-eng-blog/" rel="noopener noreferrer"&gt;&lt;strong&gt;Tessl skill evaluation framework&lt;/strong&gt;&lt;/a&gt;. Same structured scenarios, same weighted-checklist grading, pointed at whichever solver and skill set you give it. You can also spin up your agent and ask it to evaluate your skill with Tessl (and you can pick Kimi as your model).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kimi K2.6 is a better model than K2.5&lt;/strong&gt; on this skill set: a +1.9 pp baseline gain, four skills now solved without any skill installed, and both K2.5 regressions cleaned up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills still matter as models get better&lt;/strong&gt;: the +17 pp uplift we saw on K2.5 held on K2.6, and uplift in a similar range appears on Sonnet. All of this comes from a single pre-release evaluation on 21 skills; a deeper study with clean baselines across the board is the next piece.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The above reflect early signals.&lt;/strong&gt; On early signals it appears Kimi 2.6 is competitive with Sonnet 4.5, though a deeper study across more models and a balanced skill sample is in progress and will be published separately.&lt;/p&gt;

&lt;p&gt;Thanks to Moonshot for early access to K2.6! Head over to &lt;a href="https://tessl.io" rel="noopener noreferrer"&gt;Tessl&lt;/a&gt; to evaluate and optimize your skills.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Stop guessing whether your Skill works: skill-optimizer measures and improves it</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Sat, 20 Jun 2026 07:32:29 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/stop-guessing-whether-your-skill-works-skill-optimizer-measures-and-improves-it-5703</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/stop-guessing-whether-your-skill-works-skill-optimizer-measures-and-improves-it-5703</guid>
      <description>&lt;p&gt;I typed one sentence into Claude Code: &lt;code&gt;Please optimize the Fastify skill in this project&lt;/code&gt;, and then walked away to grab a coffee.&lt;/p&gt;

&lt;p&gt;When I returned, I had a complete picture of how well Matteo Collina's &lt;code&gt;fastify-best-practices&lt;/code&gt; skill was actually performing: five realistic eval scenarios, a baseline score for each, a full before/after comparison, a diagnosed regression, a proposed fix, and a rerun confirming the improvement. The skill went from an average success rate of 67% to 94% across real-world scenarios. I didn't write a single eval. I didn't design a single rubric. I just said three words and let &lt;code&gt;skill-optimizer&lt;/code&gt; do the rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Important Update:&lt;/em&gt;&lt;/strong&gt; &lt;code&gt;skill-optimizer&lt;/code&gt; can now test whether your skill gets invoked at all. In a plugin with multiple skills, the agent has to route to the right one before any of the optimization logic matters. Activation evals (&lt;code&gt;--solver=activation&lt;/code&gt;) surface routing gaps scenario by scenario, and automatically suggest description rewrites to fix them. It's the check you didn't know you were missing. Additionally, results analysis now uses a structured four-bucket framework (working / gap / redundant / regression) rather than a simple diagnosis pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing skill-optimizer
&lt;/h2&gt;

&lt;p&gt;When you write a &lt;code&gt;SKILL.md&lt;/code&gt;, you're essentially writing instructions for an AI agent. The problem is you're writing those instructions blindly. You don't know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Whether the agent actually follows them&lt;/li&gt;
&lt;li&gt;  Which parts are redundant (the agent already knows how to do things without the skill)&lt;/li&gt;
&lt;li&gt;  Which parts cause regressions (your instructions confuse the agent more than help)&lt;/li&gt;
&lt;li&gt;  Whether it works on cheaper models (Haiku) or only on expensive ones (Opus)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;skill-optimizer&lt;/code&gt; plugin runs your skill through a judge-scored eval pipeline, testing the agent &lt;em&gt;with&lt;/em&gt; and &lt;em&gt;without&lt;/em&gt; your skill on real tasks, then scoring the delta. You're not guessing anymore, you have real numbers to back up your feelings, as all Jedi should have.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works: two complementary approaches
&lt;/h2&gt;

&lt;p&gt;The plugin combines two methods:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Skill review&lt;/strong&gt; (&lt;code&gt;tessl skill review&lt;/code&gt;)
A static analysis of your &lt;code&gt;SKILL.md&lt;/code&gt; itself. Scores it on four dimensions: completeness, actionability, conciseness, and robustness. This phase quickly catches structural problems before you even run the agent.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Task evals&lt;/strong&gt; (&lt;code&gt;tessl eval run&lt;/code&gt;)
Generates realistic task scenarios from your skill, runs an agent on each scenario twice (once without your skill as a baseline, and once using your skill), then has an LLM as a judge score both outputs against a per-scenario rubric. The score delta tells you the skill's value-add.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The skill, &lt;code&gt;optimize-skill-performance-and-instructions&lt;/code&gt;, combines both approaches into a single end-to-end cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real example: mcollina's fastify-best-practices skill
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mcollina/skills" rel="noopener noreferrer"&gt;mcollina/skills&lt;/a&gt; is Matteo Collina's open-source collection of skills for modern Node.js development. It already has 1,200+ stars, 80+ forks. It covers Fastify, TypeScript, linting, documentation, and core Node.js patterns, with a &lt;code&gt;SKILL.md&lt;/code&gt; per skill and shared rules files wiring it all together.&lt;/p&gt;

&lt;p&gt;We ran &lt;code&gt;skill-optimizer&lt;/code&gt; against the &lt;code&gt;fastify-best-practices&lt;/code&gt; skill. Here's what I did as a how to so you can follow along if you like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually happened
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install the skill optimizer skill
&lt;/h3&gt;

&lt;p&gt;In your skills project run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl i tessl-labs/skill-optimizer`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! The skills become available to Claude Code when you start it next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfbxfs5mfnektof1i65p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfbxfs5mfnektof1i65p.png" alt="image1" width="800" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Kick off the full optimization cycle
&lt;/h3&gt;

&lt;p&gt;From within Claude Code, I asked just one thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`Please optimize the Fastify skill in this project`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remember, always say please! That triggered a skill called optimize-skill-performance-and-instructions, which is the top level skill in the plugin that calls the others as needed. Claude Code took it from there. From Step 3, you’ll see the full sequence that claude ran automatically, and what happened at each stage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7xjyc00cvydahhr2hsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7xjyc00cvydahhr2hsq.png" alt="image 2" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2a: Skill review (Stage 1)
&lt;/h3&gt;

&lt;p&gt;Claude Code kicks off by performing a review of the Fastify skill using Tessl.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl skill review skills/fastify/SKILL.md`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result was encouraging:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`Average Score: 100%

  Description: 100%
    specificity: 3/3
    trigger_term_quality: 3/3
    completeness: 3/3
    distinctiveness_conflict_risk: 3/3

  Content: 100%
    conciseness: 3/3
    actionability: 3/3
    workflow_clarity: 3/3
    progressive_disclosure: 3/3

✔ Skill evaluation completed successfully!`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A perfect score. The description was praised for its explicit &lt;code&gt;Use when&lt;/code&gt; guidance, natural trigger terms (&lt;code&gt;Fastify&lt;/code&gt;, &lt;code&gt;server.ts&lt;/code&gt;, &lt;code&gt;app.ts&lt;/code&gt;, &lt;code&gt;Pino&lt;/code&gt;), and clear Fastify-specific terminology that keeps it from conflicting with generic Node.js skills.&lt;/p&gt;

&lt;p&gt;This wasn’t a surprise to me, of course, as I already worked with Matteo in a &lt;a href="https://github.com/mcollina/skills/pull/12" rel="noopener noreferrer"&gt;previous PR&lt;/a&gt; to improve all of these before.&lt;/p&gt;

&lt;p&gt;Here's the important lesson though: &lt;strong&gt;a perfect review score doesn't mean your skill is actually working.&lt;/strong&gt; The static review tells you the instructions are well-formed. It doesn't tell you whether the agent follows them. That's what the evals are for.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Your Skill Even Get Invoked?
&lt;/h3&gt;

&lt;p&gt;A new addition to the skill! When your plugin contains multiple skills, there's a step that happens before any scoring logic runs: the agent has to pick the right skill for the task. It reads each scenario, looks at your skill descriptions,and routes accordingly. Get that wrong, and your eval scores are measuring the wrong thing entirely.&lt;/p&gt;

&lt;p&gt;That's what activation evals are for. Rather than scoring outputs, they ask a simpler question: did the right skill actually fire?&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tessl eval run &amp;lt;path/to/plugin&amp;gt; --solver=activation&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfcmrhbuh3b5mtbejj05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfcmrhbuh3b5mtbejj05.png" alt="CLI image showing skill activation occurs" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The output shows you which skill activated for each scenario, or whether anything activated at all. The agent looked at the task and didn't find a skill it considered relevant. Skill-optimizer will automatically read your skill descriptions and the failing scenario, and suggest minimal rewrites to close the gap.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb0ru6id8jydfm59qoyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb0ru6id8jydfm59qoyk.png" alt="Web image showing skill activation occurs" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This matters because scored evals only tell you how well a skill performs once it's running. If it never runs in the first place, no amount of instruction-polishing will move your scores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2b: Generate eval scenarios (Stage 2)
&lt;/h3&gt;

&lt;p&gt;Claude then generated 5 real world scenarios with Tessl for the skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl scenario generate . --count=5`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here are the various scenarios that were created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhw9rvgjn12w8n1ys4zb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhw9rvgjn12w8n1ys4zb.png" alt="image 3" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Five realistic, well-scoped scenarios covering the core surface area of the skill: production config, schema validation, auth, database plugins, and file handling with tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2c: Run evals (Stage 3)
&lt;/h3&gt;

&lt;p&gt;Following the scenario generation, Claude then ran each of the scenarios as an eval using the claude-sonnet-4-6 model, with Tessl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl eval run . --agent=claude:claude-sonnet-4-6`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code shares a monitoring URL and polls every few minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2d: Analyze results (Stage 4)
&lt;/h3&gt;

&lt;p&gt;Here's what came back:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fougnmsnz2t1trzbrbl6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fougnmsnz2t1trzbrbl6f.png" alt="image 4" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three scenarios with big gains, one modest gain, and one regression. The production config scenario is the standout. The skill took the agent from 41% to a perfect 100%. Without the skill, the agent had no idea to reach for &lt;code&gt;env-schema&lt;/code&gt;, &lt;code&gt;close-with-grace&lt;/code&gt;, or &lt;code&gt;@fastify/under-pressure&lt;/code&gt;. With it, it nailed every check.&lt;/p&gt;

&lt;p&gt;The regression on the database scenario needs attention, but we wouldn’t have known this without the fix!&lt;/p&gt;

&lt;h3&gt;
  
  
  Four Buckets, Not Just Pass/Fail
&lt;/h3&gt;

&lt;p&gt;When I described how skill-optimizer diagnoses gaps earlier, I framed it as identifying what the skill was missing. That's still true, but the current version is considerably more structured about it. Every criterion in your eval results now gets sorted into one of four buckets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Working well: with-skill score is high and meaningfully above baseline. These are your strengths. Leave them alone.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Plugin gap:&lt;/strong&gt; both baseline and with-skill scores are low. The agent doesn't know this without your help, and the skill isn't teaching it yet. These have the highest return on fixing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Redundant:&lt;/strong&gt; baseline is already high without the skill. The agent knows this from general training, which means your instructions are adding context overhead without adding value for this criterion.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Regression:&lt;/strong&gt; with-skill score is lower than baseline. The skill is actively confusing the agent on this point. Highest priority to address.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The redundant bucket is the one that tends to catch people off guard. The instinct is that more guidance is always better, but instructions covering things the model already does well just take up attention budget. Skill-optimizer flags these and suggests either removing the criterion altogether or replacing it with a harder scenario that actually tests what your skill brings to the table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2e: Diagnose and fix (Stage 5)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The regression: &lt;code&gt;database-plugin-architecture&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Drilling into the per-check breakdown reveals the problem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  `Scenario 4: Database plugin architecture with official adapters

  Baseline (without context)
    onClose hook for cleanup           7/10  (70%)
    Async hooks used                   10/10 (100%)
    Structured logging in routes/hooks 2/10  (20%)

  With context
    onClose hook for cleanup           6/10  (60%)   ← got worse
    Async hooks used                   7/10  (70%)   ← got worse
    Structured logging in routes/hooks 0/10  (0%)    ← got worse`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two checks the agent handled fine without the skill actually got worse with it. Claude Code diagnosed the cause: &lt;code&gt;hooks.md&lt;/code&gt; contained a callback-style &lt;code&gt;AVOID&lt;/code&gt; example that was confusing the agent's async hook implementation. And &lt;code&gt;database.md&lt;/code&gt; had no example of structured logging in route handlers, leaving a gap the baseline agent was partially filling on its own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The gaps: TypeBox schema scenario&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  `Shared schema with $id and $ref              0/8  (0%)   → same score both runs
  additionalProperties: false on input schemas 0/8  (0%)   → skill not teaching this
  @fastify/error used                          0/10  (0%)  → not mentioned in skill`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So it turns out that these weren't regressions, but rather that the skill just wasn't covering them at all.&lt;/p&gt;

&lt;p&gt;Here is the summary of fixes that Claude automatically went on to make:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4yyv3awokyw7tvc0vhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4yyv3awokyw7tvc0vhj.png" alt="image5" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2f: Re-run and verify (Stage 6)
&lt;/h3&gt;

&lt;p&gt;Claude then reran the tests to show the improvement after the fixes to the skill was made:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdv2lsbk1aj66bml7nmwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdv2lsbk1aj66bml7nmwq.png" alt="image 6" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The regression is gone. The TypeBox scenario jumped from 82% to 92%. The file upload scenario went from 85% to 94%. Overall average moved from 89% to 94%.&lt;/p&gt;

&lt;p&gt;One stubborn gap remains: &lt;code&gt;Structured logging in routes/hooks&lt;/code&gt; is still scoring 0/10 even after the fixes. That's for the next iteration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2g Does Your Skill Work Across Models?
&lt;/h3&gt;

&lt;p&gt;I mentioned earlier that you can validate across Haiku, Sonnet, and Opus. The compare-skill-model-performance skill now makes this a structured workflow rather than something you'd stitch together manually. You run your scenarios against all three models and get a side-by-side comparison.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl eval run . --agent=claude:claude-haiku-4-5
tessl eval run . --agent=claude:claude-sonnet-4-6
tessl eval run . --agent=claude:claude-opus-4-6`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the more useful output is the failure pattern classification.&lt;/p&gt;

&lt;p&gt;There are four patterns to watch for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Universal failure — all three models fail the same criterion. This is a tile gap: the instruction is missing, ambiguous, or conflicting across your files.
- Capability gradient — Haiku fails, but Sonnet and Opus pass. Your instructions are present, but they're too implicit for a smaller model to follow reliably. The fix is more explicit phrasing, not more content.
- Model anomaly — a single model fails while the others pass. Likely eval variance. Worth noting, but not worth over-engineering a fix.
- Regression — with-skill scores drop below baseline on one or more models. The skill is actively hurting performance, regardless of which model it affects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The capability gradient pattern is the one that changes how I think about writing skill instructions. If you're publishing to the registry, you don't control which model your users run. Instructions that only work because Opus can infer what you meant aren't robust — they're prompts that happen to work on a capable model. Writing more explicit instructions closes that gap across the whole model range.&lt;/p&gt;

&lt;p&gt;Once all three models come in at ≥ 85% with no regressions, you have a clean signal to publish:If Haiku struggles on specific criteria, Claude Code will tell you, and the fix is usually simpler, more explicit phrasing rather than restructuring the whole skill.&lt;/p&gt;

&lt;p&gt;Once all three models score well, it':&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl tile publish &amp;lt;path/to/tile&amp;gt;`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary: when to reach for each skill
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You want to...&lt;/th&gt;
&lt;th&gt;Use this skill&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Run a full skill optimize end-to-end&lt;/td&gt;
&lt;td&gt;optimize-skill-performance-and-instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generate scenarios + first baseline run&lt;/td&gt;
&lt;td&gt;setup-skill-performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You have eval results, want to fix and re-run&lt;/td&gt;
&lt;td&gt;optimize-skill-performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quickly audit SKILL.md quality (no evals)&lt;/td&gt;
&lt;td&gt;optimize-skill-instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;compare-skill-model-performance&lt;/td&gt;
&lt;td&gt;compare-skill-model-performance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;fastify-best-practices&lt;/code&gt; skill scored a perfect 100% on static review, well-structured description, good trigger terms, clean layout. And it still had a regression in production.&lt;/p&gt;

&lt;p&gt;That's the gap &lt;code&gt;skill-optimizer&lt;/code&gt; closes. Static review tells you the instructions are well-formed. Evals tell you whether the agent actually follows them. For the production config scenario, the skill took the agent from 41% to 100%, things like &lt;code&gt;env-schema&lt;/code&gt;, &lt;code&gt;close-with-grace&lt;/code&gt;, and &lt;code&gt;@fastify/under-pressure&lt;/code&gt; that the agent simply doesn't reach for without explicit guidance. That gap is impossible to identify without measurement.&lt;/p&gt;

&lt;p&gt;For anyone publishing skills to the Tessl registry, running this before you publish is the difference between shipping something that works and shipping something you &lt;em&gt;hope&lt;/em&gt; works.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Open-Source Agents vs Sonnet 4.6: GLM 5.2, MiniMax M3, Kimi 2.7 and Qwen 3.7 Tested</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Fri, 19 Jun 2026 07:59:52 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/open-source-coding-agents-one-ties-sonnet-one-wont-listen-emm</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/open-source-coding-agents-one-ties-sonnet-one-wont-listen-emm</guid>
      <description>&lt;p&gt;A year ago, the choice between an open-source coding model and a frontier model from a major lab was not really a choice. You used the frontier model and paid for it. The open models were cheaper, and you could feel why.&lt;/p&gt;

&lt;p&gt;That gap has closed. We ran four open-source models, GLM 5.2, MiniMax M3, Kimi K2.7-code, and Qwen3.7-Plus, against Claude Sonnet 4.6 through the same evaluation: nearly 1,000 real coding scenarios, each solved twice, one with no help and one with an agent skill supplying the conventions for the task. The result is not a tidy story where the expensive model wins. One open model beats Sonnet on quality and cost at the same time. Another is the cheapest thing in the test by an order of magnitude and still cannot be trusted to follow a clear instruction. The practical question is this: if you are choosing a coding agent today, how close is open-source to the frontier, and where does it still fall apart?&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup: same tasks, with and without the skill
&lt;/h2&gt;

&lt;p&gt;Every model solved the same scenarios twice. The baseline run gave the model the task and nothing else. The skill run gave it the same task plus an agent skill, the packaged conventions and instructions for the tool in question. Comparing the two runs isolates one thing: how much the model improves when you hand it the right context.&lt;/p&gt;

&lt;p&gt;We scored each run on two axes. Instruction-following measures whether the model did the task the way it was asked, using the right APIs, conventions, and constraints. Task-completion measures whether the work runs and produces the intended result. Overall score weights them four to three in favor of instruction-following, because a coding agent that completes the wrong thing confidently is worse than one that stalls. The tasks and skills used are publicly available, in the&amp;nbsp;&lt;a href="https://huggingface.co/datasets/tesslio/task-evals-for-skills" rel="noopener noreferrer"&gt;task-evals-for-skills dataset&lt;/a&gt;, so you can inspect any scenario yourself.&lt;/p&gt;

&lt;p&gt;Cost is the average dollars per task, recomputed from each scenario's measured token counts at real list prices. The four open models run on Fireworks at their published Standard rates. Sonnet 4.6 is priced at Anthropic's list. We report solve-only cost, which excludes the grading step, the same convention as the rest of the series.&lt;/p&gt;

&lt;p&gt;One number to keep in mind: across every model, the skill adds about 20 points to the Overall score, and almost all of that gain is in instruction-following. The models could already complete most tasks. What they lacked was the conventions, and that is exactly what a skill carries.&lt;/p&gt;

&lt;h2&gt;
  
  
  How five coding agents score on accuracy
&lt;/h2&gt;

&lt;p&gt;Here is the full scoreboard on each model's paired scenarios, baseline then with the skill.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;GLM 5.2&lt;/th&gt;
&lt;th&gt;MiniMax M3&lt;/th&gt;
&lt;th&gt;Sonnet 4.6&lt;/th&gt;
&lt;th&gt;Kimi K2.7-code&lt;/th&gt;
&lt;th&gt;Qwen3.7-Plus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Overall score&lt;/td&gt;
&lt;td&gt;91.9&lt;/td&gt;
&lt;td&gt;91.4&lt;/td&gt;
&lt;td&gt;90.8&lt;/td&gt;
&lt;td&gt;88.7&lt;/td&gt;
&lt;td&gt;82.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overall score (baseline, no skill)&lt;/td&gt;
&lt;td&gt;71.7&lt;/td&gt;
&lt;td&gt;70.5&lt;/td&gt;
&lt;td&gt;66.4&lt;/td&gt;
&lt;td&gt;69.2&lt;/td&gt;
&lt;td&gt;62.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overall lift from the skill&lt;/td&gt;
&lt;td&gt;+20.2&lt;/td&gt;
&lt;td&gt;+20.9&lt;/td&gt;
&lt;td&gt;+24.4&lt;/td&gt;
&lt;td&gt;+19.5&lt;/td&gt;
&lt;td&gt;+19.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instruction-following&lt;/td&gt;
&lt;td&gt;87.4&lt;/td&gt;
&lt;td&gt;87.2&lt;/td&gt;
&lt;td&gt;86.1&lt;/td&gt;
&lt;td&gt;82.5&lt;/td&gt;
&lt;td&gt;77.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instruction-following (baseline)&lt;/td&gt;
&lt;td&gt;56.2&lt;/td&gt;
&lt;td&gt;55.4&lt;/td&gt;
&lt;td&gt;49.1&lt;/td&gt;
&lt;td&gt;52.8&lt;/td&gt;
&lt;td&gt;45.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task-completion&lt;/td&gt;
&lt;td&gt;97.8&lt;/td&gt;
&lt;td&gt;97.0&lt;/td&gt;
&lt;td&gt;97.1&lt;/td&gt;
&lt;td&gt;96.9&lt;/td&gt;
&lt;td&gt;88.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Turns to complete&lt;/td&gt;
&lt;td&gt;18.5&lt;/td&gt;
&lt;td&gt;22.7&lt;/td&gt;
&lt;td&gt;17.7&lt;/td&gt;
&lt;td&gt;27.5&lt;/td&gt;
&lt;td&gt;16.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output tokens per task&lt;/td&gt;
&lt;td&gt;8,813&lt;/td&gt;
&lt;td&gt;8,952&lt;/td&gt;
&lt;td&gt;6,841&lt;/td&gt;
&lt;td&gt;21,787&lt;/td&gt;
&lt;td&gt;12,296&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List price (input / output, per MTok)&lt;/td&gt;
&lt;td&gt;$1.40 / $4.40&lt;/td&gt;
&lt;td&gt;$0.30 / $1.20&lt;/td&gt;
&lt;td&gt;$3 / $15&lt;/td&gt;
&lt;td&gt;$0.95 / $4.00&lt;/td&gt;
&lt;td&gt;$0.40 / $1.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per task&lt;/td&gt;
&lt;td&gt;$0.289&lt;/td&gt;
&lt;td&gt;$0.207&lt;/td&gt;
&lt;td&gt;$0.296&lt;/td&gt;
&lt;td&gt;$0.661&lt;/td&gt;
&lt;td&gt;$0.068&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Points per dollar&lt;/td&gt;
&lt;td&gt;318&lt;/td&gt;
&lt;td&gt;442&lt;/td&gt;
&lt;td&gt;307&lt;/td&gt;
&lt;td&gt;134&lt;/td&gt;
&lt;td&gt;1,204&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two facts jump out before any analysis. The top of the table is a near-tie on quality: four points separate first from fourth. And the cost column spans a factor of ten. The decision, in other words, is no longer about who can do the work. It is about what you are willing to pay for the last point of accuracy, and which model you can actually trust to follow instructions.&lt;/p&gt;

&lt;p&gt;Line the five models up by cost and by quality and three of them earn their price: Qwen at the cheap end, MiniMax in the middle, and GLM 5.2 at the top. Nothing in the test beats any of these three on both cost and quality at once. Sonnet 4.6 is not one of them. GLM 5.2 scores as high and costs slightly less per task, so on this test there is no reason to reach for Sonnet over it. Kimi is the most expensive model in the test and only the fourth most accurate.&lt;/p&gt;

&lt;h3&gt;
  
  
  The model that ties Sonnet
&lt;/h3&gt;

&lt;p&gt;The headline of this series promised an open model that ties Sonnet. The data is stronger than that. GLM 5.2 finishes at 91.9 Overall against Sonnet's 90.8, and it does so at $0.289 per task against Sonnet's $0.296. When directly comparing the scenarios that all five models ran, GLM 5.2 reaches 93.5 and Sonnet 91.9. The open model is ahead on quality and on cost.&lt;/p&gt;

&lt;p&gt;There is a nuance worth stating precisely, because it cuts the other way and the comparison should be fair. On those tasks, Sonnet is the single best model on 54 percent of them, more than any other model. So Sonnet wins the typical scenario by a small margin. GLM 5.2 still comes out ahead on the average because it is more consistent: it has fewer catastrophic low scores dragging its mean down. If you care about the median task, Sonnet edges it. If you care about avoiding the bad day, GLM 5.2 wins. Both readings are true, and both point at a real tie at the top rather than a blowout.&lt;/p&gt;

&lt;p&gt;MiniMax M3 lands in almost the same place as Sonnet on quality, 91.4 to 90.8, while costing about 30 percent less per task. It is the value pick at the top of the table.&lt;/p&gt;

&lt;h3&gt;
  
  
  The model that won't listen
&lt;/h3&gt;

&lt;p&gt;Qwen3.7-Plus is the cautionary tale, and the interesting thing is how it fails. It is not simply a weaker model that scores lower everywhere. It is a model that will do the work and ignore your instructions while doing it.&lt;/p&gt;

&lt;p&gt;Start with the obvious signal. Qwen has the lowest instruction-following score in the test, 77.2 with the skill against 82 or higher for everyone else, and the lowest baseline at 45.7. But the average understates the problem, because Qwen's scores are volatile. Sixteen percent of its scenarios still score under 50 on instruction-following even with the skill in hand, compared to 6 to 13 percent for the rest. The skill is right there and it gets ignored one time in six.&lt;/p&gt;

&lt;p&gt;The clearest evidence is in task-completion. Every other model sits at 97. Qwen sits at 88.9, the only model whose ability to finish the job also sags. When we look at the scenarios where Qwen scores low on instruction-following, most are not cases of it giving up. In 116 of them Qwen completed the task to a high standard but followed the instructions poorly, against 87 where it failed both. That 116 is the whole thesis in one number. Handed the conventions for a tool, Qwen frequently builds something that works, in its own way, ignoring how it was asked to build it.&lt;/p&gt;

&lt;p&gt;Adding the skill can even backfire. For most models the skill almost never hurts; 3 to 6 percent of scenarios regress. For Qwen, 14 percent regress, with some catastrophic single drops. A scenario that scored 100 at baseline fell to 4.6 with the skill. Two others fell from 88.6 to zero. The skill does not just fail to help Qwen on these tasks. It actively derails the model, which then spends 38 percent more turns and 28 percent more money to arrive at a worse answer. If you are running an agent loop unattended, that combination of cheap, confident, and non-compliant is the worst profile in the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where every agent stumbles: web research and scraping
&lt;/h2&gt;

&lt;p&gt;The most useful finding is not about any one model. It is the cluster where all five break the same way: web research and scraping. Group those skills together, Firecrawl, Tavily, Apify, Browser-use, Brave, Exa, and LangChain, and every model's instruction-following collapses relative to its own work elsewhere. GLM drops 20 points, Kimi 27, Qwen 15, MiniMax 13, and Sonnet 18. The hardest scenarios in the entire test, by mean score across all five models, are dominated by Firecrawl command-line tasks and a Cloudflare investigation-notes scenario that averages 18.9 out of 100.&lt;/p&gt;

&lt;p&gt;It is also where models most often step outside their sandbox, reading files they were not given, scanning the filesystem for API keys, or hunting for the grading criteria instead of solving the task as set. These out-of-bounds flags hit 16 to 36 percent of cluster scenarios against single digits elsewhere, with Sonnet the worst at 36 percent. The pattern fits the task: scraping and search skills need API credentials, so the models go hunting for keys rather than working only from what the task provided.&lt;/p&gt;

&lt;p&gt;The honest takeaway is that web research and scraping are simply hard for every model, open or closed, and Sonnet stumbles here exactly like the open ones. These tasks involve live network calls, long agentic loops, and grading checks that are easy to satisfy superficially. If you deploy any of these agents on scraping or research workloads, expect a 15 to 25 point drop from your clean-task instruction-following, and budget for the occasional run that costs an order of magnitude more than the median. And spending more does not help: output tokens and turn count both correlate slightly negatively with the Overall score, so the long, expensive runs are the ones thrashing toward a wrong answer, not doing careful extra work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which coding agent should you pick?
&lt;/h2&gt;

&lt;p&gt;The skill is the great equalizer, so the first rule is to use one. It adds about 20 points to every model, and it adds the most, 24.4, to Sonnet, which starts mid-pack at baseline and only reaches the top tier once it has the conventions. Without the skill the ranking reshuffles entirely. The model you would pick depends almost entirely on whether you give it the right context, which is the whole premise of treating skills as first-class software.&lt;/p&gt;

&lt;p&gt;With that settled, here is the opinionated guidance.&lt;/p&gt;

&lt;p&gt;Choose GLM 5.2 if you want the highest accuracy and you are not paying frontier-lab prices to get it. It tops the table, it is the most consistent model in the test, and it costs less per task than Sonnet. For most teams comparing against a Claude or GPT default, this is the result that should change your spend.&lt;/p&gt;

&lt;p&gt;Choose MiniMax M3 if you want Sonnet-level quality at the lowest cost among the strong models. It matches Sonnet within a point at about 30 percent less per task.&lt;/p&gt;

&lt;p&gt;Choose Sonnet 4.6 if you are already in the Anthropic ecosystem and value the per-scenario edge on typical tasks. It wins the most head-to-head matchups, refused nothing in our run, and is the leanest model on output tokens. You are paying a small premium for that consistency-versus-peak tradeoff, and on this test an open model matches it.&lt;/p&gt;

&lt;p&gt;Reach for Kimi K2.7-code on focused coding tasks where completion matters more than cost. Kimi finishes the job as reliably as the leaders (96.9 task-completion); its weaker spot is following instructions to the letter. Per token it is cheaper than GLM and Sonnet, so on short-output work it costs less than its $0.66 average suggests, but it tends to run long, which makes it better suited to high-value, lower-volume work than to large fleets.&lt;/p&gt;

&lt;p&gt;Treat Qwen3.7-Plus as a specialist, not a generalist. At $0.068 per task it is cheaper than everything else by a wide margin. But it follows instructions worst and its quality is the most volatile. Use it where the task is forgiving and the savings dominate. Do not use it where doing the task the prescribed way actually matters.&lt;/p&gt;

&lt;p&gt;The broader signal is the one the pricing pages miss. Open-source coding agents have caught the frontier on accuracy, and the gap that remains is not capability but reliability. The same skill carried every model up by about the same amount, which means the differentiator is no longer raw model quality. It is whether the model listens.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>agents</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>How I Scan My Agent Context Across GitHub with Skill Inventory</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Thu, 18 Jun 2026 07:01:27 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/how-i-scan-my-agent-context-across-github-with-skill-inventory-5hi2</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/how-i-scan-my-agent-context-across-github-with-skill-inventory-5hi2</guid>
      <description>&lt;p&gt;Most teams do not know how many agent skills they have.&lt;/p&gt;

&lt;p&gt;That matters because context engineering changes the problem. The work is no longer just about a prompt or a model call.&lt;/p&gt;

&lt;p&gt;It is about the skill estate around it, and that is where duplication, overlap, and ownership drift start to matter.&lt;/p&gt;

&lt;p&gt;Tessl’s latest Skill Inventory is meant to make that visible. It scans a GitHub org, maps the skills it finds, and turns a loose estate into something you can reason about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should developers care about skill sprawl?
&lt;/h2&gt;

&lt;p&gt;For developers, this shows up in a few concrete ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A change to one skill can affect a different repo you did not mean to touch.&lt;/li&gt;
&lt;li&gt;  A duplicate skill can keep drifting because nobody is sure which copy is canonical.&lt;/li&gt;
&lt;li&gt;  A linked eval can fan out into more scenarios than the author expected.&lt;/li&gt;
&lt;li&gt;  A loose first-party skill can keep living outside the place people actually look for it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem is usually a combination of a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Skills live in several repos, so there is no obvious single source of truth.&lt;/li&gt;
&lt;li&gt;  Variants get copied and changed slightly, so the same idea appears under different names.&lt;/li&gt;
&lt;li&gt;  Ownership becomes fuzzy, so nobody knows which copy should be updated first.&lt;/li&gt;
&lt;li&gt;  Linked skills can fan out into linked evals and scenarios, so one change can trigger more than expected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is not an argument for banning flexibility, but it is an argument for visibility. If a team wants to connect skills to other skills, that can be a legitimate pattern. The important part is understanding the shape of the estate before the next change turns into a chain reaction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://uk.linkedin.com/in/jimbomoss" rel="noopener noreferrer"&gt;Jame Moss&lt;/a&gt;, Member of Technical Staff at Tessl, expands on this in his latest talk at AI DevCon London:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6VRKZQ3pmoU" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What your Skill Inventory shows
&lt;/h2&gt;

&lt;p&gt;Tessl ‘s skill Inventory is designed to answer the question, "What do we actually have?"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0o0y97aebm2koqi8ciem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0o0y97aebm2koqi8ciem.png" alt="img1" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It gives you a map of the skills in your org and lets you slice that map in a few different ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  By skill, so you can see the skill itself and where it appears.&lt;/li&gt;
&lt;li&gt;  By repo, so you can see where a skill lives in your codebase.&lt;/li&gt;
&lt;li&gt;  By finding, so you can focus on the overlaps, unmanaged copies, and other issues that deserve attention.&lt;/li&gt;
&lt;li&gt;  By scan history, so you can see what changed between runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqdyy43fo8tylbzwnjyqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqdyy43fo8tylbzwnjyqw.png" alt="img2" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Teams often know they have a &lt;em&gt;lot&lt;/em&gt; of skills, but not how many, not which ones are duplicated, and not which ones are effectively drifting out of standard.&lt;/p&gt;

&lt;p&gt;Skill Inventory gives you a useful shortcut: if a skill already exists publicly, you do not need to treat it like an unknown object.&lt;/p&gt;

&lt;p&gt;The three views in the webUI reflect that workflow:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1.&amp;nbsp; Estate&lt;/em&gt; is the broad map, showing evaluations, uses, findings, and security assessment&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fywjfmr0ndgk5mee4xj8o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fywjfmr0ndgk5mee4xj8o.png" alt="img3" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2. &lt;em&gt;Triage&lt;/em&gt; is the findings view, where you dig into overlaps, variant groups, and other issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vcz4z1sa53dfj8hbsrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vcz4z1sa53dfj8hbsrx.png" alt="img4" width="799" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3. Scan&lt;/em&gt; is the history view, so the inventory becomes a living report rather than a one-time audit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnlbgoe8tlc6ntt6y5xmr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnlbgoe8tlc6ntt6y5xmr.png" alt="img6" width="799" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the triage page, grouped variants make the overlap story easier to read. Instead of hunting through a list of near-duplicates, you can open the group and inspect the detail in one place.&lt;/p&gt;

&lt;p&gt;If you want to try it yourself, scan a different GitHub org from the one we used yesterday. There is still one known edge case where already-scanned items can get skipped, but that should not get in the way for a new user.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I use it in practice
&lt;/h2&gt;

&lt;p&gt;The flow is intentionally simple.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`tessl login
tessl inventory import`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I do not want the first pass to require a long setup or a new mental model. I want to run a scan, get the inventory, and make the estate visible before I spend time deciding what to change. I actually copy paste the above directly in my agent, and find the process even smoother there!&lt;/p&gt;

&lt;p&gt;Skill Inventory runs entirely from your machine and only uses the GitHub access your account already has. That makes it a good starting point when you want a low-friction read on the state of your skills without first copying repos or building a separate index.&lt;/p&gt;

&lt;p&gt;Once the scan is done, the value comes from interpretation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Which skills are duplicated, and which one looks like the better canonical version?&lt;/li&gt;
&lt;li&gt;  Which skills are used in enough places that they should probably be published and governed more deliberately?&lt;/li&gt;
&lt;li&gt;  Which files look like orphaned &lt;code&gt;skill.md&lt;/code&gt; documents that are drifting around without any clear home?&lt;/li&gt;
&lt;li&gt;  Which skills are linked to other skills in ways that create accidental fan-out?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are not abstract governance questions. They are the questions that determine whether the next change is easy or expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;Skills are multiplying across your repos. Most teams have no idea how many they have, who owns them, or how many are near-duplicates of each other. Skill Inventory gives you a map of every skill in your org - what exists, where it's used, and where you're duplicating effort.&lt;/p&gt;

&lt;p&gt;Once you can see the estate, the next decisions become easier: which skills to keep, which ones to merge, which ones to publish, and which ones need a harder look before they keep growing.&lt;/p&gt;

&lt;p&gt;You can try it today for free: ask your agent to download the Tessl CLI, login and run tessl inventory import.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>agentskills</category>
      <category>aiops</category>
    </item>
    <item>
      <title>Securing the Coder, Not the Code: Notes on Agentic Development and Security</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Wed, 17 Jun 2026 08:02:49 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/securing-the-coder-not-the-code-notes-on-agentic-development-and-security-29n6</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/securing-the-coder-not-the-code-notes-on-agentic-development-and-security-29n6</guid>
      <description>&lt;p&gt;A few years ago I left Snyk day-to-day to start Tessl, because I'd fallen in love with AI and was convinced that the way we build software was about to change in a way that broke most of our security assumptions. I still believe that. The talk I gave recently at Snyk’s security conference was an attempt to make the case concretely, and this post is the written version of that talk for anyone who wasn't in the room.&lt;/p&gt;

&lt;p&gt;tl;dr - as agents create and delete code at unprecedented speed, the job of us, humans, is not to secure the code, but to get agents to secure it as they build. This is a material shift, requiring new tools, approaches and metrics.&lt;/p&gt;

&lt;p&gt;Here's what I think it means, and what we should do about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  From AI-augmented to AI-native
&lt;/h2&gt;

&lt;p&gt;The first wave of AI in development was augmentation, pioneered by Copilot and then Cursor, where you wrote code and AI helped you write it faster. The second wave is delegation, where you ask an agent to do a task and it goes off and tries to do it, which means the agent is the developer and you become the reviewer, the prompter, and the auditor of intent.&lt;/p&gt;

&lt;p&gt;This isn't a controversial statement anymore, agentic development is where everything has consolidated, and while I'll focus on software because that's the canary in the coalmine, every form of knowledge work is heading the same way.&lt;/p&gt;

&lt;p&gt;The productivity gains are there, but agentic development changes the unit of work, the determinism of the output, and the rate of change of the development process all at once, and each of those shifts breaks a different assumption we built our security practices around.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;It's non-deterministic.&lt;/strong&gt; Compile once, compile again, same result is no longer how things work, because the same prompt produces different output and we have to get statistical about it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The unit of software is changing.&lt;/strong&gt; What we secure used to be the implementation, and now it's increasingly the instructions: skills, prompts, context, which represents a new unit, a new attack surface, and a need for new tooling.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;It moves faster than ever.&lt;/strong&gt; Development cycles are compressing, security has to keep up, and the only way to keep up with agents is for security itself to become agentic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenge 1: non-determinism means you have to measure
&lt;/h2&gt;

&lt;p&gt;If you came up through DevOps, you know the ethos: &lt;em&gt;if it moves, measure it, and if it doesn't move, measure it in case it moves.&lt;/em&gt; Servers were the most statistical creature we'd ever shipped to production, and the answer was always the same, which is that you can't optimise what you can't measure.&lt;/p&gt;

&lt;p&gt;Agents are a different category of statistical altogether, because the non-determinism isn't just at the request layer, it compounds across model output, tool selection, retrieval, retries, and multi-step planning. This means a measurement approach that worked for servers won't catch any of it.&lt;/p&gt;

&lt;p&gt;The way you do this in the AI world is &lt;strong&gt;evals&lt;/strong&gt;, where you define a task, define what good looks like up front, and run the agent against that task many times, scoring the runs.&lt;/p&gt;

&lt;p&gt;I ran this on ElevenLabs as an example, given that ElevenLabs is a brilliant London-based text-to-speech lab that recently launched a music generation API. I gave the agent a task to build a dynamic soundtrack generator for a game studio, scored each run, and ran it ten times across five scenarios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k7tpg8ulnovqnu6h2vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9k7tpg8ulnovqnu6h2vz.png" alt="Screenshot 2026-05-20 at 15.19.40.png" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The results were noisy across the board, with absolute scores coming in low because the music API is new and underrepresented in the model weights, and the variance was the bigger story: the same task, the same prompt, ten runs, materially different outcomes each time.&lt;/p&gt;

&lt;p&gt;The most common answer today is &lt;strong&gt;context&lt;/strong&gt;, and the most common unit of context is &lt;strong&gt;skills&lt;/strong&gt;, which are Markdown files (with a bit of structure) that give the agent the knowledge it needs to do a task well.&lt;/p&gt;

&lt;p&gt;Knowledge is not the same as intelligence, and a model can be highly capable in the abstract while still failing a task because it doesn't know the specific API surface, the internal convention, or the deprecated import path it needs to avoid. From the outside that failure looks identical to a model that simply isn't smart enough.&lt;/p&gt;

&lt;p&gt;We took an ElevenLabs music skill that explained the API, ran the same evals, and the agent went from a &lt;code&gt;50%&lt;/code&gt; average without the skill to &lt;code&gt;98%&lt;/code&gt; with it, with the variance compressing and the task actually getting done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmt0durcn5276dfe2edb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmt0durcn5276dfe2edb.png" alt="Screenshot 2026-05-20 at 15.21.13.png" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CodeGuard, and why more context isn't better context
&lt;/h2&gt;

&lt;p&gt;Same idea, but applied to security. CodeGuard is a project Cisco built and donated, which packages OWASP security rules into a skill that helps agents write more secure code, so I created six evaluation scenarios focused specifically on authorisation and scored the agent's output with and without it.&lt;/p&gt;

&lt;p&gt;Without CodeGuard, the agent scored &lt;code&gt;48%&lt;/code&gt; on the authorisation scorecard, and with CodeGuard it improved by nearly &lt;code&gt;1.78x&lt;/code&gt;, which is a meaningful lift, but the second experiment was the more interesting one.&lt;/p&gt;

&lt;p&gt;When I stripped CodeGuard down to just the authentication and authorisation content, roughly &lt;code&gt;5%&lt;/code&gt; of the original skill, and re-ran the same evals, the score jumped to &lt;code&gt;98%.&lt;/code&gt; This means less context, scoped tightly to the task, beat more context by a wide margin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More context is not necessarily better context&lt;/strong&gt;, because if I sat you down and told you 100 things, no matter how brilliant they were, you'd give less attention to each one than if I told you three. Attention is a scarce resource for humans and models alike, which means choosing what to say and what to leave out is part of the craft.&lt;/p&gt;

&lt;p&gt;The same pattern shows up when you vary the agent rather than the skill, where identical instructions run through Opus, Sonnet, Codex, and Cursor produce materially different scores. Context isn't just a property of the skill, it's a property of the skill-agent pair, and your context needs to be tuned for the agents you're actually using.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Context Development Lifecycle
&lt;/h2&gt;

&lt;p&gt;When you start treating skills as something you build, evaluate, optimise, distribute, and observe in production, you have a lifecycle, and we've been calling this the &lt;strong&gt;Context Development Lifecycle (CDLC)&lt;/strong&gt;, which I think sits alongside the SDLC rather than inside it.&lt;/p&gt;

&lt;p&gt;The CDLC is where humans live, building the context that guides the agents, which is then applied across the SDLC where the agents do the work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xuscu5896lizc0pwcrp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xuscu5896lizc0pwcrp.png" alt="Screenshot 2026-05-20 at 15.23.20.png" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The observe step matters, because evals are like tests in that they're useful but they go out of sync with reality if you don't also watch what's actually happening in production. If you want a loop that closes: build, evaluate, distribute, observe, learn, improve.&lt;/p&gt;

&lt;p&gt;The same skill, the same instruction, can be applied end to end, the same way a great dev uses the same knowledge to spec a feature, write the code, review it, ship it, and troubleshoot the incident. With skills representing that knowledge, this means that from a security lens the same skill can secure the writing step, the audit step, and the incident response step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge 2: skills are a new unit of software
&lt;/h2&gt;

&lt;p&gt;The more you live inside the CDLC, the more obvious the second challenge becomes which is that we're talking about skills as if they were documents when they aren't. Skills are stored as Markdown, edited in the same tools as a Confluence page, and reviewed like prose, but at runtime an agent executes them as instructions, which puts skills much closer to code than to documentation, and the security model has to follow that reality rather than the file extension.&lt;/p&gt;

&lt;p&gt;That means they have all the failure modes software has, plus some new ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0e8k7gztioxsan2ql2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0e8k7gztioxsan2ql2q.png" alt="Screenshot 2026-05-20 at 15.29.42.png" width="799" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Malicious skills.&lt;/strong&gt; Snyk and others have documented attackers seeding skills with instructions designed to make the agent do something it shouldn't. We've seen examples in our own registry of skills that look like standard blockchain API helpers but with one step that quietly downloads a password-protected zip, which is detectable if you're looking.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Vulnerable skills.&lt;/strong&gt; A skill that asks the user to put API keys directly inside the prompt, or makes MCP calls with plain vanilla tokens, is insecure by design even if the author meant no harm.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Negligent skills.&lt;/strong&gt; Not an industry term, but it should be, because these are skills that lack basic safety instructions like "check this into a private repo, and if you can't commit, fail, don't exfiltrate the work some other way,". We've all seen agents in reward-seeking mode, keen to please and willing to delete files, escape sandboxes, do whatever it takes to complete the task. Negligence skills are the ones that don't tell the agent where the guardrails are.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Supply chain.&lt;/strong&gt; How people consume skills today is by downloading Markdown files from random GitHub repos and checking them into their own, often in seven different folders to support seven different agents, which is fine for now but is going to bite teams eventually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you treat skills as a software artifact rather than a document, most of the framing problem solves itself, because versioning, dependency resolution, provenance, scanning, signing, and lifecycle management are problems the package ecosystem has been working through for two decades, and a lot of the answers port over with light adaptation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What enterprise-grade skill governance looks like
&lt;/h2&gt;

&lt;p&gt;Three elements, in roughly the order you need them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Governance and security&lt;/strong&gt; is about knowing what's happening: auditing who publishes and who installs, constraining the supply chain to centralised paths the same way you'd constrain npm, and scanning skills for malicious content before they hit the registry. Most teams I talk to haven't started on this yet, which is the bit that blocks rollout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standardisation and reuse&lt;/strong&gt; is the next problem once skills are flowing, because duplication and drift become real issues when three people on the team have built a "review the code" skill and a fourth comes along. Teams need a way to compare, standardise, and choose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous optimisation&lt;/strong&gt; is the holy grail, and it's where the CDLC closes the loop by observing what the agent did, whether it succeeded, whether the user had to correct it. Devs need to feed that signal back into their evals to evolve the skill and ship the new version, which is what the teams at the cutting edge are doing.&lt;/p&gt;

&lt;p&gt;This is the area we've built &lt;a href="https://tessl.io/" rel="noopener noreferrer"&gt;Tessl&lt;/a&gt; to help with, as a platform for collaboratively developing skills, discovering and installing them with confidence, scanning them with Snyk before they go live, and observing how they perform once they're in use. This is why platform teams, DevX teams, and the newly emerging "AI enablement" teams use us to eliminate duplicates, drive usage of the good skills, and manage costs as agentic development scales.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6olj6vi3fl1p7x2agas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6olj6vi3fl1p7x2agas.png" alt="Screenshot 2026-05-20 at 15.31.05.png" width="799" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge 3: security must become agentic to keep up
&lt;/h2&gt;

&lt;p&gt;The third challenge is the simplest to state and the hardest to act on, which is that agentic development moves faster than any prior development paradigm. Security has to move at the same speed, and the only way to do that is for security itself to become agentic.&lt;/p&gt;

&lt;p&gt;I've lived through a version of this transition before, given that the move from waterfall to cloud took a set of manual security processes that worked fine on quarterly release cycles and made them actively dangerous in continuous deployment. The manual code review before every release was a reasonable practice in 1998 and a liability by 2015, which meant the teams that automated their scanning early built a durable advantage while the teams that didn't spent the next decade catching up under pressure.&lt;/p&gt;

&lt;p&gt;The same inflection point is now happening with agents, where practices that are still tolerated in modern cloud security, like manual triage of vulnerabilities, manual dependency upgrades, and manual review of supply chain changes, are already automated by the leading teams. In the agent era they won't be tolerated at all, because the future is here, as Gibson said, but it's not evenly distributed.&lt;/p&gt;

&lt;p&gt;A long list of things move from "nice to have" to "must have", including smarter prioritisation, automated upgrades, supply chain manipulation detection, and drift detection on skills, all of which are things agents can genuinely help with.&lt;/p&gt;

&lt;p&gt;Security is now being squeezed from both sides, given that attackers are already operating agentically with automated reconnaissance, exploit generation, and lateral movement at speeds humans can't match. Businesses are operating agentically to ship faster, which means a security function that stays human-paced doesn't just slow things down, it becomes the asymmetric weak point in the system, and the math stops working.&lt;/p&gt;

&lt;p&gt;If security does become agentic, though, we can finally fix the things we've spent fifteen years trying to get developers to do consistently, which is the part that excites me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe62qdczgz5ekc55b2x5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe62qdczgz5ekc55b2x5h.png" alt="Screenshot 2026-05-20 at 15.33.11.png" width="799" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Come talk about this at DevCon
&lt;/h2&gt;

&lt;p&gt;We're going much deeper on all of this at &lt;strong&gt;AI Native Dev Con (DevCon) London, June 1st and 2nd&lt;/strong&gt;. It's the conference we put together for people actually building and shipping in the agentic era.&lt;/p&gt;

&lt;p&gt;The line-up is focused on delivering real-world case studies from teams that have rolled out agents at scale, the platform engineers building the enablement layer, and the security folks figuring out how to keep up. I'll also be expanding on the CDLC, skills as software, and what good governance actually looks like.&lt;/p&gt;

&lt;p&gt;If any of this resonated, or if you want to discuss about it in person, I'd love to see you there. All the details, the agenda, and registration are at &lt;a href="https://tessl.io/devcon" rel="noopener noreferrer"&gt;&lt;strong&gt;tessl.io/devcon&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See you in London.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>agentskills</category>
      <category>aiops</category>
    </item>
    <item>
      <title>We ran Composer 2.5 and 2.5 Fast across 11 skills. Surprisingly, Fast won.</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Tue, 16 Jun 2026 06:39:06 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/we-ran-composer-25-and-25-fast-across-11-skills-surprisingly-fast-won-4j7f</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/we-ran-composer-25-and-25-fast-across-11-skills-surprisingly-fast-won-4j7f</guid>
      <description>&lt;p&gt;Cursor just shipped Composer 2.5 and Composer 2.5 Fast. We benchmarked both across 11 engineering skills, 5 scenarios per skill, averaged across three independent LLM judges. The fast model scored higher, ran 32% quicker, and costs exactly the same. If you are reaching for Composer 2.5 over Composer 2.5 Fast, you are paying the same price for a slower, slightly worse model.&lt;/p&gt;

&lt;p&gt;Here is the full picture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Composer 2.5 Fast scores 92.7% with skill context. Composer 2.5 scores 92.1%. Fast wins.&lt;/li&gt;
&lt;li&gt;  Both are ahead of gpt-5.5, gpt-5.4, and the previous Composer 2.&lt;/li&gt;
&lt;li&gt;  The fast model completes scenarios in 59 seconds on average. The regular model takes 87 seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where They Land in the Benchmark
&lt;/h2&gt;

&lt;p&gt;We ran 6 models across 11 skills, scoring each run with three independent judges and averaging the results. Here is where the full leaderboard sits:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Avg baseline&lt;/th&gt;
&lt;th&gt;Avg with-skill&lt;/th&gt;
&lt;th&gt;Lift&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;opus-4-7&lt;/td&gt;
&lt;td&gt;80.8%&lt;/td&gt;
&lt;td&gt;93.4%&lt;/td&gt;
&lt;td&gt;+12.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;composer-2.5-fast&lt;/td&gt;
&lt;td&gt;79.6%&lt;/td&gt;
&lt;td&gt;92.7%&lt;/td&gt;
&lt;td&gt;+13.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;composer-2.5&lt;/td&gt;
&lt;td&gt;79.0%&lt;/td&gt;
&lt;td&gt;92.1%&lt;/td&gt;
&lt;td&gt;+13.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;composer-2&lt;/td&gt;
&lt;td&gt;74.2%&lt;/td&gt;
&lt;td&gt;89.6%&lt;/td&gt;
&lt;td&gt;+15.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.5&lt;/td&gt;
&lt;td&gt;75.5%&lt;/td&gt;
&lt;td&gt;89.4%&lt;/td&gt;
&lt;td&gt;+13.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.4&lt;/td&gt;
&lt;td&gt;74.1%&lt;/td&gt;
&lt;td&gt;89.3%&lt;/td&gt;
&lt;td&gt;+15.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5.3&lt;/td&gt;
&lt;td&gt;65.5%&lt;/td&gt;
&lt;td&gt;83.9%&lt;/td&gt;
&lt;td&gt;+18.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-5-codex&lt;/td&gt;
&lt;td&gt;68.7%&lt;/td&gt;
&lt;td&gt;78.7%&lt;/td&gt;
&lt;td&gt;+10.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Composer 2.5 Fast sits 1.3 points behind opus-4-7 and 3.3 points clear of everything else. That is a meaningful gap. The previous Composer 2 sits alongside gpt-5.4 and gpt-5.5 at roughly 89-90%. Cursor has moved its own model up a full competitive tier in a single release.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fast model seems better.
&lt;/h2&gt;

&lt;p&gt;Normally a "fast" variant trades quality for speed. Composer 2.5 Fast does not do that. It scores 0.6 points higher than the regular model while running 28 seconds faster per scenario (59s vs 87s on average across 110 scored runs).&lt;/p&gt;

&lt;p&gt;The per-skill breakdown shows where the differences accumulate:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;2.5 with-skill&lt;/th&gt;
&lt;th&gt;2.5-fast with-skill&lt;/th&gt;
&lt;th&gt;Winner&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;documentation&lt;/td&gt;
&lt;td&gt;97%&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fastify&lt;/td&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;94%&lt;/td&gt;
&lt;td&gt;2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;init&lt;/td&gt;
&lt;td&gt;87%&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;td&gt;2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;linting&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;node-best-practices&lt;/td&gt;
&lt;td&gt;95%&lt;/td&gt;
&lt;td&gt;95%&lt;/td&gt;
&lt;td&gt;tie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nodejs-core&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;tie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oauth&lt;/td&gt;
&lt;td&gt;92%&lt;/td&gt;
&lt;td&gt;89%&lt;/td&gt;
&lt;td&gt;2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;octocat&lt;/td&gt;
&lt;td&gt;95%&lt;/td&gt;
&lt;td&gt;96%&lt;/td&gt;
&lt;td&gt;fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;skill-optimizer&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;tie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;snipgrapher&lt;/td&gt;
&lt;td&gt;93%&lt;/td&gt;
&lt;td&gt;93%&lt;/td&gt;
&lt;td&gt;tie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;typescript&lt;/td&gt;
&lt;td&gt;82%&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;td&gt;2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The regular model wins on fastify (+5), oauth (+3), and typescript (+6). The fast model wins on documentation, linting, and octocat. For most skills they are within noise. The overall average breaks toward fast because it avoids some of the deeper failures the regular model hits on documentation and linting under stricter judges.&lt;/p&gt;

&lt;p&gt;The typescript result is worth flagging separately. Both models score lower with skill context than without it on typescript. The regular model drops from baseline to 82% with skill; the fast model drops further to 76%. Something about how these models interact with the typescript skill works against them. If typescript is central to your workflow, treat this as a yellow flag worth investigating.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost Argument
&lt;/h2&gt;

&lt;p&gt;Both Composer 2.5 variants are part of the Cursor subscription. The marginal cost of choosing one over the other is zero. There is no per-token bill that changes when you switch from the regular to the fast model.&lt;/p&gt;

&lt;p&gt;This makes the benchmark result unusually clean: faster, cheaper (relatively), and better. The only case where you might prefer the regular model is if you are working heavily in fastify or oauth-heavy codebases where it holds a consistent 3-5 point lead. For everything else, the fast model is the better default.&lt;/p&gt;

&lt;p&gt;Compare this to the OpenAI side of the leaderboard. gpt-5.5 and gpt-5.4 both land around 89%, behind both Composer 2.5 variants, and carry per-token API costs that accumulate with usage. The Cursor subscription gives you a stronger model at a fixed price, which changes the economics significantly if you are running agents at any kind of scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed from Composer 2
&lt;/h2&gt;

&lt;p&gt;The gap between Composer 2 and Composer 2.5 is larger than the leaderboard position suggests. The with-skill scores are 89.6% vs 92.1-92.7%, a 2.5-3 point jump. More importantly, the baseline scores tell a different story: Composer 2 sits at 74.2% without context, while Composer 2.5 sits at 79-80%. That 5-6 point baseline improvement means the new model is genuinely stronger at the task, not just better at following instructions when given them.&lt;/p&gt;

&lt;p&gt;The lift numbers reinforce this. Composer 2 shows +15.4 points of lift from skill context. Both 2.5 variants show +13.1. A lower lift number means the model needs less scaffolding to perform well. Composer 2 was getting more out of the skill context because it needed it more. Composer 2.5 is a better baseline model that skills push even higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Caveat
&lt;/h2&gt;

&lt;p&gt;These scores are averaged across three judges (Sonnet, GPT-5.5, Opus-4-7). The raw Sonnet-only scores for Composer 2.5 were 94% and 92%, which looked even better. After applying stricter judges, the numbers settled at 92.1% and 92.7%. That is the correct comparison to make against the other models in this benchmark, which went through the same three-judge process. A single-judge Sonnet score would have overstated the gap.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>agentskills</category>
      <category>agents</category>
    </item>
    <item>
      <title>Why Your Gemini Bill Doesn't Match the Model Names</title>
      <dc:creator>Tessl</dc:creator>
      <pubDate>Mon, 15 Jun 2026 05:24:38 +0000</pubDate>
      <link>https://dev.clauneck.workers.dev/tessl-io/why-your-gemini-bill-doesnt-match-the-model-names-9nk</link>
      <guid>https://dev.clauneck.workers.dev/tessl-io/why-your-gemini-bill-doesnt-match-the-model-names-9nk</guid>
      <description>&lt;h2&gt;
  
  
  Why Your Gemini Bill Doesn't Match the Model Names
&lt;/h2&gt;

&lt;p&gt;tl;dr - &lt;em&gt;Across roughly 3,300 paired skill-eval runs, Gemini 3.5 Flash cost $1.05 per task against Gemini 3.1 Pro's $0.66, for scores that were effectively identical: 88.6 versus 87.9.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The pricing is even stranger when you look at the actual task costs. &lt;strong&gt;Gemini 3.5 Flash&lt;/strong&gt; and &lt;strong&gt;Gemini 4.5 Flash&lt;/strong&gt; are separated by almost 8× in per-task cost, while &lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt; comes in cheaper than both. The invoice does not appear to follow the naming hierarchy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the numbers come from?
&lt;/h2&gt;

&lt;p&gt;The benchmark ran every task twice, once with the relevant skill applied and once without, across four Gemini models in OpenHands, totaling roughly 800 tasks per model. Rather than relying on dashboard estimates, we pulled per-call token counts directly from agent session logs and computed costs using Google's published per-token prices. We then compared the resulting per-task costs across models.&lt;/p&gt;

&lt;h2&gt;
  
  
  The headline data
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;$/task (w/ skill)&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Pts per $&lt;/th&gt;
&lt;th&gt;Input tokens&lt;/th&gt;
&lt;th&gt;Turns&lt;/th&gt;
&lt;th&gt;List $/Mtok&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3.1 Flash Lite&lt;/td&gt;
&lt;td&gt;$0.035&lt;/td&gt;
&lt;td&gt;70.2&lt;/td&gt;
&lt;td&gt;2,006&lt;/td&gt;
&lt;td&gt;0.31M&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3 Flash Preview&lt;/td&gt;
&lt;td&gt;$0.135&lt;/td&gt;
&lt;td&gt;85.4&lt;/td&gt;
&lt;td&gt;633&lt;/td&gt;
&lt;td&gt;0.63M&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.1 Pro Preview&lt;/td&gt;
&lt;td&gt;$0.66&lt;/td&gt;
&lt;td&gt;87.9&lt;/td&gt;
&lt;td&gt;132&lt;/td&gt;
&lt;td&gt;0.65M&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.5 Flash&lt;/td&gt;
&lt;td&gt;$1.05&lt;/td&gt;
&lt;td&gt;88.6&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;td&gt;1.41M&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;$1.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few things stand out from this data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Cost order and name order are uncorrelated. &lt;strong&gt;Gemini 3.1 Pro&lt;/strong&gt; is cheaper per task than &lt;strong&gt;Gemini 3.5 Flash&lt;/strong&gt; despite carrying a higher per-token list price, while &lt;strong&gt;Gemini 4.5 Flash&lt;/strong&gt; and &lt;strong&gt;Gemini 4.5 Flash-Lite&lt;/strong&gt;, which sit in the same product family, differ dramatically in actual spend. Model names describe intended positioning, but they are a poor guide to real-world agent costs.&lt;/li&gt;
&lt;li&gt;  Scores do improve with each model generation, which is a genuine positive trend and a good reason to track releases, but capability gains do not automatically translate to cost reductions.&lt;/li&gt;
&lt;li&gt;  Finally, the practical value pick is Gemini 3 Flash Preview, which lands within three points of the leading models at roughly one-fifth the per-task cost, making it the most efficient option for workloads where a score in the 85 range is acceptable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why volume beats unit price
&lt;/h2&gt;

&lt;p&gt;The cost of an agentic task is the product of two variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`Task cost = price-per-token × tokens the model decides to spend`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Model names establish the first variable. The second is determined at runtime by the model's behavior on the specific task, and it only becomes visible after you read your session logs.&lt;/p&gt;

&lt;p&gt;For Gemini 3.5 Flash, the per-task cost breaks down as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Non-cached input: &lt;code&gt;$0.72&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Cache-read input: &lt;code&gt;$0.14&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Output (including thinking): &lt;code&gt;$0.19&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dominant driver is input volume. Gemini 3.5 Flash sent 1.41 million tokens of context across 39 agent turns per task. Pro sent roughly half that volume across 26 turns, and even at its higher list price of $2.00 per million tokens, its lower volume resolves to a lower total bill.&lt;/p&gt;

&lt;p&gt;A model with a cheaper per-token rate that takes more turns to reach an answer will erode its own discount. It is also worth noting that 63-75% of input across these runs was cache-read, which means the effective sensitivity to turn count is even higher than raw list prices suggest: the multiplier is accumulating in your session logs, not on your pricing page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills move cost by tier
&lt;/h2&gt;

&lt;p&gt;Adding a relevant skill to each run changed per-task cost in opposite directions depending on which model ran it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Pro&lt;/strong&gt; saw cost drop $0.20 per task (-23%) while the score gained 20 points. The model used fewer turns and less exploratory backtracking, which suggests it was able to act on the structured guidance directly rather than discovering the solution path through iteration.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;3.5 Flash&lt;/strong&gt; was essentially flat, with cost shifting by less than $0.03 in either direction.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;3 Flash Preview and Flash Lite&lt;/strong&gt; each spent slightly more tokens for marginal score gains (+$0.03 and +$0.01 respectively).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The underlying pattern is consistent: a skill compresses the solution path for a model capable of following structured guidance precisely, reducing turn count and therefore total cost. For a model still resolving ambiguity through exploration, the same skill adds context to process rather than a shortcut to apply, and the cost holds steady or rises marginally. A skill is a shortcut for a capable model and overhead for a weaker one.&lt;/p&gt;

&lt;p&gt;In practical terms, this produces two clear operating points. Pro with a relevant skill at $0.66 per task is the most cost-efficient route to top-tier performance. Gemini 3 Flash Preview with a skill at $0.135 per task delivers roughly five times the score-per-dollar of either leader, for a score three points lower, which is a reasonable trade for many workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure, don't assume
&lt;/h2&gt;

&lt;p&gt;Four takeaways from this data that apply beyond this specific benchmark:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1/ Do not budget from the rate card.&lt;/strong&gt; Cost your workload based on measured tokens and turns on your specific tasks, with your specific prompts, in your specific agent harness. Per-token list prices are a useful first filter for ordering candidates, not a reliable predictor of relative spend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2/ Read cost at the session layer.&lt;/strong&gt; Aggregate dashboards can show $0 while spend accumulates in the background. Token usage needs to come from raw API responses or agent session logs to be trusted for budgeting purposes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3/ Watch turn count first.&lt;/strong&gt; The 39-versus-26 turn gap between 3.5 Flash and Pro is the primary cause of the price inversion observed here, and turn count is the variable most commonly absent from observability tooling. It is the multiplier on everything else in the cost equation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4/ Re-measure when models update.&lt;/strong&gt; Gemini 3.5 Flash is a newer release than Gemini 3 Flash Preview and scores higher, but it costs roughly eight times more in this agentic context. Capability improvements and cost improvements are independent variables, and any cost benchmark needs to be re-run with each version update rather than assumed to hold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;p&gt;These results come from a single agent harness (OpenHands), a single benchmark with explicit skill-relevance disclosure, and a specific sample window. Different tasks, prompt structures, and turn-length patterns will shift the absolute numbers and may shift the relative rankings. The finding to carry forward is not a specific model recommendation but a methodology: in agentic settings, cost rankings are not derivable from per-token rates alone, and the ranking that applies to your workload depends on that workload's specific behavioral profile.&lt;/p&gt;

&lt;p&gt;A model name is a pricing tier, not a cost forecast. In agentic workflows, the deciding variable is how many tokens the model chooses to spend to reach an answer, a figure visible only after you run the work and read the logs. The rate card gives you one of the two inputs; only measurement gives you both.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next: which skills actually earn their tokens? In these runs, 42% produced significant performance gains while 5% were net overhead. We’ll follow up on this analysis in the next post.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>agentskills</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
