Cross-Agent Skills — Cursor, Codex, Cline, Antigravity, Gemini CLI, Mastra, Vercel: Portability in 2026
The pitch is portability — write one SKILL.md, run it everywhere. The reality is messier. This is the honest reference: which agents read SKILL.md natively, which need an adapter, which silently rewrite frontmatter, and which version of the open spec at agentskills/agentskills each implements. Every fact below is pulled from the vendor’s own docs and repos, with primary citations in-line. If you’re mapping the bigger picture, start with our companion piece Claude Skills vs MCP vs Subagents vs CLI and the protocol primer What is MCP.

On this page · 18 sections▾
- TL;DR — the portability matrix
- The SKILL.md spec status
- Claude Code (canonical)
- Cursor — the late but full adopter
- OpenAI Codex CLI
- Cline — experimental flag
- Google Antigravity
- Gemini CLI
- Mastra — single skill, multi-agent
- Vercel — the installer + the dissent
- OpenCode and the long tail
- The portability matrix
- What breaks across agents
- Skill-author guidance
- The five cross-agent collections
- The Vercel debate
- FAQ
- Sources
TL;DR — the portability matrix
Eight agents, one format, three categories. Native readers — Claude Code, Cursor (since 2.4), OpenAI Codex CLI, Cline (experimental flag), Google Antigravity, and Gemini CLI all parse SKILL.md directly and obey progressive disclosure. Installer- mediated — the long tail (OpenCode, Continue, Roo Code, Kiro CLI, Windsurf, Devin, Crush, Mistral Vibe, Qwen Code, Tabnine CLI, dozens more) gets skills via npx skills add, which symlinks the same SKILL.md into whatever path that agent expects. Holdouts — a handful of older agents (and Vercel’s own AI SDK, by argument rather than design) prefer AGENTS.md in the repo root and treat Skills as a discovery overhead they’d rather skip.
The corner cases that bite: case sensitivity on SKILL.md (Gemini CLI is strict), three different conventions for where the folder lives, and the experimental allowed-tools field that only two of the eight agents actually parse.
The SKILL.md spec status
Anthropic launched Skills on October 16 2025. From claude.com/blog/skills, verbatim: “Skills are folders that include instructions, scripts, and resources that Claude can load when needed… Skills use the same format everywhere. Build once, use across Claude apps, Claude Code, and API.” The same launch announced the open spec at github.com/agentskills/agentskills: “Agent Skills are a simple, open format for giving agents new capabilities and expertise… an open format maintained by Anthropic and open to contributions from the community.” Apache-2.0 for code, CC-BY-4.0 for docs, roughly 17.8K stars at the time of writing.
The current specification — published at agentskills.io/specification — defines the structure and frontmatter exactly:
- A skill is a directory containing
SKILL.md(required) plus optional sibling directoriesscripts/,references/, andassets/. - Frontmatter required fields:
name(max 64 chars, lowercase letters, numbers, hyphens; no leading, trailing, or consecutive hyphens; must match the parent directory) anddescription(max 1024 chars, non-empty). - Frontmatter optional fields:
license,compatibility(max 500 chars),metadata(arbitrary key-value), andallowed-tools— explicitly marked Experimental in the spec, with the note “Support for this field may vary between agent implementations.” - Progressive disclosure is canonical, not optional. Per the spec: “Metadata (~100 tokens): The
nameanddescriptionfields are loaded at startup for all skills. Instructions (<5000 tokens recommended): The fullSKILL.mdbody is loaded when the skill is activated. Resources (as needed): Files (e.g. those inscripts/,references/, orassets/) are loaded only when required.”
What that means for portability: any agent that parses YAML frontmatter and reads Markdown can support SKILL.md. The interesting differences are everywhere except the format — discovery paths, the activation gesture, sandboxing, and which optional fields are honored.
The example above is Anthropic’s own skill-creator, the canonical reference for what a real SKILL.md looks like. Every cross-agent runtime in the rest of this post can load that exact file unchanged.
Claude Code (canonical implementation)
Claude Code is the reference implementation and the only runtime guaranteed to honor every field in the spec. Per the official Agent Skills overview, verbatim: “Skills exist as directories on a virtual machine, and Claude interacts with them using the same bash commands you’d use to navigate files on your computer.”
- Project path:
.claude/skills/ - Global path:
~/.claude/skills/ - Frontmatter: full spec compliance — all required fields, all optional fields, including
allowed-tools. - Sandbox: the docs note “Skills run in a code execution environment where Claude has filesystem access, bash commands, and code execution capabilities.”
- Gotcha: Anthropic’s own docs warn that “Custom Skills do not sync across surfaces” — a Skill uploaded to claude.ai is not automatically available via the API or in Claude Code. Each surface maintains its own store.
If you’re writing a new skill from scratch, start in Claude Code, validate against the canonical implementation, then move on to the other agents.
Cursor — the late but full adopter
Cursor shipped Skills support in version 2.4, released January 22 2026. From the Cursor 2.4 changelog, verbatim: “Cursor now supports Agent Skills in the editor and CLI. Agents can discover and apply skills when domain-specific knowledge and workflows are relevant.”
- Project paths:
.cursor/skills/<name>/SKILL.mdor.agents/skills/; nested under monorepo packages, e.g.apps/web/.cursor/skills/. - Global paths:
~/.cursor/skills/and~/.agents/skills/. - Legacy compatibility paths:
.claude/skills/and.codex/skills/are also scanned, so a project initialized for Claude Code works in Cursor without a move. - Activation: two gestures — type
/skill-namein chat to invoke directly, or@the skill from the context menu to attach it for the next turn. The agent can also pick a skill on its own from the description. - Cursor-specific frontmatter: Cursor adds an optional
pathsfield with glob patterns (e.g."**/*.tsx") to scope a skill to specific file types. Every other agent will ignore this field harmlessly. - Skills vs Rules: Cursor explicitly positions Skills alongside
.cursor/rules/*.mdc— Rules are always loaded, Skills are loaded on demand. The Cursor docs phrase it as “Skills are loaded dynamically when the agent decides they’re relevant, which keeps your context window clean.”
Cursor users who came up on the .mdc rules system have an adjustment to make: the format is YAML frontmatter rather than the .mdc properties block, and you should not put a name field in a rule but you must in a skill. The two systems coexist; you can run both.
OpenAI Codex CLI
OpenAI’s Codex CLI added first-class Skills support in late 2025. The feature page at developers.openai.com/codex/skills lists four discovery tiers, in order of precedence:
- System / bundled: skills shipped inside the Codex binary by OpenAI.
- Admin:
/etc/codex/skills— intended for fleet-managed installations. - User:
$HOME/.agents/skills. - Repo:
.agents/skillsin the current working directory or any parent up to the repo root.
- Frontmatter: the standard
name+descriptionare required; Codex implements the experimentalallowed-toolsfield, like Claude Code. - Codex-specific extension: an optional
agents/openai.yamlfile inside the skill folder lets you pin tool dependencies and UI configuration. Other agents do not read this file. - Activation: two gestures — explicit
/skillscommand or$-mention syntax in the CLI, plus implicit invocation when the task matches the skilldescription. - Note on AGENTS.md: Codex CLI also reads
AGENTS.mdat the repo root. The two coexist —AGENTS.mdis always loaded, skills are loaded on demand. Codex’s own repo ships anAGENTS.mdthat documents Rust conventions for the codex-rs subtree.
Codex CLI’s adoption of .agents/skills as the project path — rather than a vendor-specific path — is the clearest signal yet that the cross-agent convention is stabilizing on .agents/. Cursor, Gemini CLI, and Codex all accept it; Claude Code and Cline accept their own paths but tolerate .agents/ via Vercel’s installer.
Cline — experimental flag, full spec
Cline’s docs introduce Skills as “modular instruction sets that extend Cline’s capabilities for specific tasks… they load on-demand rather than consuming context constantly, unlike rules which remain always active.” The feature is gated behind a Settings toggle marked experimental.
- Project paths (three of them):
.cline/skills/,.clinerules/skills/, and.claude/skills/. The triple lookup is a deliberate compatibility move — drop a Claude Code skill folder into a Cline project and it works without modification. - Global paths:
~/.cline/skills/on macOS/Linux, the equivalent under%USERPROFILE%on Windows. - Frontmatter:
name(must match the directory name in kebab-case) anddescription(max 1024 chars). Cline does not implementallowed-tools. - Precedence: per the docs, “when a global skill and project skill have the same name, the global skill takes precedence.” This is unusual — Claude Code and Codex put the project ahead — so factor it in when you have name collisions.
- Loading levels: Cline implements the three-level progressive disclosure exactly: “Metadata (always loaded, ~100 tokens), Instructions (triggered on-demand, under 5k tokens), and Resources (loaded as needed).”
Google Antigravity
Google’s Antigravity Agent Skills page treats a skill as “a directory-based package containing a definition file (SKILL.md) and optional supporting assets (scripts, references, templates). While SKILL.md is the only required file, you can include additional resources like helper scripts, reference implementations, and templates.”
- Workspace path:
<workspace>/.agent/skills/<name>/— note the singular.agent, distinct from the plural.agentsthat Codex/Cursor/Gemini use. - Global path:
~/.gemini/antigravity/global_skills/<name>/per Google’s “getting started” codelab. - Frontmatter:
nameanddescription; the docs note “a vague description like ‘Database tools’ is insufficient” and emphasize the description must be “descriptive enough for the LLM to recognize semantic relevance.” - Activation flow: “When a conversation starts, the agent sees a list of available skills with their names and descriptions; if a skill looks relevant to the task, the agent reads the full
SKILL.mdcontent; the agent follows the skill’s instructions while working on the task, and doesn’t need explicit direction to use a skill.” - Compatibility caveat: the singular
.agentpath means a skill written for Cursor (which uses.agents, plural) needs a symlink or the Vercel installer to land in the right place. Vercel’s CLI knows about both.
Gemini CLI
Gemini CLI shipped Skills first as an experimental feature and made them stable in v0.26.0. The official docs at geminicli.com/docs/cli/skills list four discovery tiers in order of precedence: built-in, extension-bundled, user, workspace.
- User paths:
~/.gemini/skills/or~/.agents/skills/(alias). - Workspace paths:
.gemini/skills/or.agents/skills/. Within a tier,.agents/skills/takes precedence over.gemini/skills/. - Activation flow: verbatim from the docs — “Discovery — Skill names and descriptions are injected into the system prompt at session start. Activation — The model calls
activate_skillwhen identifying matching tasks. Consent — A confirmation prompt shows skill name, purpose, and directory access. Injection — Upon approval, theSKILL.mdand bundled resources become available. Execution — The model proceeds with specialized expertise.” - The case-sensitivity warning: Gemini CLI’s docs are explicit — “The filename must be exactly
SKILL.md. Capitalization matters on case-sensitive filesystems (Linux, and macOS when configured as such):skill.mdorSkill.mdwill be ignored.” - Companion repo: google-gemini/gemini-skills ships
gemini-api-dev,gemini-live-api-dev, andgemini-interactions-api— Apache-2.0, around 3.4K stars at the time of writing.
One-line install · by vercel-labs
Open skill pageInstall
mkdir -p .claude/skills/vercel-react-native-skills && curl -L -o skill.zip "https://mcp.directory/api/skills/download/812" && unzip -o skill.zip -d .claude/skills/vercel-react-native-skills && rm skill.zipInstalls to .claude/skills/vercel-react-native-skills
The install card above is for vercel-labs/vercel-react-native-skills — one of the first skills shipped by Vercel that crosses Cursor, Codex, Claude Code, and Gemini CLI without modification.
Mastra — single skill, multi-agent
Mastra publishes one official skill at github.com/mastra-ai/skills (Apache-2.0). The README opens: “Official Mastra skills for agents working with the Mastra framework, a framework for building AI-powered applications and agents with a modern TypeScript stack.”
- Install:
npx skills add mastra-ai/skillsvia the Vercel installer, ornpx skills add https://mastra.ai/via the RFC 8615.well-knownURI mechanism. - Spec compliance: a single skill named
mastra, written to the open spec, with no Mastra-specific frontmatter additions. - Progressive disclosure: the skill bundles separate reference files for setup, embedded docs lookup, remote docs lookup, troubleshooting, and migration — exactly the pattern the spec recommends.
- Stars: small (around 51 at last check), but Mastra’s Mastra Docs MCP server is the more-trafficked surface.
Vercel — the installer and the dissent
Vercel publishes two contradictory artifacts in the same quarter. vercel-labs/skills is the de facto cross-agent installer (16.9K stars, MIT, 90.5% TypeScript). The CLI, invoked as npx skills add <source>, supports six source formats: GitHub shorthand (owner/repo), full GitHub URL, direct path to a skill in a repo, GitLab URL, raw git URL, and local path. The README lists 50+ supported agent targets including OpenCode, Claude Code, Codex, Cursor, OpenHands, Cline, Continue, GitHub Copilot, Antigravity, Roo Code, Kiro CLI, Windsurf, Devin, Crush, Gemini CLI, Mistral Vibe, Qwen Code, and Tabnine CLI.
The installer’s contract is clean: each agent has a designated project path and a global path. The CLI symlinks rather than copies, so a single source-of-truth update propagates to every installed agent the next time it discovers skills. The only Vercel-specific frontmatter addition the CLI looks for is metadata.internal: true, which hides a skill from normal discovery unless INSTALL_INTERNAL_SKILLS=1 is set in the environment.
Then the same Vercel labs publishes the dissent. From Agents.md outperforms skills in our agent evals by Jude Gao: “With AGENTS.md, there’s no moment where the agent must decide ‘should I look this up?’ The information is already present. Skills load asynchronously and only when invoked. AGENTS.md content is in the system prompt for every turn.” Their Next.js 16 eval reported a 100% pass rate with an 8KB AGENTS.md doc index versus 79% for Skills with explicit instructions and 53% for Skills with default invocation.
Both can be true. We unpack the debate later in this post.
OpenCode and the long tail
OpenCode is the open-source coding agent that has been the fastest cross-vendor adopter of Skills outside the original Anthropic ecosystem. The Vercel installer’s opencode target points to an .opencode/skills/ project path; the rest of the contract is identical to Cursor and Codex.
Beyond OpenCode, the long tail handled by npx skills add covers GitHub Copilot CLI, Continue, Roo Code, Kiro CLI, Windsurf, Devin, Crush, Mistral Vibe, Qwen Code, and Tabnine CLI. None of these runtimes parse SKILL.md as a first-class primitive in the same way as Claude Code or Cursor — instead, they treat the skill folder as either a system-prompt fragment (loaded every turn, like AGENTS.md) or as a command they invoke explicitly. The Vercel installer normalizes the differences so the skill author doesn’t care; the runtime semantics still vary.
If you’re shipping a public skill, our advice is to target Claude Code, Cursor, Codex, Gemini CLI, and Cline explicitly (the six-agent core) and rely on the Vercel installer to cover the long tail. The marginal effort to test on Crush or Tabnine is rarely worth it for a skill that does its job in the canonical six.
The portability matrix
Every cell pulled from the agent’s own docs, with citations in the per-agent sections above. “Native read” means the agent parses SKILL.md directly without an installer. “Progressive disclosure” means the agent loads only the metadata until the skill activates. “Allowed-tools” is the experimental field in the spec; only Claude Code and Codex implement it as of May 2026.
| Agent | Native SKILL.md | Project path | Progressive | allowed-tools | Dynamic activation |
|---|---|---|---|---|---|
| Claude Code | Yes | .claude/skills/ | Yes | Yes | Yes (model picks) |
| Cursor 2.4+ | Yes | .cursor/skills/ + .agents/skills/ | Yes | No (ignored) | Yes (or /slash, @-mention) |
| Codex CLI | Yes | .agents/skills/ | Yes | Yes | Yes (or /skills, $-mention) |
| Cline (experimental) | Yes | .cline/skills/, .clinerules/skills/, .claude/skills/ | Yes | No (ignored) | Yes |
| Antigravity | Yes | .agent/skills/ | Yes | No (ignored) | Yes |
| Gemini CLI 0.26+ | Yes | .gemini/skills/ + .agents/skills/ | Yes | No (ignored) | Yes (with consent prompt) |
| OpenCode | Yes | .opencode/skills/ | Partial | No | Yes |
| Long tail (50+) | Via installer | Per agent | Varies | No | Varies |
Three observations from the matrix. Native support is the norm — six of the eight rows here read SKILL.md directly, which was not true six months ago. The path is the only real fragmentation — every agent has a different project path, and the only honest portability story is to rely on the Vercel installer or symlink. The experimental fields don’t actually portable — allowed-tools is parsed by two runtimes; Cursor’s paths by one. Don’t put security-relevant logic in fields that may be silently stripped.
What breaks across agents
Filename case sensitivity
The file must be exactly SKILL.md. On case-sensitive Linux filesystems and case-sensitive macOS, skill.md and Skill.md are silently ignored by Gemini CLI and Antigravity. macOS by default is case-insensitive so the bug only surfaces when you push to a Linux runner. Lint your repo before shipping.
Description length limits
The spec caps description at 1024 characters and Claude API enforces it. Cline enforces it. Cursor and Gemini CLI tolerate longer strings but truncate the displayed value. Antigravity warns explicitly that “a vague description like ‘Database tools’ is insufficient.” Write under 500 characters and start with an action verb plus the triggering condition.
Allowed-tools name differences
The experimental allowed-tools field uses Claude Code’s tool naming convention — Bash(git:*), Read, WebFetch. Codex CLI parses these but the underlying tool surface is different (Codex doesn’t have WebFetch); the field is honored best-effort, not strictly. Cursor, Cline, Antigravity, and Gemini CLI ignore the field entirely. Treat allowed-tools as documentation, not enforcement.
File-location convention drift
Antigravity uses singular .agent/; everyone else uses plural .agents/. Cursor and Codex accept both. The cleanest portable convention is to put skills under .agents/skills/ and add a symlink to .claude/skills/ for Claude Code if you don’t want to rely on the installer.
Frontmatter rewrites by tooling
Some IDE integrations (notably Cursor for .mdc rules — the same family of YAML frontmatter) silently strip frontmatter when their UI re-saves a file. We have not seen this on SKILL.md directly yet, but it is a known failure mode in the Cursor ecosystem. Keep skills under version control and review the diff before committing.
Skill-author guidance: write once, run anywhere
Five practical rules we follow when shipping a skill that needs to work across the canonical six (Claude Code, Cursor, Codex, Cline, Antigravity, Gemini CLI):
- Stick to
nameanddescriptionin the frontmatter. Optional fields are nice but vary in support; portability comes from minimalism. Addlicenseandmetadatafor documentation, never for enforcement. - Lowercase, hyphenated
name, matching the parent directory exactly. The spec validates this; Cline enforces it; the others assume it. - Description in the form “Verb noun. Use when X.” — a behavior verb plus a triggering condition. Antigravity, Codex, and Gemini CLI all warn that vague descriptions cause the agent to skip the skill at activation time. The Anthropic spec gives a good example: “Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents or when the user mentions PDFs, forms, or document extraction.”
- Keep the
SKILL.mdbody under 500 lines. Move details toreferences/REFERENCE.mdorreferences/FORMS.md. Progressive disclosure works only if the skill author cooperates with it. - Test on Linux for case sensitivity. On macOS the bug is invisible; on the Linux runners that ship the binaries to most users, a file named
skill.mdis a no-op. Add a CI step that doesfind skills -type f -name "[Ss][Kk][Ii][Ll][Ll].[Mm][Dd]" ! -name "SKILL.md"and fails the build on a hit.
Two patterns to actively avoid. Don’t use the allowed-tools field for security. Two of eight agents parse it; the others run the skill with whatever tools they grant by default. If you need enforcement, write the boundary in the runtime config, not in the skill. Don’t put per-agent logic inside the skill. Conditionals like “if Cursor, do X; if Claude, do Y” are an anti-pattern; the format is portable only because skill authors cooperate. If you genuinely need per-agent behavior, ship two skills and let each runtime install the right one.
The five cross-agent skill collections
Five repos cover most of the cross-agent skill universe. Each has a slightly different shape; star counts pulled at write time.
agentskills/agentskills — the spec (~17.8K stars, Apache-2.0). The reference. README opens: “Agent Skills are a simple, open format for giving agents new capabilities and expertise… an open format maintained by Anthropic and open to contributions from the community.” Houses the published spec and the skills-ref validator at skills-ref validate ./my-skill.
vercel-labs/skills — the installer (16.9K stars, MIT). README: “a CLI for installing skills across multiple agents” — supports “OpenCode, Claude Code, Codex, Cursor and 50+ other agents.” npx skills add <source> is the canonical cross-agent install gesture in 2026.
google/skills — Google Cloud (~6.5K stars, Apache-2.0). The first-party Google Cloud skill set. README lists “Gemini API in Agent Platform, AlloyDB Basics, BigQuery Basics, Cloud Run Basics, Cloud SQL Basics, Firebase Basics, Kubernetes Engine (GKE) Basics” plus Well-Architected Framework recipes. Install: npx skills add google/skills.
addyosmani/agent-skills — production engineering (~27.7K stars, MIT). Addy Osmani’s collection of 20 skills across six lifecycle phases — Define, Plan, Build, Verify, Review, Ship. The README’s pitch: “Process, not prose” — every skill is a step-by-step workflow with anti-rationalization tables and verification requirements. Documented setup for Claude Code, Cursor, Gemini CLI, Windsurf, OpenCode, GitHub Copilot, and Kiro IDE.
VoltAgent/awesome-agent-skills — the curated awesome list (~20.2K stars, MIT). README, verbatim: “Unlike many bulk-generated skill repositories, this collection focuses on real-world Agent Skills created and used by actual engineering teams, not mass AI-generated stuff.” 1100+ entries, organized by publishing org — Anthropic, Google, Stripe, Vercel, Cloudflare, Netlify, Trail of Bits, plus community.
Honourable mention: obra/superpowers (around 178K stars, MIT) ships “a complete software development methodology for your coding agents, built on top of a set of composable skills.” It’s the largest single skill set in the wild and has been part of the Anthropic Claude Code marketplace since January 2026.
The Vercel debate, with the counter-take
Vercel’s claim is direct and well-evidenced. From the same agent eval post: “Skills create sequencing decisions (read docs first vs. explore project first). Passive context avoids this entirely… In 56% of eval cases, the skill was never invoked. The agent had access to the documentation but didn’t use it.”
“With AGENTS.md, there's no moment where the agent must decide 'should I look this up?' The information is already present. Skills load asynchronously and only when invoked. AGENTS.md content is in the system prompt for every turn.”
Jude Gao, Vercel · Blog
The argument boiled down: AGENTS.md beats Skills because it removes the discovery step the model can skip.
The honest counter-take. Vercel’s eval was on Next.js 16 — one framework, one model, one task type. Their conclusion is correct at that scale: when you have a single, well-bounded set of guidance to inject every turn, AGENTS.md dominates Skills. But the same approach doesn’t scale to dozens of skills. Anthropic shipped progressive disclosure precisely because AGENTS.md with 47 skills inlined would consume more context than the model has. Cloudflare’s Code Mode work and Anthropic’s Tool Search Tool exist for the same scaling reason — see our MCP Context Bloat Fix deep dive for the math.
Both can be right. Use AGENTS.md for the half- dozen pieces of guidance that apply to every turn in a given repo. Use Skills when you have a procedural library that grows past the point where every turn loading every procedure is affordable. Most production setups end up with both — a small AGENTS.md at the repo root and a .agents/skills/ folder for the long tail. Simon Willison’s framing on launch day still holds: Skills are not a replacement for anything else; they’re a new layer in the stack.
“You can grab a skills folder right now, point Codex CLI or Gemini CLI at it and say 'read pdf/SKILL.md and then create me a PDF describing this project' and it will work.”
Simon Willison · Blog
Willison's day-one assertion of cross-agent portability — turned out, by mid-2026, to be approximately correct.
Frequently asked questions
Are Claude Skills portable across other agents?
Mostly yes, with caveats. The SKILL.md format itself is just YAML frontmatter plus Markdown, and the spec at agentskills/agentskills is open and Apache-2.0. Claude Code, Cursor (since 2.4 in January 2026), Codex CLI, Cline, Google Antigravity, and Gemini CLI all read SKILL.md natively. The catches: each agent stores skills in a slightly different path, only Claude Code and Codex implement the experimental allowed-tools field, and a few runtimes silently strip frontmatter fields they don't recognise.
What is the SKILL.md spec?
It is the open format defined at agentskills.io/specification and maintained at github.com/agentskills/agentskills (Apache-2.0 for code, CC-BY-4.0 for docs). A skill is a directory with a SKILL.md file containing YAML frontmatter — required fields name (max 64 chars, lowercase + hyphens) and description (max 1024 chars), plus optional license, compatibility, metadata, and the experimental allowed-tools field. Optional sibling directories scripts/, references/, and assets/ hold helpers loaded on demand.
Does Cursor read SKILL.md natively?
Yes, since Cursor 2.4 (released January 22, 2026). Cursor scans .cursor/skills/, .agents/skills/, ~/.cursor/skills/, ~/.agents/skills/, and the legacy compatibility paths .claude/skills/ and .codex/skills/. The official docs frame it as: "Cursor now supports Agent Skills in the editor and CLI. Agents can discover and apply skills when domain-specific knowledge and workflows are relevant." Cursor adds an optional paths frontmatter field with glob patterns to scope a skill to certain file types.
Does Codex CLI support SKILL.md?
Yes. The OpenAI Codex CLI documentation under developers.openai.com/codex/skills lists four discovery tiers: bundled system skills, .agents/skills inside the repo, $HOME/.agents/skills for the user, and /etc/codex/skills for admin-managed skills. The required frontmatter is the same name and description pair; an optional agents/openai.yaml file inside the skill folder lets you pin tool dependencies and UI configuration that Codex respects but other agents will ignore.
Does Cline support SKILL.md?
Yes — Cline's docs describe Skills as "modular instruction sets that extend Cline's capabilities for specific tasks" with an experimental flag toggle in settings. Cline scans three project paths (.cline/skills/, .clinerules/skills/, .claude/skills/) and two global paths (~/.cline/skills/, %USERPROFILE%\.cline\skills\ on Windows). Required fields are name (must match the directory name in kebab-case) and description (max 1024 chars).
Does Google Antigravity read SKILL.md?
Yes. Per Google's docs, Antigravity treats a skill as "a directory-based package containing a definition file (SKILL.md) and optional supporting assets." Workspace skills live at <workspace>/.agent/skills/<name>/ and global skills live at ~/.gemini/antigravity/global_skills/<name>/. The activation flow shows the skill list to the agent at session start and pulls in the full SKILL.md only when the agent decides it is relevant — the same progressive-disclosure pattern Anthropic ships.
Does Gemini CLI read SKILL.md?
Yes, in stable Gemini CLI v0.26.0 and later. The four discovery tiers are bundled built-in skills, extension-bundled skills, user skills at ~/.gemini/skills/ or ~/.agents/skills/, and workspace skills at .gemini/skills/ or .agents/skills/. When two paths exist, .agents/skills/ takes precedence over .gemini/skills/. Gemini CLI's docs warn explicitly that the filename must be exactly SKILL.md — case-sensitive on Linux and case-sensitive macOS filesystems will skip skill.md or Skill.md.
Does Mastra ship a Skills format of its own?
No — Mastra publishes a single skill at github.com/mastra-ai/skills (Apache-2.0) that itself uses the open SKILL.md spec. Install with npx skills add mastra-ai/skills, or via the .well-known discovery mechanism with npx skills add https://mastra.ai/. The repo notes the skill uses progressive disclosure with separate reference files for setup, embedded docs, remote docs, troubleshooting, and migration.
What does the Vercel skills CLI actually do?
vercel-labs/skills (16.9K stars, MIT) is the de facto cross-agent installer. The command npx skills add <source> takes a GitHub shorthand, full URL, GitLab URL, raw git URL, or local path, then symlinks the SKILL.md into every agent path the CLI knows about — README lists 50+ targets including OpenCode, Claude Code, Codex, Cursor, OpenHands, Cline, Continue, GitHub Copilot, Antigravity, Roo Code, Kiro CLI, Windsurf, Devin, Crush, Gemini CLI, Mistral Vibe, Qwen Code, and Tabnine CLI.
Why does Vercel argue AGENTS.md beats Skills?
From their post Agents.md outperforms skills in our agent evals: "With AGENTS.md, there's no moment where the agent must decide 'should I look this up?' The information is already present." Their Next.js 16 eval reported a 100% pass rate with an 8KB AGENTS.md doc index versus 79% for Skills with explicit instructions and 53% for Skills with default invocation. The counterargument is scaling: AGENTS.md eats the tokens every turn whether the info is needed or not.
Which fields of the SKILL.md spec are most likely to break?
Three. (1) The experimental allowed-tools field — only Claude Code and Codex CLI parse it; everyone else ignores it, so don't rely on it as security. (2) Cursor's paths field for glob-scoping is Cursor-specific and other agents may strip it on rewrite. (3) The compatibility field is loosely defined and most runtimes don't enforce it. Stick to name + description for maximum portability and add optional fields only when the target agent supports them.
What is the largest cross-agent skill collection?
By stars, obra/superpowers (around 178K), addyosmani/agent-skills (27.7K), VoltAgent/awesome-agent-skills (20.2K, curated awesome list with 1100+ entries), agentskills/agentskills (17.8K, the spec repo), and vercel-labs/skills (16.9K, the installer). google/skills (6.5K) and google-gemini/gemini-skills (3.4K) are the official Google publications. anthropics/skills (around 128K) is the canonical Anthropic-maintained set.
Does case sensitivity matter for skill folders?
Yes — Gemini CLI's docs warn that the filename must be exactly SKILL.md and case-sensitive filesystems (Linux, and macOS configured as such) will skip skill.md or Skill.md. The agentskills spec also constrains the name field to lowercase letters, numbers, and single hyphens — the parent directory must match, so PDF-Processing or pdf--processing will fail validation. Most implementations are strict on this.
Should I use Vercel's installer or symlink skills manually?
Use the installer if you target three or more agents. npx skills add picks the right path per agent and symlinks rather than copies, so updates propagate when you git pull. Symlink manually if you only need one or two agents and care about reproducibility — a one-line ln -s in your dotfiles repo is easier to audit than another Node tool. For monorepos, the zazencodes pattern (one Git repo, symlinked everywhere) keeps changes in sync without extra config.
Where does this leave MCP?
Skills and MCP solve different problems and the cross-agent portability story for both is improving in parallel. MCP carries connections — authenticated access to live external systems. Skills carry procedures — repeatable how-to instructions. Most production setups use both. Our companion piece /blog/claude-skills-vs-mcp-vs-subagents-vs-cli-2026-decision-matrix walks through when to pick each.
Sources
The spec
- agentskills.io/specification — the canonical Agent Skills spec
- github.com/agentskills/agentskills — open spec repo, governance language, validator
- github.com/anthropics/skills — Anthropic-maintained reference set
- platform.claude.com/docs — Agent Skills overview
- anthropic.com/engineering — Agent Skills (Oct 16 2025)
- claude.com/blog/skills — Skills launch post
Per-agent docs
- cursor.com/changelog/2-4 — Cursor 2.4 Skills launch (Jan 22 2026)
- cursor.com/help/customization/skills — Cursor Skills paths and frontmatter
- developers.openai.com/codex/skills — Codex CLI Skills docs
- github.com/openai/codex — Codex CLI repo
- docs.cline.bot/features/skills — Cline Skills feature docs
- github.com/cline/cline — Cline repo
- antigravity.google/docs/skills — Antigravity Skills docs
- geminicli.com/docs/cli/skills — Gemini CLI Skills docs
- github.com/google-gemini/gemini-cli — Gemini CLI repo
- github.com/google-gemini/gemini-skills — Google’s Gemini API skills
Cross-agent collections
- vercel-labs/skills — the installer
- mastra-ai/skills — Mastra’s official skill
- google/skills — Google Cloud skill set
- addyosmani/agent-skills — Addy Osmani’s 20-skill production set
- VoltAgent/awesome-agent-skills — the awesome list
- obra/superpowers — methodology + skill set
The debate
- vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals
- simonwillison.net — Claude Skills (Oct 16 2025)
- Cross-Platform Agent Skills Guide — zazencodes
Internal links
- /blog/claude-skills-vs-mcp-vs-subagents-vs-cli-2026-decision-matrix
- /blog/mcp-context-bloat-fix-2026-tool-search-code-mode-progressive-disclosure
- /blog/what-are-claude-code-skills
- /blog/what-is-mcp
- /blog/context7-vs-deepwiki-vs-ref-vs-docfork-2026
- /blog/claude-codex-cli-skill-guide
- /skills/skill-creator
- /skills/vercel-react-native-skills
- /skills/claude-md-improver
- /skills/codex-cli
- /servers/codex-cli
- /servers/gemini-cli
- /servers/cursor-mcp-installer
- /servers/mastra-docs
- /skills — browse the directory