Skip to content

Compatibilidad con Skills de Claude Code

Lo que aprenderás

  • Entender cómo el plugin es automáticamente compatible con el formato de skills de Claude Code
  • Dominar el mecanismo de mapeo de herramientas para que los skills de Claude funcionen correctamente en OpenCode
  • Conocer las reglas completas de prioridad en el descubrimiento de skills
  • Reutilizar skills existentes del marketplace de plugins de Claude sin necesidad de reescribirlos

Tu situación actual

Ya tienes algunos skills de Claude Code, o quieres usar skills del marketplace de plugins de Claude, pero estos skills fueron escritos para Claude Code. Usarlos directamente en OpenCode presenta problemas:

  • Las llamadas a herramientas en los skills de Claude (como TodoWrite, Task) no existen en OpenCode
  • No está claro cómo hacer que OpenCode encuentre los skills de plugins de Claude instalados
  • Te preocupa que el formato de los skills sea incompatible y tengas que reescribir todo

Concepto central

El plugin OpenCode Agent Skills utiliza un mecanismo de compatibilidad de tres capas que te permite usar skills de Claude Code sin modificaciones:

  1. Descubrimiento automático - Escanea skills desde los directorios estándar de Claude Code (.claude/skills/, ~/.claude/plugins/)
  2. Mapeo de herramientas - Al cargar un skill, inyecta automáticamente una guía de mapeo que convierte los nombres de herramientas de Claude a nombres de OpenCode
  3. Soporte de formatos - Compatible con los formatos de instalación v1 y v2 de plugins de Claude

Concepto clave

Formato de skills de Claude Code - Especificación de skills definida por Anthropic, que usa archivos SKILL.md para describir skills, incluyendo frontmatter YAML (metadatos) y contenido Markdown (instrucciones).

Principio del mapeo de herramientas

Cuando el plugin detecta que se está cargando un skill escrito para Claude Code, inyecta automáticamente una guía de mapeo de herramientas:

Herramienta Claude CodeHerramienta OpenCodeRegla de mapeo
TodoWrite/TodoReadtodowrite/todoreadMinúsculas
Task (subagente)task (con parámetro subagent_type)Usar parámetro
Skilluse_skillReemplazar nombre
Read/Write/Edit/Bash/Glob/Grep/WebFetchread/write/edit/bash/glob/grep/webfetchMinúsculas

Método de mapeo: El plugin inyecta la guía de mapeo como XML en el contexto de la sesión al cargar el skill, y la IA automáticamente llama a las herramientas correctas según el mapeo.

¿Por qué es necesario el mapeo?

Claude Code y OpenCode tienen diferentes estilos de nomenclatura de herramientas. Claude usa PascalCase (como TodoWrite), mientras que OpenCode usa minúsculas (como todowrite). El mapeo de herramientas le indica a la IA cómo convertir las llamadas.

Prioridad de descubrimiento de skills

El plugin descubre skills en el siguiente orden, el primer skill que coincide tiene efecto (los skills con el mismo nombre no se duplican):

mermaid
graph TD
    A[Flujo de descubrimiento de skills] --> B[OpenCode nivel proyecto]
    B --> |.opencode/skills/| C[1. project]
    C --> D[Claude Code nivel proyecto]
    D --> |.claude/skills/| E[2. claude-project]
    E --> F[OpenCode nivel usuario]
    F --> |~/.config/opencode/skills/| G[3. user]
    G --> H[Claude Code nivel usuario]
    H --> |~/.claude/skills/| I[4. claude-user]
    I --> J[Caché de plugins Claude]
    J --> |~/.claude/plugins/cache/| K[5. claude-plugins]
    K --> L[Marketplace de plugins 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

Reglas de prioridad:

  • Los skills a nivel de proyecto sobrescriben los de nivel de usuario (conveniente para personalización del proyecto)
  • Los skills de OpenCode tienen prioridad sobre los de Claude (para evitar confusión)
  • Solo se conserva la primera versión descubierta de skills con el mismo nombre
Ejemplo: Sobrescritura de skills con el mismo nombre

Supongamos que tienes un skill llamado git-helper en dos ubicaciones:

  • .claude/skills/git-helper/SKILL.md (versión Claude)
  • .opencode/skills/git-helper/SKILL.md (versión OpenCode)

Resultado: La versión de OpenCode tiene efecto (mayor prioridad)

🎒 Antes de empezar

  • Tener instalado y configurado el plugin OpenCode Agent Skills
  • Conocer los conceptos básicos de skills (se recomienda leer primero ¿Qué es OpenCode Agent Skills?)
  • (Opcional) Tener plugins o skills de Claude Code instalados

Paso a paso

Paso 1: Verificar que los skills de Claude sean descubiertos

Por qué Confirmar que el plugin puede escanear correctamente tus directorios de skills de Claude Code.

Llama a la herramienta en OpenCode:

get_available_skills()

Deberías ver: La lista de skills devuelta incluye skills de .claude/skills/, ~/.claude/skills/, ~/.claude/plugins/, y el campo source de cada skill muestra su origen (como claude-project, claude-user, claude-plugins).

Punto de verificación ✅: Confirma que la lista incluye los skills de Claude esperados.

Paso 2: Cargar un skill de Claude

Por qué Verificar que el mecanismo de mapeo de herramientas funciona correctamente.

Llama a la herramienta para cargar un skill de Claude:

use_skill(skill="nombre-de-tu-skill")

Deberías ver: Un mensaje de éxito, como Skill "xxx" loaded..

Punto de verificación ✅: La IA ahora puede usar las instrucciones de ese skill.

Paso 3: Verificar que el mapeo de herramientas funciona

Por qué Confirmar que la IA puede llamar correctamente a las herramientas de OpenCode en lugar de las de Claude.

Pide a la IA una tarea que requiera las herramientas del skill, por ejemplo:

Por favor, usa la función todo del skill para crear una lista de tareas.

Deberías ver: La IA llama correctamente a la herramienta todowrite de OpenCode, no a la herramienta TodoWrite de Claude.

¿Cómo verificar que el mapeo funciona?

Revisa el registro de llamadas a herramientas de la IA (si tienes el modo de depuración activado), verás que llama a todowrite en lugar de TodoWrite.

Punto de verificación ✅: La llamada a la herramienta tiene éxito y la tarea se completa.

Errores comunes

1. Formato de plugin incompatible

Problema: Los plugins antiguos de Claude usan el formato v1, los nuevos usan v2, lo que hace que algunos skills no sean descubiertos.

Causa: Las estructuras de installed_plugins.json de v1 y v2 son diferentes.

Solución: El plugin soporta ambos formatos, no se necesita conversión manual. Si aún no se descubren los skills, verifica que ~/.claude/plugins/installed_plugins.json exista y tenga el formato correcto.

2. El mapeo de herramientas no funciona

Problema: La IA sigue llamando a los nombres de herramientas de Claude, causando errores.

Causa: El contenido del skill puede estar evitando la guía de mapeo de herramientas, o está usando llamadas a herramientas codificadas directamente.

Solución:

  • Confirma que el skill se carga antes de usarse, en lugar de llamar directamente a las herramientas
  • Si el skill tiene ejemplos de código, cambia manualmente los nombres de herramientas al formato de OpenCode

3. Conflicto de nombres de skills

Problema: Skills con el mismo nombre en diferentes ubicaciones, se carga la versión incorrecta.

Causa: Sobrescritura debido a la prioridad de descubrimiento de skills.

Solución:

  • Verifica el campo source del skill para confirmar su origen
  • Usa el formato de namespace para especificar explícitamente el origen: use_skill(skill="user:nombre-skill") o use_skill(skill="claude-plugins:nombre-skill")
Sintaxis de namespace

El plugin soporta el formato namespace:nombre-skill:

  • project:nombre-skill - Skill de OpenCode a nivel de proyecto
  • claude-project:nombre-skill - Skill de Claude a nivel de proyecto
  • user:nombre-skill - Skill de OpenCode a nivel de usuario
  • claude-user:nombre-skill - Skill de Claude a nivel de usuario
  • claude-plugins:nombre-skill - Skill del marketplace de plugins de Claude

Resumen de la lección

El plugin OpenCode Agent Skills te permite reutilizar skills de Claude Code sin problemas mediante un mecanismo de compatibilidad de tres capas:

  • Descubrimiento automático - Escanea skills desde 6 ubicaciones, cubriendo nivel de proyecto, usuario y plugins
  • Mapeo de herramientas - Convierte automáticamente los nombres de herramientas de Claude a nombres de OpenCode
  • Soporte de formatos - Compatible con los formatos v1 y v2 de plugins de Claude

No necesitas reescribir skills, simplemente instálalos y úsalos, el plugin manejará automáticamente los problemas de compatibilidad.

Próxima lección

En la próxima lección aprenderemos sobre Integración con flujos de trabajo Superpowers.

Aprenderás:

  • Cómo habilitar el modo Superpowers
  • Detección y carga automática de skills Superpowers
  • Cómo los flujos de trabajo estrictos mejoran la eficiencia del desarrollo

Apéndice: Referencia del código fuente

Haz clic para ver las ubicaciones del código fuente

Fecha de actualización: 2026-01-24

FuncionalidadRuta del archivoLíneas
Definición del mapeo de herramientassrc/claude.ts19-25
Definición de tipos de formato v1/v2src/claude.ts35-61
Extracción de rutas de instalación de pluginssrc/claude.ts68-77
Descubrimiento de skills de pluginssrc/claude.ts82-105
Descubrimiento de skills del marketplacesrc/claude.ts115-180
Descubrimiento de skills en cachésrc/claude.ts193-253
Lista de prioridad de descubrimiento de skillssrc/skills.ts241-254
Lógica de deduplicación de skills con mismo nombresrc/skills.ts256-260
Importación de toolTranslationsrc/tools.ts15
Inyección del mapeo de herramientassrc/tools.ts238-249

Constantes clave:

  • toolTranslation: Cadena XML de la guía de mapeo de herramientas, inyectada en el contexto de la sesión al cargar un skill. Definida en src/claude.ts:19-25, importada en src/tools.ts:15

Funciones clave:

  • getPluginInstallPaths(): Extrae las rutas de instalación de plugins desde los formatos v1/v2
  • discoverSkillsFromPluginDir(): Escanea el subdirectorio skills/ del directorio de plugins
  • discoverMarketplaceSkills(): Descubre skills desde ~/.claude/plugins/marketplaces/ (prioritario)
  • discoverPluginCacheSkills(): Descubre skills desde ~/.claude/plugins/cache/ (como alternativa)
  • findFile(): Busca recursivamente un nombre de archivo específico (función utilitaria)

Flujo importante:

  1. Al inicializar el plugin se llama a discoverAllSkills() → recorre las 6 rutas de descubrimiento
  2. Al descubrir skills de plugins de Claude se llama a discoverMarketplaceSkills() o discoverPluginCacheSkills()
  3. Al cargar un skill, la herramienta use_skill inserta toolTranslation en el contenido XML (línea 244)