Reported growth from 2,179 skills on Jan 16 to 40,285 by early February.
Verify agent skills before you install them
Know what a skill does before you trust it.
Paste a public GitHub skill URL. See where it drifts from its plan and what it could reach if it runs — free, in your browser, nothing executed.
- 36.8% of 3,984 published skills carry a security flaw Snyk ToxicSkills, 2026
- 13.4% are critical-level — 534 skills Snyk ToxicSkills
- 3 lines of Markdown are enough to reach shell access Snyk threat model
- 33.6% attack success when benign skills combine Xie et al., 2026
- AST01 “Malicious Skills” — the top agentic-skill risk OWASP
Security
Constrain what a skill can reach.
Doctor tells you whether an agent will follow a skill.
skillspec boundary tells you what a skill can
reach if it does — the network hosts, file paths,
binaries, and credentials it touches — ranked by risk, then
compiles a least-privilege policy you can enforce, without changing
the skill and without executing anything in it.
It is a standalone tool: no skill.spec.yml,
no adoption of the rest of SkillSpec, and it works on a local folder
or a public git URL on any host.
- Map a collection to see its shape — skills, resources, orphan files where a payload can hide, and how skills cross-reference.
- Assess ranks what each skill can reach by severity (critical / high / medium / low), scope-aware: a skill confined to its own directory is low risk; reaching outside it — a home or absolute path, the network, another skill's files — is what earns review. Documentation examples are qualified, not counted as live effects.
- Gate the install:
skillspec pullassesses a skill or plugin before it lands on disk and installs it only on approval — across harnesses. - Constrain: compile a deny-by-default policy, and optionally enforce reviewed policies against installed skills through a managed pre-tool hook.
Static analysis: nothing in the package is executed. SkillSpec does not enforce the boundary; a harness, hook, or network policy does. See the boundary guide.
$ skillspec boundary assess https://github.com/owner/skills
Risk across 18 skills — 1 critical · 0 high · 2 medium · 11 low · 4 clean
2 skill(s) reach beyond their own directory — review before installing
├── CRITICAL plugins/pack/skills/main
│ ├── [CRITICAL] sends data to the network → exfil.example.net
│ │ └── …/main/report.py#L7
│ └── [HIGH] reads credentials → ~/.aws/credentials
│ └── …/main/report.py#L5
└── MEDIUM plugins/onboard/skills/setup
└── [MEDIUM] reads outside its directory → ~/.config/agent
Cleared — no review needed
├── 11 clean · reach nothing outside their own directory
└── 4 low · touch only their own files
Platform shift
Where we are: the boom, and its hidden tax
Skills won. They are now a shared packaging format across major agent surfaces, and the public ecosystem jumped from a small catalog into a real infrastructure layer. The cost is that every new skill also adds routing pressure, context pressure, and trust pressure.
Verified public corpus in the Agent Skills data-driven analysis.
Skills reportedly added on Jan 25 alone at the burst peak.
Listed skills share a name with at least one other skill in the analyzed catalog.
The context tax compounds
Every installed skill advertises itself before work starts. At roughly 100 tokens per skill, small libraries feel cheap; large libraries become a standing bill. Codex caps the initial skill list at 2% of context, or 8,000 characters when the window is unknown, then shortens or omits skills. Once selected, the full body is still read; the 40k-skill study reports a median body around 1,414 tokens with a heavy tail.
Discovery is already breaking
In a catalog this large, near-duplicates are normal. About 46% of listed skills share a name with at least one other skill, so the agent is asked to pick the right capability from a pile of similar names and compressed descriptions.
The trust gap becomes a security gap
A skill is prose, and prose can be skipped, reframed, or forgotten. Description-only framing selected adversarial variants in 77.6% of paired trials, and context compaction can erase safety rules and push prohibited tool actions from 0% to as high as 59%.
Sources
- Ling, Zhong & Huang, Agent Skills: A Data-Driven Analysis verifies the 40,285-skill corpus; day-by-day growth and peak figures are derived from reported analyses of that dataset.
- Microsoft Agent Skills documentation describes the advertise, load, resource, and script stages, including the roughly 100-token advertise tier.
-
OpenAI Codex Agent Skills documentation
describes initial skill-list budgeting, description shortening or
omission, and full
SKILL.mdloading after selection. - Under the Hood of SKILL.md studies semantic supply-chain attacks against skill discovery, selection, and governance.
- Governance Decay measures context-compaction failures that erase safety constraints.
- Omission Constraints Decay While Commission Constraints Persist analyzes why prohibition-style constraints decay under context pressure.
The real failure
The problem isn't weak skills, it's load-bearing prose.
The most important behavior in a good skill is buried in paragraphs: use this route, never substitute that tool, get approval before the destructive step, prove the test ran.
The model skips, reorders, or substitutes instructions it reinterprets from scratch.
The same guidance is reread and repaid on every run, even when only one step matters.
A polished final answer is not evidence that the required path, checks, or tools were used.
You do not fix that by writing better paragraphs. Keep prose for judgment, and move the must-follow parts into a small, checkable contract beside it.
Install next
Make SkillSpec your default skill path.
Install the CLI, open your agent harness, and let SkillSpec guide the first assessment from chat. From there, create, convert, route, and run skills with the same verifier-executor loop you can publish with your project.
# Terminal: install the CLI.
curl -fsSL https://skillspec.sh/install.sh | sh
# Terminal: see the harness roots SkillSpec can install into.
skillspec install targets
# Terminal, later: install a SkillSpec-backed skill everywhere detected.
# Targets include agents, codex, and claude-local when present.
skillspec install skill ./my-skill --all-detected
# Start your favorite harness: Claude, Codex, or both.
# Ask the agent to assess the skill and explain what it finds.
/skillspec run doctor on ./my-skill
# Convert plain skill prose into a contract. Yes, SkillSpec runs on SkillSpec.
/skillspec import ./my-skill
# Make router mode the default first hop for future skill selection.
/skillspec install router
# Terminal: save a Doctor report when you need an artifact.
# Works with a local SKILL.md, skill folder, GitHub folder, or repo.
# Formats: default text, --markdown, --html, or --json.
skillspec doctor ./my-skill --markdown
What changes
Current skills versus life after SkillSpec.
Current skills
A plain skill is useful documentation, but the runtime still depends on model interpretation.
- Check environment
- Run tests
- Publish proof
- Good prose still competes with context pressure.
- Different harnesses can run the same skill differently.
- Users must trust that the final answer followed the plan.
Life after SkillSpec
The skill ships with a machine-checkable contract and a CLI that guides execution.
skill.spec.yml.
- route
- phases
- allowed tools
- checks
- proof
Product teams shipping skills
Ship a product with a skill agents can use correctly: declared routes, allowed tools, required checks, and proof that the workflow completed instead of drifting onto your product.
Agent operators with many skills
Route to the right product skill without loading the whole library. Keep context lean, reduce wrong-skill picks, and get a provable result for each run.
Forward deployment engineers
Baseline drift with Doctor, turn prose into contracts, tune token use, and leave behind durable harness behavior with an audit trail of which rule drove which action.
Adoption path
Try it once. Then make it how you create and use skills.
Check the skill you already have
Assess a public URL or a local folder. The report shows where execution can skip, drift, overload context, miss dependencies, or finish without proof.
# Public GitHub URI
skillspec doctor \
https://github.com/org/repo/tree/main/skills/example \
--markdown > .skillspec/reports/skillspec-doctor-baseline.md
# Local folder
skillspec doctor ./skills/example \
--markdown > .skillspec/reports/skillspec-doctor-baseline.md
Install the verifier-executor
Install the CLI so SkillSpec can check private skills, compile contracts, refresh the router, and guide real work from your local checkout.
curl -fsSL https://skillspec.sh/install.sh | sh
skillspec --help
Create or convert the skill
Convert important prose into a contract that names the route, phases, tool boundaries, checks, and completion proof the agent should follow.
# Existing skill
/skillspec import ./skills/my-skill
# New product skill
Write SKILL.md, then import and prove it.
Run through the router by default
Use router mode so skills are selected intentionally, executed through the SkillSpec path, and checked before they become the agent's first answer.
The visible loader stays small while SkillSpec handles routing, phase order, checks, resume, and proof.
Ship proof with the skill
Publish the Doctor baseline, generated skill.spec.yml,
compiled loader, and alignment report so users can see exactly
how the skill is meant to run.
This is the default path for companies shipping agent skills with hardware, software, APIs, or internal operations.