Skip to content

Совместимость навыков Claude Code ​

Что вы сможете делать после изучения ​

  • Понять, как плагины автоматически обеспечивают совместимость с форматом навыков Claude Code
  • Освоить механизм отображения инструментов, чтобы навыки Claude работали корректно в OpenCode
  • Узнать полные правила приоритетности обнаружения навыков
  • Повторно использовать существующие навыки из плагин-рынка Claude без переписывания

Ваша текущая проблема ​

У вас уже есть несколько навыков Claude Code, или вы хотите использовать навыки из плагин-рынка Claude, но эти навыки написаны специально для Claude Code. При прямом использовании в OpenCode возникают проблемы:

  • Вызовы инструментов в навыках Claude (например, TodoWrite, Task) не существуют в OpenCode
  • Неясно, как заставить OpenCode находить установленные плагины навыков Claude
  • Беспокойство о несовместимости форматов навыков, требующее полного переписывания

Основная концепция ​

Плагин OpenCode Agent Skills обеспечивает трёхуровневый механизм совместимости, позволяющий использовать навыки Claude Code без модификаций:

  1. Автоматическое обнаружение — сканирование навыков из стандартных директорий Claude Code (.claude/skills/, ~/.claude/plugins/)
  2. Отображение инструментов — автоматическая инъекция руководства по отображению инструментов при загрузке навыков, преобразующая имена инструментов Claude в имена инструментов OpenCode
  3. Поддержка форматов — одновременная поддержка v1 и v2 форматов установки плагинов Claude

Ключевая концепция

Формат навыков Claude Code — спецификация навыков, определённая Anthropic, использующая файлы SKILL.md для описания навыков, содержащие YAML frontmatter (метаданные) и Markdown контент (инструкции).

Принцип отображения инструментов ​

Когда плагин обнаруживает, что загружаемый навык написан для Claude Code, он автоматически инъецирует руководство по отображению инструментов:

Инструмент Claude CodeИнструмент OpenCodeПравило отображения
TodoWrite/TodoReadtodowrite/todoreadнижний регистр
Task (субагент)task (с параметром subagent_type)изменить на параметр
Skilluse_skillзаменить имя инструмента
Read/Write/Edit/Bash/Glob/Grep/WebFetchread/write/edit/bash/glob/grep/webfetchнижний регистр

Способ отображения: Плагин инъецирует руководство по отображению как XML в контекст сессии при загрузке навыков, и AI автоматически вызывает правильные инструменты согласно отображению.

Зачем нужно отображение?

Claude Code и OpenCode используют разные стили именования инструментов. Claude использует PascalCase (например, TodoWrite), OpenCode использует нижний регистр (например, todowrite). Отображение инструментов сообщает AI, как выполнять преобразование вызовов.

Приоритетность обнаружения навыков ​

Плагин обнаруживает навыки в следующем порядке, первый найденный навык имеет приоритет (навыки с одинаковым именем не дублируются):

mermaid
graph TD
    A[Процесс обнаружения навыков] --> B[Проектный уровень OpenCode]
    B --> |.opencode/skills/| C[1. project]
    C --> D[Проектный уровень Claude Code]
    D --> |.claude/skills/| E[2. claude-project]
    E --> F[Пользовательский уровень OpenCode]
    F --> |~/.config/opencode/skills/| G[3. user]
    G --> H[Пользовательский уровень Claude Code]
    H --> |~/.claude/skills/| I[4. claude-user]
    I --> J[Кэш плагинов Claude]
    J --> |~/.claude/plugins/cache/| K[5. claude-plugins]
    K --> L[Плагин-рынок Claude]
    L --> |~/.claude/plugins/marketplaces/| M[6. claude-plugins]

    style C fill:#e1f5e1
    style E fill:#fff4e1
    style G fill:#e1f5e1
    style I fill:#fff4e1
    style K fill:#fff4e1
    style M fill:#fff4e1

Правила приоритетности:

  • Проектные навыки перекрывают пользовательские навыки (удобно для кастомизации проектов)
  • Навыки OpenCode имеют приоритет над навыками Claude (избежание путаницы)
  • Навыки с одинаковыми именами сохраняют только первую найденную версию
Пример: перекрытие навыков с одинаковыми именами

Предположим, у вас есть навык с именем git-helper в двух местах:

  • .claude/skills/git-helper/SKILL.md (версия Claude)
  • .opencode/skills/git-helper/SKILL.md (версия OpenCode)

Результат: версия OpenCode вступает в силу (более высокий приоритет)

🎒 Подготовка к началу ​

  • Установлен и настроен плагин OpenCode Agent Skills
  • Понимание базовых концепций навыков (рекомендуется сначала прочитать Что такое OpenCode Agent Skills?)
  • (Необязательно) Имеются установленные плагины или навыки Claude Code

Следуйте за мной ​

Шаг 1: Проверьте обнаружение навыков Claude ​

Зачем Убедитесь, что плагин правильно сканирует вашу директорию навыков Claude Code.

Вызовите инструмент в OpenCode:

get_available_skills()

Что вы должны увидеть: возвращаемый список навыков включает навыки из .claude/skills/, ~/.claude/skills/, ~/.claude/plugins/, где поле source каждого навыка показывает источник (например, claude-project, claude-user, claude-plugins).

Проверочная точка ✅: Подтвердите, что список содержит ожидаемые навыки Claude.

Шаг 2: Загрузите навык Claude ​

Зачем Проверьте, правильно ли работает механизм отображения инструментов.

Вызовите инструмент для загрузки навыка Claude:

use_skill(skill="your-skill-name")

Что вы должны увидеть: возвращаемое сообщение об успехе, например Skill "xxx" loaded..

Проверочная точка ✅: AI теперь может использовать инструкции этого навыка.

Шаг 3: Проверьте, что отображение инструментов работает ​

Зачем Убедитесь, что AI правильно вызывает инструменты OpenCode, а не инструменты Claude.

Задайте AI задачу, требующую использования инструментов этого навыка, например:

Пожалуйста, используйте функцию todo в навыке, чтобы создать список задач для меня.

Что вы должны увидеть: AI правильно вызывает инструмент todowrite OpenCode, а не инструмент TodoWrite Claude.

Как проверить, что отображение работает?

Посмотрите журнал вызовов инструментов AI (если включён режим отладки), вы увидите, что он вызывает todowrite, а не TodoWrite.

Проверочная точка ✅: Вызов инструмента успешен, задача завершена.

Предупреждения о подводных камнях ​

1. Несоответствие формата плагинов ​

Проблема: Старые плагины Claude используют формат v1, новые — формат v2, что приводит к тому, что некоторые навыки не могут быть обнаружены.

Причина: Структуры installed_plugins.json v1 и v2 различаются.

Решение: Плагин одновременно поддерживает оба формата, ручное преобразование не требуется. Если навыки по-прежнему не обнаруживаются, проверьте, существует ли ~/.claude/plugins/installed_plugins.json и правильный ли его формат.

2. Отображение инструментов не работает ​

Проблема: AI по-прежнему вызывает имена инструментов Claude, вызывая ошибки.

Причина: Содержимое навыка может обходить руководство по отображению инструментов, или используются жёстко закодированные вызовы инструментов.

Решение:

  • Подтвердите, что навык используется после загрузки, а не путём прямого вызова инструментов
  • Если в навыке есть примеры кода, вручную измените имена инструментов на формат OpenCode

3. Конфликты имён навыков ​

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

Причина: Перекрытие, вызванное приоритетностью обнаружения навыков.

Решение:

  • Проверьте поле source навыка, чтобы подтвердить источник
  • Используйте формат пространства имён для явного указания источника: use_skill(skill="user:skill-name") или use_skill(skill="claude-plugins:skill-name")
Синтаксис пространства имён

Плагин поддерживает формат namespace:skill-name:

  • project:skill-name - проектные навыки OpenCode
  • claude-project:skill-name - проектные навыки Claude
  • user:skill-name - пользовательские навыки OpenCode
  • claude-user:skill-name - пользовательские навыки Claude
  • claude-plugins:skill-name - навыки плагин-рынка Claude

Резюме урока ​

Плагин OpenCode Agent Skills обеспечивает трёхуровневый механизм совместимости для бесшовного повторного использования навыков Claude Code:

  • Автоматическое обнаружение - сканирование навыков из 6 расположений, охватывающих проектный, пользовательский и плагинный уровни
  • Отображение инструментов - автоматическое преобразование имён инструментов Claude в имена инструментов OpenCode
  • Поддержка форматов - одновременная поддержка форматов плагинов Claude v1 и v2

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

Анонс следующего урока ​

В следующем уроке мы изучим Интеграцию с рабочими процессами Superpowers.

Вы узнаете:

  • Как включить режим Superpowers
  • Автоматическое обнаружение и загрузка навыков Superpowers
  • Как строгие рабочие процессы повышают эффективность разработки

Приложение: Справочник по исходному коду ​

Нажмите, чтобы развернуть и просмотреть расположение исходного кода

Обновлено: 2026-01-24

ФункциональностьПуть к файлуНомера строк
Определение отображения инструментовsrc/claude.ts19-25
Определение типов форматов v1/v2src/claude.ts35-61
Извлечение путей установки плагиновsrc/claude.ts68-77
Обнаружение навыков плагиновsrc/claude.ts82-105
Обнаружение навыков рынкаsrc/claude.ts115-180
Обнаружение кэшированных навыковsrc/claude.ts193-253
Список приоритетов обнаружения навыковsrc/skills.ts241-254
Логика дедупликации навыков с одинаковыми именамиsrc/skills.ts256-260
Импорт toolTranslationsrc/tools.ts15
Инъекция отображения инструментовsrc/tools.ts238-249

Ключевые константы:

  • toolTranslation: XML-строка руководства по отображению инструментов, внедряемая в контекст сессии при загрузке навыков. Определена в src/claude.ts:19-25, импортирована в src/tools.ts:15

Ключевые функции:

  • getPluginInstallPaths(): Извлекает пути установки плагинов из форматов v1/v2
  • discoverSkillsFromPluginDir(): Сканирует поддиректорию skills/ директории плагинов
  • discoverMarketplaceSkills(): Обнаруживает навыки из ~/.claude/plugins/marketplaces/ (приоритет)
  • discoverPluginCacheSkills(): Обнаруживает навыки из ~/.claude/plugins/cache/ (резервный вариант)
  • findFile(): Рекурсивно ищет указанное имя файла (вспомогательная функция)

Важные процессы:

  1. При инициализации плагина вызывается discoverAllSkills() → перебирает 6 путей обнаружения
  2. При обнаружении навыков плагинов Claude вызывается discoverMarketplaceSkills() или discoverPluginCacheSkills()
  3. При загрузке навыков инструмент use_skill вставляет toolTranslation в XML-контент (строка 244)