Pular para o conteúdo
Skillpedia
APIs e servidores (backend)41 mil · #4803

architecture-patterns

Ajuda seu agente a usar métodos comprovados para organizar o código do lado do servidor. Isso torna o software mais fácil de entender e manter.

O que ela faz

Esta ferramenta ajuda a organizar o código do seu programa de computador usando padrões de arquitetura comprovados. Ela cria uma estrutura clara com regras de dependência, definindo como as diferentes partes do código devem interagir e ser testadas.

Quando usar

  • ✓Ao iniciar um novo serviço de software.
  • ✓Ao reorganizar um programa grande e confuso.
  • ✓Ao depurar problemas de conexão entre partes do código.

Exemplo do que pedir para a IA

“Como posso organizar o código para um novo serviço de gerenciamento de usuários seguindo a Arquitetura Limpa?”

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/wshobson/agents/blob/main/plugins/backend-development/skills/architecture-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/backend-development/skills/architecture-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta define camadas (como 'Entidades' para dados centrais e 'Casos de Uso' para regras de negócio) e garante que as dependências fluam apenas para dentro. Isso torna o código mais fácil de entender, testar e manter.

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 wshobson/agents --skill architecture-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/backend-development/skills/architecture-patterns/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.

Padrões de Arquitetura

Domine padrões de arquitetura de backend comprovados, incluindo Arquitetura Limpa, Arquitetura Hexagonal e Design Orientado a Domínio, para construir sistemas de fácil manutenção, testáveis e escaláveis.

Dado: um limite de serviço ou módulo para arquitetar. Produz: estrutura em camadas com regras claras de dependência, definições de interface e limites de teste.

Quando Usar Esta Habilidade

  • Projetar novos serviços de backend ou microsserviços do zero
  • Refatorar aplicações monolíticas onde a lógica de negócios está entrelaçada com modelos ORM ou preocupações HTTP
  • Estabelecer contextos delimitados antes de dividir um sistema em serviços
  • Depurar ciclos de dependência onde o código de infraestrutura vaza para a camada de domínio
  • Criar bases de código testáveis onde testes de casos de uso não exigem um banco de dados em execução
  • Implementar padrões táticos de design orientado a domínio (agregados, objetos de valor, eventos de domínio)

Conceitos Principais

1. Arquitetura Limpa (Uncle Bob)

Camadas (fluxo de dependência para dentro):

  • Entidades: Modelos centrais de negócios, sem importações de framework
  • Casos de Uso: Regras de negócios da aplicação, orquestram entidades
  • Adaptadores de Interface: Controladores, apresentadores, gateways — traduzem entre casos de uso e formatos externos
  • Frameworks e Drivers: UI, banco de dados, serviços externos — todos no anel mais externo

Princípios Chave:

  • As dependências apontam apenas para dentro; as camadas internas não sabem nada sobre as camadas externas
  • A lógica de negócios é independente de frameworks, bancos de dados e mecanismos de entrega
  • Cada limite de camada é cruzado por meio de uma interface abstrata
  • Testável sem UI, banco de dados ou serviços externos

2. Arquitetura Hexagonal (Portas e Adaptadores)

Componentes:

  • Núcleo de Domínio: A lógica de negócios reside aqui, livre de frameworks
  • Portas: Interfaces abstratas que definem como o núcleo interage com o mundo exterior (direcionando e direcionado)
  • Adaptadores: Implementações concretas de portas (adaptador PostgreSQL, adaptador Stripe, adaptador REST)

Benefícios:

  • Trocar implementações sem tocar no núcleo (por exemplo, substituir PostgreSQL por DynamoDB)
  • Usar adaptadores em memória em testes — sem necessidade de Docker
  • Decisões de tecnologia adiadas para as bordas

3. Design Orientado a Domínio (DDD)

Padrões Estratégicos:

  • Contextos Delimitados: Isole um modelo coerente para um subdomínio; evite compartilhar um único modelo em todo o sistema
  • Mapeamento de Contexto: Defina como os contextos se relacionam (Camada Anticorrupção, Kernel Compartilhado, Serviço Host Aberto)
  • Linguagem Ubíqua: Cada termo no código corresponde ao termo usado pelos especialistas de domínio

Padrões Táticos:

  • Entidades: Objetos com identidade estável que mudam ao longo do tempo
  • Objetos de Valor: Objetos imutáveis identificados por seus atributos (Email, Dinheiro, Endereço)
  • Agregados: Limites de consistência; apenas a raiz é acessível de fora
  • Repositórios: Persistem e reconstituem agregados; abstraem o mecanismo de armazenamento
  • Eventos de Domínio: Capturam coisas que aconteceram dentro do domínio; usados para coordenação entre agregados

Padrões detalhados e exemplos práticos

A documentação detalhada dos padrões está em references/details.md. Leia esse arquivo quando o nível de navegação acima for insuficiente.

Testes — Adaptadores em Memória

A marca registrada da Arquitetura Limpa aplicada corretamente é que cada caso de uso pode ser exercitado em um teste unitário simples, sem banco de dados real, sem Docker e sem rede:

# tests/unit/test_create_user.py
import asyncio
from typing import Dict, Optional
from domain.entities.user import User
from domain.interfaces.user_repository import IUserRepository
from use_cases.create_user import CreateUserUseCase, CreateUserRequest


class InMemoryUserRepository(IUserRepository):
    def __init__(self):
        self._store: Dict[str, User] = {}

    async def find_by_id(self, user_id: str) -> Optional[User]:
        return self._store.get(user_id)

    async def find_by_email(self, email: str) -> Optional[User]:
        return next((u for u in self._store.values() if u.email == email), None)

    async def save(self, user: User) -> User:
        self._store[user.id] = user
        return user

    async def delete(self, user_id: str) -> bool:
        return self._store.pop(user_id, None) is not None


async def test_create_user_succeeds():
    repo = InMemoryUserRepository()
    use_case = CreateUserUseCase(user_repository=repo)

    response = await use_case.execute(CreateUserRequest(email="alice@example.com", name="Alice"))

    assert response.success

…
Perguntas frequentes

O que são 'Entidades'?

São os modelos de negócio centrais do seu programa, sem nenhuma dependência de tecnologias externas como bancos de dados ou frameworks.

O que é 'Arquitetura Hexagonal'?

É um padrão que separa o núcleo do negócio do resto do sistema, usando 'portas' (interfaces) e 'adaptadores' (implementações concretas) para a comunicação externa.

Por que é importante testar sem banco de dados?

Permite testar a lógica principal do seu programa rapidamente, sem precisar configurar um banco de dados ou outros serviços externos, tornando os testes mais rápidos e confiáveis.

Detalhes

Descrição original do autor

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use this skill when designing clean architecture for a new microservice, when refactoring a monolith to use bounded contexts, when implementing hexagonal or onion architecture patterns, or when debugging dependency cycles between application layers.

repo: wshobson/agents

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas