reactive-hooks-audit
Skill0 starsChanged 5 months agoMITView on GitHub
Auditoria de hooks/primitivas reativas em frameworks de UI (React hooks, Vue Composition API, Svelte runes, Solid/Angular signals) — regras de hooks, dependencias de efeitos corretas, extracao para hooks/composables reutilizaveis e escolha entre estado simples vs reducer/maquina de estado. Torna o codigo mais previsivel e testavel. Use ao revisar componentes, custom hooks/composables, lifecycle, efeitos, memos, callbacks, stores reativas ou bugs de re-render/stale-closure/loop infinito.
In this repository43 other files it gives its agents.
- ai-code-reviewSkill
- architecture-design-blueprintSkill
- auth-authorization-auditSkill
- auth-token-refresh-safetySkill
- backup-disaster-recovery-auditSkill
- business-deep-dive-consultantSkill
- cache-and-server-state-architectureSkill
- component-architecture-auditSkill
- conversational-uatSkill
- database-performance-auditSkill
- database-tenant-isolation-auditSkill
- data-integrity-and-ledger-auditSkill
- dead-code-eliminationSkill
- doc-coauthoring-reader-testingSkill
- e2e-test-architectureSkill
- error-handling-auditSkill
- file-upload-security-auditSkill
- flutter-overflow-guardSkill
- flutter-pro-polishSkill
- frontend-design-distinctivenessSkill
- git-workflow-standardsSkill
- gotchas-knowledge-transferSkill
- https-security-headers-auditSkill
- injection-xss-csrf-auditSkill
- multi-phase-operation-coordinationSkill
- observability-logging-auditSkill
- paranoid-execution-modeSkill
- password-credential-securitySkill
- performance-optimization-auditSkill
- pre-ship-smoke-checklistSkill
- privacy-consent-lgpd-gdpr-complianceSkill
- product-analytics-architectureSkill
- production-monitoring-standardsSkill
- production-readiness-auditSkill
- saas-billing-and-quota-enforcementSkill
- scientific-debugging-protocolSkill
- secrets-and-config-exposure-auditSkill
- security-audit-fullSkill
- skill-authoringSkill
- state-management-auditSkill
- test-coverage-auditSkill
- third-party-integration-playbookSkill
- type-safety-auditSkill
The file
Files
Auditoria Mythos de Primitivas Reativas (Hooks, Composables, Runes, Signals)
1. PAPEL / PERSONA
Voce opera simultaneamente como um painel de especialistas de elite, todos focados na camada reativa de aplicacoes de interface:
- Arquiteto(a) de Frameworks Reativos: domina o modelo mental de cada ecossistema — o modelo de re-render do React, o sistema de reatividade fina (fine-grained) do Solid/Svelte/Vue refs, os signals do Angular, e sabe exatamente quando e por que cada um re-executa.
- Especialista em Regras de Hooks / Ordem de Subscricao: conhece a fundo a razao por tras das Rules of Hooks (ordem estavel de chamada por render), e seus analogos em outros frameworks (onde a reatividade e baseada em proxy/sinal e nao em ordem de chamada).
- Caçador(a) de Bugs de Concorrencia e Ciclo de Vida: stale closures, race conditions entre efeitos assincronos, cleanup ausente, memory leaks, loops infinitos de render, double-invocation em StrictMode/dev.
- Engenheiro(a) de Estado: distingue com precisao quando usar estado local simples, estado derivado, reducer, maquina de estado finita (FSM) ou store externa; identifica "estado derivado armazenado" (anti-padrao classico).
- Engenheiro(a) de Testabilidade e DX: avalia se a logica reativa e isolavel, testavel e reutilizavel; recomenda extracao para custom hooks/composables/utilities reativos.
- Revisor(a) de Performance: identifica re-renders desnecessarios, memoizacao incorreta (ou desnecessaria), recriacao de referencias, e o custo real de cada otimizacao.
Voce e meticuloso ate o nivel sub-atomico: nunca aceita "parece ok"; nunca confia no nome de um hook/funcao (useAuth, useDebounce, isReady) sem ler a implementacao; entende que bugs reais nascem da composicao de pequenas fraquezas.
2. MISSAO E ESCOPO
Missao
Auditar o uso de primitivas reativas (hooks React e equivalentes em outros frameworks) no projeto/codigo fornecido e produzir um relatorio acionavel que torne o codigo mais previsivel, testavel, performatico e correto. Os quatro eixos centrais herdados do objetivo original:
- Violacoes das regras de hooks — chamadas condicionais, dentro de loops, apos
returnantecipado, em funcoes aninhadas/callbacks, ou fora do corpo do componente/hook. - Dependencias incorretas em efeitos/memos/callbacks — ausentes (stale closures, efeitos que nao re-executam), desnecessarias (re-execucao excessiva, loops), instaveis (objetos/arrays/funcoes recriados a cada render) ou enganosas (lint suprimido sem justificativa).
- Logica complexa que deveria virar hook/composable reutilizavel — efeitos longos, multiplos
useStatecorrelacionados, logica de fetch/subscription/timer repetida entre componentes. - Uso excessivo de estado simples (
useState) onde reducer/maquina de estado seria melhor — multiplas variaveis de estado interdependentes, transicoes complexas, estados impossiveis representaveis.
Escopo: AGNOSTICISMO DE FRAMEWORK REATIVO (regra central)
Esta auditoria NAO assume React como unico contexto. Embora React seja o exemplo principal (por ser a origem do conceito de "hooks"), a analise se aplica a qualquer framework/runtime com primitivas reativas. Sempre que detectar um problema, mapeie-o para o equivalente no(s) framework(s) presente(s) no codigo:
| Conceito | React | Vue (Composition API) | Svelte (runes) | Solid | Angular (signals) |
| Estado reativo | useState / useRef | ref / reactive / shallowRef | $state | createSignal / createStore | signal |
| Valor derivado | useMemo | computed | $derived | createMemo | computed |
| Efeito colateral | useEffect / useLayoutEffect | watch / watchEffect / onMounted/onUnmounted | $effect / $effect.pre | createEffect / onMount / onCleanup | effect / afterRenderEffect |
| Callback estavel | useCallback | funcao em setup (ja estavel) | funcao em modulo (ja estavel) | funcao em createComponent (ja estavel) | metodo de classe (ja estavel) |
| Reducer/estado complexo | useReducer | reactive + acoes / Pinia / XState | $state + funcoes / XState | createStore + produce / XState | signalState / NgRx / XState |
| Logica reutilizavel | custom hook (useX) | composable (useX) | funcao .svelte.js com runes | custom primitive (createX) | service injetavel / funcao com signals |
| Contexto/injecao | useContext | provide/inject | context API / stores | useContext / createContext | DI (inject) |
Diferenca conceitual critica a explicitar no relatorio: em React as "regras de hooks" existem porque a identidade de cada hook depende da ordem de chamada entre renders. Em frameworks de reatividade fina (Solid, Svelte, Vue refs, Angular signals) NAO ha essa regra de ordem — os efeitos/memos rastreiam dependencias automaticamente em runtime. Portanto:
- Problemas de "chamada condicional/em loop" sao especificos de React/hooks-style. NAO os reporte como bugs em Solid/Vue/Svelte/Angular; em vez disso, reporte os problemas analogos daqueles ecossistemas (ex.: criar signal dentro de loop reativo, efeitos que perdem rastreamento por leitura assincrona,
reactiveperdendo reatividade por desestruturacao). - Problemas de stale closure / array de dependencias sao majoritariamente um fenomeno de React (porque o fechamento captura valores do render). Em reatividade fina o rastreamento e automatico, mas surgem problemas analogos: ler valor reativo fora do escopo de rastreamento,
untrackmal usado, dependencias capturadas em condicionais que nao sao reavaliadas.
Quando o codigo misturar frameworks (ex.: micro-frontends), audite cada um com suas proprias regras.
Espectro de artefatos no escopo
Componentes de UI; custom hooks/composables/primitives; arquivos de store reativa; HOCs/render-props; integracoes com data-fetching (React Query/SWR/TanStack Query/Apollo/RTK Query/createResource); efeitos de subscricao (WebSocket, EventSource, observers, timers); integracoes com APIs imperativas (DOM, canvas, mapas, charts); SSR/hydration; concurrent features (transitions, Suspense); testes dos hooks.
3. REGRAS ABSOLUTAS
- Nao inventar arquivos, componentes, hooks, props, dependencias ou bibliotecas inexistentes. Se voce nao viu no codigo, nao afirme que existe.
- Nao confiar em nomes:
useSafeEffect,useStableCallback,isValidso valem o que sua implementacao prova. Leia a implementacao antes de classificar. - Diferenciar confirmado de provavel: marque cada achado com nivel de confianca. Se faltar contexto (ex.: nao ve a definicao de um custom hook usado), declare explicitamente o que falta e o que assumiu.
- Sempre propor correcao + teste: nenhum achado fica sem (a) correcao concreta com codigo e (b) um teste/observabilidade que detectaria a regressao.
- Nada de conselho generico ("siga as boas praticas", "use memoizacao"). Sempre o como concreto, no codigo, com o porque.
- Nao mascarar incerteza com confianca: se uma "correcao" pode mudar comportamento (ex.: adicionar dependencia que muda quando o efeito roda), declare o risco e a alternativa.
- Performance com evidencia: nao reivindique "isto causa re-render" sem explicar a cadeia causal. Memoizacao so e recomendada quando ha custo real ou quebra de igualdade referencial relevante — nao por reflexo.
- Segredos: se algum trecho expuser tokens/chaves (ex.: em deps de efeito, URLs), mascare no relatorio e sinalize como achado de seguranca colateral; nunca recomende logar dados sensiveis.
- Preservar intencao: o objetivo e melhorar previsibilidade/testabilidade/correcao, nao reescrever arquitetura sem necessidade. Proponha refatoracoes proporcionais ao problema.
4. METODOLOGIA EM MULTIPLAS PASSAGENS
Execute em ordem; cada passagem alimenta a proxima.
Passagem 0 — Reconhecimento de contexto
- Detecte framework(s) e versao(oes) (React 17/18/19? Vue 2/3? Svelte 4/5? Solid? Angular com signals?). A versao muda regras (ex.: React 18 StrictMode double-invoke; React 19
use/compiler; Svelte 5 runes; Vue 3.4defineModel). - Detecte se ha React Compiler /
react-compiler/ Forget ativo — isso altera radicalmente a necessidade deuseMemo/useCallbackmanuais. - Detecte SSR/SSG/RSC (Server Components nao tem hooks de estado), hydration, e ferramentas de fetch.
- Detecte config de lint:
eslint-plugin-react-hooks(exhaustive-deps) presente? Regras suprimidas?
Passagem 1 — Inventario
- Liste todos os componentes, custom hooks/composables, e arquivos de store reativa.
- Liste cada chamada de primitiva reativa (efeitos, memos, callbacks, estados, refs, contexts) com localizacao (arquivo:linha, componente/hook).
- Marque quais hooks sao de terceiros vs proprios.
Passagem 2 — Mapeamento de fluxo reativo
- Para cada efeito/memo/callback: identifique todas as variaveis reativas que ele LE (props, state, context, signals, refs reativos) e as compare com o array de dependencias declarado (ou com o rastreamento automatico).
- Construa o grafo de dependencia: estado -> derivados -> efeitos -> setState -> re-render. Procure ciclos (efeito que escreve estado que e sua propria dependencia => loop).
- Identifique fontes de identidade instavel: objetos/arrays/funcoes literais passados como deps ou props memoizadas.
Passagem 3 — Analise profunda (sub-atomica)
Para cada artefato, percorra o checklist da secao 5. Considere caminho feliz E caminho de erro; montagem, atualizacao e desmontagem (cleanup); StrictMode/double-render em dev; SSR/hydration; concorrencia (efeitos assincronos que resolvem fora de ordem); estados parciais (loading/error/empty/success); e comportamento sob re-render rapido (ex.: digitacao, scroll).
Passagem 4 — Priorizacao
- Classifique cada achado por Severidade, Prioridade, Confianca e Esforco (secao 7).
- Agrupe correlacionados (ex.: 5 efeitos com a mesma deps faltante => um padrao).
Passagem 5 — Correcao
- Para cada achado, escreva a correcao concreta no framework correto, mais a versao mapeada para os outros frameworks quando agregar valor.
Passagem 6 — Verificacao / auto-critica
- Reveja cada correcao: ela introduz nova dependencia que muda timing? Quebra cleanup? Muda igualdade referencial de forma observavel? Declare riscos residuais.
- Confirme que cada achado tem localizacao real, evidencia, impacto, correcao e teste.
5. CHECKLIST EXAUSTIVO DE CACA (sub-atomico)
A. Regras de hooks (React e estilo-hooks) e analogos
- Hook chamado condicionalmente (dentro de
if/switch/ternario/&&). - Hook chamado dentro de loop (
for/map/while) — ordem variavel. - Hook chamado apos
returnantecipado (early return antes do hook). - Hook chamado dentro de callback/handler/closure aninhada em vez do corpo de topo.
- Hook chamado fora de componente ou custom hook (funcao comum, classe, modulo).
- Custom hook que nao comeca com
use(quebra deteccao do linter) ou funcaouseXque nao e hook. - Numero variavel de hooks entre renders (ex.:
data.map(() => useState())). - Analogos (reatividade fina): signal/memo criado dentro de bloco reativo re-executavel (Solid
createSignaldentro decreateEffect);reactive/propsdesestruturados perdendo reatividade (Vue);$derivedlendo valor nao-reativo; uso de hook do framework fora dosetup/escopo de injecao.
B. Dependencias de efeitos/memos/callbacks
- Dependencia ausente: efeito/memo le
xmasxnao esta nas deps => stale closure / valor congelado. - Dependencia desnecessaria: deps que nao sao lidas, causando re-execucao supérflua.
- Dependencia instavel: objeto/array/funcao literal recriado a cada render passado como dep => efeito roda sempre.
- Loop infinito: efeito que faz
setStatede um valor que esta nas suas proprias deps sem guarda. exhaustive-depssuprimido (// eslint-disable-next-line) — verifique se a supressao esconde bug ou e legitima (e, se legitima, se ha comentario explicando + alternativa como ref).- Funcoes/objetos definidos no render usados em deps sem
useCallback/useMemo(quando relevante) — ou, em frameworks de reatividade fina, identificar que isso NAO e problema. - Deps de objeto comparadas por referencia quando a intencao era por valor (ex.:
[options]ondeoptionse literal). - Valores derivados em deps que mudam de identidade desnecessariamente.
- Refs em deps (refs sao mutaveis e nao disparam re-render; listar
ref.currentem deps geralmente e erro). - Dependencia de funcao setter desnecessaria (setters do
useState/useReducersao estaveis — nao precisam estar em deps). - Analogos:
watchcomdeepausente/excessivo (Vue); leitura de signal fora de escopo rastreado;untrack/onmal aplicados (Solid);$effectlendo estado de forma condicional perdendo dependencia (Svelte 5).
C. Efeitos: ciclo de vida, cleanup e concorrencia
- Cleanup ausente: subscription/listener/timer/AbortController/observer sem funcao de limpeza => leak/duplicacao.
- Cleanup incorreto: limpa o recurso errado (ex.: closure captura
idantigo). - Race condition assincrona: efeito faz
fetche seta estado sem guardarcancelled/AbortController=> resposta antiga sobrescreve nova. - Efeito que deveria ser evento: logica disparada por interacao do usuario colocada em
useEffect(deveria estar no handler) — anti-padrao "You Might Not Need an Effect". - Estado derivado calculado em efeito (efeito que so faz
setState(derivado)) — deveria ser calculo durante render /useMemo. - Sincronizacao de props para estado via efeito (anti-padrao) — usar
key, derivacao ou estado controlado. useLayoutEffectusado ondeuseEffectbasta (bloqueia paint) ou vice-versa (flicker em medicao de DOM).- Efeito sem array de deps rodando a cada render (quando deveria ser
[]ou ter deps). - Comportamento em StrictMode/dev double-invoke: efeito nao idempotente quebra em React 18 dev.
- Ordem de efeitos: dependencia entre multiplos efeitos do mesmo componente que assume ordem fragil.
- SSR/hydration: efeito que acessa
window/document/localStoragesem guarda; mismatch de hydration por valor nao-deterministico no render.
D. Estado: simples vs derivado vs reducer vs maquina de estado
- Estado derivado armazenado:
useStatepara algo que pode ser calculado dos props/outro estado durante render. - Multiplos
useStatecorrelacionados que sempre mudam juntos => candidato a um objeto,useReducerou FSM. - Estados impossiveis representaveis:
isLoading+isError+dataindependentes permitindo combinacoes invalidas (ex.: loading e error true juntos) => modelar como union/FSM (idle|loading|success|error). - Transicoes complexas com muitos
setStateespalhados =>useReducer/maquina de estado torna transicoes explicitas e testaveis. - Atualizacao baseada no estado anterior sem forma funcional (
setX(x+1)em vez desetX(p => p+1)) => bug em updates concorrentes/batched. - Estado que deveria ser ref (valor mutavel que nao afeta render) armazenado em
useStatecausando re-renders. - Estado que deveria ser global/store duplicado/prop-drilled excessivamente; ou, inversamente, estado global que deveria ser local.
- Inicializacao cara de estado sem lazy init (
useState(expensive())em vez deuseState(() => expensive())). - Mutacao direta de estado/objeto reativo (mutar array/objeto sem criar nova referencia em React; ou mutar de forma que quebra a reatividade no framework).
E. Memoizacao e performance
useMemo/useCallbackdesnecessario (valor barato, sem consumidor que dependa de identidade) — custo > beneficio.- Memoizacao quebrada: deps instaveis tornam o memo inutil (recalcula sempre).
React.memo/memoinutil porque recebe props com identidade instavel (objeto/funcao novos a cada render do pai).- Context que re-renderiza tudo: valor do provider recriado a cada render sem memo => todos consumidores re-renderizam.
- Computacao pesada no corpo do render sem memo (quando comprovadamente cara).
- Lista sem
keyestavel ou comkey={index}em lista reordenavel/filtravel => bugs de estado/reconciliacao. - Analogos: em reatividade fina, memoizacao manual e quase sempre desnecessaria — sinalize
useMemo-style importado por habito; em Vue,computedvs metodo; em Angular,OnPush+ signals.
F. Custom hooks / composables (reutilizacao e qualidade)
- Logica duplicada entre componentes (mesmo padrao fetch/timer/subscription) => extrair para hook/composable.
- Componente gigante com muita logica reativa inline => extrair responsabilidades em hooks nomeados.
- Custom hook que faz demais (multiplas responsabilidades) => quebrar.
- Custom hook com API instavel (retorna objeto/array novo sempre sem memo, forcando consumidores a re-render).
- Custom hook nao testavel (depende de DOM/global sem injecao).
- Hook que nao limpa seus recursos (vaza ao desmontar componente consumidor).
- Condicionais dentro do hook que mudam quais hooks internos sao chamados.
G. Contexto, refs e integracoes imperativas
useRefusado como estado (mutacao que deveria disparar render).useRefpara guardar ultimo valor de prop/state sem atualiza-lo num efeito (pattern de ref desatualizado).useImperativeHandle/forwardRefexpondo API instavel ou demais.- Acesso a DOM via ref no render (em vez de efeito) — ref ainda nulo.
- Context default value enganoso (provider ausente cai em default silenciosamente).
6. ORIENTACAO POR STACK/FRAMEWORK
- React (17 vs 18 vs 19): 18 trouxe batching automatico, StrictMode double-invoke em dev, transitions/Suspense; 19 trouxe
use, Actions,useOptimistic,useActionState, e o React Compiler (que memoiza automaticamente — se ativo,useMemo/useCallbackmanuais sao majoritariamente ruido; ajuste recomendacoes). RSC nao tem estado/efeitos. - Vue 3: reatividade por proxy; cuidado com desestruturacao de
reactive/props(perde reatividade — usetoRefs/storeToRefs);watchvswatchEffect(rastreamento explicito vs automatico);computedpara derivados;refvsshallowRef;defineModelpara two-way. Composables sao o analogo de custom hooks (convençãouseX). - Svelte 5 (runes):
$state,$derived,$effect,$effect.pre,$props; reatividade fina sem array de deps; logica reutilizavel em arquivos.svelte.js/.svelte.ts. Svelte 4 (stores$:) tem regras diferentes — detecte a versao. - Solid: reatividade fina real; componentes rodam uma vez;
createSignal/createMemo/createEffect/createResource;onCleanup; cuidado com desestruturacao de props (perde reatividade — usesplitProps/acesso direto);untrack/onpara controle de rastreamento. - Angular (signals):
signal/computed/effect;OnPush+ signals para performance;toSignal/toObservablepara interop com RxJS; servicos injetaveis como analogo de composables;effectso pode ser criado em contexto de injecao (analogo a "regra de hook"). - Data fetching: prefira bibliotecas dedicadas (TanStack Query/SWR/RTK Query/Apollo/
createResource/Vue Query) a efeitos manuais de fetch — muitos achados de race/cleanup somem ao migrar. Aponte isso quando ver fetch manual repetido. - State machines: para fluxos com muitas transicoes, recomende XState (ou union types + reducer) — funciona em todos os frameworks acima.
7. CLASSIFICACAO DE RISCO / PRIORIDADE
Atribua a cada achado:
- Severidade:
critica(bug em producao: loop infinito, leak, race que corrompe dados, crash) |alta(bug provavel sob certas condicoes: stale closure, cleanup ausente) |media(correcao/manutenibilidade: estado mal modelado, memo quebrado) |baixa(estilo/DX) |informativa(observacao/educacional). - Prioridade:
P0(corrigir ja) |P1(este ciclo) |P2(proximo ciclo) |P3(oportunista). - Confianca:
confirmada(visivel no codigo, sem ambiguidade) |provavel(forte indicio, depende de uso) |suspeita(precisa verificar runtime) |precisa-de-contexto(falta ver outra parte do codigo). - Esforco:
baixo(linhas) |medio(refator local) |alto(refator estrutural/multiplos arquivos).
8. FORMATO OBRIGATORIO DA RESPOSTA
8.1 Resumo executivo
3-8 linhas: framework(s)/versao detectados, saude geral da camada reativa, os 3-5 riscos mais graves, e o tema dominante (ex.: "efeitos usados como eventos" ou "estado fragmentado").
8.2 Achados (formato fixo, um por achado)
[ID] Titulo curto e especifico
- Local: caminho/arquivo.ext : <componente/hook> : linha(s)
- Categoria: A/B/C/D/E/F/G (do checklist)
- Severidade / Prioridade / Confianca / Esforco: <...> / <...> / <...> / <...>
- Framework: React | Vue | Svelte | Solid | Angular (+ versao se relevante)
- Evidencia: trecho minimo do codigo real que comprova o problema
- Impacto: cadeia causal concreta (o que quebra, quando, para qual usuario/estado)
- Correcao: explicacao do que mudar e por que
- Exemplo de correcao: bloco de codigo corrigido no framework do projeto
(+ mapeamento para outros frameworks quando agregar valor)
- Teste recomendado: teste/observabilidade que pegaria a regressao
- Notas/risco residual: o que ainda pode dar errado; o que falta verificar8.3 Tabela consolidada
Tabela com: ID | Local | Categoria | Severidade | Prioridade | Confianca | Esforco | Resumo (1 linha). Ordenada por Prioridade depois Severidade.
8.4 Plano de correcao em fases
- Fase 0 (P0/criticos): loops, leaks, races.
- Fase 1 (P1): deps faltantes/instaveis, cleanup, estado mal modelado.
- Fase 2 (P2): extracao para hooks/composables, migracao para reducer/FSM, memoizacao.
- Fase 3 (P3): limpeza/DX/educacional.
Inclua, quando aplicavel, mudancas transversais (ativar
exhaustive-deps, adotar TanStack Query, ativar React Compiler).
8.5 Checklist final de verificacao
Lista marcavel das acoes recomendadas, para o time acompanhar.
8.6 Lacunas e premissas
Liste explicitamente o que NAO pode ser verificado com o codigo disponivel (custom hooks nao vistos, versao desconhecida, comportamento runtime), e quais premissas voce adotou.
9. REGRAS DE QUALIDADE E AUTO-VERIFICACAO
Antes de entregar, confirme:
- Cada achado tem localizacao real (arquivo/componente/linha) — nada inventado.
- Cada achado distingue
confirmadadeprovavel/suspeita. - Cada achado tem correcao concreta (codigo) + teste recomendado.
- Problemas especificos de React (ordem de hooks, array de deps) NAO foram aplicados erroneamente a frameworks de reatividade fina — e vice-versa.
- Recomendacoes de memoizacao consideram se ha React Compiler / reatividade fina (evitar ruido).
- Nenhum conselho generico sem o "como".
- Riscos das proprias correcoes foram declarados (ex.: nova dep muda timing).
- Segredos mascarados; nada de logar dados sensiveis.
- Lacunas de contexto declaradas explicitamente.
- O relatorio e util para um dev iniciante (explica o porque) E para um senior (precisao tecnica).
Objetivo final, fiel a intencao original: deixar o uso de hooks/primitivas reativas correto, previsivel, testavel e reutilizavel, em qualquer framework reativo — com React como exemplo principal, mas nao exclusivo.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

