Communitygithub.com

anti-slop

Remove o visual genérico de IA de uma interface e dá a ela uma direção própria. Use quando uma tela, landing page ou dashboard parece ter sido criada por "vibe coding" ou genérica (gradientes roxos, texto gradiente, rótulos com emoji, brilho, pílulas de subtítulo, Inter em tudo, cópia cheia de jargões, espaçamento irregular), quando o usuário pedir para des-AIzar ou fazer uma página parar de parecer gerada, e antes de publicar qualquer UI para verificar os 20 sinais. Inclui um script detector sem dependências e uma receita de teste de catraca.

O que é anti-slop?

Anti-slop é um skill para agentes de IA que visa eliminar o visual genérico de "vibe coding" (criação rápida e sem direção artística) em interfaces de usuário, substituindo-o por um design com direção própria e intencional. Ele combina três abordagens: o método passo a passo do projeto unslop (de Damir Sokolovsky), a maquinaria de direção de arte do taste-skill (de Leonxlnx) e uma lista de 20 sinais característicos de UI gerada por IA, acompanhada de um script detector sem dependências. O skill começa com um "portão de direção" que força o desenvolvedor a definir produto, caráter, mundo, momentos e assinatura antes de qualquer código. Em seguida, guia o usuário por 9 passes de correção (espaçamento, cor, ícones, cópia, tipografia, layout, detalhes, visuais, movimento) e uma verificação final. O script detector (Node 20+) escaneia arquivos em busca de 20 padrões comuns, como gradientes, texto gradiente, emojis em cópia, fontes específicas e outros, permitindo testes de catraca (ratchet tests) que impedem o aumento desses sinais ao longo do tempo. Desenvolvido por Molveau e adaptado dos projetos unslop (CC BY 4.0) e taste-skill (MIT), o anti-slop suporta qualquer plataforma onde um agente de IA possa executar comandos Node.js e analisar código. É especialmente útil para desenvolvedores que usam agentes como Claude Code, Cursor ou Codex e querem garantir que suas interfaces não pareçam genéricas ou geradas por IA, antes de publicar qualquer tela.

Funciona com✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/molveau/skills/tree/main/skills/anti-slop

Perguntar na sua IA favorita

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

Documentação

O que anti-slop faz?

UIs criadas por "vibe coding" falham das mesmas maneiras previsíveis. Este skill funde três coisas em um fluxo de trabalho: o método passo a passo do unslop, a maquinaria de direção de arte do taste-skill e uma lista de 20 sinais datados com um script que captura os mecânicos.

Créditos e licenças

  • O método é adaptado do unslop por Damir Sokolovsky (https://github.com/heydamir/unslop), licenciado sob CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Adaptado: condensado e fundido com taste-skill por Leonxlnx e os sinais de Molveau em references/playbook.md. Mantenha este crédito em qualquer cópia ou adaptação. O original está armazenado sem modificações em references/vendor/unslop/.
  • A execução de direção de arte, as regras da casa e o inspetor vêm do taste-skill por Leonxlnx (https://github.com/Leonxlnx/taste-skill), MIT, armazenados sem modificações em references/vendor/taste/.
  • A lista dos 20 sinais e scripts/detect-tells.mjs são de Molveau (MIT).
  • scripts/story.mjs é adaptado do renderizador do unslop (CC BY 4.0, mudanças listadas em seu cabeçalho); ele permanece CC BY 4.0, assim como scripts/story-server.mjs, seu servidor local. scripts/story-contrast.mjs é de Molveau (MIT).

Comece por aqui

Leia references/playbook.md primeiro, começando pelo bloco "Faça isso primeiro"; abra os arquivos dos fornecedores apenas para se aprofundar ou para exemplos práticos. O playbook é a doutrina fundida (direção, passes, cópia, espaçamento, cor, tipo, ícones, detalhes, dados, telas de app, imagens, movimento, verificações) com tags de origem e as decisões onde as fontes discordam. A tabela "Quando ler o quê" abaixo é o índice de profundidade.

Sobreposição: este é o passe do visual gerado por IA. As linhas de crítica do skill ui são a revisão de design geral mais leve, e design-grill é a auditoria profunda com múltiplas lentes; use-os para qualidade de design além dos sinais.

Portão de direção

Faça isso antes de qualquer código para uma nova página ou tela e como passo 3 de cada execução pesada de slop, mesmo quando a solicitação for de uma linha ou disser para apenas fazer. O resto deste skill remove erros; ele não dá caráter a uma tela. Ignorado, o resultado é a página mediana que todo modelo faz: correta nos detalhes, mas sem dono.

  1. Cinco linhas. Produto: o que faz, para quem. Caráter: duas ou três palavras concretas (calmo, exato, um pouco quente), nunca limpo, moderno, elegante, mínimo ou premium. Mundo: o lugar ou material ao qual o produto pertence; ele tinge os neutros e define o acento. Momentos: os um ou dois lugares que recebem cor rica e detalhe. Assinatura: um pequeno detalhe que só este produto tem, usado consistentemente. Um momento é desenhado com cuidado, não apenas limpo: um gráfico redesenhado para o que deve dizer (linhas suaves, uma comparação espelhada, uma escala real), ou o objeto do próprio produto renderizado com peso e luz.
  2. Inventário, depois a ideia. Liste 8 a 12 coisas que nenhum concorrente compartilha (nome, rua, números do briefing, materiais, ferramentas, rituais, documentos que o ofício imprime). Escreva: "Nesta tela, [um item] se torna [o dispositivo]". Esse dispositivo é o momento.
  3. Recuse os padrões de segunda ordem a menos que a marca já os possua. Eles são o que um modelo usa quando os sinais óbvios são proibidos:
    • uma página creme, pedra ou off-white quente com um acento laranja queimado, terracota, sálvia ou floresta, com ou sem um título em serifa (o visual "papel e tinta" é o novo padrão, não uma direção);
    • Fraunces, Instrument Serif, Playfair ou Georgia como a fonte do título por reflexo; system-ui como a única fonte;
    • Inter ou Geist sobre branco com um acento índigo ou azul;
    • hero, três recursos, depoimentos, chamada para ação, nessa ordem, sem argumentação para isso; em uma tela de app, quatro cartões iguais de estatísticas sobre um gráfico de barras;
    • uma pílula de subtítulo centralizada, título e dois botões como a primeira tela inteira.
  4. Teste de troca. Substitua o nome e o ramo pelo de um concorrente. Se a tela ainda servir, mude a afirmação, o momento e a assinatura, e teste novamente.
  5. Mostre e espere. Mostre as cinco linhas e a ideia, e espere pelo dono. Se não puder perguntar (o usuário disse para apenas construir, ou você executa sem uma pessoa), escreva-as como um comentário no topo do arquivo principal e construa exatamente aquilo.

Profundidade: playbook anti-slop §2 (direção) e §12 (telas de app); o skill design-inspiration-index para referências reais.

A ideia central

Slop espalha cor e efeitos sobre o chrome: fundos, botões, bordas, rótulos. Craft mantém o chrome quieto e coloca a riqueza em um ou dois momentos de conteúdo que as pessoas lembram. Remover slop é metade do trabalho; uma tela limpa que poderia pertencer a qualquer produto é o próximo gabarito. Cada execução termina com uma tela que só este produto poderia ter.

Ordem do trabalho

  1. Página do zero ou redesenho profundo? Siga a execução do taste-skill (references/vendor/taste/taste-skill.md) com as substituições do playbook. Telas de app: playbook §12.
  2. Olhe para a tela, renderizada se possível, não apenas o código.
  3. Audite contra a lista de sinais (references/vendor/unslop/unslop/references/signs.md) e os 20 sinais (references/tells.md). Uma linha por sinal, com onde ele está.
  4. Avalie o tamanho do trabalho (pesado, leve, sem slop) e escreva a direção, depois espere pelo dono (playbook §1 e §2).
  5. Corrija em nove passes, cada um em toda a tela: espaçamento, cor, ícones, cópia, tipografia, layout, detalhes, visuais, movimento (playbook §3 a §14).
  6. Verifique com a checklist do playbook, execute o detector, compare com a auditoria (playbook §15).
  7. Relate a direção, algumas linhas por passe, e cada alegação que você removeu ou não pôde verificar.

Os 20 sinais

Tabela completa com substituições: references/tells.md. Resumo, com o que o script captura:

#SinalScript
1Gradiente violeta/fúcsia/índigosim
2Texto gradientesim
3Emoji na cópiasim
4Inter ou Space Grotesk em todo lugarnão
5Borda lateral coloridasim
6Glassmorfismo decorativosim
7Modo escuro de baixo contrastenão
8Três caixas de ícones em uma linhanão
9Pílula de subtítulo acima do títulonão
10Lucide por padrãosim
11shadcn/ui sem modificaçõesnão
12Aparecimento ao scrollsim
13Brilho que segue o cursornão
14Desvanecimento ao passar o mouse em botõessim
15Espaçamento inconsistentenão
16Travessões na cópiasim
17Cópia com jargõessim
18Palavras de destaque em itálico serifadonão
19Space Grotesk com seu parceiro serifado de display usual (par em references/tells.md)sim
20Grão sobre um gradientenão

O detector

node <pasta do skill>/scripts/detect-tells.mjs [--json] [--include-tests] <caminhos...>

Sem dependências, Node 20 ou superior, sem imports fora desta pasta do skill, então funciona quando o skill está instalado sozinho. Saída 0 limpo, 1 achados, 2 uso. Ele pula node_modules .git .next dist build .open-next coverage e arquivos de teste. Ele reporta caminho:linha #rótulo do sinal correspondência. Limites estão listados no final de references/tells.md; trate um acerto como "olhe aqui".

Teste de catraca em um projeto

Uma catraca fixa a contagem de hoje e falha quando ela aumenta, então os sinais só podem diminuir. Esboço para node:test (adapte os caminhos e a linha de base):

import { test } from 'node:test';
import assert from 'node:assert/strict';
import { readFileSync, globSync } from 'node:fs'; // globSync precisa do Node 22; no 20 percorra as pastas você mesmo
import { detectTells } from './.agents/skills/anti-slop/scripts/detect-tells.mjs';

const BASELINE = { 10: 8, 5: 1 }; // número do sinal -> achados permitidos hoje
test('nenhum novo sinal de vibe coding', () => {
  const files = globSync('{app,components}/**/*.{ts,tsx,css}').map((path) => ({ path, text: readFileSync(path, 'utf8') }));
  const now = {};
  for (const f of detectTells(files)) now[f.tell] = (now[f.tell] ?? 0) + 1;
  for (const [tell, n] of Object.entries(now)) assert.ok(n <= (BASELINE[tell] ?? 0), `sinal ${tell}: ${n} achados, linha de base ${BASELINE[tell] ?? 0}`);
});

Reduza a linha de base sempre que corrigir um; nunca a aumente.

Vídeo de história

Um clipe quadrado, de cerca de 10 segundos, onde a tela se desfaz do slop passo a passo com marcações vermelhas. Faça-o apenas quando solicitado. Construa o arquivo de história exatamente como a seção "Story video" do unslop diz (references/vendor/unslop/unslop.md: um story.html, CSS .s1 a .s5 no topo, data-gap, data-radius, data-slop, trocas), então renderize com o renderizador adaptado deste skill:

node <pasta do skill>/scripts/story.mjs unslop-story/story.html unslop-story.mp4   # --wide para 16:9, --play para assistir

O que ele adiciona ao renderizador do unslop:

  • Uma etapa de Acessibilidade. Uma etapa cujo nome contém Acessibilidade mostra medições ao vivo. Coloque data-contrast em dois a quatro elementos de texto cujo contraste muda; cada um mostra sua proporção WCAG, vermelho abaixo de 4.5:1 (3:1 para texto grande), branco com AA quando passa, cinza ? quando uma cor não pode ser lida (como lab() ou color(display-p3 ...)): use cores sRGB, hex ou oklch() nesses elementos. Coloque data-target em um ou dois controles; cada um mostra seu tamanho, vermelho abaixo de 24 por 24 px. Escolha elementos que falham no antes; nunca marque um elemento que ainda falha no depois.
  • Uma legenda, <meta name="story-caption" content="...">, canto inferior esquerdo. Declare apenas o que é verdade sobre a execução, como o modelo e que a tela não foi editada manualmente.
  • O crédito molveau/skills · método unslop por @heydamir é desenhado em cada quadro, conforme a licença CC BY 4.0 do unslop pede. Não o remova.

A história é uma apresentação de arquivos reais: o passo 0 é o antes como estava, e o último passo é igual ao arquivo limpo que você entrega. Não polia a história além da tela entregue.

Quando ler o quê

NecessidadeLeia
As regras fundidas, valores e decisões de conflitoreferences/playbook.md
Os 20 sinais com substituições e os limites do detectorreferences/tells.md
O método completo do unslop, direção, nove passes, checklist, vídeo de históriareferences/vendor/unslop/unslop.md
Valores exatos (espaçamento, escala tipográfica, rampas, curvas de movimento)references/vendor/unslop/unslop/references/tokens.md (seus valores de movimento são substituídos: ui playbook §10 e motion §5 vencem, conflito do playbook 19)
A lista de auditoria de sinaisreferences/vendor/unslop/unslop/references/signs.md
Visuais de hero, prompts de imagem, quais estilos funcionamreferences/vendor/unslop/unslop/references/visuals.md
Código de glifo, meio-tom, pontilhado e duotonereferences/vendor/unslop/unslop/references/effects.md
Telas de referência finalizadas (imagens)references/vendor/unslop/unslop/references/refs.md
Capturar uma URL ao vivo para trabalhar em uma cópiareferences/vendor/unslop/unslop/scripts/snapshot.mjs
Uma página do zero ou um redesenho profundo: inventário, direção decidida, ideia, regras da casa, portãoreferences/vendor/taste/taste-skill.md
Dashboards, telas de administração e configurações em profundidadereferences/vendor/taste/taste-skill/references/app-screens.md
Deck de cópia, aritmética de duas linhas, prova sem inventarreferences/vendor/taste/taste-skill/references/copy.md
Escala tipográfica, configuração de display, carregamento de fontesreferences/vendor/taste/taste-skill/references/type.md
Papéis da paleta, campos, páginas escuras, contrastereferences/vendor/taste/taste-skill/references/colour.md
Margens, espaço vazio, o quadro, seções, o telefonereferences/vendor/taste/taste-skill/references/layout.md
Encontrar, creditar, colocar e tratar imagens e vídeoreferences/vendor/taste/taste-skill/references/imagery.md
Receitas de movimento (opt-in: playbook motion §9) e cenas de scrollreferences/vendor/taste/taste-skill/references/motion.md, references/vendor/taste/taste-skill/references/scenes.md
Julgar um resultado com uma rubricareferences/vendor/taste/taste-skill/references/critique.md
O registro de sinais datados por ondareferences/vendor/taste/taste-skill/references/tells.md
O estudo por trás dos números do tastereferences/vendor/taste/taste-skill/references/research.md

Os arquivos dos fornecedores mantêm o layout original, então alguns links relativos dentro deles podem não funcionar aqui. Os scripts do taste-skill leem sua pasta library/ (não a leia inteira; execute draw.mjs); alguns scripts precisam de Node 22, um navegador, Playwright, ffmpeg ou acesso à rede. Quais verificações visuais executar são decididas no playbook ui, conflito 14 (o conflito 14 deste playbook aponta para lá).

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

molveau/design-inspiration-index

Routing index for design inspiration. Use when you need visual references or ideas for a UI (a hero, landing page, SaaS page, navbar, CTA, motion or micro-interaction, brand or rebrand, component, icon) and want to know which curated gallery to pull from. Maps a need to the best source among galleries, component registries and optional MCP servers. Use it before hunting blindly for inspiration.

molveau/ui

Builds, restyles, polishes and reviews user interfaces with taste. Use when building, restyling or improving a UI, page, screen or component, including a hero, navbar, header, cards, a form or a section ("make it better", "make it pop", "add polish"); working on layout, spacing, typography, color, dark mode or design tokens; polishing hover and focus states or details when something "feels off"; responsive or mobile layout; critiquing, auditing or redesigning an interface; doing a design review or UI roast; simplifying or making a design bolder; or writing prompts that get production-grade UI out of an AI tool.

molveau/vitrine

Playbook for a vitrine, a business showcase / brochure site for a local business. Use at the start of a small business website, brochure site, landing page for a local business, service-business site, or when adding pricing, booking, city pages, local SEO, bilingual FR/EN or a Québec privacy setup to one. Says what such a site needs, in which order to apply the ui, ux, anti-slop, motion, french-typography and loi-25-website skills, and gives a done checklist.

Habilidades Relacionadas