ui-demo
Faz seu agente gravar vídeos de demonstração de interface do usuário polidos. É útil para criar tutoriais ou mostrar como um aplicativo web funciona.
O que ela faz
Esta ferramenta cria vídeos de demonstração polidos de aplicativos da web. Ela grava sua tela com um cursor visível e um ritmo natural, como se fosse uma apresentação profissional.
Quando usar
- ✓Quando você pede um vídeo de demonstração, gravação de tela ou tutorial.
- ✓Quando você quer mostrar como um recurso ou fluxo de trabalho funciona visualmente.
- ✓Quando você precisa de um vídeo para documentação ou para apresentar a outras pessoas.
Exemplo do que pedir para a IA
“Crie um vídeo mostrando como preencher o formulário de solicitação de compra.”
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
A ferramenta primeiro explora a página para entender os elementos (campos, botões). Depois, ela ensaia os passos sem gravar para garantir que tudo funcione. Finalmente, ela grava o vídeo seguindo uma história, com pausas naturais.
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 affaan-m/ECC --skill ui-demoOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/ui-demo/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.
Gravador de Vídeo de Demonstração de UI
Grave vídeos de demonstração polidos de aplicações web usando a gravação de vídeo do Playwright com um cursor injetado, ritmo natural e fluxo de narrativa.
Quando Usar
- O usuário pede um "vídeo de demonstração", "gravação de tela", "passo a passo" ou "tutorial"
- O usuário quer mostrar um recurso ou fluxo de trabalho visualmente
- O usuário precisa de um vídeo para documentação, integração ou apresentação para partes interessadas
Processo de Três Fases
Toda demonstração passa por três fases: Descobrir -> Ensaio -> Gravar. Nunca pule direto para a gravação.
Fase 1: Descobrir
Antes de escrever qualquer roteiro, explore as páginas alvo para entender o que realmente está lá.
Por Quê
Você não pode roteirizar o que não viu. Campos podem ser <input> e não <textarea>, dropdowns podem ser componentes customizados e não <select>, e caixas de comentários podem suportar @mentions ou #tags. Suposições quebram gravações silenciosamente.
Como
Navegue para cada página no fluxo e liste seus elementos interativos:
// Run this for each page in the flow BEFORE writing the demo script
const fields = await page.evaluate(() => {
const els = [];
document.querySelectorAll('input, select, textarea, button, [contenteditable]').forEach(el => {
if (el.offsetParent !== null) {
els.push({
tag: el.tagName,
type: el.type || '',
name: el.name || '',
placeholder: el.placeholder || '',
text: el.textContent?.trim().substring(0, 40) || '',
contentEditable: el.contentEditable === 'true',
role: el.getAttribute('role') || '',
});
}
});
return els;
});
console.log(JSON.stringify(fields, null, 2));
O que procurar
- Campos de formulário: São eles
<select>,<input>, dropdowns customizados ou comboboxes? - Opções de seleção: Liste os valores das opções E o texto. Placeholders frequentemente têm
value="0"ouvalue="", o que parece não estar vazio. UseArray.from(el.options).map(o => ({ value: o.value, text: o.text })). Pule opções onde o texto inclui "Selecione" ou o valor é"0". - Texto rico: A caixa de comentários suporta
@mentions,#tags, markdown ou emoji? Verifique o texto do placeholder. - Campos obrigatórios: Quais campos bloqueiam o envio do formulário? Verifique
required,*nos rótulos e tente enviar vazio para ver os erros de validação. - Conteúdo dinâmico: Campos aparecem após outros campos serem preenchidos?
- Rótulos de botões: Texto exato como
"Submit","Submit Request"ou"Send". - Cabeçalhos de coluna de tabela: Para modais baseados em tabelas, mapeie cada
input[type="number"]para seu cabeçalho de coluna em vez de assumir que todas as entradas numéricas significam a mesma coisa.
Saída
Um mapa de campos para cada página, usado para escrever seletores corretos no roteiro. Exemplo:
/purchase-requests/new:
- Budget Code: <select> (first select on page, 4 options)
- Desired Delivery: <input type="date">
- Context: <textarea> (not input)
- BOM table: inline-editable cells with span.cursor-pointer -> input pattern
- Submit: <button> text="Submit"
/purchase-requests/N (detail):
- Comment: <input placeholder="Type a message..."> supports @user and #PR tags
- Send: <button> text="Send" (disabled until input has content)
Fase 2: Ensaio
Execute todos os passos sem gravar. Verifique se todos os seletores são resolvidos.
Por Quê
Falhas silenciosas de seletores são a principal razão pela qual gravações de demonstração falham. O ensaio as pega antes que você desperdice uma gravação.
Como
Use ensureVisible, um wrapper que registra e falha ruidosamente:
async function ensureVisible(page, locator, label) {
const el = typeof locator === 'string' ? page.locator(locator).first() : locator;
const visible = await el.isVisible().catch(() => false);
if (!visible) {
const msg = `REHEARSAL FAIL: "${label}" not found - selector: ${typeof locator === 'string' ? locator : '(locator object)'}`;
console.error(msg);
const found = await page.evaluate(() => {
return Array.from(document.querySelectorAll('button, input, select, textarea, a'))
.filter(el => el.offsetParent !== null)
.map(el => `${el.tagName}[${el.type || ''}] "${el.textContent?.trim().substring(0, 30)}"`)
.join('\n ');
});
console.error(' Visible elements:\n ' + found);
return false;
}
console.log(`REHEARSAL OK: "${label}"`);
return true;
}
Estrutura do roteiro de ensaio
const steps = [
{ label: 'Campo de e-mail de login', selector: '#email' },
{ label: 'Enviar login', selector: 'button[type="submit"]' },
…
Perguntas frequentes
O que é 'Playwright'?
É uma ferramenta que permite automatizar ações em navegadores web, como clicar em botões ou preencher formulários, para criar vídeos ou testes.
O que significa 'polido'?
Significa que o vídeo terá uma aparência profissional, com um cursor visível e um ritmo que não é nem muito rápido nem muito lento.
Por que ensaiar antes de gravar?
Para garantir que todos os botões e campos que a ferramenta precisa usar sejam encontrados corretamente. Se algo falhar no ensaio, o vídeo pode não ser gravado corretamente.
Detalhes
Descrição original do autor
Record polished UI demo videos using Playwright. Use when the user asks to create a demo, walkthrough, screen recording, or tutorial video of a web application. Produces WebM videos with visible cursor, natural pacing, and professional feel.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #302
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
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
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
slack-gif-creator
Ajuda seu agente a criar GIFs animados otimizados para o Slack. Fornece ferramentas e conceitos para animações eficazes.
anthropics/skills
video-downloader
Baixa vídeos de plataformas online. Permite salvar vídeos para assistir offline, editar ou guardar como arquivo.
nexu-io/open-design
youtube-clipper
Faz seu agente cortar e editar vídeos do YouTube automaticamente. Seleciona os melhores momentos, adiciona legendas e exporta o clipe.
nexu-io/open-design