Todas as skills

animate (emilkowalski/skills)

Constrói uma animação do zero, decidindo propósito, propriedades, curva, duração, interrupção e saída.

animate: faz as animações de UI geradas pelo Codex seguirem as regras de movimento de um engenheiro de design (controle 3.7, skill 4.4, prompt de uma frase 5.0) com 1.7x os tokens; um prompt de uma frase com as mesmas regras sai melhor e mais barato

SituacionalSeguro

Codex CLI · gpt-6-astra

22.0 / 30

Ganho sobre sem skill: +0.64 · Situacional · 18 execuções

Situacional: o ganho +0.64 está abaixo de +1.0. Para ser recomendado, é preciso total de 22/30, qualidade da saída de 3.5 e ganho de +1.0.

SOTA

Aprovado

Testado com Codex.

Cobre Codex, Claude Code

Codex CLI 0.166 (nível SOTA): 18 execuções avaliadas. Uma aprovação aqui também vale para o Claude Code pela nossa regra de níveis; ela não diz nada sobre o segundo nível.

Notas

Cada dimensão vai de 0 a 5, e as seis somam o total de 30. 5 é melhor em todas as dimensões. Custo 5 significa barato e rápido. Instalação 5 significa fácil.

Confiabilidade do acionamento
5.0
Ganho sobre sem skill
2.6
Qualidade da saída
4.4
Custo de tokens e tempo
2.0
Instalação e portabilidade
4.0
Segurança
4.0

Revisão de segurança

Seguro

Varredura estática: 0 CRÍTICO / 0 ALTO / 0 MÉDIO. Revisão manual: seguro para executar em sandbox sem rede (nenhum achado). Uma varredura limpa não prova que a skill é segura.

Instalar

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

Fonte

Commit fixado: a81dbca07f2217b7103e510c0f13f8d5b017afc9

Testado: 2026-11-02

O que testamos

  • Menu suspenso animado — Crie menu.html: um botão que abre um menu suspenso com 5 itens, com animações de abrir e fechar. Escreva um único arquivo HTML autocontido (CSS e JS inline, sem bibliotecas).
  • Modal animado — Crie modal.html: um botão que abre um diálogo modal com fundo escurecido, com animações de abrir e fechar. Escreva um único arquivo HTML autocontido (CSS e JS inline, sem bibliotecas).
  • Notificações toast — Crie toasts.html: três botões, cada um exibindo uma notificação toast que se empilha e se dispensa sozinha, com animações de entrar e sair. Escreva um único arquivo HTML autocontido (CSS e JS inline, sem bibliotecas).

Prós

  • Eleva a nota média de 3.71 para 4.36 em relação ao grupo sem skill (+0.64).
  • A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.

Contras

  • Um prompt de uma frase marcou 5.0, contra 4.36 com a skill (-0.64).
  • Usa 1.68x os tokens do grupo sem skill.
  • n=2 por tarefa por braço; diferenças abaixo de cerca de 1 ponto são ruído.

Avaliação

Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC de teste Windows dedicado, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento), ausente (grupo de controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo do prompt de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo). Três tarefas de construção, cada uma um arquivo HTML autocontido com CSS e JS inline: um menu suspenso, um modal com fundo escurecido e toasts que se empilham, todos com animações de abrir/fechar ou entrar/sair. Os prompts não mencionam regras de movimento. O prompt de uma frase lista as regras em uma só frase.

Comparação entre os braços

BraçoNota média (0-5)Tokens por execução
Sem a skill3.7178k
Prompt de uma frase5.0105k
Com a skill4.36132k

Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 22.0 / 30, veredito Situacional.

Veredito: Situacional (22.0 / 30). Fonte: emilkowalski/skills, skills/animate, fixada no commit a81dbca. Instalação: npx skills@latest add emilkowalski/skills --skill animate. Licença: MIT (LICENSE do repositório).

O que é

A skill animate (emilkowalski/skills): regras de movimento para criar animações de interface: anime só com propósito, use um cubic-bezier ease-out personalizado (nunca ease-in nem o padrão), 150-300 ms, apenas transform e opacity, feedback ao pressionar com scale(0.97), nunca comece de scale(0), entradas em cascata, transições interrompíveis, prefers-reduced-motion, hover condicionado a (hover: hover).

Como testamos

Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC Windows dedicado a testes, um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (grupo com skill), ausente (controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo de uma frase), 2 execuções por grupo por tarefa, rede desativada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pela formulação indicada abaixo).

Três tarefas de construção, cada uma um arquivo HTML autocontido com CSS e JS inline: um menu suspenso, um modal com fundo escurecido e toasts empilháveis, todos com animações de abrir/fechar ou entrar/sair. Os prompts não mencionam regras de movimento. A frase única lista as regras em uma sentença.

  1. Menu suspenso animado — Crie menu.html: um botão que abre um menu suspenso com 5 itens, com animações de abrir e fechar. Escreva um único arquivo HTML autocontido (CSS e JS inline, sem bibliotecas).
  2. Modal animado — Crie modal.html: um botão que abre um modal com fundo escurecido, com animações de abrir e fechar. Escreva um único arquivo HTML autocontido (CSS e JS inline, sem bibliotecas).
  3. Notificações toast — Crie toasts.html: três botões que exibem cada um uma notificação toast que se empilha e se descarta sozinha, com animações de entrada e saída. Escreva um único arquivo HTML autocontido (CSS e JS inline, sem bibliotecas).

A pontuação é programática (testes ocultos / detecção de problemas plantados / verificações de restrições / renderização+OCR quando aplicável), de 0 a 5 por execução. Nenhum juiz LLM decidiu qualquer nota.

Resultados

A frase única dada ao terceiro grupo: "Anime como um engenheiro de design: anime só o que tem propósito, use um cubic-bezier ease-out personalizado (nunca ease-in nem o padrão), 150-300 ms, apenas transform e opacity, feedback ao pressionar com scale(0.97), nunca comece de scale(0), entradas em cascata, transições interrompíveis, respeite prefers-reduced-motion e condicione o hover a (hover: hover)."

TarefaNota do controleUma fraseCom a skillTokens do controleTokens da fraseTokens com a skillSkill lida
t1-dropdown3.55.04.1481k100k163k2/2
t2-modal3.55.04.5761k100k110k2/2
t3-toasts4.145.04.3693k114k121k2/2

Nota média: 3.71 sem vs 4.36 com a skill (delta +0.64). Tokens por execução: 78k vs 132k (1.68x); tempo 82s vs 81s. Grupo de uma frase: 5.0 (ganho da skill sobre a frase: -0.64; ganho da própria frase sobre sem skill: +1.29); tokens da frase: 105k por execução, então a skill custa 1.25x a frase.

O que aconteceu

  • Controle 3.71, skill 4.36, frase 5.0 (n=6 cada). Uma verificação de movimento baseada em regras conta quantas das 10 regras a página segue. O controle chegou a 6-8 de 10, a skill a 8-9, e a frase única satisfez todas as verificações nas 6 execuções.
  • As regras que o controle mais errou: feedback ao pressionar (um scale no :active) em 3 de 6 execuções, além de entradas em cascata e easing não padrão em algumas execuções. A skill ainda errou o feedback ao pressionar em 2 execuções e as entradas em cascata ou o easing em várias; na tarefa de toast, sua nota foi 4.14 e 4.57 contra 4.14 do controle.
  • Tokens: skill 132k, frase 105k, controle 78k por execução (1.7x o controle, 1.3x a frase). A skill foi lida em 6/6 execuções com a skill; ela usa mais comandos (9.3 por execução contra 4.7).
  • As execuções com a skill adicionam cerca de 3 arquivos novos (a cópia da skill na pasta de trabalho) por execução.

Notas por dimensão

DimensãoNotaPor quê
1_output_quality4.36

Nota média 4.36/5 com a skill (verificações programáticas, veja a tabela por tarefa).

2_lift_vs_no_skill2.64

+0.64 pontos vs 3.71 sem a skill (n=2 por tarefa; abaixo de ~1 ponto é ruído).

3_trigger5.0Arquivo da skill lido em 6/6 execuções com a skill.
4_instructions_portability4Regras do SKILL.md mais texto de referência.
5_efficiency21.68x tokens (132k vs 78k por execução) e 0.99x tempo (81s vs 82s).
6_safety_hygiene4Apenas prosa; veja security.md.

Limitações deste teste

  • Verificações baseadas em regras sobre o texto do código de um único arquivo HTML; as animações não foram renderizadas nem cronometradas no navegador, então suavidade e qualidade visual não são avaliadas.
  • A frase única é uma paráfrase próxima do próprio checklist da skill, e as verificações espelham a mesma lista de regras.
  • n=2 por célula.
  • n = 2 por grupo por tarefa: diferenças abaixo de cerca de 1 ponto são ruído.
  • A pontuação baseada em regras mede o que as verificações conseguem ver; não avalia gosto nem se o resultado é o melhor possível.

Segurança

Veja security.md. Varredura: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredito: seguro para executar (sandbox sem rede). Uma varredura limpa não prova que a skill é segura.

Conclusão

A skill melhora a adesão às regras de movimento quando não há orientação, mas as mesmas regras em uma única frase alcançam nota máxima com menos tokens, então o benefício só aparece diante de um prompt sem orientação.

Transcrição

Log de execuções: animate (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Colunas: tarefa, grupo-execução, nota (0-5), tokens, segundos, verificações aprovadas, arquivos da skill abertos pelo agente.

t1-dropdown control-1: nota 3.71, tokens 52757, s 64.6, verificações 1/2, nada aberto
t1-dropdown control-2: nota 3.29, tokens 109744, s 78.3, verificações 1/2, nada aberto
t1-dropdown oneliner-1: nota 5.0, tokens 90139, s 90.1, verificações 2/2, nada aberto
t1-dropdown oneliner-2: nota 5.0, tokens 110798, s 84.6, verificações 2/2, nada aberto
t1-dropdown treatment-1: nota 4.14, tokens 162460, s 70.2, verificações 2/2, abriu animate
t1-dropdown treatment-2: nota 4.14, tokens 165193, s 85.1, verificações 2/2, abriu animate
t2-modal control-1: nota 3.71, tokens 69259, s 69.5, verificações 1/2, nada aberto
t2-modal control-2: nota 3.29, tokens 52805, s 73.9, verificações 1/2, nada aberto
t2-modal oneliner-1: nota 5.0, tokens 110675, s 103.1, verificações 2/2, nada aberto

18 execuções, 3 artefatos

Resultado de exemplo

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 o Pro