Скилловик

Практическая статья

Один Agent Skill для Codex, Claude Code и Copilot

Переносимое ядро можно хранить один раз, но пути обнаружения, расширения, инструменты и разрешения каждой платформы нужно проверять отдельно.

Один переносимый Agent Skill подключается к трём разным средам через отдельные адаптеры

Можно ли использовать один Agent Skill в трёх платформах?

Да, если держать переносимое ядро в стандартном SKILL.md и отделить платформенные пути, расширения, доступные инструменты и разрешения. Совместимость формата не означает одинаковое срабатывание и поведение.

Codex, Claude Code и GitHub Copilot поддерживают папки навыков с SKILL.md, метаданными и Markdown-инструкцией. Это даёт общую основу. Но каждая среда по-своему ищет папки, добавляет функции и управляет командами, сетью и внешними инструментами.

Обычная установка без переноса между средами описана отдельно: как установить Agent Skills в Codex и Claude Code.

Что входит в переносимое ядро?

Общими остаются папка навыка, SKILL.md, базовые поля name и description, Markdown-инструкция, относительные ссылки и дополнительные файлы, не завязанные на конкретный runtime.

  • Одна чётко ограниченная работа.
  • Условия выбора навыка.
  • Входы и ожидаемый результат.
  • Обязательный маршрут и безопасные остановки.
  • Критерии проверки.
  • References и assets по относительным путям.

Где платформы ищут Agent Skills?

Пути различаются. Codex использует .agents/skills, Claude Code — .claude/skills, а GitHub Copilot документирует .github/skills и также поддерживает некоторые совместимые расположения. Актуальные пути нужно сверять с документацией конкретного клиента.

СредаПроектный путьЧто проверить
Codex.agents/skillsОбласть видимости и правила обнаружения
Claude Code.claude/skillsПроектный или пользовательский уровень
GitHub Copilot.github/skillsПоддержку выбранного клиента и репозитория

Не создавайте три независимые копии без владельца: они быстро расходятся. Лучше хранить одно исходное ядро и доставлять его в нужные каталоги управляемым способом.

Что не переносится автоматически?

Платформенные расширения frontmatter, встроенные tools, hooks, slash-команды, политика подтверждений, сетевой доступ и runtime скриптов могут отличаться. Их нужно вынести в тонкий адаптер или описать условными ветками.

  • Нестандартные поля метаданных.
  • Имена и схемы встроенных инструментов.
  • Hooks и события жизненного цикла.
  • Команды оболочки и установленные runtimes.
  • Пути к пользовательским настройкам.
  • Разрешения на сеть, файлы и внешние действия.

Если задача на самом деле требует общих правил проекта или подключения инструментов, сверьтесь с разбором AGENTS.md, CLAUDE.md, SKILL.md и MCP.

Как организовать один исходник без трёх расходящихся копий?

Храните каноническую папку навыка в репозитории, отделите общий SKILL.md от адаптеров и синхронизируйте целевые каталоги скриптом или сборочным шагом. Изменения принимайте через одно ревью.

  1. 1. Выберите канонический источник

    Назначьте одну папку и владельца, а не редактируйте установленные копии.

  2. 2. Оставьте общий контракт

    Вынесите в ядро назначение, маршрут, ограничения и критерии результата.

  3. 3. Добавьте адаптеры

    Отдельно храните только действительно различающиеся пути, команды и настройки.

  4. 4. Автоматизируйте доставку

    Копируйте или связывайте файлы предсказуемым шагом с проверкой результата.

  5. 5. Версионируйте вместе

    Один pull request должен обновлять ядро, адаптеры и тестовые сценарии.

Как переносить scripts и зависимости?

Скрипт должен быть самодостаточным, неинтерактивным и явно сообщать требования к runtime. Если одинаковую операцию нельзя воспроизвести во всех средах, предусмотрите отдельные реализации с единым контрактом входа и выхода.

  • Используйте относительные пути от корня навыка.
  • Добавьте --help и полезные сообщения об ошибках.
  • Не предполагайте наличие пакета или команды без проверки.
  • Возвращайте ненулевой код при ошибке.
  • Не выполняйте внешнее действие без предусмотренного подтверждения.

При росте пакета держите архитектуру компактной по методике разделения большого SKILL.md.

Как проверить совместимость в Codex, Claude Code и Copilot?

Запускайте один и тот же набор сценариев в каждой целевой среде: обнаружение, прямое срабатывание, отказ на чужой задаче, пограничный вход, доступ к файлам и результат скриптов. Фиксируйте различия, а не только общий статус pass.

ПроверкаОжидание
ОбнаружениеНавык виден из документированного пути
ВыборПрямой запрос включает навык, чужой — нет
МаршрутОбязательные шаги одинаковы
ИнструментыАдаптер вызывает доступный эквивалент
ОграниченияПодтверждения и остановки сохраняются

Такую матрицу можно запускать автоматически по схеме проверки Agent Skills в CI.

Когда лучше поддерживать разные навыки?

Разделите навыки, если основная работа, инструменты или требования безопасности различаются настолько, что общий файл заполнен условными ветками. Совпадающее название не оправдывает общий пакет при разном поведении.

Оставляйте одно ядро, пока большая часть маршрута и критериев результата совпадает. Если переносимый слой стал лишь короткой вводной, отдельные навыки будут понятнее и безопаснее сопровождать.

Правила владельцев, релизов и удаления дублей собраны в статье как управлять Agent Skills в команде.

Адаптировать набор skills под три среды

Источники

  1. Agent Skills specificationAgent Skills; проверено
  2. Agent SkillsOpenAI Developers; проверено
  3. Create custom skillsClaude Code; проверено
  4. Agent SDK skillsAnthropic; проверено
  5. About Agent SkillsGitHub Docs; проверено
  6. Add skills to Copilot coding agentGitHub Docs; проверено
  7. Agent Skills in VS CodeVisual Studio Code; проверено