AI Briefing/Blog
agent skills·October 10, 2026·7 min read

Agent Skills: your agent doesn't need another doc, it needs a workflow

Agent Skills explained: what loads into context and when, what SkillsBench measured, and a SKILL.md you can copy this week.

On February 16, 2026, Anson Biggs opens HN and sees this headline on the front page: “Study: Self-generated Agent Skills are useless”. Behind it is a paper called SkillsBench: 86 tasks across 11 domains, 7 agent-model combinations, 7,308 runs. Biggs gets annoyed, sits down, and writes a post with a title that leaves no room for doubt: “You’re probably using Agent Skills wrong”.

Three months later, on May 3, Addy Osmani writes that his repo, addyosmani/agent-skills, has passed 27,000 stars. So people are installing skills in bulk and arguing about them loudly. To me, that’s the best sign a term is real and not just another job title.

A folder, a file, a workflow

Anthropic created the format for Claude, and in December 2025 released it as an open standard at agentskills.io. Today it also works in OpenAI’s Codex, GitHub Copilot, VS Code and Cursor. A skill you write once runs in any client that supports the standard.

A skill is a folder with a SKILL.md file. At the top is frontmatter with two required fields: name and description. Below that are the instructions. Next to the file you can put scripts/, references/ and assets/, and the agent only touches them when the instructions tell it to.

What it isn’t: documentation. Osmani put it best:

If you put a 2,000-word essay on testing best practices into the agent’s context, the agent reads it, generates plausible-looking text, and skips the actual testing. — Addy Osmani, “Agent Skills”, May 2026

A good skill is a sequence of steps with checkpoints that produce evidence, ending in a defined exit condition. It’s also not MCP. Aerospike draws the line well: a skill describes how to think about a problem; MCP and tools do the work.

What enters the context, and when

The trick behind skills is called progressive disclosure, and in practice it’s four stages:

  1. When the agent starts, it reads only the name and description of each skill. Not the body.
  2. A task comes in. The model compares it to the descriptions and decides whether one fits.
  3. Only then is the body of SKILL.md loaded into context.
  4. Scripts and references are loaded or run only if the instructions ask for them.

Why does this matter? Because the alternative is a system prompt that keeps growing. A dev.to post describes the familiar path: a prompt that started at 200 tokens and became 5,000. Every new capability adds more instructions and more edge cases, and the agent pays for them on every message, even when they’re irrelevant. It gets slower, more expensive, and more confused. With skills you pay for one line of description per capability, and for the body only when you actually need it.

One rule follows: the description isn’t a summary, it’s the trigger. If it’s vague, the skill won’t load.

How the mechanism works
How the mechanism works
A system prompt pays for every capability on every message; a skill pays for one line of description, and for the body only when needed (dev.to, agentskills.io)
A system prompt pays for every capability on every message; a skill pays for one line of description, and for the body only when needed (dev.to, agentskills.io)

What SkillsBench found, in numbers

The paper (arXiv 2602.12670, February 2026) ran each task in three modes: no skills, human-written skills, and skills the model wrote for itself. Every task has a deterministic verifier, so there’s no “looks like it worked”.

My read: in code, the model already knows a lot, so a skill explaining how to write tests adds little. The value is in knowledge it hasn’t seen: your conventions, your gates, your internal tools. And a huge skill is a risk, not insurance.

Caveat: I agree with Biggs on one point. In the paper, self-generated means the agent writes the skill before it has even tried to solve the task, which is mostly thinking in a different format. A skill a model writes after a successful run, reviewed by a human, is an experiment the paper didn’t test.

Skills help least in code, because the model already knows the basics. The value is in your internal knowledge (SkillsBench)
Skills help least in code, because the model already knows the basics. The value is in your internal knowledge (SkillsBench)

How to write a skill that holds up

Here’s a skill you can copy and adapt. It’s built on what Osmani calls the parts that don’t show up in the diff: tests, change size, evidence.

.claude/skills/pr-ready/SKILL.md
---
name: pr-ready
description: Use before opening a pull request or when the user says "ready for review". Runs tests, checks diff size, writes the PR description.
---
# PR ready
1. Run `npm test`. If anything fails, stop and list the failing test names. Do not continue.
2. Run `git diff --stat main...HEAD`. If more than 400 lines changed, propose a split and stop.
3. Run `scripts/check_secrets.sh`. Any hit = stop and report the file.
4. Write the PR description: what changed, why, how it was tested.
Paste the exact test command and the last line of its output.
Done when: tests pass, diff <= 400 lines, no secrets, and the description contains real test output.

In Claude Code, put it in the project’s .claude/skills/, or in ~/.claude/skills/ if it’s personal. A few rules that come out of the sources:

When a skill is the wrong tool

Skillbay, which hit Show HN in September 2026, tries to solve exactly this: a skills store filtered by hand by a human. Boring, and good.

A human-curated skills store is exactly what's missing: someone who read the scripts before your agent runs them (credit: Skillbay)
A human-curated skills store is exactly what’s missing: someone who read the scripts before your agent runs them (credit: Skillbay)

What to try this week

  1. Take inventory: ls ~/.claude/skills .claude/skills. How many skills do you have, and when did anyone last read them?
  2. Pick one process you keep explaining to the agent, release notes, PR review, a migration, and write a SKILL.md for it with an exit condition.
  3. Measure like SkillsBench, just smaller: five real tasks without the skill and five with it, with an automated check that passes or fails. No difference? Delete it.
  4. If a skill has grown past a few hundred lines, split it into 2–3 files under references/. That’s what won in the paper.
  5. Before installing a skill from a public repo, cat scripts/* and look it up in the Tego index.

A skill you haven’t measured is just another 2,000 words the agent reads and skips.

Sources

  1. Agent Skills · 2026-05-04
  2. You're probably using Agent Skills wrong · 2026-06-22
  3. Show HN: Craigslist for agent skills, curated by a human · 2026-09-17
  4. Agent Skills – Open Security Database · 2026-03-16
  5. Agent Skills: One-Shot PySpark from the CLI · 2026-03-26
  6. Agent Skills Explained: What They Are, What They Aren't, and How to Use Them - DEV Community
  7. Agent Skills Explained: When to Use Them and Why They Fail | Aerospike
  8. Medium

How this was made: drafted by our agent from 8 sources, edited and approved by Koby Almog.

More terms

All terms →
3/4

ChatGPT up close: the features engineers leave switched off

Projects, memory, canvas, deep research, agent and connectors in ChatGPT: what each one does, where it breaks, and what to turn on this week.

1/5

Claude Code in Practice, Part 1: Short CLAUDE.md, Strict Permissions

The three CLAUDE.md files, auto memory, settings.json permissions, and the commands worth memorizing. Step by step, for a real team.

2/5

Claude Code in practice, part 2: hooks, MCP and skills, and what goes where

CLAUDE.md says what's required, a skill says how, MCP what's possible, a hook enforces. A PreToolUse block on main, auto-formatting, MCP, a first SKILL.md.