Скилл — это папка с файлом SKILL.md, которая даёт ИИ-агенту готовый навык: инструкции, при необходимости скрипты и справочные материалы под конкретную задачу. Claude Code и OpenAI Codex используют один открытый стандарт Agent Skills, поэтому перенос обычно сводится к смене папки и проверке нескольких полей. Переписывать навык с нуля не нужно.
Ключевое правило: главная причина, по которой перенесённый навык «не виден» в Codex, — неправильная папка. Codex читает скиллы из .agents/skills, не из .claude/skills и не из .codex/skills.
Что это
Agent Skills — это открытый стандарт описания навыков для ИИ-агентов. Файл SKILL.md содержит YAML-фронтматтер (что это за навык и когда его применять) и markdown-инструкции (что именно делать). Папка может также содержать scripts/, references/ и assets/. Оба агента используют прогрессивное раскрытие: при старте в контекст попадают только name, description и путь, а полное тело подгружается, только когда агент применяет навык.
Различаются три вещи: расположение папки, набор полей frontmatter и механизм динамических вставок. Тело markdown, структура каталога и подпапки scripts/references/assets переезжают без изменений.
Стандарт изначально разработан Anthropic и передан в открытую разработку. Поддерживают не только Codex и Claude Code, но и Junie (JetBrains), Gemini CLI (Google) и другие агенты. Если Skill написан корректно по стандарту, он работает в нескольких агентах без переписывания.
Зачем нужно
- Перевести команду с Claude Code на Codex или наоборот без потери накопленных навыков.
- Использовать один и тот же навык в обоих агентах: например, summarize-changes и в Claude Code, и в Codex.
- Поделиться навыком с сообществом: стандарт Agent Skills работает в обоих агентах, README достаточно один раз.
- Сократить дублирование: одна кодовая база скиллов вместо двух параллельных репозиториев.
Как устроено
| Элемент скилла | Что при переносе | Что делать |
|---|---|---|
| name, description | Без изменений | Оставить как есть |
| Markdown-инструкции (тело) | Без изменений | Оставить как есть |
| Папки scripts/, references/, assets/ | Без изменений | Перенести, проверить пути |
| Расположение папки скилла | Меняется | См. таблицу путей ниже |
| Claude-поля frontmatter | Убрать или адаптировать | allowed-tools, disable-model-invocation и др. |
| Динамические вставки $ARGUMENTS | Аналога нет | Переписать вручную |
Хронология и зрелость экосистем
| Параметр | Claude Code | OpenAI Codex |
|---|---|---|
| Когда появились Skills | Середина 2025 (как slash commands); конец 2025 — объединены в Skills | Конец 2025 — в CLI; начало 2026 — в Codex app и API |
| Зрелость экосистемы | Зрелая, активное сообщество | Молодая, быстро растёт |
| Публичные Skills | Тысячи на GitHub (filename: SKILL.md) | Растёт, каталог на agentskills.io, $skill-installer |
| Встроенные Skills | /batch, /simplify, /debug, /loop, /claude-api | $skill-creator, $plan |
Claude Code исторически называл эту функцию slash commands (.claude/commands/). Пользовательские commands были объединены со Skills — старые файлы в .claude/commands/ продолжают работать, но Skills рекомендуются как основной формат.
Сравнение формата: 13 аспектов
| Аспект | Claude Code | OpenAI Codex |
|---|---|---|
| Обязательный файл | SKILL.md | SKILL.md |
| Frontmatter | name, description, disable-model-invocation, user-invocable, allowed-tools, model, effort, context, agent, hooks, argument-hint | name, description + расширение в agents/openai.yaml (interface, policy, dependencies) |
| Директория Skills | ~/.claude/skills/ (личные), .claude/skills/ (проект), enterprise, plugins | $HOME/.agents/skills/ (личные), $REPO_ROOT/.agents/skills/ (проект), /etc/codex/skills/ (admin), system |
| Явный вызов | /skill-name в чате | $skill-name или /skills в CLI/IDE |
| Блокировка авто-вызова | disable-model-invocation: true в frontmatter | policy.allow_implicit_invocation: false в openai.yaml |
| Аргументы | $ARGUMENTS, $ARGUMENTS[N], $N — подстановка в контент | Через текст промпта |
| Субагенты | context: fork + agent: Explore/Plan/general-purpose или кастомные | Базовая поддержка, развивается |
| Hooks (события) | В frontmatter: hooks — триггеры на события жизненного цикла Skill | Не поддерживается |
| Динамический контекст | !command — выполнение команд до загрузки Skill | Не поддерживается |
| Ограничение инструментов | allowed-tools: Read, Grep, Bash(gh *) — гранулярно | Через sandbox-конфигурацию |
| Выбор модели на Skill | model и effort (low/medium/high/max) в frontmatter | Через общие настройки |
| API для Skills | Нет — только файловая система | POST /v1/skills, версионирование, монтирование в Responses API |
| Визуальный UI | Только CLI | Skills UI в Codex app |
Когда использовать
| Ситуация | Решение |
|---|---|
| Перевести команду с Claude Code на Codex | Перенести скиллы из .claude/skills в .agents/skills, проверить frontmatter |
| Скилл использует allowed-tools | Убрать поле, доступ к инструментам в Codex задаётся политикой подтверждений |
| Скилл использует динамические вставки !команда | Превратить в явный шаг «выполни …» или вынести в scripts/ |
| В Claude стоял disable-model-invocation: true | Добавить agents/openai.yaml с policy.allow_implicit_invocation: false |
| Скилл не виден после переноса | Проверить, что папка называется .agents/skills, а не .codex/skills |
Встроенные Skills: что есть из коробки
У Claude Code — 5 встроенных Skills, проверенных на больших кодовых базах. У OpenAI Codex — 2 встроенных Skills, помогающих в самом процессе разработки.
| Skill (Claude Code) | Что делает |
|---|---|
| /batch | Масштабные изменения в кодовой базе параллельно — декомпозиция на 5–30 юнитов, по агенту на каждый, PR на выходе |
| /simplify | Ревью недавних изменений — 3 параллельных агента проверяют качество, переиспользование и эффективность |
| /debug | Диагностика текущей сессии по debug-логу |
| /loop | Повторяет промпт по интервалу — мониторинг деплоя, ожидание CI |
| /claude-api | Загружает справку по Claude API для языка проекта |
| Skill (OpenAI Codex) | Что делает |
|---|---|
| $skill-creator | Создаёт новый Skill по описанию задачи |
| $plan | Планирование изменений в кодовой базе перед выполнением |
Пример
Сравнение путей. Уровень пользователя и проекта различается — это первая точка путаницы.
| Уровень | Claude Code | Codex |
|---|---|---|
| Пользовательский (все проекты) | ~/.claude/skills/ | ~/.agents/skills/ |
| Репозиторий / проект | .claude/skills/ | .agents/skills/ |
| Системный / админский | managed settings | /etc/codex/skills/ |
| Плагин | плагин Codex |
Codex сканирует .agents/skills от текущей папки вверх до корня репозитория. Положите навык не туда — и агент просто его не увидит. В Codex навык вызывается явно через /skills или $имя-скилла, либо неявно по description. В Claude — командой /имя-скилла или автоматически.
Совет: в description выносите вперёд ключевой сценарий и слова-триггеры. И Claude, и Codex обрезают длинные описания в общем списке навыков, поэтому первое предложение важнее последнего.
Пример переносимого Skill (write-tests)
Если Skill содержит только SKILL.md с frontmatter (name, description) и инструкциями — он работает в обоих агентах без изменений. Пример — Skill, который пишет unit-тесты для публичных функций.
---
name: write-tests
description: Пишет unit-тесты для новых публичных функций в текущем файле
---
1. Найди все публичные функции без тестов
2. Для каждой напиши тест в соответствующем test-файле
3. Покрой edge cases: null, пустые значения, граничные числа
Этот Skill запустится и в Claude Code, и в Codex без единой правки — потому что использует только name, description и текстовые инструкции. Никаких hooks, субагентов, allowed-tools или $ARGUMENTS.
Чеклист портирования Skill из Claude Code в Codex
- Скопировать папку Skill в .agents/skills/ проекта
- Проверить frontmatter: name и description присутствуют
- Убрать Claude-специфичные поля: context, agent, allowed-tools, hooks, effort, model
- Убрать $ARGUMENTS и динамический контекст (!cmd)
- Если нужно управление авто-вызовом — создать agents/openai.yaml с блоком policy
- Протестировать явный вызов: $skill-name
Ограничения
| Ограничение | Пояснение |
|---|---|
| name и description — единственные обязательные поля в обоих агентах. | Всё остальное — надстройки Claude поверх общего стандарта. |
| allowed-tools и disable-model-invocation в Codex не работают. | Доступ к инструментам регулируется политикой подтверждений, явный вызов — agents/openai.yaml. |
| Динамические вставки !команда в Codex не выполняются. | Это не баг, а осознанный выбор архитектуры — агенту нельзя выполнять код до того, как скилл попал в контекст. |
| $ARGUMENTS и $1 в Codex не подставляются | Если скилл принимает аргументы, опишите их явно в инструкциях. |
| paths и context — fork в Codex не работают. | Ограничения и субагенты описываются словами или настраиваются отдельно. |
| Skills через API — загрузка, версионирование (version — 2 или “latest”), монтирование в Responses API. | Claude Code работает только через файловую систему. |
| Visual UI | панель Skills в Codex app для создания и управления без терминала. |
| Progressive disclosure — Codex загружает только метаданные, полный SKILL.md — по необходимости. | Снижает потребление контекста. |
| Цена — $20/мес за Codex vs $100+/мес за Claude Max. | При высоких объёмах Codex значительно дешевле. |
| $skill-installer | встроенный установщик готовых Skills из каталога. |
| Automations | Skills + Automations в Codex app для рутинных фоновых задач. |
| Субагенты — context — fork + выбор типа агента (Explore, Plan, кастомные). | Полноценная оркестрация команд агентов. |
| Hooks — триггеры на события жизненного цикла Skill. | Позволяют строить CI-подобные пайплайны. |
| Динамический контекст | !command выполняет команды до загрузки Skill и подставляет результат в инструкции. |
| Гранулярный контроль инструментов | allowed-tools на уровне отдельного Skill. |
| Аргументы с подстановкой | $ARGUMENTS, $0, $1 для параметризованных Skills. |
| Выбор модели и effort | каждый Skill может использовать свою модель и уровень усилий. |
| Встроенные мощные Skills | /batch (декомпозиция + параллельные агенты + PR), /simplify (3 ревью-агента параллельно), /loop (мониторинг по расписанию). |
| Автономность | Claude Code работает непрерывно до завершения задачи; Codex чаще запрашивает подтверждение. |
| Размер экосистемы | больше публичных Skills за счёт более раннего старта. |
Антипаттерны
| Антипаттерн | Почему опасно |
|---|---|
| Не делать | класть скилл в .codex/skills — потому что Codex эту папку не сканирует, агент навык не увидит. |
| Не делать | оставлять allowed-tools в frontmatter — потому что Codex это поле игнорирует, безопасность даёт ложное чувство защищённости. |
| Не делать | использовать !git diff HEAD в теле скилла — потому что Codex не выполнит команду до загрузки скилла, и в контексте окажется пустая строка. |
| Не делать | переносить скилл без проверки путей в scripts/ — потому что относительные пути в Claude-версии могут не работать в Codex из-за другого рабочего каталога. |
Чеклист
| Проверка | Что сделать |
|---|---|
| Папка скилла | ~/.agents/skills// для личного, .agents/skills// для проектного. |
| В frontmatter оставлены только name и description, остальные Claude-поля удалены или заменены — true, добавлен agents/openai.yaml с policy.allow_implicit_invocation: | false. |
| Пути в scripts/ проверены | скрипты запускаются из рабочего каталога Codex. |
| Codex перезапущен, скилл появился в /skills и работает по явному и неявному вызову | instruction-only Skills заработают сразу. |
| Добавьте agents/openai.yaml к Skills, которые нужно авто-вызывать или настроить | упростите логику. |
| Используйте GitHub-каталог | ищите filename — SKILL.md и забирайте проверенные Skills. |
| Пишите Skills по стандарту agentskills.io | они будут работать в обоих агентах и в Junie, Gemini CLI. |
| Начните с instruction-only — без скриптов, хуков и субагентов. | Добавляйте по необходимости. |
| Один Skill = один процесс. | Хороший description = точный авто-вызов — они доступны всей команде через version control. |
| Claude Code | для планирования, сложных структурных решений и многоэтапных задач. |
| Codex | для чётко определённого исполнения, параллельных задач и ревью перед мержем. |
| Skills общие | один набор SKILL.md файлов в репозитории, работает в обоих. |