react-patterns
Faz seu agente usar os melhores padrões para criar componentes React. Ele foca em organização, dados, formulários e acessibilidade.
O que ela faz
Esta ferramenta ajuda a escrever código para React, uma biblioteca popular para criar interfaces de usuário. Ela oferece as melhores práticas e padrões para tornar seu código mais organizado, rápido e acessível.
Quando usar
- ✓Ao criar novos componentes em React.
- ✓Ao revisar ou melhorar código React existente.
- ✓Ao decidir como gerenciar dados e estados no seu aplicativo.
Exemplo do que pedir para a IA
“Como posso gerenciar o estado de um formulário em React de forma eficiente?”
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 seu código React e sugere padrões recomendados para organizar componentes, gerenciar dados e lidar com efeitos colaterais. Ela se baseia em princípios como manter o código limpo e focar na composição.
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 react-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/react-patterns/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.
Padrões do React
Padrões idiomáticos do React 18/19 para construir árvores de componentes robustas, acessíveis e de alto desempenho.
Quando Ativar
- Escrevendo ou modificando componentes de função React, hooks personalizados ou árvores de componentes
- Revisando arquivos JSX/TSX
- Projetando a forma do estado ou a composição de componentes
- Migrando componentes de classe ou código mais antigo com uso intensivo de
forwardRef/useEffect - Escolhendo entre estado local, estado elevado, contexto e stores externos
- Trabalhando com Componentes de Servidor / Componentes de Cliente (Next.js App Router, RSC)
- Implementando formulários com ações do React 19 ou inputs controlados
- Conectando a busca de dados com TanStack Query / SWR / RSC
Princípios Fundamentais
1. Renderizar é uma Função Pura de Props e Estado
// Good: derive during render
function Cart({ items }: { items: CartItem[] }) {
const total = items.reduce((sum, i) => sum + i.price * i.qty, 0);
return <span>{formatMoney(total)}</span>;
}
// Bad: derived state stored separately
function Cart({ items }: { items: CartItem[] }) {
const [total, setTotal] = useState(0);
useEffect(() => {
setTotal(items.reduce((sum, i) => sum + i.price * i.qty, 0));
}, [items]);
return <span>{formatMoney(total)}</span>;
}
O estado derivado em useEffect adiciona um ciclo de renderização, pode dessincronizar e obscurece o fluxo de dados.
2. Efeitos Colaterais Fora do Render
Efeitos, mutações, chamadas de rede e assinaturas vivem em manipuladores de eventos ou useEffect — nunca no corpo do render.
3. Composição Acima de Herança
O React não tem um modelo de herança para componentes. Componha com children, render props ou props de componentes.
Disciplina de Hooks
Veja rules/react/hooks.md para o conjunto completo de regras. Destaques:
- Apenas no nível superior, nunca condicional
- Limpe toda assinatura, intervalo, listener
- Atualizador funcional (
setX(prev => prev + 1)) quando o novo estado depende do antigo - Posição padrão: não memoize — adicione
useMemo/useCallbackapenas quando um profiler ou uma cadeia de dependências provar que importa - Extraia um hook personalizado apenas quando a mesma sequência de hooks aparece em 2+ componentes
Árvore de Decisão de Localização de Estado
Used by one component?
-> useState inside it
Used by parent + a few descendants?
-> lift to nearest common ancestor
Used across distant branches AND low-frequency reads (theme, auth, locale)?
-> React Context
High-frequency updates shared across the tree?
-> external store (Zustand, Jotai, Redux Toolkit)
Derived from a server?
-> server-state library (TanStack Query, SWR, RSC fetch)
A maioria das páginas não precisa de contexto ou de um store global. Resista à abstração até que o levantamento duplicado se torne doloroso.
Componentes de Servidor / Cliente (RSC)
// Server Component - default, async, never ships JS for itself
export default async function ProductPage({ params }: { params: { id: string } }) {
const product = await db.product.findUnique({ where: { id: params.id } });
if (!product) notFound();
return <ProductView product={product} />;
}
// Client Component - opt in with "use client"
"use client";
export function AddToCartButton({ productId }: { productId: string }) {
const [pending, startTransition] = useTransition();
return (
<button
disabled={pending}
onClick={() => startTransition(() => addToCart(productId))}
>
{pending ? "Adding..." : "Add to cart"}
</button>
);
}
Limites:
- Servidor -> Cliente: passe props serializáveis ou
children - Cliente -> Servidor: invoque Server Actions via
<form action={...}>ou imperativamente a partir de manipuladores de eventos - Nunca
importum Componente de Servidor de um arquivo de Componente de Cliente — componha-os viachildrenem vez disso
Suspense + Error Boundaries
<ErrorBoundary fallback={<ErrorView />}>
<Suspense fallback={<UserSkeleton />}>
<UserDetail id={id} />
</Suspense>
</ErrorBoundary>
- Coloque limites do Suspense perto dos dados, não na raiz da rota — revele o conteúdo progressivamente
- Error Boundary continua sendo uma API de classe; use
react-error-boundarypara um wrapper amigável a hooks - Um limite captura erros lançados durante a renderização, ciclo de vida e construtores de seus filhos — NÃO em manipuladores de eventos ou código assíncrono
Formulários
Ações de formulário do React 19 (preferencial para código novo)
"use client";
import { useActionState } from "react";
const initial = { error: null as string | null };
async function updateUserAction(_prev: typeof initial, formData: FormData) {
"use server";
const parsed = UserSchema.safeParse(Object.fromEntries(formData));
…
Perguntas frequentes
O que são 'Server Components' e 'Client Components'?
São duas formas de organizar o código React. Componentes do lado do servidor rodam apenas no servidor, enquanto componentes do lado do cliente rodam no navegador do usuário. Isso ajuda a otimizar o desempenho.
Como lidar com erros em React?
A ferramenta sugere o uso de 'Error Boundaries' para capturar erros que acontecem durante a renderização de componentes, permitindo mostrar uma mensagem de erro amigável em vez de quebrar a aplicação.
Quando devo usar `useState`, `Context` ou uma biblioteca externa para gerenciar estado?
A ferramenta oferece um guia para decidir: `useState` para um único componente, `Context` para dados compartilhados em partes distantes da árvore de componentes, e bibliotecas externas para atualizações frequentes e compartilhadas.
Detalhes
Descrição original do autor
React 18/19 patterns including hooks discipline, server/client component boundaries, Suspense + error boundaries, form actions, data fetching, state management decision trees, and accessibility-first composition. Use when writing or reviewing React components.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #112
- 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
web-artifacts-builder
Ajuda seu agente a construir artefatos HTML complexos com tecnologias modernas. Ideal para interfaces com gerenciamento de estado e componentes avançados.
anthropics/skills
frontend-ui-engineering
Ajuda seu agente a criar interfaces de usuário bonitas e fáceis de usar. Faz com que o resultado pareça profissional e funcione bem em diferentes dispositivos.
addyosmani/agent-skills
export-nextjs-handoff
Faz seu agente transformar designs em código Next.js. Ele cria componentes, estilos e notas para facilitar o trabalho do desenvolvedor.
nexu-io/open-design