Скилл — это папка с файлом 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 CodeOpenAI 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 CodeOpenAI Codex
Обязательный файлSKILL.mdSKILL.md
Frontmattername, description, disable-model-invocation, user-invocable, allowed-tools, model, effort, context, agent, hooks, argument-hintname, 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 в frontmatterpolicy.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-конфигурацию
Выбор модели на Skillmodel и effort (low/medium/high/max) в frontmatterЧерез общие настройки
API для SkillsНет — только файловая системаPOST /v1/skills, версионирование, монтирование в Responses API
Визуальный UIТолько CLISkills 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 CodeCodex
Пользовательский (все проекты)~/.claude/skills//~/.agents/skills//
Репозиторий / проект.claude/skills//.agents/skills//
Системный / админскийmanaged settings/etc/codex/skills/
Плагин/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 из каталога.
AutomationsSkills + 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 файлов в репозитории, работает в обоих.