Updated May 2026Reference20 min read

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.

Editorial illustration: a single luminous SKILL.md document at the centre of a midnight navy field, with eight teal dotted lines radiating out to glyphs for Claude, Cursor, Codex, Cline, Antigravity, Gemini, Mastra, and Vercel — three of the lines are dashed instead of solid, signalling the adapters and rewrites the post is about.
On this page · 18 sections
  1. TL;DR — the portability matrix
  2. The SKILL.md spec status
  3. Claude Code (canonical)
  4. Cursor — the late but full adopter
  5. OpenAI Codex CLI
  6. Cline — experimental flag
  7. Google Antigravity
  8. Gemini CLI
  9. Mastra — single skill, multi-agent
  10. Vercel — the installer + the dissent
  11. OpenCode and the long tail
  12. The portability matrix
  13. What breaks across agents
  14. Skill-author guidance
  15. The five cross-agent collections
  16. The Vercel debate
  17. FAQ
  18. 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 directories scripts/, references/, and assets/.
  • Frontmatter required fields: name (max 64 chars, lowercase letters, numbers, hyphens; no leading, trailing, or consecutive hyphens; must match the parent directory) and description (max 1024 chars, non-empty).
  • Frontmatter optional fields: license, compatibility (max 500 chars), metadata (arbitrary key-value), and allowed-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 name and description fields are loaded at startup for all skills. Instructions (<5000 tokens recommended): The full SKILL.md body is loaded when the skill is activated. Resources (as needed): Files (e.g. those in scripts/, references/, or assets/) 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.md or .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-name in 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 paths field 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:

  1. System / bundled: skills shipped inside the Codex binary by OpenAI.
  2. Admin: /etc/codex/skills — intended for fleet-managed installations.
  3. User: $HOME/.agents/skills.
  4. Repo: .agents/skills in the current working directory or any parent up to the repo root.
  • Frontmatter: the standard name + description are required; Codex implements the experimental allowed-tools field, like Claude Code.
  • Codex-specific extension: an optional agents/openai.yaml file inside the skill folder lets you pin tool dependencies and UI configuration. Other agents do not read this file.
  • Activation: two gestures — explicit /skills command or $-mention syntax in the CLI, plus implicit invocation when the task matches the skill description.
  • Note on AGENTS.md: Codex CLI also reads AGENTS.md at the repo root. The two coexist — AGENTS.md is always loaded, skills are loaded on demand. Codex’s own repo ships an AGENTS.md that 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) and description (max 1024 chars). Cline does not implement allowed-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 .agents that Codex/Cursor/Gemini use.
  • Global path: ~/.gemini/antigravity/global_skills/<name>/ per Google’s “getting started” codelab.
  • Frontmatter: name and description; 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.md content; 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 .agent path 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_skill when identifying matching tasks. Consent — A confirmation prompt shows skill name, purpose, and directory access. Injection — Upon approval, the SKILL.md and 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.md or Skill.md will be ignored.”
  • Companion repo: google-gemini/gemini-skills ships gemini-api-dev, gemini-live-api-dev, and gemini-interactions-api — Apache-2.0, around 3.4K stars at the time of writing.

One-line install · by vercel-labs

Open skill page

Install

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.zip

Installs 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/skills via the Vercel installer, or npx skills add https://mastra.ai/ via the RFC 8615 .well-known URI 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.

AgentNative SKILL.mdProject pathProgressiveallowed-toolsDynamic activation
Claude CodeYes.claude/skills/YesYesYes (model picks)
Cursor 2.4+Yes.cursor/skills/ + .agents/skills/YesNo (ignored)Yes (or /slash, @-mention)
Codex CLIYes.agents/skills/YesYesYes (or /skills, $-mention)
Cline (experimental)Yes.cline/skills/, .clinerules/skills/, .claude/skills/YesNo (ignored)Yes
AntigravityYes.agent/skills/YesNo (ignored)Yes
Gemini CLI 0.26+Yes.gemini/skills/ + .agents/skills/YesNo (ignored)Yes (with consent prompt)
OpenCodeYes.opencode/skills/PartialNoYes
Long tail (50+)Via installerPer agentVariesNoVaries

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):

  1. Stick to name and description in the frontmatter. Optional fields are nice but vary in support; portability comes from minimalism. Add license and metadata for documentation, never for enforcement.
  2. Lowercase, hyphenated name, matching the parent directory exactly. The spec validates this; Cline enforces it; the others assume it.
  3. 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.”
  4. Keep the SKILL.md body under 500 lines. Move details to references/REFERENCE.md or references/FORMS.md. Progressive disclosure works only if the skill author cooperates with it.
  5. 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.md is a no-op. Add a CI step that does find 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.

Source

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.

Source

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

Per-agent docs

Cross-agent collections

The debate

Internal links

Keep reading