Communitygithub.com

click-path-audit

Auditoria de fluxo comportamental que rastreia cada botão/ponto de interação do usuário por meio de sua sequência completa de mudanças de estado para encontrar bugs onde funções funcionam individualmente, mas se anulam, produzem estado final incorreto ou deixam a UI inconsistente.

O que é click-path-audit?

O /click-path-audit é uma habilidade especializada para depuração sistemática de interações de interface que localiza bugs invisíveis para inspeção estática de código e depuração tradicional. Enquanto métodos comuns verificam funções individuais (existência, erros de execução, tipos), esta skill expõe efeitos colaterais de estado compartilhado, condições de corrida entre chamadas sequenciais e handlers que se anulam silenciosamente. Adequada para Claude Code, Cursor, Codex e outras plataformas de agentes de IA, a auditoria funciona em três etapas: mapear todas as ações de estado que redefinem campos que não lhes pertencem (ex: selectThread redefine composeMode); rastrear cada handler de toque identificando chamadas que desfazem as anteriores; e relatar padrões como Desfazer Sequencial, Race Assíncrona, Fechamento Obsoleto, Transição Ausente e Interferência de useEffect. É ideal após refatorações de estado compartilhado, quando usuários relatam botões quebrados ou antes de releases, mas não substitui auditorias de API, estilo ou desempenho. Integra-se com systematic-debugging (bugs de API) e verification-before-completion (verificação de correções).

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/click-path-audit

Perguntar na sua IA favorita

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

Documentação

/click-path-audit — Auditoria de Fluxo Comportamental

Encontre bugs que a leitura estática de código perde: efeitos colaterais de interação de estado, condições de corrida entre chamadas sequenciais e handlers que silenciosamente se desfazem.

O Problema Que Isso Resolve

A depuração tradicional verifica:

  • A função existe? (fiação faltante)
  • Ela trava? (erros de runtime)
  • Ela retorna o tipo certo? (fluxo de dados)

Mas NÃO verifica:

  • O estado final da UI corresponde ao que o rótulo do botão promete?
  • A função B silenciosamente desfaz o que a função A acabou de fazer?
  • O estado compartilhado (Zustand/Redux/context) tem efeitos colaterais que cancelam a ação pretendida?

Exemplo real: Um botão "Novo E-mail" chamava setComposeMode(true) e depois selectThread(null). Ambas funcionavam individualmente. Mas selectThread tinha um efeito colateral redefinindo composeMode: false. O botão não fazia nada. 54 bugs foram encontrados por depuração sistemática — este foi perdido.


Como Funciona

Para CADA ponto de interação na área alvo:

1. IDENTIFIQUE o handler (onClick, onSubmit, onChange, etc.)
2. RASTREIE cada chamada de função no handler, EM ORDEM
3. Para CADA chamada de função:
   a. Qual estado ela LÊ?
   b. Qual estado ela ESCREVE?
   c. Ela tem EFEITOS COLATERAIS no estado compartilhado?
   d. Ela redefine/limpa algum estado como efeito colateral?
4. VERIFIQUE: Alguma chamada posterior DESFAZ uma mudança de estado de uma chamada anterior?
5. VERIFIQUE: O estado FINAL é o que o usuário espera do rótulo do botão?
6. VERIFIQUE: Existem condições de corrida (chamadas assíncronas que resolvem na ordem errada)?

Etapas de Execução

Etapa 1: Mapear Stores de Estado

Antes de auditar qualquer ponto de interação, construa um mapa de efeitos colaterais de cada ação da store de estado:

Para cada store Zustand / contexto React no escopo:
  Para cada ação/setter:
    - Quais campos ela define?
    - Ela REDEFINE outros campos como efeito colateral?
    - Documente: actionName → {sets: [...], resets: [...]}

Esta é a referência crítica. O bug "Novo E-mail" era invisível sem saber que selectThread redefine composeMode.

Formato de saída:

STORE: emailStore
  setComposeMode(bool) → sets: {composeMode}
  selectThread(thread|null) → sets: {selectedThread, selectedThreadId, messages, drafts, selectedDraft, summary} REDEFINE: {composeMode: false, composeData: null, redraftOpen: false}
  setDraftGenerating(bool) → sets: {draftGenerating}
  ...

REDEFINIÇÕES PERIGOSAS (ações que limpam estado que não possuem):
  selectThread → redefine composeMode (possuído por setComposeMode)
  reset → redefine tudo

Etapa 2: Auditar Cada Ponto de Interação

Para cada botão/alternância/envio de formulário na área alvo:

PONTO: [Rótulo do botão] em [Componente:linha]
  HANDLER: onClick → {
    chamada 1: functionA() → define {X: true}
    chamada 2: functionB() → define {Y: null} REDEFINE {X: false}  ← CONFLITO
  }
  ESPERADO: Usuário vê [descrição do que o rótulo do botão promete]
  REAL: X é false porque functionB redefiniu
  VEREDITO: BUG — [descrição]

Verifique cada um desses padrões de bug:

Padrão 1: Desfazer Sequencial

handler() {
  setState_A(true)     // define X = true
  setState_B(null)     // efeito colateral: redefine X = false
}
// Resultado: X é false. Primeira chamada foi inútil.

Padrão 2: Race Assíncrona

handler() {
  fetchA().then(() => setState({ loading: false }))
  fetchB().then(() => setState({ loading: true }))
}
// Resultado: estado final de loading depende de qual resolve primeiro

Padrão 3: Fechamento Obsoleto

const [count, setCount] = useState(0)
const handler = useCallback(() => {
  setCount(count + 1)  // captura count obsoleto
  setCount(count + 1)  // mesmo count obsoleto — incrementa 1, não 2
}, [count])

Padrão 4: Transição de Estado Ausente

// Botão diz "Salvar" mas handler apenas valida, nunca salva de fato
// Botão diz "Excluir" mas handler define uma flag sem chamar a API
// Botão diz "Enviar" mas o endpoint da API foi removido/quebrado

Padrão 5: Caminho Morto Condicional

handler() {
  if (someState) {        // someState é SEMPRE false neste ponto
    doTheActualThing()    // nunca alcançado
  }
}

Padrão 6: Interferência de useEffect

// Botão define stateX = true
// Um useEffect observa stateX e o redefine para false
// Usuário não vê nada acontecer

Etapa 3: Relatar

Para cada bug encontrado:

CLICK-PATH-NNN: [gravidade: CRÍTICO/ALTO/MÉDIO/BAIXO]
  Ponto: [Rótulo do botão] em [arquivo:linha]
  Padrão: [Desfazer Sequencial / Race Assíncrona / Fechamento Obsoleto / Transição Ausente / Caminho Morto / Interferência de useEffect]
  Handler: [nome da função ou inline]
  Rastreio:
    1. [chamada] → define {campo: valor}
    2. [chamada] → REDEFINE {campo: valor}  ← CONFLITO
  Esperado: [o que o usuário espera]
  Real: [o que realmente acontece]
  Correção: [correção específica]

Controle de Escopo

Esta auditoria é cara. Escope-a adequadamente:

  • Auditoria completa do app: Use no lançamento ou após grande refatoração. Lance agentes paralelos por página.
  • Auditoria de página única: Use após construir uma nova página ou quando um usuário relatar um botão quebrado.
  • Auditoria focada em store: Use após modificar uma store Zustand — audite todos os consumidores das ações alteradas.

Divisão recomendada de agentes para auditoria completa:

Agente 1: Mapear TODAS as stores de estado (Etapa 1) — este é o contexto compartilhado para todos os outros agentes
Agente 2: Dashboard (Tarefas, Notas, Diário, Ideias)
Agente 3: Chat (DanteChatColumn, JustChatPage)
Agente 4: E-mails (ThreadList, DraftArea, EmailsPage)
Agente 5: Projetos (ProjectsPage, ProjectOverviewTab, NewProjectWizard)
Agente 6: CRM (todas as sub-abas)
Agente 7: Perfil, Configurações, Cofre, Notificações
Agente 8: Suite de Gestão (todas as páginas)

O Agente 1 DEVE ser concluído primeiro. Sua saída é entrada para todos os outros agentes.


Quando Usar

  • Após depuração sistemática encontrar "nenhum bug" mas usuários relatarem UI quebrada
  • Após modificar qualquer ação de store Zustand (verifique todos os chamadores)
  • Após qualquer refatoração que toque estado compartilhado
  • Antes do lançamento, em fluxos críticos do usuário
  • Quando um botão "não faz nada" — esta é a ferramenta para isso

Quando NÃO Usar

  • Para bugs de nível de API (formato de resposta errado, endpoint faltante) — use systematic-debugging
  • Para problemas de estilo/layout — inspeção visual
  • Para problemas de desempenho — ferramentas de profiling

Integração com Outras Skills

  • Execute APÓS /superpowers:systematic-debugging (que encontra os outros 54 tipos de bug)
  • Execute ANTES de /superpowers:verification-before-completion (que verifica se as correções funcionam)
  • Alimenta /superpowers:test-driven-development — todo bug encontrado aqui deve ganhar um teste

Exemplo: O Bug Que Inspirou Esta Skill

ThreadList.tsx Botão "Novo E-mail":

onClick={() => {
  useEmailStore.getState().setComposeMode(true)   // ✓ define composeMode = true
  useEmailStore.getState().selectThread(null)      // ✗ REDEFINE composeMode = false
}}

Definição da store:

selectThread: (thread) => set({
  selectedThread: thread,
  selectedThreadId: thread?.id ?? null,
  messages: [],
  drafts: [],
  selectedDraft: null,
  summary: null,
  composeMode: false,     // ← esta redefinição silenciosa matou o botão
  composeData: null,
  redraftOpen: false,
})

A depuração sistemática perdeu porque:

  • O botão tem um handler onClick (não está morto)
  • Ambas as funções existem (sem fiação faltante)
  • Nenhuma função trava (sem erro de runtime)
  • Os tipos de dados estão corretos (sem incompatibilidade de tipo)

A auditoria de caminho de clique captura porque:

  • Etapa 1 mapeia selectThread redefine composeMode
  • Etapa 2 rastreia o handler: chamada 1 define true, chamada 2 redefine false
  • Veredito: Desfazer Sequencial — estado final contradiz a intenção do botão

Individual skills in this repo

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

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

Habilidades Relacionadas