Pular para o conteúdo
Skillpedia
Edição de vídeo280 mil · #302

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

https://github.com/affaan-m/ECC/blob/main/skills/ui-demo/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/skills/ui-demo/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-demo

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/ui-demo/SKILL.md -o SKILL.md
Conteú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" ou value="", o que parece não estar vazio. Use Array.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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas