The short answer
- 1Claude Code:
~/.claude/skills/<name>/SKILL.md, or.claude/skills/in a project - 2Codex:
~/.agents/skills/, or.agents/skills/in a repo; it still reads the older~/.codex/skills/ - 3Cursor:
~/.cursor/skills/or~/.agents/skills/, plus project folders and the Claude Code and Codex folders
Skills folder locations for Claude Code, Codex and Cursor
Each agent has a personal folder in your home directory and a project folder inside the repo. Some also read other agents’ folders, which is why one copy can show up in more than one tool.
| Agent | Personal | Project | Also reads |
|---|---|---|---|
| Claude Code | ~/.claude/skills/ | .claude/skills/, plus the ones in subfolders when Claude works there | Enterprise managed settings, plugins, your claude.ai account (synced to ~/.claude/skills/synced/) |
| Codex | ~/.agents/skills/ | .agents/skills/, from the folder you start in up to the repo root | ~/.codex/skills/ (older), /etc/codex/skills/, system Skills |
| Cursor | ~/.cursor/skills/, ~/.agents/skills/ | .cursor/skills/, .agents/skills/, anywhere in the repo | .claude/skills/, .codex/skills/, and both in ~ |
On Windows, ~ is your user folder, for example C:\Users\you\.claude\skills.
What a Claude Code Skills folder should look like
Each Skill gets its own folder, and SKILL.md sits directly inside it. Supporting files go in subfolders next to it.
~/.claude/skills/
└── launch-page/
├── SKILL.md
├── references/
└── scripts/The ZIP trap
Unzipping often adds a level, so you end up with launch-page/launch-page/SKILL.md. Claude Code only looks at skills/<name>/SKILL.md, so it won’t list that Skill. Cursor and Codex search deeper and may still find it, which explains the “works in Cursor, missing in Claude Code” reports. Move the inner folder up one level and it works everywhere.
Which copy wins when two Skills share a name
Only Claude Code documents an order. Codex can list both copies, and Cursor doesn’t say.
| Agent | Same name in two places |
|---|---|
| Claude Code | Enterprise first, then personal, then project. Plugin Skills never clash because they carry the plugin’s name. |
| Codex | Doesn’t merge them; both can appear. |
| Cursor | Not documented for Skills. |
Don’t count on the order. Keep one copy, or rename one of them.
Skills in Cursor Cloud Agents
Only ~/.cursor/skills/ syncs to Cursor Cloud Agents, and only when Sync Skills for Cloud Agents is on. A Skill in ~/.agents/skills/ can work on your machine and still be missing in the cloud.
After you move a Skill
Most of the time the agent notices on its own. If the Skill still doesn’t show up, do this:
| Agent | To see the change |
|---|---|
| Claude Code | Nothing; run /reload-skills if the Skills folder is new |
| Codex | Usually nothing; restart if it doesn’t appear |
| Cursor | Open a new chat or reload the window |
Common questions
Where are Claude Skills stored?
Personal Skills go in ~/.claude/skills/<name>/SKILL.md. Project Skills go in .claude/skills/<name>/SKILL.md inside the repo.
Where is the Codex Skills folder?
~/.agents/skills/ for personal Skills and .agents/skills/ in a repository. Codex still reads the older ~/.codex/skills/, which is where OpenAI’s $skill-installer puts Skills.
Can one folder serve every agent?
No. Cursor reads all of them, but Claude Code needs ~/.claude/skills/ and Codex needs ~/.agents/skills/ or ~/.codex/skills/.
Sources
Did this guide help?
