python-design-patterns
Ajuda seu agente a usar padrões de design conhecidos em Python. É útil para criar código mais organizado, flexível e fácil de manter.
O que ela faz
Esta habilidade ajuda a organizar seu código de programação em Python para que ele seja mais fácil de entender, testar e modificar. Ela ensina princípios como manter as coisas simples e dar a cada parte do código uma única função.
Quando usar
- ✓Ao começar um novo projeto ou parte dele.
- ✓Quando o código existente está muito confuso e difícil de mudar.
- ✓Ao decidir se deve criar uma nova estrutura ou repetir código.
Exemplo do que pedir para a IA
“Como posso organizar meu código Python para que seja mais fácil de manter?”
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 habilidade sugere seguir princípios como 'mantenha simples' e 'cada parte com uma única responsabilidade'. Ela também ensina a combinar objetos em vez de criar hierarquias complexas e a esperar até ter três exemplos antes de criar uma nova estrutura.
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 python-design-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/python-development/skills/python-design-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 de Design em Python
Escreva código Python de fácil manutenção usando princípios fundamentais de design. Esses padrões ajudam você a construir sistemas que são fáceis de entender, testar e modificar.
Quando Usar Esta Habilidade
- Projetando novos componentes ou serviços
- Refatorando código complexo ou emaranhado
- Decidindo se deve criar uma abstração
- Escolhendo entre herança e composição
- Avaliando a complexidade e o acoplamento do código
- Planejando arquiteturas modulares
Conceitos Principais
1. KISS (Keep It Simple - Mantenha Simples)
Escolha a solução mais simples que funcione. A complexidade deve ser justificada por requisitos concretos.
2. Responsabilidade Única (SRP - Single Responsibility Principle)
Cada unidade deve ter um único motivo para mudar. Separe as responsabilidades em componentes focados.
3. Composição Sobre Herança
Construa comportamento combinando objetos, não estendendo classes.
4. Regra dos Três
Espere até ter três instâncias antes de abstrair. A duplicação é frequentemente melhor do que a abstração prematura.
Início Rápido
# Simple beats clever
# Instead of a factory/registry pattern:
FORMATTERS = {"json": JsonFormatter, "csv": CsvFormatter}
def get_formatter(name: str) -> Formatter:
return FORMATTERS[name]()
Padrões Detalhados e Exemplos Práticos
A documentação detalhada dos padrões está em references/details.md. Leia este arquivo quando a navegação de nível superior for insuficiente.
Resumo das Melhores Práticas
- Mantenha Simples - Escolha a solução mais simples que funcione
- Responsabilidade Única - Cada unidade tem um motivo para mudar
- Separe as Responsabilidades - Camadas distintas com propósitos claros
- Componha, não herde - Combine objetos para flexibilidade
- Regra dos Três - Espere antes de abstrair
- Mantenha Funções Pequenas - 20-50 linhas (varia com a complexidade), um propósito
- Injete Dependências - Injeção de construtor para testabilidade
- Delete Antes de Abstrair - Remova código morto, depois considere padrões
- Teste Cada Camada - Testes isolados para cada responsabilidade
- Explícito Acima de Esperto - Código legível supera código elegante
Solução de Problemas
Uma classe está crescendo e parece ter múltiplas responsabilidades, mas dividi-la parece errado. Aplique o teste do "motivo para mudar": liste todas as mudanças que poderiam exigir a edição desta classe. Se a lista tiver itens de domínios diferentes (por exemplo, análise de HTTP E regras de negócio E formatação), divida-a. Se todas as mudanças derivarem da mesma preocupação de domínio, a classe pode ter o tamanho apropriado.
Injetar todas as dependências através do construtor está produzindo construtores com 7+ parâmetros. Isso é um sinal de muitas responsabilidades em uma única classe, não um problema com a injeção de dependência. Divida a classe em unidades menores primeiro, então cada construtor naturalmente se tornará menor.
A composição está produzindo objetos "wrapper" profundamente aninhados que são difíceis de rastrear. Mantenha a composição rasa (2-3 níveis). Se o "wrapping" for o único mecanismo, considere se uma abordagem baseada em Protocolo ou composição de funções simples seria mais limpa do que uma cadeia de objetos decoradores.
A regra dos três diz para não abstrair ainda, mas a duplicação está causando bugs quando uma cópia é atualizada, mas a outra não. Duplicação que diverge de maneiras perigosas deve ser abstraída mais cedo. A regra dos três é uma heurística, não uma lei. Se as cópias já estão divergindo incorretamente, extraia imediatamente e adicione um teste que exercite o comportamento compartilhado.
Uma camada de serviço está importando da camada de API, quebrando a direção da dependência. Esta é uma violação de camadas. A camada de serviço não deve importar de handlers. Introduza uma camada compartilhada de tipos/modelos que ambos possam importar, mantendo a seta de dependência apontando para baixo (API → Serviço → Repositório).
Habilidades Relacionadas
- python-testing-patterns — Teste cada camada isoladamente usando a estrutura de injeção de dependência estabelecida aqui
- python-project-structure — Organize módulos e layout de diretórios para que os limites das camadas sejam explícitos desde o início
Perguntas frequentes
O que significa 'composição sobre herança'?
Significa que é melhor construir funcionalidades juntando objetos que já existem, em vez de criar novas classes que herdam de outras classes antigas.
Quando devo criar uma nova estrutura (abstração)?
A regra geral é esperar até que você tenha três exemplos semelhantes. Antes disso, repetir um pouco de código pode ser mais simples e seguro do que criar uma estrutura prematura.
Meu código está ficando muito grande e confuso. O que fazer?
Divida o código em partes menores, onde cada parte tem apenas uma razão para ser alterada. Isso torna cada parte mais focada e fácil de gerenciar.
Detalhes
Descrição original do autor
Python design patterns including KISS, Separation of Concerns, Single Responsibility, and composition over inheritance. Use this skill when designing a new service or component from scratch and choosing how to layer responsibilities, when refactoring a God class or monolithic function that has grown too large, when deciding whether to add a new abstraction or live with duplication, when evaluating
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4927
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC