Yes. Claude Code, Codex, Cursor and Gemini CLI all read the same format: a folder with a SKILL.md file whose front matter gives a name and a description. Most skills move between them unchanged: of the 1,959 public skills we read on November 4, 2026, 1,675 use no feature that only Claude Code documents, and 84 depend on text that only Claude Code fills in before the model reads it.
How many real skills are portable?
Use This Skill lists every skill folder it finds in public GitHub repositories. On November 4, 2026, we cloned the 48 repositories in the November 2 crawl (data/skills.json: 2,060 skills) and read each SKILL.md. One repository with 100 skills could not be cloned without signing in, and one skill's file was no longer at its recorded path, which left 1,959 skills from 47 repositories.
| What we counted | Skills | Repositories |
|---|---|---|
Front matter with both name and description |
1,959 | 47 |
| Use no Claude Code-only field, variable, command or tool name | 1,675 | 41 |
| Use at least one Claude Code-only feature | 284 | 18 |
Depend on text Claude Code fills in (!`command`, ${CLAUDE_SKILL_DIR}, $ARGUMENTS, other CLAUDE_ variables) |
84 | 5 |
Name a Claude Code tool in the instructions (mostly AskUserQuestion) |
70 | 6 |
Ship agents/openai.yaml for Codex |
133 | 6 |
| Name breaks Cursor's rule (lowercase, numbers and hyphens, same as the folder) | 103 | 8 |
| Carry a front matter field outside the six in the Agent Skills spec | 1,025 | 20 |
SKILL.md files read on November 4, 2026 from each repository's default branch, at the path recorded in the November 2, 2026 crawl. Front matter parsed as YAML; body searched by script. "Claude Code-only" means listed in Claude Code's skills documentation and in none of the Codex, Cursor or Gemini CLI skills pages, checked the same day.
The Claude Code-only features are concentrated. One game-studio repository accounts for 74 of the 284 skills, and 69 of the 84 that need Claude Code to fill in text. Outside that repository, 210 skills use a Claude Code-only feature, and 183 of them do so only through front matter fields that another agent does not act on.
What does each agent read?
All four products link to the Agent Skills open standard at agentskills.io, and all four load a skill in the same order: the name and description first, the full SKILL.md when the task matches. The differences are in folders and extra settings.
| Claude Code | Codex | Cursor | Gemini CLI | |
|---|---|---|---|---|
| Project folder | .claude/skills |
.agents/skills |
.agents/skills, .cursor/skills |
.gemini/skills, .agents/skills |
| Also reads | Nested and --add-dir folders, plugins |
/etc/codex/skills, bundled skills |
.claude/skills, .codex/skills |
Extension and built-in skills |
name |
Optional (defaults to the folder) | Required | Required; lowercase, hyphens, must match the folder | Should match the folder |
| Manual-only switch | disable-model-invocation |
allow_implicit_invocation: false in agents/openai.yaml |
disable-model-invocation |
Not documented; asks you to confirm each activation |
| Limit to file paths | paths |
Not documented | paths |
Not documented |
| Call by name | /name |
$name or /skills |
/ then search |
Activated by the model |
From each product's official skills documentation, checked November 4, 2026; links in the sources below.
The folder row matters most in practice. A skill installed only in .claude/skills is visible to Claude Code and Cursor, but Codex and Gemini CLI do not list that folder. A skill in .agents/skills is visible to Codex, Cursor and Gemini CLI, but Claude Code's documentation lists only .claude/skills locations. For installing into either, see how to install a skill from GitHub and the per-agent paths in how to use a skill.
Which Claude Code features do not carry over?
Claude Code's documentation says it "extends the standard with additional features like invocation control, subagent execution, and dynamic context injection." Here is how often the skills we read use each one.
| Claude Code feature | What it does in Claude Code | Skills using it |
|---|---|---|
allowed-tools |
Lets listed tools run without asking, for that turn | 228 |
argument-hint |
Autocomplete hint for arguments | 103 |
user-invocable |
Hides or shows the skill in the / menu |
76 |
model |
Switches model while the skill runs | 74 |
${CLAUDE_SKILL_DIR} |
Replaced with the skill's own folder path | 69 |
!`command` |
Runs a shell command and puts its output in the skill before Claude reads it | 67 |
disable-model-invocation |
Manual use only (Cursor supports it too) | 33 |
$ARGUMENTS |
Replaced with what you typed after /name |
15 |
effort |
Sets the effort level while the skill runs | 3 |
allowed-tools is one of the six fields in the Agent Skills spec, but of the four products only Claude Code's skills page describes acting on it. The fields further down mostly change convenience, not the result.
The lines that fill in text are different. The Codex, Cursor and Gemini CLI skills pages describe no command execution or variable substitution inside SKILL.md, so in those agents the model receives the line as written. A skill such as adopt opens with a !`bash "${CLAUDE_SKILL_DIR}/..."` line that loads the project's settings; in Claude Code the output arrives ready to use, and elsewhere the agent sees a command it may or may not decide to run. The same goes for a skill that tells the agent to "use AskUserQuestion": that tool exists in Claude Code, and another agent has to find its own way to ask.
How do I make a skill work in all four?
- Keep the front matter to the spec.
name,description,license,compatibility,metadataandallowed-toolsare the six fields Claude Code's documentation names as the Agent Skills spec. They load everywhere, and they are also the only fields a claude.ai upload or the Skills API accepts; 1,025 of the skills we read carry at least one other field, most of them arequiresfield from a single template. - Name the skill the way Cursor requires. Lowercase letters, numbers and hyphens, identical to the folder name. That also satisfies Codex's and Gemini CLI's guidance.
- Write relative paths, not
${CLAUDE_SKILL_DIR}. Cursor's documentation says to reference scripts by their path from the skill root, and Gemini CLI gives the model access to the whole skill folder once it is activated. - Put commands in the instructions instead of
!`command`. "Runscripts/check.shand read its output" works in every agent; injection works only in Claude Code. - Pair the manual-only settings. The ask-matt skill sets
disable-model-invocation: trueand ships anagents/openai.yamlwithallow_implicit_invocation: false, which covers Claude Code, Cursor and Codex. All 24 skills in our count that set the Codex policy also set the front matter field. - Install to both folders.
.agents/skillsfor Codex, Cursor and Gemini CLI, and.claude/skills(a copy or a symlink) for Claude Code.
What goes into the context, and when, is the same idea in all four products; progressive disclosure in agent skills compares how each one budgets the first stage.
Does a skill's safety change between agents?
No. The files are the same, so the risk is the same. What changes is who asks before something runs: Gemini CLI shows a confirmation with the skill's name, purpose and folder before it activates a skill, while in Claude Code a skill's allowed-tools list can let named tools run without a prompt for that turn.
In the November 2, 2026 scan of 2,060 skills (data/scan.json), 1,987 were clear, 58 needed a review and 15 were flagged. Before you install a skill in any agent, run the folder through the free skill check, which reads every text file for nine risky patterns and shows the file and line of each finding.
How we counted
The skill list and paths come from data/skills.json (crawl of November 2, 2026). Each repository was cloned at depth 1 from its default branch on November 4, 2026, and each skill's SKILL.md read at its recorded path. Front matter is the YAML block between the first two --- lines. Claude Code-only fields are those in Claude Code's front matter table that are not among the six spec fields; body features were found by searching for !` at the start of a line or after a space, a ```! block, ${CLAUDE_SKILL_DIR}, $ARGUMENTS, and CLAUDE_SESSION_ID, CLAUDE_EFFORT, CLAUDE_PROJECT_DIR, CLAUDE_PLUGIN_ROOT and CLAUDE_PLUGIN_DATA. Tool names counted were AskUserQuestion, TodoWrite, ExitPlanMode, NotebookEdit, SlashCommand and "Task tool". Cursor's name rule was tested as lowercase letters and digits joined by single hyphens, equal to the folder name. Agent behavior comes from each product's documentation, read on November 4, 2026; we did not run the skills in each agent.