Skill de Arquiteto de Software Senior para o Claude Code, construida a partir de 56 transcricoes de video do canal Renato Augusto Tech. Transforma o Claude em um consultor de arquitetura que projeta sistemas distribuidos, aplica design patterns, SOLID, Object Calisthenics e conduz sessoes de system design com foco pratico e fundamentado.
Copie o arquivo renato-arquiteto.md para ~/.claude/commands/:
cp renato-arquiteto.md ~/.claude/commands/Depois invoque com:
/renato-arquiteto
Copie a pasta Renato/ para dentro do seu projeto e referencie no CLAUDE.md:
Skill disponivel em: ./Renato/SKILL.mdConduz sessoes de system design seguindo uma metodologia de 7 etapas:
| Etapa | O que faz |
|---|---|
| 1. Requisitos | Elicita requisitos funcionais (o que o sistema faz) e nao funcionais (como deve se comportar) |
| 2. Estimativas | Calcula armazenamento total, trafego diario, operacoes de leitura/escrita por segundo |
| 3. Entidades | Identifica entidades do dominio, relacionamentos e separa dados brutos de metadados |
| 4. Banco de Dados | Escolhe o banco aplicando Teorema CAP e PACELC — nunca superdimensiona |
| 5. Endpoints | Define API com autenticacao JWT, boas praticas de seguranca |
| 6. Arquitetura | Projeta incrementalmente, componente por componente, explicando cada decisao |
| 7. Escalabilidade | Resolve alta disponibilidade, redundancia, cache e processamento assincrono |
Arquiteturas de referencia incluidas:
- TicketMaster (filas virtuais, Elasticsearch, Debezium CDC)
- YouTube (multipart upload, transcoding, CDN, adaptive bitrate)
- Google Drive (URLs pre-assinadas, sincronizacao local/remoto, iNotify/FSEvent)
- Copa do Mundo em tempo real (Event Sourcing, Kafka, SSE, Redis Pub/Sub)
- URL Shortener (base-62, HashID, Cassandra, 301 vs 302)
- Escalabilidade de 0 a 1 milhao de usuarios
Orienta a escolha correta entre 4 tecnologias com regras claras:
| Tecnologia | Direcao | Overhead | Caso de Uso |
|---|---|---|---|
| Polling | Simulado bidirecional | Alto | Dashboard interno, poucos usuarios |
| Long Polling | Simulado bidirecional | Medio | Alternativa pre-SSE |
| SSE | Servidor → Cliente | Baixo | Notificacoes, geolocalizacao, streaming de dados |
| WebSocket | Bidirecional | Zero | Chat, jogos, Discord, WhatsApp |
SSE — 8 pontos de atencao criticos:
- Content-Type
text/event-streamobrigatorio - Formato
data: <valor>\n\ncom duas quebras de linha - Eventos nomeados com
event: <nome>\n - NUNCA chamar
res.end()(transforma em polling) - Gerenciar conexoes com
req.on('close') - Singleton para conexoes Redis/BD
- JWT via query string (EventSource nao suporta headers)
- Reconexao automatica nativa do browser
Cobre Layer 4 vs Layer 7 do modelo OSI com 6 algoritmos:
| Algoritmo | Logica | Quando Usar |
|---|---|---|
| Round Robin | Circular entre servidores | Servidores homogeneos |
| Weighted Round Robin | Baseado no peso de cada servidor | Capacidades diferentes |
| Least Connections | Menos conexoes ativas | Tempos de resposta variados |
| Least Response Time | Servidor mais rapido | Monitorar saude |
| Sticky Round Robin | Fixa usuario a um servidor | Aplicacoes stateful |
| IP Hash | Hash do IP do cliente | Persistencia de sessao |
Ferramentas mapeadas: Nginx, HAProxy, Traefik, AWS ALB/NLB, Google Cloud LB, Azure LB/App Gateway, F5 Big-IP, Citrix NetScaler
Conceitos fundamentais com aplicacao pratica:
- Topico vs Fila — Kafka persiste eventos, nao remove apos consumo
- Particoes — subdivisoes para paralelismo, cada uma pertence a UM consumidor
- Consumer Groups — isolamento de consumidores para evitar duplicatas
- Offset Commit — garantia de processamento ordenado
- Chave de Particao — Murmur Hash + modulo para distribuicao deterministica
- Rebalanceamento — redistribuicao automatica quando consumidor cai
- Event Replay — reprocessar desde o inicio para corrigir bugs historicos
- Projecoes — views materializadas em Redis a partir de eventos
Arquitetura tipica:
Data Provider → API Ingestao → Kafka → Consumer Group 1 (PostgreSQL)
→ Consumer Group 2 (Redis Cache + Pub/Sub) → SSE → Frontend
Cada pattern com problema que resolve, exemplo pratico e tradeoffs:
| Pattern | Resolve | Exemplo |
|---|---|---|
| Strategy | if/else de tipos | Calculos de imposto: ICMS, ISS, IPI |
| Observer | Notificar multiplos interessados | Monitor de preco Bitcoin |
| Decorator | Comportamento composivel em cadeia | Pipeline de imagem: Basic → Watermark → Resize |
| Proxy | Controle de acesso (cache, log, lazy load) | ReportGeneratorProxy com cache 1h |
| Facade | Interface simplificada para subsistemas | OrderFacade: pagamento + notificacao + estoque |
| Adapter | Desacoplamento de bibliotecas | PdfAdapterInterface: DomPDF, TcPDF |
| State | Ciclo de vida com transicoes validas | Pedido: Realizado → Preparando → Entregue |
| Template Method | Duplicacao em algoritmos com passos variaveis | DataMiner com openFile/extractData abstratos |
| Simple Factory | Centralizar criacao de objetos | NotificationFactory: Email, SMS, Slack |
| Singleton | Instancia unica (conexoes, logger) | Redis compartilhado — prefira DI Container |
Regras: nao aplique preventivamente, todo pattern tem desvantagem, aprenda errando primeiro.
Cada principio com violacao concreta, solucao e conexao com patterns:
| Principio | Violacao Tipica | Solucao |
|---|---|---|
| SRP | OrderProcessor faz estoque + calculo + pagamento | Extrair para 3 classes + Facade |
| OCP | Adicionar desconto exige modificar Order | Interface DiscountInterface + Strategy |
| LSP | S3ReportGenerator retorna URL ao inves de arquivo | Redesenhar hierarquia "is-a" |
| ISP | CreditCard forçado a implementar generateQRCode() | Segregar em interfaces menores |
| DIP | OrderProcessor instancia StripeClient diretamente | Injetar PaymentGatewayInterface (Hexagonal) |
| Regra | Descricao | Tecnica |
|---|---|---|
| 1 | Um nivel de indentacao por metodo | Guard clauses: inverta, trate, retorne |
| 2 | Nao use else | Guard clauses: happy path no topo |
| 3 | Encapsule primitivos | Value Objects: Email, CPF, Age |
| 5 | Um ponto por linha (Lei de Demeter) | order.getCustomerZipCode() |
| 7 | Max 50 linhas por classe | Extrair responsabilidades |
| 8 | Max 2 parametros no construtor | Agrupar com Value Objects |
| 9 | Sem getters/setters | Metodos com comportamento: applyDiscount() |
Mapeamento por Teorema CAP + PACELC:
| Banco | CAP | PACELC | Ideal Para |
|---|---|---|---|
| PostgreSQL | CA | EC | Dados transacionais, JSONB, ate ~10K writes/s |
| Cassandra | AP | EL | Escrita massiva, alta disponibilidade |
| MongoDB | CP | EC | Documentos flexiveis |
| DynamoDB | AP | EL | Serverless, baixa latencia |
| CockroachDB | CP | — | NewSQL com transacoes distribuidas |
| Redis | — | — | Cache, pub/sub, filas, canivete suico |
Sequencia de evolucao de 0 a milhoes de usuarios:
1. Servidor unico
2. Separar banco de dados
3. Escala vertical (mais RAM, CPU, disco)
4. Escala horizontal (load balancer + replicas)
5. Replicacao de BD (master-slave)
6. Cache com Redis (Cache Aside + TTL)
7. Auto-scaling baseado em metricas
8. Multi-datacenter (redundancia geografica)
9. Filas de mensageria (processamento assincrono)
10. Monitoramento e CI/CD
Sharding incluido: range-based vs hash-based, consistent hashing, problema da celebridade, Saga Pattern.
Armazenamento de senhas:
Texto puro/MD5/SHA— NUNCA- bcrypt com cost factor adaptativo
- Argon2ID — memory-hard (mais moderno)
- Salt por usuario + Pepper por aplicacao
Upload seguro:
- URLs pre-assinadas com expiracao
- Multipart upload (chunks de 5-10MB)
- Uploads retomáveis via
listParts - NUNCA expor URL final do storage
4 Sintomas de Codigo Apodrecendo (Robert Martin):
- Rigidez, Fragilidade, Imobilidade, Viscosidade
Principios: YAGNI, KISS, SINE
Estimativas: Lei de Hofstadter, Lei de Parkinson, Bike-shedding
- Monolito Modular primeiro (Martin Fowler: "Monolith First")
- Microsservicos so quando: dominios estabilizados, escala independente necessaria, times grandes
- NAO use microsservicos sem: pipelines, observabilidade, mensageria, DDD
Recomendacoes especificas para o ambiente do usuario:
- Servicos:
docker stack deploycom replicas, rolling updates, health checks - PostgreSQL: PgBouncer para connection pooling, Patroni para HA, pg_dump para backup
- Redis: servico central para cache e pub/sub, Redis Sentinel para HA
- Portainer: monitoramento de stacks, alertas de saude, escala on-demand
- Traefik: load balancer nativo Docker Swarm, HTTPS automatico, rate limiting
8 livros fundamentais para a carreira de arquiteto:
- Designing Data-Intensive Applications (Kleppmann) — leitura obrigatoria
- The Pragmatic Programmer — mentalidade profissional
- Fundamentals of Software Architecture (Richards & Ford)
- Learning Domain-Driven Design (Khononov)
- Building Microservices (Newman)
- System Design Interview Vol. 1 & 2 (Alex Xu)
- 14 Habits of Highly Productive Developers
- How to Win Friends and Influence People (Carnegie)
O agente se adapta automaticamente ao tipo de pedido:
| Pedido | Comportamento |
|---|---|
| "Projete um sistema de..." | Inicia sessao de system design com as 7 etapas |
| "Revise esse codigo" | Identifica violacoes SOLID/Calisthenics, mostra antes/depois |
| "Qual tecnologia usar para..." | Faz perguntas de contexto, compara com tradeoffs |
| "Como escalar..." | Avalia o estagio atual e recomenda o proximo passo |
| "Como funciona X por baixo dos panos?" | Explica fundamentos com exemplos praticos |
- Portugues brasileiro, direto ao ponto
- Sempre explica o "por baixo dos panos"
- Alerta sobre erros comuns que programadores cometem
- Usa "beleza?" e "vamos la" naturalmente
- Corrige com firmeza mas com didatica
- Nunca recomenda sem explicar o porque e o quando
Renato/
SKILL.md # Skill principal (~420 linhas de conhecimento destilado)
README.md # Esta documentacao
renato-arquiteto.md # Comando global para ~/.claude/commands/
Construida a partir de 56 transcricoes de videos do canal Renato Augusto Tech no YouTube, cobrindo:
- System Design (TicketMaster, YouTube, Google Drive, URL Shortener, Copa do Mundo)
- Arquitetura distribuida (Kafka, Event Sourcing, Event-Driven Architecture)
- Design Patterns (Strategy, Observer, Decorator, Proxy, Facade, Adapter, State, Template Method, Factory, Singleton)
- SOLID (SRP, OCP, LSP, ISP, DIP)
- Object Calisthenics (regras 1, 2, 3, 5, 7, 8, 9)
- Infraestrutura (Load Balancing L4/L7, Sharding, Cache, SSE, WebSocket)
- Seguranca (bcrypt, Argon2ID, multipart upload)
- Qualidade de codigo (YAGNI, KISS, rotting code symptoms)
- Carreira (roadmap arquiteto, soft skills, estimativas, impostor syndrome)
- Fundamentos (redes, SO, floating point, historia da engenharia de software)
Renato Augusto Tech — Canal brasileiro de engenharia de software com conteudo aprofundado sobre arquitetura de sistemas, system design, design patterns, SOLID e carreira de programador. Todos os ensinamentos desta skill foram extraidos dos videos desse canal.
Uso pessoal e educacional. Conteudo baseado em material publico do YouTube.
