MagicPath — мультиплеерный AI-канвас, где люди и агенты (Codex, Claude Code, Cursor) проектируют интерфейсы вместе. Генерация UI из промптов, экспорт кода, Figma-импорт.
База знаний
Перенос скилла из Claude в Codex: пошаговое руководство
Как перенести skill из Claude Code в OpenAI Codex: общий стандарт SKILL.md, что переезжает без правок, а что нужно адаптировать вручную.
СейчасЧто переносится, а что нет: картина целиком
- Что переносится, а что нет: картина целиком
- Анатомия скилла
- Где лежат скиллы: Claude против Codex
- Соответствие полей frontmatter
- Сквозной пример: скилл «summarize-changes»
- Исходный скилл в Claude
- Пошаговый перенос
- Эталонный результат для Codex
- Частные случаи
- Скиллы со скриптами
- Многофайловые скиллы
- Скиллы с аргументами
- Распространение навыка
- Проверка результата
- Типичные ошибки
- Чеклист быстрого переноса
- Ссылки
Скилл (skill) — это папка с файлом SKILL.md, которая даёт ИИ-агенту готовый навык: инструкции, при необходимости скрипты и справочные материалы под конкретную задачу. Это руководство показывает, как перенести скилл из Claude Code в OpenAI Codex: что переедет без единой правки, а что придётся поправить руками.
SKILL.md общий, поэтому перенос обычно сводится к смене папки и проверке нескольких полей. Переписывать навык с нуля не нужно.Что переносится, а что нет: картина целиком
Три вещи, важные до начала переноса:
- Тело и метаданные скилла общие.
name,descriptionи markdown-инструкции работают в обоих агентах одинаково. - Различается расположение папки. Claude читает скиллы из
.claude/skills, Codex — из.agents/skills. Это самая частая причина, по которой перенесённый навык «не виден». - Часть полей frontmatter есть только у Claude. Их нужно либо убрать, либо заменить на механизм Codex.
| Элемент скилла | Перенос |
name, description | Без изменений |
| Markdown-инструкции (тело) | Без изменений |
Папки scripts/, references/, assets/ | Без изменений |
| Расположение папки скилла | Меняется (см. таблицу путей) |
Claude-поля frontmatter (allowed-tools, disable-model-invocation и др.) | Убрать или адаптировать |
Динамические вставки и подстановки $ARGUMENTS | Переписать вручную |
Анатомия скилла
Скилл — это директория с обязательным файлом SKILL.md и опциональными вложенными папками:
summarize-changes/
├── SKILL.md # обязательно: метаданные + инструкции
├── scripts/ # опционально: исполняемый код
├── references/ # опционально: справочные материалы
└── assets/ # опционально: шаблоны, ресурсыSKILL.md состоит из двух частей: YAML-фронтматтер между --- (что это за навык и когда его применять) и markdown-инструкции (что именно делать).
Оба агента используют прогрессивное раскрытие: при старте в контекст попадают только name, description и путь к скиллу, а полное тело SKILL.md подгружается, только когда агент применяет навык. Поэтому description — это рабочий триггер: по нему агент и решает, включать навык.
description выносите вперёд ключевой сценарий и слова-триггеры. И Claude, и Codex обрезают длинные описания в общем списке навыков, поэтому первое предложение важнее последнего.Где лежат скиллы: Claude против Codex
| Уровень | Claude Code | Codex |
| Пользовательский (все проекты) | ~/.claude/skills/<name>/ | ~/.agents/skills/<name>/ |
| Репозиторий / проект | .claude/skills/<name>/ | .agents/skills/<name>/ |
| Системный / админский | managed settings | /etc/codex/skills/ |
| Плагин | <plugin>/skills/<name>/ | плагин Codex |
.agents/skills, а не из .codex/skills и не из .claude/skills. Codex сканирует .agents/skills от текущей папки вверх до корня репозитория. Положите навык не туда — и агент просто его не увидит.В Codex навык можно вызвать явно (/skills или $имя-скилла) или положиться на неявный вызов по description. В Claude — командой /имя-скилла или автоматически.
Соответствие полей frontmatter
| Поле в Claude | Что делать в Codex |
name | Оставить как есть |
description | Оставить, вынести триггеры в начало |
when_to_use | Влить текст в description (отдельного поля в Codex нет) |
| Тело markdown | Оставить как есть |
scripts/, references/, assets/ | Перенести как есть, проверить пути в тексте |
| Динамическая вставка команды | Аналога нет: вынести в явный шаг «выполни …» или в скрипт |
$ARGUMENTS, $1, $name | Аналога нет: описать аргументы словами в инструкциях |
allowed-tools, disallowed-tools | Убрать; доступ к инструментам в Codex регулируется политикой подтверждений |
disable-model-invocation: true | Перенести в agents/openai.yaml: policy.allow_implicit_invocation: false |
model, effort | Убрать; задаётся на уровне сессии Codex |
context: fork, agent | Прямого аналога нет; субагенты в Codex настраиваются отдельно |
paths | Аналога нет; ограничение опишите словами в description |
name и description — единственные обязательные поля в обоих агентах. Всё остальное — надстройки Claude поверх общего стандарта, и именно они требуют внимания при переносе.Сквозной пример: скилл «summarize-changes»
Возьмём реальный навык из официальных примеров Claude Code: он показывает незакоммиченные изменения в git и помечает рискованные места. Удобно для код-ревью и сообщений к коммитам. В нём есть Claude-специфичная вставка, на которой обычно спотыкается перенос.
Исходный скилл в Claude
Файл ~/.claude/skills/summarize-changes/SKILL.md:
---
name: summarize-changes
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
allowed-tools: Read Grep
---
## Current changes
!`git diff HEAD`
## Instructions
Summarize the changes above in two or three bullet points, then list any
risks you notice such as missing error handling, hardcoded values, or tests
that need updating. If the diff is empty, say there are no uncommitted changes.Здесь две Claude-специфичные детали:
allowed-tools: Read Grep— список инструментов, разрешённых без запроса. В стандарте Agent Skills этого поля нет.- Строка !
git diff HEAD— динамическая вставка: Claude выполняет команду и подставляет результат в текст до того, как скилл попадёт в модель. Codex так не умеет.
Пошаговый перенос
- Создайте папку в Codex-расположении. Для личного навыка —
~/.agents/skills/summarize-changes/, для командного —.agents/skills/summarize-changes/в репозитории. - Скопируйте
SKILL.mdи папкиscripts/,references/,assets/(если они есть) без изменений. - Почистите frontmatter. Оставьте
nameиdescription, уберитеallowed-tools. - Замените динамические вставки. Строку !
git diff HEADуберите из тела и добавьте явный шаг «выполниgit diff HEAD». Либо вынесите команду вscripts/diff.sh. - Перенесите управление вызовом. Если в Claude стоял
disable-model-invocation: true, добавьтеagents/openai.yamlсpolicy.allow_implicit_invocation: false. - Проверьте пути и зависимости скриптов, чтобы они запускались в окружении Codex.
- Перезапустите Codex и проверьте навык в
/skills, затем явным и неявным вызовом.
Эталонный результат для Codex
Структура папки:
~/.agents/skills/summarize-changes/
├── SKILL.md
└── agents/
└── openai.yaml # опционально: имя, иконка, политика вызоваSKILL.md:
---
name: summarize-changes
description: Summarizes uncommitted git changes and flags risky spots. Use when the user asks what changed, wants a commit message, or asks to review a diff.
---
## Instructions
1. Run `git diff HEAD` to read the current uncommitted changes.
2. Summarize them in two or three bullet points.
3. List any risks: missing error handling, hardcoded values, or tests that need updating.
4. If the diff is empty, say there are no uncommitted changes.Опциональный agents/openai.yaml — если хотите задать отображаемое имя и запретить неявный вызов:
interface:
display_name: "Summarize changes"
short_description: "Обзор незакоммиченных изменений и рисков"
policy:
allow_implicit_invocation: false # вызывать только явно через $summarize-changesЧто изменилось по сравнению с Claude-версией:
allowed-toolsубрано.- Динамическая вставка
git diff HEADпревратилась в явный шаг 1. - Управление вызовом переехало в
agents/openai.yaml. name,descriptionи логика инструкций остались без изменений.
Частные случаи
Скиллы со скриптами
Скрипты переносятся как есть: положите их в scripts/ и ссылайтесь из SKILL.md. Проверьте, что интерпретатор и зависимости (Python, Node и так далее) доступны в окружении Codex. Надёжнее всего так и заменять Claude-вставки команд: детерминированная логика в скрипте работает одинаково везде.
Многофайловые скиллы
Папка references/ и дополнительные markdown-файлы переносятся без изменений. Главное — сохранить относительные ссылки на них внутри SKILL.md, чтобы прогрессивное раскрытие работало: агент подгрузит файл, только когда он понадобится.
Скиллы с аргументами
Если в Claude использовались подстановки $ARGUMENTS или $1, в Codex опишите ожидаемые аргументы словами: «возьми номер задачи из запроса пользователя». Codex подставит контекст запроса сам.
Распространение навыка
Для раздачи скилла другим разработчикам Codex использует плагины: один плагин может содержать несколько скиллов, а также конфигурацию MCP-серверов и ассеты. Прямые папки .agents/skills нужны для локальной разработки и репозиторных навыков.
Проверка результата
- Запустите
/skillsв Codex — навык должен появиться в списке. - Вызовите его явно:
$summarize-changes. Это проверяет сам факт загрузки. - Дайте запрос, который должен включить навык неявно (например, «что я изменил?»). Это проверяет
description. - Если в скилле есть скрипты — убедитесь, что они отрабатывают без ошибок окружения.
Типичные ошибки
| Симптом | Причина и решение |
| Codex не видит навык | Папка не в .agents/skills. Перенесите и перезапустите Codex |
| Навык не срабатывает сам | Слабый description. Вынесите триггеры в начало или вызывайте явно $имя |
| Пусто там, где в Claude был diff | Осталась динамическая вставка команды. Замените явным шагом или скриптом |
| Навык виден дважды | Два скилла с одним name на разных уровнях. Codex их не сливает — переименуйте |
| Скрипт падает | Нет зависимости или интерпретатора в окружении Codex |
| Нужно временно выключить навык | В ~/.codex/config.toml добавьте [[skills.config]] с enabled = false |
Чеклист быстрого переноса
.agents/skills/<name>/ или ~/.agents/skills/<name>/SKILL.md есть name и descriptiondescription, текст when_to_use влит туда же$ARGUMENTS / $1 переписаны словамиallowed-tools / disallowed-tools убраныdisable-model-invocation перенесён в agents/openai.yaml (allow_implicit_invocation: false)model, effort, paths, context: fork убраныscripts/, references/, assets/ на месте, пути в тексте актуальны/skills$name работаетСсылки
- Codex — Agent Skills
- Claude Code — Skills
- Открытый стандарт Agent Skills
- Спецификация Agent Skills
- Примеры скиллов: OpenAI · Anthropic
По теме
Если собираете собственный набор скиллов и хотите, чтобы они одинаково работали в Claude и Codex, это реально выстроить как единую систему под ваши задачи.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Связанные материалы
Общее понимание и рабочая рамка: чтобы команда и руководство видели реальные сценарии, риски и следующий шаг без инфо-шума.
Кросс-вендорный стандарт инструкций для ИИ-агентов. AGENTS.md задаёт правила проекта, SESSION_NOTES фиксирует контекст между сессиями, checkpoint передаёт смену.