PTENES
RUTA 5 • DESTACADO

🦜 polyskill — skills cross-runtime

Una definición source, outputs optimizados para cada runtime. Round-trip Claude ↔ Codex, política automática de drift, adapters conectables para nuevos runtimes.

2
Módulos
14
Temas
~90min
Duración
Avanz.
Nivel

Mapa de la ruta

Contenido detallado

5.1~45 min

🏛️ El estándar Agent Skills, el problema y la arquitectura de polyskill

Antes del CLI, el concepto. Por qué existe polyskill y qué resuelve.

Qué es:

Especificación abierta originada en Anthropic y adoptada por más de 40 herramientas. Define el formato canónico de Skill: archivo SKILL.md, frontmatter con name e description, cuerpo en Markdown, convención de carpetas scripts/, references/, assets/.

Por qué aprender:

Es el denominador común real. Todo lo que escribas dentro de esta especificación funciona en cualquier runtime compatible. Todo lo que quede fuera te ata a un solo runtime.

Conceptos clave:

Los 4 pilares (SKILL.md, name, description, body), la convención de carpetas, el compromiso abierto y agentskills.io como autoridad.

Qué es:

Creas una skill en Claude. La copias/adaptas para Codex. Funciona. Una semana después, mejoras la de Claude. Olvidas propagar los cambios. Luego mejoras la de Codex. Lo olvidas. En un mes, son dos skills DIFERENTES y nadie sabe cuál es la correcta.

Por qué aprender:

Sin entender el problema, polyskill parece excesivo. Quien ya sufrió el drift de una skill (o, peor aún, perdió una versión) entiende su valor de inmediato.

Conceptos clave:

Drift orgánico, fork accidental, fuente de verdad ambigua, costo cognitivo de «cuál versión es la buena», pérdida silenciosa de funcionalidad.

Qué es:

Escribes la skill UNA vez en el formato portable canónico (definition.md). El polyskill compila para dist/claude/ e dist/codex/, cada uno optimizado para el runtime de destino. Como Babel/TypeScript para skills.

Por qué aprender:

Este es el «aha moment». Una vez que entiendes que la skill es la fuente y que se generan ambas salidas, todo lo demás de polyskill tiene sentido.

Conceptos clave:

Source canónica, artefactos de compilación (dist/), compilación selectiva por target, optimización por runtime (truncar la descripción, reescribir la inyección).

Qué es:

(1) IR — Representación Interna neutral, sin ataduras de runtime; (2) Adaptadores — 1 archivo TypeScript por runtime, sabe leer Y escribir su propio formato; (3) CLI — orquesta los adapters mediante el registry.

Por qué aprender:

Agregar un runtime nuevo literalmente requiere un archivo: el adaptador. Si entiendes esto, sabes que Gemini, Cursor y Copilot son «solo» nuevos adaptadores, no una reescritura de polyskill.

Conceptos clave:

Compilador frontend/middle/backend, plugin vía registry, interfaz Adapter (parse, emit, validate), separación de concerns.

Qué es:

Adapter "lee Y escribe". Puedes importar una skill existente de Claude (--from claude), convertirlo en portable y luego emitirlo para ambos. Lo mismo empezando desde Codex (--from codex).

Por qué aprender:

No tienes que empezar de cero. ¿Hay una skill de Claude que te encanta? Impórtala, genera la versión portable y luego expórtala. ¿Tienes una de Codex? Lo mismo desde el otro lado.

Conceptos clave:

Bidireccionalidad obligatoria del adapter, con pérdida frente a sin pérdida, compatibilidad con scripts/, references/, assets/ en todas las direcciones.

Qué es:

Cada vez que haces un build, polyskill calcula el hash de los archivos generados. En el siguiente build, si editaste a mano algún archivo de destino, el build se aborta con un error. Tú decides: --force (sobrescribe) o polyskill reconcile (inspecciona el drift).

Por qué aprender:

Sin esto, ajustarías manualmente un output de Claude para un caso específico, harías el build al día siguiente y perderías el ajuste. La drift policy es la póliza.

Conceptos clave:

Hash de archivo, detección de modificación externa, consentimiento para sobrescribir (--force), reconciliación interactiva, principio "no silent loss".

Qué es:

El propio polyskill viene como skill instalable en los dos runtimes. Lo invocas en lenguaje natural: /polyskill converte minha skill x pra funcionar nos dois (Claude) o $polyskill converte ... (Codex). La skill llama al CLI por debajo.

Por qué aprender:

Nunca memorizas flags. Lo pides en PT-BR y la skill lo traduce a polyskill import --from claude, polyskill build, etc.

Conceptos clave:

Skill como wrapper de CLI, interfaz en lenguaje natural, Ruta A (arrastrar y soltar sin CLI) vs. Ruta B (fuente + CLI), dogfooding.

Ver completo
5.2~45 min

⚡ CLI polyskill en la práctica

Desde la instalación hasta el reconcile. Cada comando explicado y usado en un ejemplo real.

Qué es:

A: copia skill/dist/claude/polyskill para ~/.claude/skills/ e skill/dist/codex/polyskill para ~/.agents/skills/. Funciona como una skill. B: clona el repo, npm install && npm run build && npm link, obtienes el CLI completo.

Por qué aprender:

El Camino A solo ejecuta la skill: sin CLI, algunos comandos fallan. El Camino B es completo. Para crear tus propias skills cross-runtime, B es obligatorio.

Conceptos clave:

Bundle precompilado frente a source, npm link, validación con polyskill --version e polyskill detect.

Qué es:

Comando que crea un workspace de skill con la estructura portable: definition.md (frontmatter YAML + cuerpo), carpetas scripts/, references/, assets/, y configuración del build.

Por qué aprender:

La skill nueva empieza aquí. Nunca creas SKILL.md a mano: creas definition.md una vez y polyskill se encarga del resto.

Conceptos clave:

Estructura inicial, definition.md vs SKILL.md, frontmatter mínimo, edición interactiva del body.

Qué es:

Indica una skill existente en cualquier runtime y genera el workspace portable equivalente. Funciona en ambos sentidos: --from claude toma de .claude/skills/, --from codex toma de .agents/skills/.

Por qué aprender:

Tienes 10 skills de Claude que te encantan. Importa cada una con un comando y luego ejecuta build y genera una versión para Codex de cada uno. Ingeniería inversa gratis.

Conceptos clave:

La importación preserva scripts/references/assets, normaliza el frontmatter y convierte la inyección dinámica en prosa cuando viene de Claude.

Qué es:

Genera dist/claude/<skill>/SKILL.md e dist/codex/<skill>/SKILL.md (+ sidecar agents/openai.yaml (cuando hay branding o dependencias MCP). Es el paso de compilación.

Por qué aprender:

Es el comando que ejecutas cada vez que editas definition.md. Puede (y debe) ir en un watch o un hook pre-commit.

Conceptos clave:

Caché de hash, flag --force para sobrescribir diferencias, dist como salida ignorable por git (pero el repo de polyskill hace commit para ilustrarlo).

Qué es:

Combina build + copy para los directorios canónicos: ~/.claude/skills/<skill> e ~/.agents/skills/<skill>. La skill queda disponible al instante en ambos runtimes.

Por qué aprender:

Es el comando del "deploy local". Si editas, pruébalo ejecutando install, invócala en la terminal de Claude O de Codex, sin manipular las carpetas manualmente.

Conceptos clave:

Recarga automática (Claude) vs actualización manual (Codex), idempotencia, alcance (global vs proyecto), desinstalación (rm directo de la carpeta).

Qué es:

detect indica qué runtimes están en la máquina; status indica qué destinos están sincronizados con la última compilación; adapters lista los adapters instalados (hoy: portable, claude, codex).

Por qué aprender:

Para depurar. ¿La skill no se activa? Ejecuta detect para ver si el runtime está visible. ¿Build extraño? status muestra qué está desincronizado.

Conceptos clave:

Comandos de solo lectura, analizables por script, output JSON cuando --json, solución de problemas sin editar nada.

Qué es:

validate ejecuta un linter por adapter (reglas por objetivo: límite de description en Codex, sintaxis de inyección en Claude, etc.). reconcile compara dist/ con los directorios instalados y muestra las divergencias, ofreciendo una fusión guiada.

Por qué aprender:

Validate se ejecuta en CI antes del merge. Reconcile resuelve la situación real de "alguien editó manualmente fuera de polyskill".

Conceptos clave:

Reglas por adapter, exit code 0 vs 1 para CI, informe de drift interactivo, decisión «mantener override / sobrescribir / fusionar».

Ver completo
← Ruta 4: Conversión Ruta 6: Flujos →