Codex

Codex skills: create SKILL.md, skill folder locations and $skill invocation

How do I create and use skills in Codex?

A Codex skill is a folder with a SKILL.md file whose YAML frontmatter has a name and a description. Put it in .agents/skills in your repository or in ~/.agents/skills for all projects. Call it with /skills or by typing $ and the skill name, or let Codex pick it when your task matches the description.

What a skill contains

  • SKILL.md (required): instructions plus YAML frontmatter with name and description. The description should say when the skill should and should not trigger.
  • scripts/ (optional): executable code.
  • references/ (optional): documentation.
  • assets/ (optional): templates and other resources.
  • agents/openai.yaml (optional): UI appearance, invocation policy and tool dependencies.

.agents/skills/release-notes/SKILL.md

---
name: release-notes
description: Draft release notes from recent commits. Use when the user asks for release notes or a changelog. Do not use for code changes.
---

1. Read the commits since the last tag.
2. Group changes into Features, Fixes and Other.
3. Write the notes in plain Markdown.

Where to put skills

  • $CWD/.agents/skills: the folder where you launch Codex.
  • $CWD/../.agents/skills: parent folders, when you launch inside a Git repository.
  • $REPO_ROOT/.agents/skills: the top of the repository.
  • $HOME/.agents/skills: your personal skills for every project.
  • /etc/codex/skills: admin-installed skills.
  • System skills bundled with Codex.

Codex scans .agents/skills from the current folder up to the repository root. Skills with the same name are not merged; both appear in the selector. Symlinked skill folders work.

Run a skill

  • Explicit: in the Codex CLI or IDE extension, run /skills or type $ and the skill name.
  • Implicit: Codex may choose a skill on its own when the task matches its description.

Build a new skill with the built-in helper

$skill-creator

Install a curated skill

$skill-installer linear

Turn off implicit use or disable a skill

To stop Codex from picking a skill on its own, set policy.allow_implicit_invocation to false in agents/openai.yaml. Explicit $skill calls still work.

agents/openai.yaml

policy:
  allow_implicit_invocation: false

To disable a local skill completely, add a [[skills.config]] entry to ~/.codex/config.toml and restart Codex.

~/.codex/config.toml

[[skills.config]]
path = "/path/to/skill/SKILL.md"
enabled = false

Limits and reloading

  • Codex detects skill changes automatically. If an update does not show, restart Codex.
  • The initial skills list is capped at 2% of the context window, or 8,000 characters if the window size is unknown. With many skills installed, Codex shortens descriptions first.
  • To share skills with others, package them in a plugin.

Sources

More on Codex

Other guides

Cursor: allow all terminal commandsClaude Code: allow commands without promptsCodex CLI: approval and sandbox modesGemini CLI: YOLO mode, auto_edit and allowing specific shell commandsCursor Privacy Mode: telemetry, training and data retentionClaude Code telemetry and data retention: what is sent and how to turn it offGemini CLI: turn off usage statistics and telemetryCLAUDE.md: where it goes, how it loads, and how it works with AGENTS.mdClaude Code hooks: format on save, block risky edits, get notifiedClaude Code subagents: create one, limit its tools, and call itAdd MCP servers to Cursor with mcp.json: Keep files out of Cursor with .cursorignore: Configure Codex with config.toml: Configure Gemini CLI with settings.json: Add MCP servers to Claude Code (claude mcp add, .mcp.json, scopes): Claude Code custom slash commands and skills (SKILL.md): GitHub Copilot custom instructions: Adding MCP servers to GitHub Copilot: Claude Code settings.json: file locations, precedence, and key settingsClaude Code plugins and marketplaces: install, create, and shareGemini CLI extensions and custom commands: Configuring OpenCode with opencode.json: Cline Rules: workspace, global, and conditional rulesKiro steering files: .kiro/steering, inclusion modes, and AGENTS.mdZed agent: instruction files, MCP servers, tool permissions, and ACP agentsCursor CLI: install, headless mode, permissions and CIAider: CONVENTIONS.md, .aider.conf.yml and API keysJunie guidelines, MCP and the Action Allowlist: Amp AGENTS.md, settings.json and MCP: Configure Goose extensions, hints, recipes and permissions: Customize OpenHands with skills, AGENTS.md, setup.sh and MCP: Configure Factory Droid CLI: AGENTS.md, settings.json, autonomy, custom droids and MCPConfigure Qwen Code: settings.json, providers, QWEN.md, MCP and approval modesCursor hooks: hooks.json, beforeShellExecution, afterFileEdit and exit codesCursor sandbox: sandbox.json, network allowlist and run modesCursor settings: settings.json, Cursor Settings and the ~/.cursor config filesCursor browser agent: @browser, browser automation and approval modesCursor subagents: .cursor/agents, frontmatter, built-in Explore, Bash and BrowserCursor telemetry and OpenTelemetry export (Privacy Mode, OTLP, Analytics API): Cursor rules setup: .cursor/rules, .mdc frontmatter, globs, alwaysApply and AGENTS.mdClaude Code headless mode: claude -p, --output-format json, --bare and CI flagsClaude Code statusline: custom status bar in settings.json with context %, cost and git branchClaude Code /model: switch models, aliasesClaude Code /cost and /usage: check token spend, usage limits and reduce costsClaude Code VS Code extension: install, shortcuts, settings and /ideCodex AGENTS.md: global, project and override instruction files explainedCodex MCP servers: codex mcp add and [mcp_servers] in config.tomlCodex sandbox modes: read-only, workspace-write, danger-full-access and network accesscodex exec: run Codex non-interactively in scripts and CI with JSON outputGEMINI.md in Gemini CLI: context file locations, imports and /memoryGemini CLI MCP servers: gemini mcp add and mcpServers in settings.jsonGemini CLI custom slash commands: TOML files, {{args}}, !{shell} and @{file}Gemini CLI headless mode: gemini -p, JSON output and exit codes for scripts and CIGemini CLI sandbox: enable Docker, Podman, macOS Seatbelt or gVisorcopilot-setup-steps.yml: set up the GitHub Copilot cloudGitHub Copilot CLI permissions: --allow-tool, --deny-tool, --allow-all-tools and trusted directoriesGitHub Copilot custom agents: .github/agents/*.agent.md profiles, tools and frontmatterGitHub Copilot code review settings: automatic PR reviews, rulesets, effort level and approvals

Get the weekly agent stack update

New official MCP servers, spec changes and harness releases, checked against the source. One email a week, no fluff.

Reviewed Oct 13, 2026. Settings change often; the linked vendor docs are the source of truth.