Communitygithub.com

Ringophilia/pense-como-o-usuario

Ao projetar ou modificar interações de programas (posição de botões, entrada de funcionalidades, fluxos de operação, formulários, diálogos, menus, páginas de configuração, parâmetros e prompts de CLI), percorra as tarefas principais da perspectiva de um usuário de primeira viagem: botões próximos à linha de visão e aos objetos de operação, funções comuns a um passo de distância, elimine confirmações extras, alternâncias de modo, etapas de assistente e entradas repetidas, não adicione funcionalidades, menus, itens de configuração ou espaços reservados não solicitados pelo usuário, forneça bons valores padrão, feedback imediato e mensagens de erro compreensíveis, siga as convenções da plataforma. Use ao escrever ou modificar UIs, adicionar novas entradas de funcionalidades, projetar fluxos de várias etapas, escrever formulários e pop-ups, ou quando os usuários reclamarem que 'não funciona / não encontro / é muito complicado'. Antes de declarar concluído o trabalho de UI, percorra realmente o fluxo e conte os passos.

O que é pense-como-o-usuario?

Esta skill, chamada "Pense como o Usuário", orienta desenvolvedores e agentes de IA a projetar interações de software centradas no usuário, em vez de centradas na implementação. Ela descreve um processo sistemático de seis etapas para avaliar e melhorar a usabilidade de interfaces, seja para aplicações web, mobile, desktop ou CLIs. A skill explica por que as interfaces geradas por IA muitas vezes parecem 'estranhas' (por exemplo, botões de salvar longe do final do formulário, funções comuns escondidas em menus, confirmações desnecessárias) e oferece princípios concretos e uma lista de verificação para corrigir esses problemas. Ela enfatiza a importância de colocar as ações perto de seus objetos, eliminar etapas redundantes, não adicionar recursos não solicitados, fornecer feedback imediato e, acima de tudo, percorrer fisicamente o fluxo principal como um novo usuário antes de declarar o trabalho concluído. A skill é útil para qualquer tarefa de design de interação, desde a criação de um novo botão até a reestruturação de um fluxo de vários passos, e para depurar reclamações de usuários sobre experiência complicada.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ringophilia/agent-rules-of-thumb/tree/HEAD/skills/think-like-the-user

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Pense como o Usuário ao Interagir

Problema

A IA ao escrever interações, muitas vezes organiza a interface na ordem da implementação em vez de na ordem do usuário: primeiro coloca os controles com base na estrutura de dados; o botão onde a função foi escrita primeiro. O resultado:

  • O botão "Salvar" de um formulário longo fica no topo da página, e o usuário, ao preencher até o final, precisa rolar de volta para encontrá-lo.
  • "Excluir" fica ao lado de "Salvar", com a mesma cor e o mesmo tamanho.
  • A função mais usada está escondida no segundo nível do menu "Mais ⋯", enquanto uma configuração raramente usada ocupa o local mais proeminente da barra de ferramentas.
  • Mesmo com apenas uma opção, o usuário precisa selecioná-la antes de clicar em "Próximo".
  • Para renomear algo, é necessário: clicar em "Modo de edição" → alterar → clicar em "Aplicar" → clicar em "Salvar" → janela de confirmação "Tem certeza que deseja salvar?".
  • Criar algo novo exige três etapas de um assistente, quando na verdade só precisa de um nome.
  • Botões rotulados como "Enviar", "Executar", "OK", e o usuário não sabe o que acontecerá ao clicar.
  • Ao ocorrer um erro, aparece uma mensagem "Falha na operação" e todo o conteúdo inserido é limpo.

Cada item isoladamente não é fatal, mas juntos resultam em "Por que isso é tão estranho?".

Primeiro Passo: Esclareça para que o Usuário Veio

Antes de começar, escreva (mesmo que apenas mentalmente):

  1. Quem está usando: Um novato de primeira viagem ou um veterano que usa diariamente?
  2. Quais são as 1 a 3 tarefas mais comuns?: Essas tarefas devem ser as mais rápidas e mais visíveis.
  3. Qual é o caminho ideal para cada tarefa?: Desde abrir o programa até concluir, quantos passos são necessários?

Organize o layout da interface de acordo com essa prioridade, e não com base na lista de funcionalidades, campos do banco de dados ou módulos de código.

Segundo Passo: Onde Colocar Botões e Entradas

PrincípioPráticaContraexemplo
Ação perto do objeto que afetaBotões de edição/exclusão na mesma linha; ações do cartão no próprio cartãoPrimeiro selecionar uma linha, depois ir ao topo da página para encontrar "Editar"
Posicionar conforme o fluxo de conclusãoBotão de envio do formulário no final do formulário; botões da caixa de diálogo na parte inferiorBotão "Salvar" de um formulário longo no topo
Frequência determina proeminênciaFunções mais usadas ficam visíveis diretamente; as ocasionais ficam em menus; as raras em configuraçõesFunções comuns escondidas em menus de segundo nível
Uma interface, uma ação principalAção principal com estilo de destaque; as demais com estilo secundárioCinco botões azuis igualmente proeminentes
Ações perigosas separadas"Excluir" com cor diferente, posicionado mais distante ou dentro de um menu"Excluir" e "Salvar" lado a lado, com a mesma aparência
Seguir convenções da plataformaBotões de diálogo no Windows no canto inferior direito, "OK" à esquerda de "Cancelar"; no macOS "Cancelar" à esquerda, botão principal à direita; pop-ups web com fechar no canto superior direitoCriar uma ordem própria
Mesma ação, mesma posição consistenteO botão "Novo" em todas as páginas está no mesmo lugarPosição diferente em cada página
Entrada no local onde o usuário procuraO usuário pensa "Quero exportar" e olha no local esperado (barra de ferramentas, menu Arquivo, acima da lista)Exportar escondido dentro da página de configurações

Terceiro Passo: Corte Etapas Desnecessárias

Liste cada passo da tarefa principal e pergunte gradualmente:

  • Pode ser removido? O usuário precisa tomar uma decisão aqui? Se não, remova.
  • Pode ter um valor padrão? 90% das pessoas escolheriam a mesma opção? Então marque-a como padrão. Lembre-se da última escolha do usuário.
  • Pode ser combinado? "Editar → Aplicar → Salvar" pode se tornar editar diretamente com salvamento automático ou um único salvamento?
  • Pode ser adiado? Registro, configurações detalhadas, campos opcionais podem ser perguntados apenas quando o usuário realmente precisar?
  • Pode ser inferido automaticamente? O que pode ser deduzido do nome do arquivo, contexto ou dados existentes não deve ser solicitado ao usuário.

Etapas desnecessárias comuns:

DesnecessárioSubstituir por
Ação reversível com confirmação "Tem certeza?"Executar diretamente e oferecer "Desfazer" (toast estilo Gmail); confirmação apenas para ações irreversíveis e de alto impacto
Caixa de confirmação "Tem certeza? [Ok] [Cancelar]"Escrever a consequência e o objeto: "Excluir 3 arquivos? Esta ação não pode ser desfeita. [Excluir] [Cancelar]"
Uma única opção que precisa ser selecionadaSelecionar automaticamente ou pular esta etapa diretamente
Alternância separada de "Modo de edição"Tornar diretamente editável
Uma única informação em várias etapas de assistenteUma caixa de entrada + um botão, ou criação inline
Alterar configuração e depois clicar em "Aplicar" e depois em "Salvar"Uma única ação, ou efeito imediato
Após a operação, pular para outra página e o usuário ter que navegar de voltaPermanecer no local, atualizar no lugar
Preencher as mesmas informações repetidamenteLembrar ou pré-preenchê-las

Quarto Passo: Não Adicione o que o Usuário Não Pediu

A IA facilmente "aproveita" e faz mais: o usuário quer um botão de exportar, e acaba com um menu suspenso de formato de exportação, histórico de exportação, página de configurações de exportação; o usuário quer uma ferramenta pequena, e acaba com uma barra lateral, menu de configurações, alternância de tema, página Sobre, central de ajuda, espaços reservados para "Em breve".

Cada funcionalidade, menu ou entrada adicional é mais uma coisa que o usuário precisa entender e pular, tornando a entrada da tarefa principal mais difícil de encontrar. Tudo na interface compete pela atenção do usuário.

Antes de adicionar algo, pergunte:

  • O usuário pediu isso? Se não pediu e não é essencial para a tarefa principal, não adicione.
  • Sem isso, o usuário ficará bloqueado? Se não, não adicione.
  • Tem apenas uma opção ou quase ninguém vai alterar? Então não precisa de item de configuração nem de menu suspenso; use diretamente um valor padrão razoável.
  • Está vazio, não implementado, ou "talvez seja útil depois"? Não coloque espaços reservados, botões acinzentados "Aguarde", menus que não respondem ao clique.

Comum demais:

DesnecessárioSubstituir por
Ferramenta com apenas uma ou duas funções, mas com barra lateral + navegação superior + menu de configuraçõesUma interface que exibe diretamente as funções
Alternância de tema, de idioma, configurações personalizadas não solicitadasNão fazer; adicionar apenas quando necessário
Uma página que seria suficiente, mas dividida em "Início / Painel / Sobre / Ajuda"Uma única página
A mesma funcionalidade com três entradas (barra de ferramentas, menu de contexto, página de configurações)Uma entrada onde o usuário mais provavelmente procurará; atalhos de teclado podem ser adicionados separadamente
Espaços reservados "Em breve", "Recursos avançados", cartões de estatísticas vaziosRemover
Cada valor transformado em item configurávelDefinir bons valores padrão e expor apenas o que o usuário realmente alterará

Quando achar que um recurso adicional é realmente útil, após concluir o requisito principal, sugira-o, deixando o usuário decidir se quer, em vez de implementá-lo diretamente.

Quinto Passo: Mantenha o Usuário Informado a Qualquer Momento

  • Texto do botão = verbo + objeto: "Exportar CSV", "Excluir projeto", "Enviar convite", em vez de "Enviar", "Executar", "OK". Use as palavras do usuário, não as palavras da implementação (não escreva "Sincronizar payload", "Acionar job").
  • Reação ao clique: Feedback visual em 100ms; para ações que levam mais de 1 segundo, mostre progresso ou estado de carregamento e desabilite o botão para evitar envios duplicados.
  • Informe quando concluído: Um leve aviso de sucesso, ou a interface exibe diretamente o resultado.
  • Erro: diga o que fazer: Explique claramente o que deu errado e como corrigir; exiba o erro ao lado do campo com erro; mantenha o conteúdo já inserido pelo usuário.
  • Estado vazio: oriente o próximo passo: Quando a lista estiver vazia, informe o que aparecerá ali e forneça diretamente um botão "Criar o primeiro".
  • Teclado: Ao abrir uma caixa de diálogo, o foco deve estar no primeiro campo de entrada; Enter para enviar, Esc para fechar; a ordem de tabulação deve corresponder à ordem visual.
  • Não mude de repente: Não mova botões nem exiba pop-ups que bloqueiem o local onde o usuário está clicando.

CLI também: parâmetros comuns têm opções curtas e valores padrão razoáveis; operações perigosas exigem confirmação, mas fornecer --yes; mensagens de erro explicam como corrigir; tarefas longas mostram progresso.

Sexto Passo: Percorra Realmente o Fluxo

Escrever não é igual a ser fácil de usar. Antes de entregar, percorra realmente como usuário a tarefa principal (para capturas de tela, veja background-friendly):

  1. Finja ser a primeira vez: sem olhar o código, apenas a interface, consegue encontrar em 5 segundos a entrada para a tarefa que deseja fazer?
  2. Conte os passos: Quantos cliques/entradas são necessários para concluir a tarefa principal? Compare com o caminho ideal escrito no primeiro passo. Cada passo extra deve ter uma justificativa.
  3. Percorra apenas com o teclado.
  4. Cometa um erro de propósito: insira dados errados, cancele no meio, desconecte a rede, veja o que acontece e se a entrada é perdida.
  5. Reduza a janela, com muito conteúdo ou vazia: os botões ainda estão em posições razoáveis?

Quando não for possível percorrer (sem ambiente de execução), informe claramente ao usuário "Fluxo de interação não verificado na prática" e liste as etapas que você projetou para que o usuário as verifique.

Limites

  • Quando o usuário especificar layout ou fluxo, siga o dele; se achar que há problema, diga e deixe o usuário decidir.
  • Usuários veteranos de ferramentas profissionais podem valorizar mais a eficiência do que a facilidade de aprendizado: atalhos, operações em lote, alta densidade são mais importantes que tutoriais para iniciantes. Primeiro, identifique quem é o usuário.
  • Operações irreversíveis e de alto risco (pagamento, exclusão de dados de produção, envio de mensagens em massa) devem ter uma etapa extra de confirmação; não a remova apenas para "reduzir passos".
  • Ao modificar um programa existente, não faça grandes alterações em posições que os usuários já estão acostumados apenas para "tornar mais razoável"; se realmente precisar alterar, explique o motivo.

Lista de Verificação

  • Quais são as 1 a 3 tarefas mais comuns? Elas são as mais rápidas e mais visíveis?
  • Cada botão está próximo ao objeto que afeta e na posição onde o usuário conclui o fluxo?
  • Cada interface tem apenas uma ação principal? Ações perigosas estão separadas da ação principal?
  • Está de acordo com as convenções da plataforma (ordem dos botões, posição, atalhos)?
  • Cada passo da tarefa principal foi questionado: "pode ser removido, pode ser padrão, pode ser combinado"?
  • Cada funcionalidade, menu e entrada são solicitados pelo usuário ou essenciais? Não há espaços reservados nem configurações não solicitadas?
  • As caixas de confirmação são usadas apenas para operações irreversíveis? Operações reversíveis oferecem "Desfazer"?
  • O texto do botão é "verbo + objeto"? Usa as palavras do usuário?
  • Estados de carregamento, sucesso, erro e vazio foram tratados? Em caso de erro, a entrada é preservada?
  • Você realmente percorreu como um novo usuário e contou os passos? Se não percorreu, diga "não verificado"

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas