Where are Claude Code skills stored? Skill folders by agent
Updated
Claude Code stores skills in .claude/skills/ inside a project and in ~/.claude/skills/ in your home folder, one subfolder per skill, each holding a SKILL.md. Other agents use their own folders, though eight of the ones we list share .agents/skills/ at the project level. Below are the paths the skills CLI uses for each agent, then what Claude Code, Codex, Cursor and Gemini CLI say in their own docs.
Skill folders by agent
From the Supported Agents table in the skills CLI's README, with the id you pass to -a:
| Agent | -a id | Project path | Global path |
|---|---|---|---|
| Claude Code | claude-code | .claude/skills/ | ~/.claude/skills/ |
| Codex | codex | .agents/skills/ | ~/.codex/skills/ |
| Cursor | cursor | .agents/skills/ | ~/.cursor/skills/ |
| GitHub Copilot | github-copilot | .agents/skills/ | ~/.copilot/skills/ |
| Windsurf | windsurf | .windsurf/skills/ | ~/.codeium/windsurf/skills/ |
| Gemini CLI | gemini-cli | .agents/skills/ | ~/.gemini/skills/ |
| Cline | cline | .agents/skills/ | ~/.agents/skills/ |
| Amp | amp | .agents/skills/ | ~/.config/agents/skills/ |
| OpenCode | opencode | .agents/skills/ | ~/.config/opencode/skills/ |
| Zed | zed | .agents/skills/ | ~/.agents/skills/ |
| Roo Code | roo | .roo/skills/ | ~/.roo/skills/ |
VS Code has no id of its own in the CLI. Its agent mode is GitHub Copilot, so use -a github-copilot.
By default the skills CLI installs into the project path under your current folder. Add -g to use the global path instead, and repeat -a to cover several agents at once. The first command below installs for Codex in this project, into .agents/skills/. The second installs for Gemini CLI in every project, into ~/.gemini/skills/:
npx skills add https://seoskills.sh -a codex
npx skills add https://seoskills.sh -g -a gemini-cli
Without -a, the CLI detects which agents you have installed. When you install for several agents at once, its recommended method keeps one canonical copy and symlinks each agent's folder to it; --copy makes separate copies instead.
Claude Code
Besides .claude/skills/ in a project and ~/.claude/skills/ for you, Claude Code loads skills from managed settings, plugins and folders added with --add-dir. If you sign in with a claude.ai account, it syncs that account's skills into ~/.claude/skills/synced/. Its skills docs don't mention .agents/skills/.
Project skills load from the folder where you start Claude Code and from each parent folder up to the repository root. A .claude/skills/ folder lower down, in apps/web/ say, loads the first time Claude reads or edits a file there. When two skills share a name, a managed (enterprise) skill beats a personal one, and personal beats project.
Type /skill-name to run a skill, or let Claude load it when your request matches its description. Setting disable-model-invocation: true leaves it to you alone, and user-invocable: false leaves it to Claude. Edits to skills are picked up mid-session; if you create a top-level skills folder that didn't exist at startup, run /reload-skills. Cowork and cloud sessions don't read ~/.claude/skills/. Install skills in Claude Code walks through setup.
Codex
Codex checks .agents/skills in every folder from the one you launch it in up to the repository root. It also reads $HOME/.agents/skills for your own skills, /etc/codex/skills for admin skills on the machine, and the system skills bundled with Codex. It follows symlinked skill folders.
Here the CLI and Codex's docs disagree. The CLI writes global Codex installs to ~/.codex/skills/, but the Codex skills docs give $HOME/.agents/skills as the user location and don't mention ~/.codex/skills/. If a global install doesn't appear, copy the skill's folder into ~/.agents/skills/. Codex picks up new skills on its own, and its docs say to restart it if one is missing.
At the start, Codex sees each skill's name, description and file path, and reads the full SKILL.md once it picks one. Mention a skill with $, or run /skills in the CLI or IDE extension. Codex can also choose one when your task matches the description, unless the skill's agents/openai.yaml sets allow_implicit_invocation: false. With many skills installed, Codex shortens descriptions to fit the list in 2% of the context window, so a description should lead with its trigger words.
Cursor
Cursor loads .agents/skills/ and .cursor/skills/ in a project, ~/.agents/skills/ and ~/.cursor/skills/ for the user, and, for compatibility, .claude/skills/, .codex/skills/, ~/.claude/skills/ and ~/.codex/skills/. Skill folders nested deeper in a repo apply only to files in their directory. Both CLI paths are on Cursor's list.
Cursor's agent decides when a skill is relevant. You can also type / in Agent chat to use one for a single message, or keep it on for a session as a Custom Mode. How to use skills in Cursor has the details, and Cursor's skills docs list the frontmatter fields it supports.
Gemini CLI
Gemini CLI looks in four tiers, from lowest precedence to highest: built-in skills, extension skills, user skills in ~/.gemini/skills/ or ~/.agents/skills/, and workspace skills in .gemini/skills/ or .agents/skills/. On a name clash the higher tier wins, and within one tier .agents/skills/ beats .gemini/skills/. The CLI's two paths land in the workspace and user tiers.
When a session starts, Gemini CLI adds each enabled skill's name and description to the system prompt. If a task matches, Gemini calls its activate_skill tool and shows a consent prompt with the skill's name, purpose and the folder it will read. Once you approve, the SKILL.md body joins the conversation and the skill's folder becomes readable. Run /skills list to see what it found and /skills reload to rescan. It also has its own installer, gemini skills install, covered in the Gemini CLI skills docs.
Moving Claude skills to Codex, Copilot and others
All four agents above build on the Agent Skills open standard, so a skill folder from Claude Code can move to another agent as it is. The simplest way is to rerun the skill's install command with the other agent's id:
npx skills add https://github.com/coreyhaines31/marketingskills --skill schema -a codex -a github-copilot
You can also copy the folder by hand, from .claude/skills/schema/ to .agents/skills/schema/. Codex's docs list that folder, and it's the CLI's project path for GitHub Copilot; GitHub's own docs are the place to confirm how Copilot loads it. Cursor needs neither step, because it already reads .claude/skills/.
Before you move a skill, check whether it relies on Claude Code-only features. Claude Code's docs call subagent execution and dynamic context injection extensions to the standard, and the CLI's compatibility table marks context: fork as supported in Claude Code only.