CommunityPesquisa e Análise de Dadosgithub.com

shannonmcgivney/consent-audit

Audita um site ou aplicativo criado com vibe-coding (Lovable, Bolt, v0, Replit, Next.js, React, HTML puro) para detectar rastreamento que carrega ou envia dados ANTES de o visitante consentir no banner de cookies — pixels de anúncios (Meta, Google, TikTok, LinkedIn), Google Tag Manager, analytics, gravação de sessão, widgets de chat, embeds, analytics injetados pela hospedagem e e-mails ou IDs de clientes enviados para rastreadores. Somente leitura — uma varredura de código mais uma verificação ao vivo de rede com visita nova — que resulta em um inventário e uma lista mínima de correções. Use quando alguém perguntar "isso está..."

O que é consent-audit?

Esta skill audita sites e aplicativos criados com ferramentas de vibe-coding (como Lovable, Bolt, v0, Replit) ou frameworks tradicionais (Next.js, React, HTML puro) para identificar rastreadores que carregam ou enviam dados do visitante antes que ele clique em "Aceitar" no banner de cookies. A motivação legal é a lei de interceptação da Califórnia (CIPA), que pode tratar rastreamento sem consentimento como interceptação telefônica, com danos de até US$ 5.000 por violação. A auditoria é somente leitura e tem três etapas principais: (1) inventariar o código-fonte local (com um script Python que procura assinaturas de pixels, analytics, embeds e envio de e-mails ou IDs de usuário) ou, se não houver código local, usar um prompt de auditoria dentro do chat do projeto; (2) verificar o site ao vivo em uma janela anônima sem cookies, analisando requisições de rede, cookies e armazenamento local para detectar rastreadores que disparam antes de qualquer clique; (3) inspecionar configurações da plataforma de hospedagem (Lovable, Vercel, Netlify, Cloudflare, Framer etc.) que podem injetar rastreadores sem aparecer no código. O resultado é um relatório que classifica cada item como necessário, funcional ou opcional, lista as correções mínimas e recomenda consultar um advogado se o site veicular anúncios ou atender visitantes da Califórnia ou da UE. A skill é compatível com Claude Code, Cursor e Codex, e depende de um script Python externo e de ferramentas de navegador integradas.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shannonmcgivney/consent-before-tracking/tree/HEAD/skills/consent-audit

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Auditoria de consentimento: o que carrega antes de alguém clicar em Aceitar?

A lição por trás desta skill (Dr. Erin Toussaint Jacques, reel do IG, outubro de 2026): aplicativos criados com vibe-coding são um jeito fácil de ser processado, porque ninguém verifica se o pixel de rastreamento dispara antes de o visitante clicar em Aceitar. Um pixel é um pequeno pedaço de código do Meta, Google e outros que rastreia o que as pessoas fazem no seu site. De acordo com a lei de interceptação da Califórnia (CIPA), o rastreamento que começa antes do consentimento pode ser tratado como interceptação telefônica, com danos legais de até US$ 5.000 por violação, e os processos de pixel já chegam aos milhares. Ter um banner e esperar pela permissão são duas coisas diferentes. Muitos sites processados tinham banner; o rastreamento carregava assim que a página abria.

Portanto, esta auditoria responde a uma pergunta com evidências: em uma visita nova, antes de qualquer clique, o que carrega e o que é enviado, e para quem?

Esta é uma auditoria de engenharia, não um aconselhamento jurídico. Nunca diga a ninguém que eles estão "em conformidade". Diga o que foi encontrado, o que foi corrigido, o que não foi verificado e que um advogado deve revisar se eles veiculam anúncios ou vendem para a UE ou Califórnia.

Padrão: somente leitura

Não altere nada nesta skill: sem edições, publicações, alterações em banco de dados ou autenticação, novos serviços ou aceitação de termos. As correções são trabalho do consent-gate, depois que o proprietário concordar.

Etapa 1: Inventariar o código

Se o código for local (ou um clone do GitHub de um projeto Lovable), execute o scanner:

python3 ~/.claude/skills/consent-audit/scripts/scan_trackers.py /caminho/para/o/app

Ele lista cada assinatura de rastreador, pixel, analytics, replay, embed e script de terceiros que encontra, por arquivo e linha, sinaliza linhas que parecem enviar e-mails ou IDs de usuário e informa se uma verificação de consentimento aparece por perto. Uma nota "verificação de consentimento por perto" é uma pista, não uma prova. Leia o código ao redor de cada resultado para confirmar:

  • Onde começa. index.html <head>, main.tsx, App.tsx, _app/layout ou um provider significa que roda em todas as páginas, para todos os visitantes.
  • O que bloqueia. O script tag, import ou init() só roda após um opt-in armazenado e afirmativo? Um banner que se esconde enquanto gtag('config') já rodou não é um bloqueio.
  • O que envia. identify(email), setUser({ email }), correspondência avançada do Meta (em, ph), URLs completas com strings de consulta ? ou fragmentos # (códigos de presente, tokens de redefinição, texto de pesquisa) e campos de formulário.
  • Encaminhamento no servidor. Conversions API, /api/track, funções de borda postando para Meta/Google/Segment. Eles devem respeitar a mesma escolha.

Se não houver código local (um projeto Lovable que você só pode acessar no navegador), use o prompt somente auditoria em references/prompts.md dentro do chat desse projeto e, em seguida, verifique o relatório com a Etapa 2.

Etapa 2: Verificar o site ao vivo (a parte que um banner não pode falsificar)

O código pode mentir por omissão (gerenciadores de tags, complementos de hospedagem, snippets de CMS). Sempre verifique a URL publicada em uma aba de navegador nova e sem cookies:

  1. Abra o site em um novo contexto privado (no navegador embutido do Claude: uma nova aba após limpar o armazenamento ou um site nunca visitado ali). Não clique em nada.
  2. Leia as requisições de rede (read_network_requests). Qualquer requisição a um domínio de anúncio, analytics ou replay antes de um clique é um resultado: liste o domínio, o caminho da URL e se carrega identificadores (fbp, _ga, cid, uid, em, ttp).
  3. Leia cookies e armazenamento via javascript_tool: document.cookie, Object.keys(localStorage). Observe qualquer _ga, _fbp, _gcl_au, _ttp, _hj*, ph_*, ajs_*, _clck ou _uetsid.
  4. Clique em Rejeitar (ou feche o banner se não houver rejeitar). Navegue para mais duas páginas. Qualquer coisa nova disparando é um resultado.
  5. Clique em Aceitar em um novo contexto. Confirme que os rastreadores carregam agora, para que o bloqueio não esteja apenas quebrado.
  6. Faça login com uma conta de teste, se existir (nunca a de um cliente real). Verifique se o e-mail ou ID de usuário sai em alguma requisição de rastreador.

Etapa 3: Verificar configurações de hospedagem e plataforma

Rastreadores injetados pelo host não aparecem no código do aplicativo:

  • Lovable: Projeto → Configurações → Visitor analytics. Está ativado por padrão; desligue-o (ou bloqueie-o) em todos os projetos, incluindo os novos.
  • Vercel (Web Analytics / Speed Insights), Netlify (Analytics), Cloudflare (Web Analytics, Zaraz), Framer/Webflow/Wix/Squarespace (configurações do site → código personalizado / analytics / pixels), EzyCourse / Systeme / Kajabi (campos de código de rastreamento, campo de Pixel do Facebook).
  • Gerenciadores de tags: abra o contêiner do GTM e liste cada tag e seu gatilho. "Todas as páginas" sem uma condição de consentimento significa que dispara antes do consentimento.

Etapa 4: Classificar e relatar

Classifique cada item:

ClasseExemplosRegra
Necessáriosessão de login, CSRF, carrinho, Stripe na página de checkout, verificações de fraude/bot, preferências de UI salvasPode rodar sem consentimento. Nenhum banner necessário apenas para esses.
Embed funcionalMapbox na página do mapa, players do YouTube/Vimeo, Calendly, widgets de chatCarregar apenas onde usado. Preferir modo clique-para-carregar ou modos de privacidade (youtube-nocookie).
Opcionalpixels de anúncio, GA/GTM, PostHog, Hotjar, Clarity, HeyCatch, gravação de sessão, retargetingNão deve carregar, buscar ou inicializar até que o visitante opte por essa categoria.

Formato do relatório (seja breve e baseado em evidências):

AUDITORIA DE CONSENTIMENTO: <app> (<url>), <data>
Antes de qualquer clique: <N> rastreadores opcionais dispararam  ->  APROVADO / REPROVADO

| Fornecedor | Onde começa (arquivo:linha ou configuração do host) | Dispara antes do consentimento? | Envia dados de identidade/URL? | Classe | Correção mínima |

Serviços necessários (OK sem consentimento): ...
Aviso de privacidade: presente/ausente, linkado no rodapé? lista de fornecedores precisa?
Opção de retirar consentimento: há um link persistente "Escolhas de privacidade"?
Global Privacy Control honrado? sim/não/não testado
Alterações não publicadas que a publicação também liberaria: ...
Não verificado: ...
Não é aconselhamento jurídico. Consulte um advogado se você veicular anúncios, atender visitantes da Califórnia/UE ou colocar pixels em páginas de vídeo.

Em seguida, ofereça o consent-gate para aplicar as correções. Se um rastreador não estiver gerando retorno, recomende removê-lo em vez de bloqueá-lo: nenhum rastreador é a conformidade mais barata (em auditorias reais, remover uma ferramenta de analytics não utilizada muitas vezes foi toda a correção).

Pontos de atenção de auditorias reais

  • Analytics iniciado a partir do arquivo de entrada do aplicativo (src/main.tsx) em todas as páginas para todos os visitantes, sem verificação de consentimento, e o código de login enviava os e-mails e IDs de usuário dos clientes logados para a ferramenta de analytics em cada login. A ferramenta não conseguia remover strings de consulta, então foi removida completamente.
  • O Visitor analytics do Lovable está ativado por padrão e é injetado pelo host. Não está no código.
  • Publicar libera tudo que não foi publicado. Antes de publicar uma correção de privacidade, liste as alterações mais antigas não publicadas que ela também enviará (auxiliares de login, atualizações de dependências, correções de pagamento) e obtenha a aprovação do proprietário.
  • Desligar o analytics não é o mesmo que desligar a captura de dados. O banco de dados do próprio aplicativo (trabalho de alunos, progresso, mensagens) é próprio e separado. Diga isso explicitamente, porque os proprietários se preocupam.
  • Páginas de vídeo + pixel do Meta adicionam outro risco federal (Lei de Proteção à Privacidade de Vídeo). Sites de cursos com vídeos de aula devem tratar qualquer pixel nessas páginas como alta prioridade.

Individual skills in this repo

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

Habilidades Relacionadas