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
Mensagem pronta para colar
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-auditOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/click-path-audit/SKILL.md -o SKILL.mdConteú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
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
karpathy-guidelines
Ajuda seu agente a escrever código melhor, evitando erros comuns. É útil para garantir que o código seja simples, claro e fácil de verificar.
multica-ai/andrej-karpathy-skills
skill-creator
Permite ao agente criar, modificar e otimizar habilidades. Útil para testar o desempenho de habilidades e melhorar sua precisão.
anthropics/skills
ponytail-debt
Lista todos os atalhos de código ('shortcut:') deixados para depois. Ajuda a ver o que ainda precisa ser corrigido no projeto.
DietrichGebert/ponytail