How to Understand the Functionality of an OpenAI Skill: A Complete Technical Guide
An OpenAI Skill is a self-contained package that declares its purpose in SKILL.md, configures its UI in agents/openai.yaml, and executes logic via scripts in the scripts/ directory, making it discoverable and runnable by any Codex-enabled agent.
To understand the functionality of an OpenAI Skill, you need to examine its convention-driven directory structure and runtime contract. Each skill in the openai/skills repository follows a standardized anatomy that separates metadata, user interface hints, and implementation logic, enabling automated discovery and execution without custom integration code.
Anatomy of an OpenAI Skill
Every skill resides in a folder under skills/ and adheres to a strict file layout that agents parse automatically.
SKILL.md: The Metadata Layer
The SKILL.md file serves as the canonical description of what the skill does. Located at paths like skills/.curated/speech/SKILL.md, this markdown file contains:
- Description: High-level explanation of the skill's purpose
- When-to-use: Conditions that trigger the skill's invocation
- Prerequisites: Required environment variables like
OPENAI_API_KEY - Workflow: Step-by-step execution logic and decision trees
When a Codex agent receives a request, it first loads this metadata to determine if the skill matches the user's intent.
agents/openai.yaml: UI Configuration
The agents/openai.yaml file (e.g., skills/.curated/speech/agents/openai.yaml) provides display metadata for Codex agents:
- Display name: Human-readable title shown in the UI
- Short description: Tooltip or subtitle text
- Icons: Visual identifiers for the skill
- Default prompt: Initial instructions sent to the model when the skill activates
This separation allows the same underlying script to present different interfaces depending on the agent context.
scripts/: Implementation Logic
The scripts/ directory contains the actual executable code. For example, skills/.curated/speech/scripts/text_to_speech.py implements the Speech Generation skill by:
- Parsing CLI arguments (
--text,--voice,--out) - Validating the
OPENAI_API_KEYenvironment variable - Calling the OpenAI Audio API using the
openaiPython SDK - Respecting rate limits (50 RPM default)
- Writing output to the specified path
Scripts can be written in Python, shell, or any language, provided they adhere to the input/output contract defined in SKILL.md.
references/ and assets/: Supporting Resources
- references/: Documentation, sample prompts, and CLI usage guides (e.g.,
references/cli.md) - assets/: Icons, images, and binary files needed for UI rendering
- LICENSE.txt: Legal terms governing the skill's usage
How Skills Are Discovered and Installed
The skill-installer system automates the discovery and deployment of skills from the repository.
Discovery via list-skills.py
The script skills/.system/skill-installer/scripts/list-skills.py queries the GitHub API using github_api_contents_url defined in skills/.system/skill-installer/scripts/github_utils.py. It:
- Lists directories under
skills/.curated - Checks
$CODEX_HOME/skillsfor locally installed copies - Returns JSON metadata with
installedflags
python -m skills/.system/skill-installer/scripts/list-skills.py --format json
Installation Process
The install-skill-from-github.py script downloads the skill folder into $CODEX_HOME/skills/<skill-name>. The $skill-installer command wraps this functionality:
skill-installer speech
This internally executes:
python skills/.system/skill-installer/scripts/install-skill-from-github.py \
--repo openai/skills \
--path skills/.curated/speech
Runtime Execution Flow
When a Codex-enabled agent invokes a skill, it follows a strict execution pipeline:
- Load Metadata: Parse
SKILL.mdto understand intent, prerequisites, and workflow - Present UI: Render the interface defined in
agents/openai.yaml(icon, description, default prompt) - Collect Inputs: Gather required parameters (text, voice, format) from the user
- Run Implementation: Execute the script in
scripts/(e.g.,text_to_speech.py) - Return Results: Output files go to
output/<skill-name>/, temporary data totmp/<skill-name>/
The Speech Generation skill exemplifies this flow: it requires OPENAI_API_KEY, defaults to the gpt-4o-mini-tts-2025-12-15 model, and respects a 50 RPM rate limit.
Practical Examples: Working with the Speech Skill
Listing Available Skills
python -m skills/.system/skill-installer/scripts/list-skills.py --format json
This uses _list_skills() internally to query the GitHub API and returns JSON with installed flags indicating which skills exist locally in $CODEX_HOME/skills/.
Installing the Speech Skill
skill-installer speech
This command runs install-skill-from-github.py with --repo openai/skills --path skills/.curated/speech, downloading the skill to $CODEX_HOME/skills/speech.
Running Text-to-Speech
cd $CODEX_HOME/skills/speech
python scripts/text_to_speech.py \
--text "Welcome to the demo." \
--voice cedar \
--out output/speech/demo.mp3
Behind the scenes, the script builds a JSONL request, calls openai.Audio.speech(), and enforces the 50 RPM limit. Output lands in output/speech/demo.mp3 as specified.
Using the Default Prompt
prompt = """Generate spoken audio for this text with the right voice style,
pacing, and output format."""
The agent sends this prompt together with user text to the skill's workflow defined in SKILL.md.
Summary
- OpenAI Skills follow a convention-driven structure separating metadata (
SKILL.md), UI configuration (agents/openai.yaml), and implementation (scripts/). - Discovery happens via
list-skills.pyusing the GitHub API throughgithub_utils.py, checking against$CODEX_HOME/skills/for local copies. - Installation copies skill folders from
skills/.curated/to the local environment usinginstall-skill-from-github.pywrapped by theskill-installercommand. - Runtime execution loads metadata, presents the UI, collects inputs, runs scripts, and manages output directories (
output/andtmp/). - The Speech Generation skill demonstrates this architecture with
text_to_speech.py, requiringOPENAI_API_KEYand defaulting to thegpt-4o-mini-tts-2025-12-15model.
Frequently Asked Questions
What file defines the core functionality of an OpenAI Skill?
The SKILL.md file serves as the canonical definition, located at the root of each skill folder (e.g., skills/.curated/speech/SKILL.md). This markdown file declares the skill's purpose, prerequisites like OPENAI_API_KEY, the decision workflow, and usage instructions that agents parse to determine when and how to invoke the capability.
How does a Codex agent know how to display a skill in the UI?
The agent reads agents/openai.yaml (e.g., skills/.curated/speech/agents/openai.yaml) to retrieve display metadata including the skill's name, icon, short description, and default prompt. This separation allows the same underlying scripts to present different interfaces depending on the agent context, without modifying the core logic.
Where are OpenAI Skills installed on my local machine?
Skills are installed into $CODEX_HOME/skills/<skill-name> by the install-skill-from-github.py script, which is wrapped by the $skill-installer command. The list-skills.py utility checks this directory to determine which skills are already installed versus available in the remote skills/.curated/ repository.
How do I list all available skills from the OpenAI repository?
Run python -m skills/.system/skill-installer/scripts/list-skills.py --format json to query the GitHub API via github_utils.py and enumerate directories under skills/.curated. This command returns JSON metadata indicating which skills are installed locally in $CODEX_HOME/skills/ and which are available for installation.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →