Pular para o conteúdo
Skillpedia
Código em geral280 mil · #22

click-path-audit

Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.

O que ela faz

Esta ferramenta ajuda a encontrar erros em botões e outras interações na tela que não são detectados por métodos de depuração comuns. Ela verifica se a ação de um botão leva ao resultado esperado na interface, mesmo que as partes individuais funcionem.

Quando usar

  • ✓Quando botões não funcionam como esperado, mas a depuração normal não encontra o problema.
  • ✓Após grandes mudanças no código que afetam como os dados são gerenciados.
  • ✓Para garantir que as interações do usuário resultem no estado final correto da interface.

Exemplo do que pedir para a IA

“Verifique todos os botões na página de perfil do usuário para garantir que eles funcionem corretamente e não entrem em conflito.”

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/pi/core/skills/click-path-audit/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/click-path-audit/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta analisa cada clique ou interação, rastreando todas as mudanças de estado que ocorrem. Ela verifica se uma ação desfaz a outra ou se o resultado final não corresponde ao que o botão prometia.

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 click-path-audit

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/click-path-audit/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.

/click-path-audit — Auditoria de Fluxo Comportamental

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

O Problema Que Isso Resolve

Verificações tradicionais de depuração:

  • A função existe? (conexão ausente)
  • Ela trava? (erros de tempo de execução)
  • Ela retorna o tipo correto? (fluxo de dados)

Mas NÃO verifica:

  • O estado final da interface do usuário corresponde ao que o rótulo do botão promete?
  • A função B anula silenciosamente 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" chamado setComposeMode(true) e depois selectThread(null). Ambos funcionavam individualmente. Mas selectThread teve um efeito colateral que redefiniu composeMode: false. O botão não fez 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. IDENTIFY the handler (onClick, onSubmit, onChange, etc.)
2. TRACE every function call in the handler, IN ORDER
3. For EACH function call:
   a. What state does it READ?
   b. What state does it WRITE?
   c. Does it have SIDE EFFECTS on shared state?
   d. Does it reset/clear any state as a side effect?
4. CHECK: Does any later call UNDO a state change from an earlier call?
5. CHECK: Is the FINAL state what the user expects from the button label?
6. CHECK: Are there race conditions (async calls that resolve in wrong order)?

Passos de Execução

Passo 1: Mapear Armazenamentos de Estado

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

For each Zustand store / React context in scope:
  For each action/setter:
    - What fields does it set?
    - Does it RESET other fields as a side effect?
    - Document: actionName → {sets: [...], resets: [...]}

Esta é a referência crítica. O bug do "Novo E-mail" ficou 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} RESETS: {composeMode: false, composeData: null, redraftOpen: false}
  setDraftGenerating(bool) → sets: {draftGenerating}
  ...

DANGEROUS RESETS (actions that clear state they don't own):
  selectThread → resets composeMode (owned by setComposeMode)
  reset → resets everything

Passo 2: Auditar Cada Ponto de Interação

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

TOUCHPOINT: [Button label] in [Component:line]
  HANDLER: onClick → {
    call 1: functionA() → sets {X: true}
    call 2: functionB() → sets {Y: null} RESETS {X: false}  ← CONFLICT
  }
  EXPECTED: User sees [description of what button label promises]
  ACTUAL: X is false because functionB reset it
  VERDICT: BUG — [description]

Verifique cada um destes padrões de bug:

Padrão 1: Anulação Sequencial

handler() {
  setState_A(true)     // sets X = true
  setState_B(null)     // side effect: resets X = false
}
// Result: X is false. First call was pointless.

Padrão 2: Corrida Assíncrona

handler() {
  fetchA().then(() => setState({ loading: false }))
  fetchB().then(() => setState({ loading: true }))
}
// Result: final loading state depends on which resolves first

Padrão 3: Fechamento Obsoleto

const [count, setCount] = useState(0)
const handler = useCallback(() => {
  setCount(count + 1)  // captures stale count
  setCount(count + 1)  // same stale count — increments by 1, not 2
}, [count])

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

// Button says "Save" but handler only validates, never actually saves
// Button says "Delete" but handler sets a flag without calling the API
// Button says "Send" but the API endpoint is removed/broken

Padrão 5: Caminho Morto Condicional

handler() {
  if (someState) {        // someState is ALWAYS false at this point
    doTheActualThing()    // never reached
  }
}

Padrão 6: Interferência do useEffect

// Button sets stateX = true
// A useEffect watches stateX and resets it to false
// User sees nothing happen

Passo 3: Relatar

Para cada bug encontrado:

CLICK-PATH-NNN: [severidade: CRÍTICO/ALTO/MÉDIO/BAIXO]
  Ponto de Interação: [Rótulo do botão] em [arquivo:linha]
  Padrão: [Anulação Sequencial / Corrida Assíncrona / Fechamento Obsoleto / Transição Ausente / Caminho Morto / Interferência do useEffect]

…
Perguntas frequentes

O que são 'efeitos colaterais' no estado?

São mudanças em partes do sistema que não são o objetivo direto da ação. Por exemplo, clicar em 'novo email' deveria abrir um editor, mas um efeito colateral inesperado fecha o editor.

O que são 'condições de corrida' (race conditions)?

Acontece quando duas ações acontecem quase ao mesmo tempo e a ordem em que terminam afeta o resultado final, levando a um estado inesperado.

Isso substitui a depuração tradicional?

Não, ela complementa. A depuração tradicional verifica se o código está lá e não quebra. Esta ferramenta foca em como as interações do usuário afetam o estado final da interface.

Detalhes

Descrição original do autor

Trace every user-facing button/touchpoint through its full state change sequence to find bugs where functions individually work but cancel each other out, produce wrong final state, or leave the UI in an inconsistent state. Use when: systematic debugging found no bugs but users report broken buttons, or after any major refactor touching shared state stores.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#22
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas