Skills — это способ расширить Codex за пределы генерации кода. Skill упаковывает инструкции, ресурсы и скрипты в один переиспользуемый модуль, чтобы агент надёжно выполнял специфические рабочие процессы — от CI-пайплайнов до code review по стандартам команды.
Что такое Skill и зачем он нужен
Без Skills Codex — сильный агент для кода. Со Skills — настраиваемый инструмент под конкретные задачи команды: CI-пайплайны, документация, ревью по внутренним стандартам, интеграция с корпоративными сервисами.
Что Skill умеет:
- Давать Codex конкретные инструкции по рабочему процессу (не только код)
- Подключать внешние скрипты и ресурсы
- Вызываться автоматически по контексту задачи или явно по имени
- Делиться между членами команды и с сообществом
- Комбинироваться с Automations в Codex app для рутинных задач
Что Skill НЕ делает:
- Не заменяет AGENTS.md (правила поведения агента в проекте)
- Не является MCP-сервером (Skill — инструкция, не инструмент с API)
Skills vs Tools vs System Prompts
Три слоя настройки агента — каждый для своего:
| Слой | Назначение | Когда использовать |
| System Prompt | Глобальное поведение и ограничения | Тон, безопасность, принципы «всегда делай X». Небольшие стабильные политики |
| Tools | Действия во внешнем мире | Вызов внешних сервисов, запрос данных, побочные эффекты (отмена заказа, отправка email) |
| Skills | Повторяемые процедуры + код + ресурсы | Многошаговые workflow, скрипты, шаблоны — загружаются только когда нужны |
Правило: не дублируйте Skills в system prompt. Иначе теряется весь смысл — переиспользуемость, версионирование и условная загрузка.
Структура Skill
Skill — это директория с обязательным файлом SKILL.md и опциональными скриптами и ресурсами.
my-skill/
SKILL.md # обязательный — инструкции и метаданные
scripts/ # опционально — исполняемый код
references/ # опционально — документация
assets/ # опционально — шаблоны, ресурсы
agents/
openai.yaml # опционально — UI-метаданные и зависимостиSKILL.md — минимальная структура
---
name: generate-changelog
description: Генерирует CHANGELOG.md на основе коммитов с момента последнего тега
---
## Инструкция
1. Запусти `git log --oneline <last-tag>..HEAD`
2. Сгруппируй коммиты по типу: feat, fix, chore
3. Запиши результат в CHANGELOG.md в формате Keep a Changelogname и description — обязательные поля во frontmatter. По ним Codex решает, подходит ли Skill для текущей задачи. Пишите description с чёткими границами: «когда использовать» и «когда НЕ использовать».Расширенный frontmatter (agents/openai.yaml)
Формат openai.yaml позволяет настроить UI, политику вызова и зависимости:
interface:
display_name: "Generate Changelog"
short_description: "Генерирует CHANGELOG.md по git-истории"
icon_small: "./assets/small-logo.svg"
icon_large: "./assets/large-logo.png"
brand_color: "#3B82F6"
default_prompt: "Подготовь changelog для текущего релиза"
policy:
allow_implicit_invocation: true # Codex сам подключает Skill по контексту
dependencies:
tools:
- type: "mcp"
value: "openaiDeveloperDocs"
description: "OpenAI Docs MCP server"
transport: "streamable_http"
url: "https://developers.openai.com/mcp"auto_invoke заменён на policy.allow_implicit_invocation (по умолчанию true). Если установить false, Skill не будет вызываться автоматически — только через явное упоминание $skill-name.Как Codex находит и загружает Skills
Codex использует progressive disclosure — двухэтапную загрузку:
- Читает метаданные —
name,description, путь и данные изagents/openai.yamlвсех доступных Skills - Решает, нужен ли Skill — если подходит, загружает полный SKILL.md
- Выполняет задачу с инструкциями Skill
Преимущество: контекстное окно не засоряется инструкциями всех Skills подряд — только нужные загружаются в нужный момент.
Где размещать Skills
Codex сканирует Skills из нескольких расположений с разной областью действия:
| Область | Расположение | Когда использовать |
| REPO (рабочая директория) | $CWD/.agents/skills/ | Skills, специфичные для текущего модуля или микросервиса |
| REPO (родительская) | $CWD/../.agents/skills/ | Skills, общие для группы папок в репозитории |
| REPO (корень) | $REPO_ROOT/.agents/skills/ | Skills для всего репозитория — доступны из любой подпапки |
| USER | $HOME/.agents/skills/ | Личные Skills, работающие во всех проектах пользователя |
| ADMIN | /etc/codex/skills/ | Общие Skills на машине/контейнере, SDK-скрипты, автоматизации |
| SYSTEM | Встроены в Codex от OpenAI | Системные Skills (skill-creator, plan и др.) — доступны всем |
Codex поддерживает симлинки на директории Skills и следует по ним при сканировании. Если два Skills имеют одинаковое name, Codex не объединяет их — оба отображаются в селекторе.
Как вызвать Skill
Автоматически (implicit invocation)
Codex сам подбирает Skill по контексту задачи — если description достаточно точный и в openai.yaml параметр allow_implicit_invocation не выставлен в false.
Явно в промпте
В CLI или IDE используйте /skills или символ $ для упоминания Skill:
$generate-changelog подготовь релизные заметки для v2.3.0Через Codex app (UI)
- Открыть проект в Codex app
- Нажать Skills в боковой панели — там видны все Skills из ваших проектов
- Выбрать нужный Skill → нажать Run или вызвать в чате
Создание Skills
Через встроенный skill-creator
Самый быстрый способ — использовать встроенную команду:
$skill-creatorCreator спрашивает, что Skill делает, когда должен срабатывать и нужны ли скрипты. По умолчанию создаёт instruction-only Skill.
Установка готовых Skills
Для установки Skills из репозиториев используйте $skill-installer:
$skill-installer linearCodex автоматически обнаруживает новые и изменённые Skills. Если обновление не подхватывается — перезапустите Codex.
Включение/выключение Skills
Можно отключить Skill без удаления через ~/.codex/config.toml:
[[skills.config]]
path = "/path/to/skill/SKILL.md"
enabled = falseПосле изменения конфига нужен перезапуск Codex.
Встроенные инструменты внутри Skills
| Инструмент | Что делает |
shell | Выполняет bash-команды в sandbox проекта |
web_search | Ищет актуальную информацию в интернете |
code_interpreter | Запускает Python для анализа данных или вычислений |
| MCP-серверы | Внешние инструменты через Model Context Protocol (можно указать как зависимость в openai.yaml) |
Практические примеры
Skill: ревью по стандарту команды
---
name: team-review
description: Проводит code review по внутренним стандартам команды. Используй при pull request review. Не используй для архитектурных решений.
---
При ревью проверяй:
1. Есть ли тесты на все новые публичные функции
2. Соответствие naming convention из STYLE_GUIDE.md
3. Отсутствие прямых SQL-запросов вне репозитория
4. Наличие docstring на функциях сложнее 5 строк
Формат вывода: список пунктов с уровнем критичности [BLOCK / WARN / NOTE]Skill: автоматический деплой на staging
---
name: deploy-staging
description: Деплоит текущую ветку на staging. Используй когда просят задеплоить или обновить staging. Не используй для production-деплоя.
---
1. Убедись, что все тесты прошли: `npm run test`
2. Собери образ: `docker build -t app:staging .`
3. Задеплой и проверь healthcheck
4. Если статус не 200 — откати и сообщиSkill: создание PRD по шаблону
---
name: create-prd
description: Создаёт PRD для новой фичи по корпоративному шаблону. Вызывай явно — не использовать автоматически.
---
Используй Notion MCP для создания страницы.
Заполни разделы: Problem, Solution, Success Metrics, Out of Scope.Skills через API
Skills можно загружать и использовать программно через OpenAI API — полезно для CI/CD, автоматизации и массовой настройки.
Загрузка Skill
Вариант A: отдельные файлы (multipart)
curl -X POST 'https://api.openai.com/v1/skills' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F 'files[]=@./my-skill/SKILL.md;filename=my-skill/SKILL.md;type=text/markdown' \
-F 'files[]=@./my-skill/run.py;filename=my-skill/run.py;type=text/plain'Вариант B: zip-архив (рекомендуется)
zip -r my-skill.zip my-skill
curl -X POST 'https://api.openai.com/v1/skills' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F 'files=@./my-skill.zip;type=application/zip'Использование в Responses API
Skills монтируются через tools[].environment.skills:
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.2",
tools=[{
"type": "shell",
"environment": {
"type": "container_auto", # или "local"
"skills": [
{"type": "skill_reference", "skill_id": "<skill_id>"},
{"type": "skill_reference", "skill_id": "<skill_id>", "version": 2},
],
},
}],
input="Используй skill для анализа CSV и запиши результат в /mnt/output."
)Версионирование
version: 2— пин на конкретную версию (для продакшна)version: "latest"— всегда последняя версия- Без указания — используется
default_version
Лимиты API
| Параметр | Лимит |
| Максимальный размер zip | 50 МБ |
| Максимум файлов на версию | 500 |
| Максимальный размер файла (без сжатия) | 25 МБ |
| Файлов SKILL.md на Skill | Ровно 1 (регистронезависимо) |
Community Skills и agentskills.io
Skills в Codex построены на открытом стандарте agentskills.io, изначально разработанном Anthropic и затем переданном в открытую разработку. Стандарт открыт для контрибуций от всей экосистемы.
Где искать готовые Skills:
- agentskills.io — официальный каталог
- GitHub-поиск:
filename:SKILL.md— тысячи публичных Skills - OpenAI Cookbook — примеры использования Skills через API
$skill-installer— встроенный установщик в Codex
Совместимость с Claude Code
Оба инструмента используют единый открытый стандарт agentskills.io — Skills переносимы между ними.
Skills от Claude Code работают в Codex с минимальными правками:
- Скопировать из
.claude/skills/в.agents/skills/ - Добавить
agents/openai.yamlсpolicy.allow_implicit_invocation(вместоinvoke: auto) - Убрать hooks — Codex их пока не поддерживает
Best practices
- Держите Skills фокусированными — один Skill = одна задача
- Предпочитайте инструкции скриптам — скрипты нужны только для детерминированного поведения или внешних инструментов
- Пишите императивные шаги с явными входами и выходами
- Добавляйте негативные примеры в description: «когда НЕ использовать» — это улучшает маршрутизацию
- Проектируйте Skills как маленькие CLI — запускаются из командной строки, выводят детерминированный stdout, падают громко с ошибками
- Не дублируйте Skills в system prompt — иначе теряется переиспользуемость и версионирование
- Осторожно с сетевым доступом — если нужен, используйте строгие allowlists и считайте вывод инструментов недоверенным
Чеклист: создание нового Skill
Ссылки
| Ресурс | Ссылка |
| Документация Skills | developers.openai.com/codex/skills |
| Стандарт agentskills.io | agentskills.io |
| Skills в API (Cookbook) | developers.openai.com/cookbook |
| Codex app | developers.openai.com/codex/app |
| Примеры Skills на GitHub | github.com/openai/skills |
По теме
- Статья: 12 приёмов, которые превращают ИИ-агента из игрушки в рабочий инструмент
- Блог: Пять правил, которые сделают вашего ИИ-агента по-настоящему полезным
- База знаний: OpenAI Codex — облачный coding-агент для параллельной разработки
Если вы настраиваете Codex для команды и хотите разобраться, какие Skills создать первыми — давайте обсудим.