Todas las skills

animate (emilkowalski/skills)

Construye una animación desde cero y decide propósito, propiedades, curva, duración, interrupción y salida.

animate: hace que las animaciones de UI que genera Codex sigan las reglas de movimiento de un ingeniero de diseño (control 3.7, skill 4.4, prompt de una frase 5.0) con 1.7 veces los tokens; un prompt de una frase con las mismas reglas lo hace mejor y más barato

Según el casoSegura

Codex CLI · gpt-6-astra

22.0 / 30

Mejora frente a sin skill: +0.64 · Según el caso · 18 ejecuciones

Según el caso: la mejora +0.64 está por debajo de +1.0. Para ser recomendada hace falta un total de 22/30, una calidad de salida de 3.5 y una mejora de +1.0.

SOTA

Aprobada

Probada con Codex.

Cubre Codex, Claude Code

Codex CLI 0.166 (nivel SOTA): 18 ejecuciones puntuadas. Una pasada aquí también cubre Claude Code según nuestra regla de niveles; no dice nada sobre el segundo nivel.

Puntuaciones

Cada dimensión va de 0 a 5 y las seis suman el total sobre 30. 5 es mejor en todas las dimensiones. Coste 5 significa barato y rápido. Instalación 5 significa fácil.

Fiabilidad de activación
5.0
Mejora frente a sin skill
2.6
Calidad de salida
4.4
Coste en tokens y tiempo
2.0
Instalación y portabilidad
4.0
Seguridad
4.0

Revisión de seguridad

Segura

Escaneo estático: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Revisión manual: Segura de ejecutar en un sandbox sin red (sin hallazgos). Un escaneo limpio no demuestra que una skill sea segura.

Instalar

npx skills@latest add emilkowalski/skills --skill animate

Origen

Commit fijado: a81dbca07f2217b7103e510c0f13f8d5b017afc9

Probada: 2026-11-02

Qué probamos

  • Menú desplegable animado — Crea menu.html: un botón que abre un menú desplegable con 5 elementos, con animaciones de apertura y cierre. Escribe un único archivo HTML autocontenido (CSS y JS en línea, sin librerías).
  • Diálogo modal animado — Crea modal.html: un botón que abre un diálogo modal con un fondo oscurecido, con animaciones de apertura y cierre. Escribe un único archivo HTML autocontenido (CSS y JS en línea, sin librerías).
  • Notificaciones toast — Crea toasts.html: tres botones que muestran cada uno una notificación toast que se apila y se descarta sola, con animaciones de entrada y salida. Escribe un único archivo HTML autocontenido (CSS y JS en línea, sin librerías).

Ventajas

  • Sube la puntuación media de 3.71 a 4.36 frente a sin skill (+0.64).
  • La skill se activó sin nombrarla: se leyó el archivo de la skill en 6/6 ejecuciones con skill.

Inconvenientes

  • Un prompt de una frase obtuvo 5.0, frente a 4.36 con la skill (-0.64).
  • Usa 1.68 veces los tokens de sin skill.
  • n=2 por tarea y rama; las diferencias de menos de aproximadamente 1 punto son ruido.

Reseña

Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un PC Windows dedicado a pruebas, un proyecto temporal nuevo y HOME/TMPDIR/cachés temporales por ejecución, skill instalada (tratamiento) o ausente (control) o ausente con el requisito central de la skill condensado en una frase añadida al prompt (grupo del prompt de una frase), 2 ejecuciones por grupo y tarea, red desactivada, escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo el texto indicado abajo). Tres tareas de construcción, cada una un archivo HTML autocontenido con CSS y JS en línea: un menú desplegable, un modal con fondo oscurecido y toasts apilados, todos con animaciones de apertura/cierre o entrada/salida. Los prompts no mencionan reglas de movimiento. El prompt de una frase enumera las reglas en una sola frase.

Comparación de tres ramas

RamaPuntuación media (0-5)Tokens por ejecución
Sin la skill3.7178k
Prompt de una frase5.0105k
Con la skill4.36132k

Medido con Codex CLI en 18 ejecuciones, puntuado con comprobaciones basadas en reglas y sin juez LLM. Total 22.0 / 30, veredicto Según el caso.

Veredicto: Según el caso (22.0 / 30). Fuente: emilkowalski/skills, skills/animate, fijada en el commit a81dbca. Instalación: npx skills@latest add emilkowalski/skills --skill animate. Licencia: MIT (LICENSE del repositorio).

Qué es

La skill animate (emilkowalski/skills): reglas de movimiento para crear animaciones de interfaz: anima solo con un propósito, cubic-bezier ease-out personalizada (nunca ease-in ni la predeterminada), 150-300 ms, solo transform y opacity, feedback al pulsar con scale(0.97), nunca empieces desde scale(0), escalona las entradas, transiciones interrumpibles, prefers-reduced-motion, hover limitado con (hover: hover).

Cómo lo probamos

Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un PC de pruebas Windows dedicado, un proyecto temporal nuevo y HOME/TMPDIR/cachés temporales por ejecución, skill instalada (tratamiento) o ausente (control) o ausente con el requisito central de la skill comprimido en una frase añadida al final del prompt (grupo de una frase), 2 ejecuciones por grupo y tarea, red desactivada, escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo la formulación indicada abajo).

Tres tareas de construcción, cada una un archivo HTML autocontenido con CSS y JS en línea: un menú desplegable, un modal con fondo atenuado y toasts apilados, todos con animaciones de apertura/cierre o entrada/salida. Los prompts no mencionan las reglas de movimiento. La frase única enumera las reglas en una sola frase.

  1. Menú desplegable animado — Crea menu.html: un botón que abre un menú desplegable con 5 elementos, con animaciones de apertura y cierre. Escribe un único archivo HTML autocontenido (CSS y JS en línea, sin librerías).
  2. Diálogo modal animado — Crea modal.html: un botón que abre un diálogo modal con fondo atenuado, con animaciones de apertura y cierre. Escribe un único archivo HTML autocontenido (CSS y JS en línea, sin librerías).
  3. Notificaciones toast — Crea toasts.html: tres botones que muestran cada uno una notificación toast que se apila y se descarta sola, con animaciones de entrada y salida. Escribe un único archivo HTML autocontenido (CSS y JS en línea, sin librerías).

La puntuación es programática (tests ocultos / detección de problemas sembrados / comprobaciones de restricciones / renderizado + OCR cuando corresponde), 0–5 por ejecución. Ningún juez LLM decidió ninguna puntuación.

Resultados

La frase única que recibió el tercer grupo: "Anima como un ingeniero de diseño: anima solo lo que tiene un propósito, usa una cubic-bezier ease-out personalizada (nunca ease-in ni la predeterminada), 150-300 ms, solo transform y opacity, feedback al pulsar con scale(0.97), nunca empieces desde scale(0), escalona las entradas, transiciones interrumpibles, respeta prefers-reduced-motion y limita el hover con (hover: hover)."

TareaPuntuación controlUna fraseCon la skillTokens controlTokens de una fraseTokens con la skillSkill leída
t1-dropdown3.55.04.1481k100k163k2/2
t2-modal3.55.04.5761k100k110k2/2
t3-toasts4.145.04.3693k114k121k2/2

Puntuación media: 3.71 sin vs 4.36 con la skill (delta +0.64). Tokens por ejecución: 78k vs 132k (1.68x); tiempo 82s vs 81s. Grupo de una frase: 5.0 (la ganancia de la skill sobre la frase única: -0.64; la ganancia de la frase única sobre sin skill: +1.29); tokens de la frase única 105k por ejecución, así que la skill cuesta 1.25x la frase única.

Qué ocurrió

  • Control 3.71, skill 4.36, una frase 5.0 (n=6 cada uno). Una comprobación de movimiento basada en reglas cuenta cuántas de las 10 reglas sigue la página. El control llegó a 6-8 de 10, la skill a 8-9, y la frase única superó todas las comprobaciones en las 6 ejecuciones.
  • Las reglas que el control omitió con más frecuencia: feedback al pulsar (un scale en :active) en 3 de 6 ejecuciones, además de entradas escalonadas y easing no predeterminado en algunas ejecuciones. La skill siguió fallando el feedback al pulsar en 2 ejecuciones y la entrada escalonada o el easing en varias; en la tarea de toasts su puntuación fue 4.14 y 4.57 frente a 4.14 del control.
  • Tokens: skill 132k, una frase 105k, control 78k por ejecución (1.7x el control, 1.3x la frase única). La skill se leyó en 6/6 ejecuciones de tratamiento; usa más comandos (9.3 por ejecución frente a 4.7).
  • Las ejecuciones de tratamiento añaden unos 3 archivos nuevos (la copia de la skill en la carpeta de trabajo) por ejecución.

Puntuaciones por dimensión

DimensiónPuntuaciónMotivo
1_output_quality4.36

Puntuación media 4.36/5 con la skill (comprobaciones programáticas, véase la tabla por tarea).

2_lift_vs_no_skill2.64

+0.64 puntos frente a 3.71 sin la skill (n=2 por tarea; menos de ~1 punto es ruido).

3_trigger5.0Archivo de la skill leído en 6/6 ejecuciones de tratamiento.
4_instructions_portability4Reglas de SKILL.md más texto de referencia.
5_efficiency21.68x tokens (132k vs 78k por ejecución) y 0.99x tiempo (81s vs 82s).
6_safety_hygiene4Solo prosa; véase security.md.

Límites de esta prueba

  • Comprobaciones basadas en reglas sobre el texto del código de un archivo HTML; las animaciones no se renderizaron ni se cronometraron en un navegador, así que no se juzga la fluidez ni la calidad visual.
  • La frase única es una paráfrasis cercana de la propia lista de comprobación de la skill, y las comprobaciones reflejan esa misma lista de reglas.
  • n=2 por celda.
  • n = 2 por grupo y tarea: las diferencias de menos de ~1 punto son ruido.
  • La puntuación basada en reglas mide lo que las comprobaciones pueden ver; no puede juzgar el gusto ni si el resultado es el mejor posible.

Seguridad

Consulta security.md. Escaneo: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredicto: segura de ejecutar (sandbox sin red). Un escaneo limpio no demuestra que una skill sea segura.

Conclusión

La skill mejora las reglas de movimiento que se siguen frente a no dar ninguna orientación, pero esas mismas reglas en una sola frase logran una puntuación perfecta con menos tokens, así que el beneficio solo existe frente a un prompt básico.

Transcripción

Registro de ejecuciones: animate (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Columnas: tarea, grupo-ejecución, puntuación (0-5), tokens, segundos, comprobaciones superadas, archivos de la skill que abrió el agente.

t1-dropdown control-1: puntuación 3.71, tokens 52757, s 64.6, comprobaciones 1/2, no abrió nada
t1-dropdown control-2: puntuación 3.29, tokens 109744, s 78.3, comprobaciones 1/2, no abrió nada
t1-dropdown oneliner-1: puntuación 5.0, tokens 90139, s 90.1, comprobaciones 2/2, no abrió nada
t1-dropdown oneliner-2: puntuación 5.0, tokens 110798, s 84.6, comprobaciones 2/2, no abrió nada
t1-dropdown treatment-1: puntuación 4.14, tokens 162460, s 70.2, comprobaciones 2/2, abrió animate
t1-dropdown treatment-2: puntuación 4.14, tokens 165193, s 85.1, comprobaciones 2/2, abrió animate
t2-modal control-1: puntuación 3.71, tokens 69259, s 69.5, comprobaciones 1/2, no abrió nada
t2-modal control-2: puntuación 3.29, tokens 52805, s 73.9, comprobaciones 1/2, no abrió nada
t2-modal oneliner-1: puntuación 5.0, tokens 110675, s 103.1, comprobaciones 2/2, no abrió nada

18 ejecuciones, 3 artefactos

Resultado de ejemplo

SOTA · With the skill: menu.html (t1-dropdown, run 1, Codex)

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Workspace menu</title> <style> :root { font-family: system-ui, sans-serif; color: #252c39; background: #f4f5f7; --ease-out: cubic-bezier(0.23, 1, 0.32, 1); } * { box-sizing: border-box; } body { margin: 0; min-height: 100svh; display: grid; place-items: center; padding: 24px; } main { width: min(100%, 400px); min-height: 440px; } .eyebrow { color: #687183; font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; } h1 { margin: 12px 0 8px; font-size: 30px; letter-spacing: -.04em; } .description { margin: 0 0 28px; color: #687183; font-size: 14px; line-height: 1.6; } .dropdown { position: relative; width: min(100%, 280px); } button { font: inherit; cursor: pointer; } .trigger { display: flex; align-items: center; justify-content: space-between; gap: 32px; border: 1px solid #303a4e; border-radius: 12px; background: #293448; color: white; padding: 14px 18px; font-size: 14px; font-weight: 600; box-shadow: 0 3px 5px #20293b15; } .chevron { width: 16px; height: 16px; transition: transform 200ms var(--ease-out); } [aria-expanded="true"] .chevron { transform: rotate(180deg); } .menu { position: absolute; top: calc(100% + 10px); left: 0; width: 100%; padding: 6px; border: 1px solid #e1e4eb; border-radius: 14px; background: white; box-shadow: 0 16px 36px -12px #27324a30, 0 3px 8px #27324a08; opacity: 0; transform: scale(.95); transform-origin: top left; pointer-events: none; transition: opacity 200ms var(--ease-out), transform 200ms var(--ease-out); } .dropdown.open .menu { opacity: 1; transform: scale(1); pointer-events: auto; } .item { width: 100%; display: flex; align-items: center; gap: 12px; border: 0; border-radius: 8px; background: transparent; color: #394256; padding: 12px; text-align: left; font-size: 14px; } .icon { width: 20px; text-align: center; color: #738098; font-size: 18px; line-height: 1; } .item:last-child { margin-top: 5px; border-top: 1px solid #edf0f5; border-radius: 0 0 8px 8px; } button:focus-visible { outline: 2px solid #657cf0; outline-offset: 3px; } .item:focus-visible { outline-offset: -2px; background: #f0f3fa; } @media (hover: hover) and (pointer: fine) { .trigger:hover { background: #36435b; } .item:hover { background: #f0f3fa; } } .dropdown.instant .menu, .dropdown.instant .chevron { transition: none; } @media (prefers-reduced-motion: reduce) { .menu, .dropdown.open .menu { transform: none; } .chevron { transition: none; } } .status { margin-top: 300px; font-size: 13px; color: #687183; min-height: 20px; } </style> </head> <body> <main> <div class="eyebrow">Your workspace</div> <h1>A little room for everything.</h1> <p class="description">Your everyday essentials, one click away.</p> <div class="dropdown" id="dropdown"> <button class="trigger" id="trigger" type="button" aria-haspopup="menu" aria-expanded="false" aria-controls="menu"> Workspace <svg class="chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-wid [... excerpt: first 3200 of 7249 characters]

Ver Pro