How to use your Claude Code skills in Cursor
Cursor loads SKILL.md folders from .claude/skills for compatibility, so your Claude Code skills work unmoved. Fix the name field, then check what carries.
Leave them where they are. Cursor's skills documentation says that "for compatibility" it also loads skills from .claude/skills/, .codex/skills/, ~/.claude/skills/ and ~/.codex/skills/, so a skill folder you already use in Claude Code is discovered in Cursor without being moved, copied or converted. Two things then decide whether it actually works: the name field, which Cursor requires and expects to match the parent folder name, and the frontmatter beyond name and description, where Cursor documents a different and much shorter list of fields than Claude Code does.
This guide covers the port in that order: where Cursor looks, the one field to fix, what carries and what does not, subagents, and what to check when a skill still does not show up.
#Where does Cursor look for skills?
Cursor documents eight locations plus four compatibility ones, and a Claude Code skill lands in the last group.
| Location | Scope | Cursor's own or compatibility |
|---|---|---|
.agents/skills/ | Project | Cursor's own |
.cursor/skills/ | Project | Cursor's own |
~/.agents/skills/ | User, this machine | Cursor's own |
~/.cursor/skills/ | User, this machine | Cursor's own |
.claude/skills/ | Project | Compatibility |
~/.claude/skills/ | User, this machine | Compatibility |
.codex/skills/ | Project | Compatibility |
~/.codex/skills/ | User, this machine | Compatibility |
A skill is a folder with a SKILL.md inside it, and Cursor allows optional scripts/, references/ and assets/ directories beside that file, which is the same layout Claude Code uses. Cursor also walks its skill roots recursively, so a skill in a category subfolder is still found, and a .cursor/skills/ or .agents/skills/ folder inside a nested project directory is picked up and scoped to that directory.
#Should you move the folder to .agents/skills?
Not if you still want the skill in Claude Code from the same checkout. Claude Code's skills documentation lists its load paths as .claude/skills/<skill-name>/SKILL.md at the project, personal, nested, enterprise and --add-dir levels, plus a plugin's own skills/ folder and the ~/.claude/skills/synced/ folder it downloads claude.ai skills into. .agents/skills/ is not among them.
So the two tools overlap in exactly one place, and it is the directory your skills are already in:
- Keep it in
.claude/skills/when the skill has to work in Claude Code and Cursor. Both vendors document reading it. - Use
.agents/skills/for a skill in a project where Cursor, and other agents that read that convention, are the audience. Our own where agent skills go guide has the directory table for the wider set of tools.
Treat Claude Code support for .agents/skills/ as undocumented rather than absent, and do not build a repository layout on it.
#Which field has to change?
One, and it is the field most Claude Code skills never bothered to set.
| Field | Claude Code | Cursor |
|---|---|---|
name | Optional. "Defaults to the directory name" | Required. "Lowercase letters, numbers, and hyphens only", and it must match the parent folder name |
description | Recommended. Falls back to the first non-empty line of the body | Required. The agent judges relevance from it |
That difference is the whole porting job for most skills. A skill folder called pdf-report/ whose SKILL.md carries no name works in Claude Code, which fills the name in from the folder. Cursor documents name as required, so set it explicitly, and set it to the folder name:
---name: pdf-reportdescription: Generate the monthly PDF report from the sales CSV. Use when asked for the monthly report or a PDF summary of sales.---Two details worth getting right while you are in the file:
- Characters. Cursor restricts
nameto lowercase letters, numbers and hyphens. An underscore or a capital letter in a folder name is a rename rather than an edit, because the field has to match the folder. - The description does the triggering in both tools. Cursor says the agent "is presented with available skills and decides when they are relevant based on context", and Claude Code loads a listing of names and descriptions for the same purpose. A description that names the task and the trigger phrases earns its place in both.
#What carries across, and what does not?
Cursor's skills page documents seven frontmatter fields. Claude Code documents more than twenty. The overlap is the useful part of this table, and the third column is the part that bites.
| Field | In Cursor's docs | In Claude Code's docs |
|---|---|---|
name | Yes, required | Yes, optional |
description | Yes, required | Yes, recommended |
paths | Yes, glob patterns, list or comma-separated string | Yes, glob patterns, list or comma-separated string |
disable-model-invocation | Yes | Yes |
metadata | Yes, arbitrary key-value map | Yes, free-form map, not acted on |
icon, color | Yes, for a skill used as a Custom Mode | Not documented |
globs | Accepted as a legacy fallback; new skills should use paths | Not documented |
allowed-tools, disallowed-tools | Not documented | Yes |
model, effort | Not documented | Yes |
context, agent, background | Not documented | Yes, for running a skill in a forked subagent |
hooks | Not documented | Yes |
when_to_use, argument-hint, arguments, user-invocable, shell, license, compatibility | Not documented | Yes |
Claude Code states that it "ignores unrecognized fields without reporting an error", so Cursor's icon and color are safe to leave in a shared skill. The reverse is where to be careful: Cursor's documentation does not say what it does with a field it does not document, so do not assume a Claude Code extra is either honoured or harmlessly dropped. Check the skill's behaviour in Cursor before you rely on it.
Three of those extras matter enough to call out, because they are the ones people build real guardrails from:
allowed-toolsanddisallowed-toolsare how a Claude Code skill narrows what the model may do while it is active. Cursor documents no equivalent on a skill, so a skill that was safe in Claude Code because of its tool list is not safe in Cursor for the same reason. Cursor'sreadonlyfield on a subagent is the nearest documented control, and it is a different mechanism on a different object.hooksregister in Claude Code when the skill is invoked and stay for the session. Nothing in Cursor's skills documentation does this.model,effort,contextandagentchange how Claude Code runs the skill. Cursor documents amodelfield on subagents, not on skills.
#How do you invoke a ported skill in Cursor?
Three ways, from Cursor's documentation:
- Automatically. The agent is shown the available skills and decides when one is relevant from context, the same shape as Claude Code's automatic invocation.
- Manually, with
/. Type/in Agent chat and pick the skill. Cursor says a skill invoked this way attaches to one message, which is narrower than Claude Code's behaviour of adding the skill's content to the conversation for the rest of the turn and beyond. - For a whole session, as a Custom Mode. Option+Enter on a Mac, Alt+Enter on Windows. This is the route with no Claude Code counterpart, and it is where
iconandcolorare used.
If you only ever want explicit invocation, disable-model-invocation: true means the same thing in both tools: the skill is included only when invoked on purpose.
#What about subagents?
Cursor reads those from Claude Code's directory too. It documents .cursor/agents/ and .claude/agents/, labelled "Claude compatibility", and .codex/agents/ for the project, with ~/.cursor/agents/, ~/.claude/agents/ and ~/.codex/agents/ for the user. Project subagents override user subagents, and when the same name appears in several locations, ".cursor/ takes precedence over .claude/ or .codex/".
The fields Cursor documents for a subagent are narrower than its skills list is long:
| Field | Default | What it does |
|---|---|---|
name | The filename | Lowercase letters and hyphens |
description | none | The agent reads it to decide when to delegate |
model | inherit | A specific model ID, with optional bracketed parameters |
readonly | false | true stops the subagent editing files or running state-changing shell commands |
is_background | false | true runs the subagent without blocking the parent |
Invocation is automatic by description, explicit with /name or by naming the subagent in a sentence, and parallel when the agent issues several Task calls at once. If you are weighing whether a job belongs in a skill or a subagent in the first place, skills vs subagents vs plugins vs MCP is the comparison, and sub-agents mastery covers the delegation patterns.
#A skill does not appear in Cursor. What now?
Work down this list before you start editing the body of the skill.
- Is
nameset, lowercase, and equal to the folder name? This is the documented requirement Claude Code does not enforce, so it is the first thing to check on any skill that came from there. - Is the file called
SKILL.md, inside a folder, inside one of the roots above? A loose.mdfile in a skills root is not a skill in either tool. - Does a
pathspattern exclude the file you are working on? Both tools usepathsto limit when a skill loads automatically. A pattern that fits your Claude Code layout may not fit the files you have open in Cursor. - Is the name taken? Cursor gives
.cursor/precedence over.claude/and.codex/for subagents with the same name. Avoid duplicate names across roots rather than working out which copy won. - Are you expecting it in a Cloud Agent? Only
~/.cursor/skills/syncs there, and only with Sync Skills for Cloud Agents enabled. Project skills and~/.agents/skills/stay on your machine.
#Before you share a skill folder between tools
Two habits are worth keeping, and both are about the fact that a skill is instructions a model will follow.
A skill you did not write is code you did not read. Run it past the checklist in how to audit a SKILL.md before you put somebody else's skill folder in a directory that two agents both load automatically, and remember that ClawDocx vets none of them. The blast radius of a shared .claude/skills/ is larger than of either tool alone, because both products pick it up.
A skill that leans on allowed-tools for safety is not portable, however well it ports in every other respect. Keep the guardrail where it is enforced: in Claude Code's frontmatter for Claude Code, and in Cursor's own permission and subagent controls for Cursor. The Cursor platform hub and the Claude Code platform hub track what each product documents as it changes.
Frequently asked questions
- Does Cursor read Claude Code skills from .claude/skills?
- Yes. Cursor's skills documentation says that for compatibility it also loads skills from .claude/skills, .codex/skills, ~/.claude/skills and ~/.codex/skills, alongside its own .agents/skills, .cursor/skills, ~/.agents/skills and ~/.cursor/skills roots. A project skill you already use in Claude Code needs no move.
- Should I move my skills to .agents/skills for Cursor?
- Only if you no longer need them in Claude Code there. Cursor documents .agents/skills as one of its project roots, but Claude Code's skills documentation names only .claude/skills directories, so moving a skill to .agents/skills takes it out of the paths Claude Code documents. Leaving it in .claude/skills is the one location both tools document reading.
- Why does my skill work in Claude Code but not appear in Cursor?
- Check the name field first. Cursor requires name and says it must match the parent folder name, with lowercase letters, numbers and hyphens only. Claude Code treats name as optional and defaults it to the directory name, so a skill that never set it, or set it to something other than its folder, can work in Claude Code and still fail Cursor's rule.
- Do allowed-tools, model and hooks carry from Claude Code into Cursor?
- No. Cursor's skills page documents seven frontmatter fields: name, description, paths, disable-model-invocation, icon, color and metadata, plus the legacy globs as a fallback. Claude Code's extras, among them allowed-tools, model, effort, hooks, context and when_to_use, are not among them, and Cursor's documentation does not say what it does with a field it does not document.
- Can Cursor use my Claude Code subagents too?
- Cursor documents reading .claude/agents in a project and ~/.claude/agents for the user, alongside its own .cursor/agents roots, and says .cursor/ takes precedence over .claude/ or .codex/ when the same name appears in several locations. The fields it documents for a subagent are name, description, model, readonly and is_background.
- Will my project skills reach Cursor Cloud Agents?
- Not from .claude/skills. Cursor's documentation says only ~/.cursor/skills/ syncs to Cloud Agents, when Sync Skills for Cloud Agents is enabled, and that project skills and ~/.agents/skills stay local. A skill you want in a Cloud Agent has to live in that one user directory.