Guide
How to use skills in Codex: where the folder is and how to call one
Codex reads skills from $HOME/.agents/skills (yours, in every repository) and from .agents/skills in a repository, which it scans from the folder you start in up to the repository root; each skill is a folder with a SKILL.md inside. To call one, type $ and the skill's name, or run /skills in the Codex CLI or IDE extension; Codex also picks a skill by itself when your request matches its description. The folder is .agents, not .codex: ~/.codex holds Codex's settings.
Short answer
- Yours:
$HOME/.agents/skills/<skill-name>/SKILL.md - A repository's:
.agents/skills/<skill-name>/SKILL.md - Call it:
$skill-name, or pick it from/skills. - Or let Codex choose: the description decides.
Where Codex looks for skills
| Folder | What it's for |
|---|---|
$HOME/.agents/skills | Your own skills, in any repository you work in |
.agents/skills where you start Codex | Skills for one folder of a repository, such as one service |
.agents/skills in parent folders, up to the repository root | Skills for everyone working in the repository; commit them |
/etc/codex/skills | A set for every user of the machine or container |
| Bundled with Codex | System skills, including skill-creator and skill-installer |
From OpenAI's Codex docs, read 6 November 2026. Codex follows symlinked skill folders. If two skills share a name, Codex doesn't merge them; both can appear in the list.
Install a skill on Mac or Windows
You have a folder, say crash-triage, with a SKILL.md directly inside, in Downloads.
Mac or Linux, in Terminal:
mkdir -p ~/.agents/skills
cp -R ~/Downloads/crash-triage ~/.agents/skills/
Windows, in PowerShell. OpenAI gives one path, $HOME/.agents/skills, with no separate Windows path, and in PowerShell $HOME is your user folder, the value of %USERPROFILE% (Microsoft's docs):
New-Item -ItemType Directory -Path "$HOME\.agents\skills" -Force
Copy-Item -Path "$HOME\Downloads\crash-triage" -Destination "$HOME\.agents\skills" -Recurse -Force
Point -Path at the folder with SKILL.md directly inside: if Extract All put it one level deeper, as in Downloads\crash-triage\crash-triage, copy the inner one. Copying into the skills folder itself keeps the folder's name, and -Force lets you rerun the line for a newer version.
Codex notices new skills on its own; if one doesn't appear, restart Codex. Then run /skills to check it's listed. Running Codex inside WSL? There it uses the Linux home folder, so copy the skill there instead.
Skills from a repository, such as OpenAI's curated set: ask the built-in installer, for example $skill-installer linear. You can also tell it to download skills from other repositories.
Call a skill, or let Codex pick it
| Where you work | How to find or call a skill |
|---|---|
| Codex CLI, IDE extension | Type $ and the name, as in $crash-triage, or run /skills and pick one |
| ChatGPT desktop app | Open Skills in the sidebar to see the skills across your projects |
| ChatGPT | Type @ to select a skill |
Without a mention, Codex chooses a skill when your request matches its description. With many skills installed, Codex shortens descriptions to fit, so put the main use and the words you'd type at the start of the description.
To turn a skill off without deleting it, add an entry to ~/.codex/config.toml and restart Codex:
[[skills.config]]
path = "/path/to/skill/SKILL.md"
enabled = false
A worked example: one crash-triage skill for Codex and Claude Code
Illustration: a made-up business. A three-person studio ships a mobile app. Lena works in the Codex CLI on a Mac, Sam in Codex on Windows, and their contractor Ola in Claude Code. Whenever a crash report arrives, Lena pastes:
Here's a crash log. Find the first stack frame in our code, not in the libraries. Tell me the file and line, what the user was doing from the breadcrumbs, how many users and which app versions, and draft an issue titled "[crash] <screen>: <error>".
She gives the prompt-to-skill skill that prompt and two issues she wrote by hand last week, as examples of the output she wants. The start of what it returns:
---
name: crash-triage
description: Triages a mobile crash log - the first stack frame in the team's own code, what the user was doing, affected users and app versions - and drafts the issue. Use when someone pastes a crash log, a stack trace or asks "why is the app crashing".
---
## Steps
1. Skip library and system frames. The first frame in our code is
the suspect.
2. From the breadcrumbs, write what the user did in one sentence.
...
- Lena saves it as
~/.agents/skills/crash-triage/SKILL.mdand calls it with$crash-triageon the next report. - Sam runs the two PowerShell lines above;
/skillslistscrash-triage. - Ola's Claude Code doesn't read
.agents/skills. She copies the folder into~/.claude/skills/too, so now there are three copies on three computers.
When Lena changes the issue title format, the other two copies keep the old one.
Next step: one copy for Codex, Claude Code and the rest of the team
On one computer, a single folder linked into both ~/.agents/skills and ~/.claude/skills keeps Codex and Claude Code on the same file: syncing skills across Claude Code, Codex, Cursor and OpenCode shows the links. Between people, each copy still drifts.
AI Skill Pod, this site's product, lets you share AI skills with your team, easily; free to start. Each person adds the team's pod once, in Codex with codex mcp add and the pod's link, then codex mcp login, and once in each other AI they use: Claude Code, Cursor, Claude or ChatGPT (Pro, Business, Enterprise). Everyone reaches the same skills, and an edit reaches all of them the next time their AI fetches the skill. The pod's skills don't appear in /skills: Codex fetches them from the pod when a task matches, or when you ask for one by name. Free covers up to 3 members and 10 skills.
Skills for this
- AI practiceTurn a prompt into a skillTurns a prompt that works into a skill the whole team can reuse, with a valid name, a when-to-use description, steps, an output template, an example, and checks.
- Customer successBug report from a support ticketTurns a customer complaint into an engineering-ready bug report: steps to reproduce, expected vs actual, environment, impact, evidence, and questions to ask.
- ProductRelease notes from merged changesWrites customer-facing release notes from merged PRs or tickets, grouped New, Improved, Fixed, benefit-first, plus an internal changelog.
- ProductUser stories with acceptance criteriaTurns a feature into user stories with Given/When/Then acceptance criteria, edge cases, out-of-scope notes, and an INVEST check per story.
Questions
Where are Codex skills stored?
Your own skills go in $HOME/.agents/skills/<skill-name>/SKILL.md and are available in every repository. A repository's skills go in .agents/skills, which Codex scans from the folder you start it in up to the repository root. There are also /etc/codex/skills for a machine-wide set and system skills that ship with Codex.
How do I call a skill in Codex?
In the Codex CLI or the IDE extension, type $ and the skill's name in your prompt, or run /skills to pick one from the list. Codex can also choose a skill by itself when your request matches the skill's description.
Where do Codex skills go on Windows?
OpenAI gives one path, $HOME/.agents/skills, with no separate Windows path. In PowerShell, $HOME is your user folder (the value of %USERPROFILE%, typically C:\Users\<you>), so the commands on this page work as written. Then check that /skills lists the skill.
Is it ~/.codex/skills or ~/.agents/skills?
OpenAI's docs list .agents/skills, under $HOME and in repositories. The ~/.codex folder holds Codex's settings, config.toml, where you can turn a skill off.
AI skill
Have your AI turn a prompt that works into a skill your team can reuse
Put this skill in AI Skill Pod and everyone on your team gets it in their Claude, Cursor or ChatGPT (Pro, Business, Enterprise): one invite link, free to start. Turn a prompt into a skill has your AI turn a prompt you paste into Codex into a SKILL.md in the open Agent Skills format, with a description that names the words you'd type, so Codex picks it without a $ mention and Claude Code can read the same file.
14 days free · No card needed
Sources
- OpenAI Codex docs: Build skills — read 07:50 JST (developers.openai.com/codex/skills redirects here): a skill is a folder with SKILL.md (name and description); locations: $CWD/.agents/skills, $CWD/../.agents/skills, $REPO_ROOT/.agents/skills, $HOME/.agents/skills, /etc/codex/skills, and system skills bundled with Codex (skill-creator, skill-installer); symlinked folders followed; explicit invocation with /skills or $ in the CLI and IDE extension, @ in ChatGPT; implicit invocation by description; changes detected automatically, restart if one doesn't appear; $skill-installer installs curated skills and can download skills from other repositories; [[skills.config]] in ~/.codex/config.toml with path and enabled = false; standalone skills in the ChatGPT desktop app, Codex CLI and IDE extension; in the desktop app, Skills in the sidebar; with many skills Codex shortens descriptions first (read 2026-11-06)
- OpenAI docs: Skills & Plugins — read 07:52 JST: ChatGPT supports @ mentions, Codex supports $ mentions for skills; $skill-creator in Codex (read 2026-11-06)
- OpenAI docs: ChatGPT desktop app for Windows — read 07:51 JST: the Windows app supports skills and uses the Codex home directory %USERPROFILE%\.codex, as native Codex on Windows does; Codex in WSL uses the Linux home (read 2026-11-06)
- OpenAI docs: Codex CLI — read 07:51 JST: installers for macOS, Linux and Windows (PowerShell) (read 2026-11-06)
- OpenAI docs: MCP in Codex — read 07:59 JST: codex mcp add <name> --url <url>; codex mcp login <name> (read 2026-11-06)
- Microsoft Learn: about_Automatic_Variables — read 07:52 JST: in PowerShell, $HOME is the user's home directory, on Windows the value of $Env:USERPROFILE, typically C:\Users\<UserName> (read 2026-11-06)
- Microsoft Learn: Copy-Item — read 08:00 JST: -Recurse copies a directory and its contents; to keep the source directory's name, copy to an existing destination directory; -Force copies over items that can't otherwise be changed (read 2026-11-06)
- Claude Code Docs: Extend Claude with skills — read 07:49 JST: Claude Code reads ~/.claude/skills and .claude/skills (read 2026-11-06)