interaction-design
Faz seu agente criar interações fluidas e agradáveis na interface. Ele adiciona animações sutis e feedback visual, melhorando a experiência do usuário.
O que ela faz
Esta ferramenta ajuda a criar animações e efeitos visuais para tornar aplicativos e sites mais interessantes e fáceis de usar. Ela adiciona 'vida' às interfaces, como botões que se movem ou mudam de cor quando você interage com eles.
Quando usar
- ✓Ao adicionar um efeito visual a um botão quando o mouse passa por cima.
- ✓Para fazer uma tela carregar de forma suave, mostrando um 'esqueleto' antes do conteúdo aparecer.
- ✓Ao criar transições animadas entre diferentes telas de um aplicativo.
Exemplo do que pedir para a IA
“Crie uma animação de 'fade-in' para um card que aparece na tela.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela funciona definindo como os elementos devem se mover, mudar de tamanho ou cor ao longo do tempo. Isso é feito através de códigos que controlam a velocidade e o tipo de animação, como um 'suavizar' ou um 'pulo'.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill interaction-designOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/ui-design/skills/interaction-design/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Design de Interação
Crie interações envolventes e intuitivas através de movimento, feedback e transições de estado pensadas que aprimoram a usabilidade e encantam os usuários.
Quando Usar Esta Habilidade
- Adicionar microinterações para aprimorar o feedback do usuário
- Implementar transições suaves de página e componentes
- Projetar estados de carregamento e telas esqueléticas
- Criar interações baseadas em gestos
- Construir sistemas de notificação e "toasts"
- Implementar interfaces de arrastar e soltar
- Adicionar animações acionadas por rolagem
- Projetar estados de "hover" e foco
Princípios Fundamentais
1. Movimento Intencional
O movimento deve comunicar, não decorar:
- Feedback: Confirmar que as ações do usuário ocorreram
- Orientação: Mostrar de onde os elementos vêm/para onde vão
- Foco: Direcionar a atenção para mudanças importantes
- Continuidade: Manter o contexto durante as transições
2. Diretrizes de Tempo
| Duração | Caso de Uso |
|---|---|
| 100-150ms | Microfeedback (hovers, cliques) |
| 200-300ms | Transições pequenas (alternâncias, dropdowns) |
| 300-500ms | Transições médias (modais, mudanças de página) |
| 500ms+ | Animações coreografadas complexas |
3. Funções de Easing
/* Common easings */
--ease-out: cubic-bezier(0.16, 1, 0.3, 1); /* Decelerate - entering */
--ease-in: cubic-bezier(0.55, 0, 1, 0.45); /* Accelerate - exiting */
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); /* Both - moving between */
--spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* Overshoot - playful */
Início Rápido: Microinteração de Botão
import { motion } from "framer-motion";
export function InteractiveButton({ children, onClick }) {
return (
<motion.button
onClick={onClick}
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
transition={{ type: "spring", stiffness: 400, damping: 17 }}
className="px-4 py-2 bg-blue-600 text-white rounded-lg"
>
{children}
</motion.button>
);
}
Padrões de Interação
1. Estados de Carregamento
Telas Esqueléticas: Preservam o layout durante o carregamento
function CardSkeleton() {
return (
<div className="animate-pulse">
<div className="h-48 bg-gray-200 rounded-lg" />
<div className="mt-4 h-4 bg-gray-200 rounded w-3/4" />
<div className="mt-2 h-4 bg-gray-200 rounded w-1/2" />
</div>
);
}
Indicadores de Progresso: Mostram progresso determinado
function ProgressBar({ progress }: { progress: number }) {
return (
<div className="h-2 bg-gray-200 rounded-full overflow-hidden">
<motion.div
className="h-full bg-blue-600"
initial={{ width: 0 }}
animate={{ width: `${progress}%` }}
transition={{ ease: "easeOut" }}
/>
</div>
);
}
2. Transições de Estado
Alternância com transição suave:
function Toggle({ checked, onChange }) {
return (
<button
role="switch"
aria-checked={checked}
onClick={() => onChange(!checked)}
className={`
relative w-12 h-6 rounded-full transition-colors duration-200
${checked ? "bg-blue-600" : "bg-gray-300"}
`}
>
<motion.span
className="absolute top-1 left-1 w-4 h-4 bg-white rounded-full shadow"
animate={{ x: checked ? 24 : 0 }}
transition={{ type: "spring", stiffness: 500, damping: 30 }}
/>
</button>
);
}
3. Transições de Página
Animações de layout com Framer Motion:
import { AnimatePresence, motion } from "framer-motion";
function PageTransition({ children, key }) {
return (
<AnimatePresence mode="wait">
<motion.div
key={key}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -20 }}
transition={{ duration: 0.3 }}
>
{children}
</motion.div>
</AnimatePresence>
);
}
4. Padrões de Feedback
Efeito de ondulação ao clicar:
function RippleButton({ children, onClick }) {
const [ripples, setRipples] = useState([]);
const handleClick = (e) => {
const rect = e.currentTarget.getBoundingClientRect();
const ripple = {
x: e.clientX - rect.left,
y: e.clientY - rect.top,
id: Date.now(),
};
setRipples((prev) => [...prev, ripple]);
setTimeout(() => {
setRipples((prev) => prev.filter((r) => r.id !== ripple.id));
}, 600);
onClick?.(e);
};
return (
…
Perguntas frequentes
O que são 'microinterações'?
São pequenas animações que dão feedback visual ao usuário, como um botão que muda de cor quando clicado ou um ícone que se move levemente.
Por que usar animações?
Animações ajudam a guiar o usuário, mostram o que está acontecendo, dão uma sensação de fluidez e tornam a experiência mais agradável e intuitiva.
O que são 'loading states'?
São as telas ou elementos que aparecem enquanto o conteúdo principal está sendo carregado. Podem ser barras de progresso ou 'esqueletos' que mostram a estrutura da página.
Detalhes
Descrição original do autor
Design and implement microinteractions, motion design, transitions, and user feedback patterns. Use when adding polish to UI interactions, implementing loading states, or creating delightful user experiences.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4970
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
design-system
Ajuda seu agente a criar um sistema de design a partir de um código existente. Ele extrai informações visuais e verifica a consistência, gerando um relatório e uma prévia interativa.
affaan-m/ECC
liquid-glass-design
Ajuda seu agente a criar interfaces de usuário com efeito 'Liquid Glass' para iOS. Permite adicionar efeitos visuais dinâmicos e interativos em SwiftUI e UIKit.
affaan-m/ECC