Communitygithub.com

tomozard/agent-skills

Guia, avalie e arquitete aplicações fullstack abrangendo design moderno de componentes Frontend, gerenciamento de estado e arquitetura Backend robusta. Use ao projetar funcionalidades de ponta a ponta, refatorar hierarquias de componentes, desacoplar camadas de API/acesso a dados, revisar PRs quanto a dívida arquitetural ou resolver atritos de integração frontend-backend.

O que é agent-skills?

Esta skill capacita agentes de IA (como o Claude Code) a atuarem como arquitetos e guias de design para sistemas fullstack. Ela define um conjunto rigoroso de princípios e um matriz de decisão que mapeia sintomas comuns de código (como prop drilling, god-components, acoplamento de API) para padrões de design específicos — incluindo Container/Presentational, Componentes Compostos, Padrão Repositório, Adapter, Optimistic UI, Strategy, Factory e Circuit Breaker. A skill enfatiza uma abordagem “problema primeiro”, instruindo o agente a nunca introduzir um padrão sem um atrito arquitetural identificável. Ela cobre as camadas de Frontend, Integração e Backend, fornecendo regras de implementação claras para cada padrão. O workflow de saída do agente consiste em identificar a junta e o gargalo, selecionar o padrão correspondente, fornecer exemplos de antes/depois e destacar os ganhos em testabilidade e manutenibilidade. É especialmente útil para revisar PRs, projetar novos recursos de ponta a ponta e refatorar hierarquias de componentes ou camadas de dados.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tomozard/agent-skills/tree/HEAD/skills/fullstack-design-patterns

Perguntar na sua IA favorita

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

Documentação

Guia de Padrões de Design Fullstack

Use esta skill para aconselhar, arquitetar e refatorar sistemas fullstack de ponta a ponta. Aplique padrões estritamente para resolver atritos arquiteturais identificáveis, não para abstração especulativa.

Princípios Centrais

  1. Seleção Baseada em Problema: Nunca introduza um padrão de design sem um atrito arquitetural explícito ou code smell (ex.: prop drilling, god-components inchados, acoplamento de API, lógica não testável, falhas de rede em cascata).
  2. Juntas Arquiteturais Claras: Mantenha limites nítidos entre:
    • View / Apresentação: Componentes burros e declarativos movidos por props.
    • Estado do Cliente e Interação: Hooks headless, stores centralizadas e cache de estado do servidor.
    • Camada de API / Contrato: Schemas tipados, adaptadores DTO e camadas de anticorrupção.
    • Domínio e Acesso a Dados: Regras de negócio desacopladas e acesso a banco de dados baseado em repositório.
  3. Evite Superengenharia: Não aplique abstrações empresariais complexas (como micro-frontends, CQRS ou pub/sub distribuído) a páginas CRUD simples ou aplicativos web padrão.

Matriz de Decisão de Padrões e Heurísticas de Gatilho

CamadaSintoma / Atrito no CódigoPadrão RecomendadoJunta Arquitetural
Frontend UIGod-component misturando busca de API, formatação e layout JSXContainer / PresentationalSeparar renderização de UI da busca de dados
Frontend UIEstilos fortemente acoplados dentro de componentes interativos (modais, dropdowns)Componente Headless / Custom HooksIsolar estado e lógica de interação/teclado
Frontend UIAPIs de componentes rígidas exigindo subelementos flexíveisComponentes CompostosCompartilhamento declarativo de estado pai-filho (ex.: Tabs, Select)
Frontend UIProp drilling profundo ou estados de UI de múltiplos componentes dessincronizadosObserver / Store (Zustand/Redux/Context)Centralizar estado compartilhado do cliente
Fullstack APIMudanças no schema da API backend quebram componentes da UI frontendPadrão Adapter (Mapeador de Dados)Camada de Anticorrupção traduzindo DTO para View Model
Fullstack APIUI aguarda redes lentas antes de confirmar ação do usuárioOptimistic UI com RollbackResposta imediata da UI apoiada por rollback transacional
BackendChamadas SQL/ORM espalhadas dentro de route handlers ou serviçosPadrão RepositórioDesacoplar consultas de persistência das regras de negócio
BackendInstanciar diferentes SDKs de terceiros usando if-else inlinePadrão FactoryCentralizar criação de objetos e clientes
BackendCascateamento de if-else / switch para calcular preço, autenticação ou algoritmosPadrão StrategyEncapsular algoritmos intercambiáveis por trás de uma interface
Backend / DistribuídoAção de negócio central aciona 5+ efeitos colaterais não relacionadosObserver / Event-Driven (Pub/Sub)Desacoplar efeitos colaterais via eventos de domínio ou filas
Backend / DistribuídoLatência de API externa causando starvation de threads e downtime em cascataCircuit BreakerFalha rápida, resposta de fallback e sondagem de saúde downstream

Aprofundamento: Padrões Fullstack e Regras de Implementação

1. Frontend: Padrão Container / Presentational

  • Contexto: Componentes crescendo além de 200 linhas ao combinar useEffect, queries, transformações de dados e layout JSX.
  • Regras:
    • Componente Presentacional: Recebe dados e callbacks apenas via props; puro, facilmente testável no Storybook sem mocks de API.
    • Container (ou Page Hook): Busca dados do servidor, gerencia estados de loading/erro e passa dados transformados para baixo.

2. Frontend: Padrão Componente Headless & Custom Hook

  • Contexto: Comportamentos interativos complexos (autocomplete, wizards multi-etapas, accordion) que exigem reuso em diferentes designs visuais.
  • Regras:
    • Extrair estado, manipuladores de teclado e atributos ARIA para um custom hook headless (ex.: useAutocomplete, useDisclosure).
    • Manter a estilização e o markup DOM completamente nas mãos do consumidor.

3. Frontend: Componentes Compostos

  • Contexto: Componentes com subpartes profundamente relacionadas que precisam de estado interno coeso sem passar dezenas de props de configuração.
  • Regras:
    • Usar Context do React para comunicação implícita entre pai e filho (<Accordion><Accordion.Item /><Accordion.Panel /></Accordion>).

4. Integração: Padrão Adapter (Camada de Anticorrupção)

  • Contexto: Payloads de API REST/GraphQL de terceiros vazando diretamente para props de componentes UI ou modelos de domínio centrais.
  • Regras:
    • Nunca permitir que chaves de DTO do backend ditem os formatos de props dos componentes frontend.
    • Criar funções mapeadoras explícitas (ex.: toUserViewModel(dto: UserApiDto): UserVM) para proteger os componentes UI de mudanças de schema.

5. Integração: Optimistic UI com Rollback

  • Contexto: Interações frequentes do usuário (curtidas, alternâncias, conclusão de tarefas, reordenação) onde a latência da rede prejudica a responsividade.
  • Regras:
    • Atualizar o estado local imediatamente após a interação.
    • Enfileirar a mutação no servidor; se for rejeitada, reverter para o snapshot anterior e notificar o usuário de forma não intrusiva.

6. Backend: Padrão Repositório

  • Contexto: Lógica de negócio entrelaçada com consultas ORM (Prisma, TypeORM, Drizzle, SQL).
  • Regras:
    • Serviços interagem unicamente com uma interface (ex.: OrderRepository).
    • Manter lógica de domínio fora dos repositórios; manter construção de consultas fora dos serviços.

7. Backend: Padrões Strategy & Factory

  • Contexto: Provedores substituíveis (gateways de pagamento, canais de notificação, armazenamento de arquivos).
  • Regras:
    • Padronizar o comportamento através de uma interface comum (PaymentGateway).
    • Usar uma Factory/Registry para resolver implementações concretas com base em configuração ou tenant.

8. Backend: Padrão Circuit Breaker

  • Contexto: Microsserviços externos ou APIs de terceiros sofrendo intermitência ou latência severa.
  • Regras:
    • Rastrear limites de falha. Transições: Closed (normal) -> Open (falha rápida, retornar cache/fallback) -> Half-Open (sonda canário).

Workflow de Saída do Agente

Ao ser solicitado a aconselhar sobre arquitetura ou refatorar código fullstack:

  1. Identifique a Junta e o Gargalo: Identifique se o atrito está na renderização da UI, sincronização de estado, incompatibilidade de contrato de API ou acoplamento do backend.
  2. Selecione o Padrão Correspondente: Proponha o padrão com uma justificativa clara abordando o code smell específico.
  3. Forneça Exemplos Antes / Depois: Forneça snippets de código concisos e idiomáticos demonstrando responsabilidades desacopladas.
  4. Destaque Testabilidade e Manutenibilidade: Explique como a refatoração simplifica testes unitários/de componentes e protege contra mudanças futuras.

Habilidades Relacionadas