
How-Tos
How to create a Codex skill
Create a Codex skill with the built-in skill creator or a manual SKILL.md that includes name and description. Codex detects it automatically; restart only if it does not appear.
Searcher → Analyst → Writer → Editor · subagentic-20261011-0800
A skill is how you stop re-explaining the same job. It packages instructions, resources, and optional scripts so ChatGPT or Codex can follow one workflow reliably. The required file is SKILL.md, and it must include name and description. Standalone skills are available in the ChatGPT desktop app, Codex CLI, and the IDE extension. Skills are the authoring format. Plugins distribute reusable skills and connectors through the universal plugin directory shared by ChatGPT and Codex. Design the workflow as a skill, then package a plugin when you want other people to install it.
What Codex reads first
Skills use progressive disclosure. ChatGPT and Codex start with each skill's name and description, then load the full SKILL.md instructions when they decide to use that skill. In Codex, the initial list also includes each skill's file path.
That list uses at most 2% of the model's context window, or 8,000 characters when the context window is unknown. If many skills are installed, Codex shortens skill descriptions first. For large skill sets, Codex may omit some skills from the initial list and show a warning. The budget applies only to the initial list. When Codex selects a skill, it still reads the full SKILL.md.
Codex can activate a skill in two ways:
- Explicit invocation. In Codex CLI or the IDE extension, run
/skillsor type$to mention a skill. In ChatGPT, type@to select a skill. - Implicit invocation. ChatGPT or Codex can choose a skill when your task matches the skill
description.
Write concise descriptions with clear scope and boundaries. Front-load the key use case and trigger words so a host can still match the skill if descriptions are shortened.
Invoke the built-in creator
If the workflow is easier to show than describe, the create-skill page points to Record & Replay. The recorder captures the workflow, inspects the steps, and drafts a reusable skill from the demonstration. Recorder controls are not documented on this page.
To describe the skill, use the built-in creator. In Codex, invoke it as:
$skill-creator
In ChatGPT Work, invoke it as @skill-creator. Those are different entry points.
The creator asks what the skill does, when it should trigger, and whether it should stay instruction-only or include scripts. Instruction-only is the default. Further prompts, the folder it writes, and any confirmation step are not specified here.
Write the skill folder yourself
A skill is a directory with a SKILL.md file plus optional scripts and references. The SKILL.md file must include name and description. The documented layout treats instructions and metadata as required, and it also allows optional executable code, optional documentation, optional templates and resources, and optional agents/openai.yaml for appearance and dependencies.
Create the folder and start SKILL.md with the documented front matter:
---
name: skill-name
description: Explain exactly when this skill should and should not trigger.
---
Skill instructions for ChatGPT or Codex to follow.
The illustrated directory name and the name in that front matter are different strings. The page does not say they must match, and it does not state a character limit for name or description. Keep both fields, and make the description say when the skill should and should not trigger. Then write the instructions Codex should follow.
Keep each skill focused on one job. Prefer instructions over scripts unless you need deterministic behavior or external tooling. Write imperative steps with explicit inputs and outputs. Test prompts against the skill description to confirm the right trigger behavior.
Place it where Codex scans
Codex reads skills from repository, user, admin, and system locations. For repositories, it scans .agents/skills in every directory from the current working directory up to the repository root. If two skills share the same name, Codex does not merge them; both can appear in skill selectors. Symlinked skill folders are supported; Codex follows the symlink target.
$CWD/.agents/skillsis the current working directory, where you launch Codex. Use it for skills relevant to that working folder, such as one microservice or module.$CWD/../.agents/skillsis a parent folder when you launch Codex inside a Git repository. Use it for a shared area above the working directory.$REPO_ROOT/.agents/skillsis the repository root when you launch Codex inside a Git repository. These root skills are available to any subfolder.$HOME/.agents/skillsis the user folder. Skills here can apply to any repository that user works in./etc/codex/skillsis the admin location on a machine or container. Use it for SDK scripts, automation, and default skills for each user on the machine.- System skills are bundled with Codex, including the skill-creator and plan skills. They are available when Codex starts.
These locations are for authoring and local discovery. To distribute a skill beyond one repo, bundle skills, or ship a skill with a connector, package a plugin. A plugin can include one or more skills and can optionally bundle registered MCP server connections, bundled MCP server configuration, and presentation assets. This page does not include plugin build steps.
Codex detects skill changes automatically. If an update does not appear, restart Codex.
Set optional metadata, or turn a skill off
Add agents/openai.yaml to configure UI metadata in the ChatGPT desktop app, set invocation policy, and declare tool dependencies. The documented example is:
interface:
display_name: "Optional user-facing name"
short_description: "Optional user-facing description"
icon_small: "./assets/small-logo.svg"
icon_large: "./assets/large-logo.png"
brand_color: "#3B82F6"
default_prompt: "Optional surrounding prompt to use the skill with"
policy:
allow_implicit_invocation: false
dependencies:
tools:
- type: "mcp"
value: "openaiDeveloperDocs"
description: "OpenAI Docs MCP server"
transport: "streamable_http"
url: "https://developers.openai.com/mcp"
allow_implicit_invocation defaults to true. When false, Codex will not implicitly invoke the skill based on the user prompt. Explicit $skill invocation still works.
To disable a skill without deleting it, add this to ~/.codex/config.toml:
[[skills.config]]
path = "/path/to/skill/SKILL.md"
enabled = false
Restart Codex after changing ~/.codex/config.toml.
Install a curated skill instead of writing one
For curated skills beyond the built-ins, use $skill-installer. The documented example is:
$skill-installer linear
You can also prompt the installer to download skills from other repositories. Codex detects newly installed skills automatically; if one does not appear, restart Codex. That path is for local setup and experimentation. For distribution of skills you write, prefer plugins. The page names GitHub CI repair, PDF, Linear, the openai/skills repository, and the agent skills specification as further examples.
What to do next
Invoke $skill-creator in Codex, or create a folder with the SKILL.md above and put it in $HOME/.agents/skills or in .agents/skills on a repository path Codex scans. Then run /skills, or type $ and mention the skill. If it does not appear, restart Codex. In the ChatGPT desktop app, open Skills in the sidebar to view skills created across your projects. Use the create-skill page below as the checklist before you add scripts or a plugin; this article does not go past what that page states.