codebase-design
Faz seu agente usar um vocabulário comum para projetar módulos. É útil para melhorar interfaces, tornar o código mais testável ou facilitar a navegação por IA.
O que ela faz
Esta ferramenta ajuda a criar partes de código (chamadas 'módulos') que são fáceis de usar e entender. Ela foca em fazer com que a parte principal do código fique escondida, enquanto a forma de usá-la é simples e clara.
Quando usar
- ✓Ao criar uma nova parte do código.
- ✓Ao tentar melhorar uma parte de código existente.
- ✓Ao decidir onde separar diferentes partes do código.
Exemplo do que pedir para a IA
“Como posso fazer esta parte do código mais fácil de usar e testar?”
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
Ela ensina a usar termos específicos como 'módulo', 'interface' e 'seam' para pensar sobre como o código é organizado. O objetivo é ter uma 'interface' pequena que esconde uma 'implementação' complexa.
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 sickn33/agentic-awesome-skills --skill codebase-designOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/codebase-design/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.
Design de Código
Quando Usar
Use quando este fluxo de trabalho corresponder à solicitação do usuário: Vocabulário compartilhado para projetar módulos profundos. Use quando o usuário quiser projetar ou melhorar a interface de um módulo, encontrar oportunidades de aprofundamento, decidir onde uma emenda vai, tornar o código mais testável ou navegável por IA, ou quando outra habilidade precisar do vocabulário de módulo profundo.
Fonte: mattpocock/skills (MIT).
Projete módulos profundos: muita funcionalidade por trás de uma interface pequena, posicionados em uma emenda limpa, testáveis através dessa interface. Use esta linguagem e estes princípios onde quer que o código esteja sendo projetado ou reestruturado. O objetivo é alavancagem para os chamadores, localidade para os mantenedores e testabilidade para todos.
Glossário
Use estes termos exatamente — não substitua "componente", "serviço", "API" ou "limite". A linguagem consistente é o ponto principal.
Módulo — qualquer coisa com uma interface e uma implementação. Deliberadamente agnóstico à escala: uma função, classe, pacote ou fatia que abrange camadas. Evite: unidade, componente, serviço.
Interface — tudo o que um chamador precisa saber para usar o módulo corretamente: a assinatura do tipo, mas também invariantes, restrições de ordenação, modos de erro, configuração necessária e características de desempenho. Evite: API, assinatura (muito restrito — referem-se apenas à superfície em nível de tipo).
Implementação — o que está dentro de um módulo, seu corpo de código. Distinto de Adaptador: uma coisa pode ser um pequeno adaptador com uma grande implementação (um repositório Postgres) ou um grande adaptador com uma pequena implementação (um fake em memória). Use "adaptador" quando a emenda for o tópico; "implementação" caso contrário.
Profundidade — alavancagem na interface: a quantidade de funcionalidade que um chamador (ou teste) pode exercer por unidade de interface que ele precisa aprender. Um módulo é profundo quando uma grande quantidade de funcionalidade está por trás de uma interface pequena, raso quando a interface é quase tão complexa quanto a implementação.
Emenda (Michael Feathers) — um local onde você pode alterar o comportamento sem editar naquele local; a localização onde a interface de um módulo vive. Onde colocar a emenda é uma decisão de design própria, distinta do que vai por trás dela. Evite: limite (sobrecarregado com o contexto delimitado do DDD).
Adaptador — uma coisa concreta que satisfaz uma interface em uma emenda. Descreve o papel (qual slot preenche), não a substância (o que está dentro).
Alavancagem — o que os chamadores obtêm da profundidade: mais capacidade por unidade de interface que aprendem. Uma implementação retorna em N locais de chamada e M testes.
Localidade — o que os mantenedores obtêm da profundidade: mudança, bugs, conhecimento e verificação se concentram em um local em vez de se espalharem pelos chamadores. Corrija uma vez, corrigido em todos os lugares.
Profundo vs. Raso
Módulo profundo = interface pequena + muita implementação:
┌─────────────────────┐
│ Small Interface │ ← Few methods, simple params
├─────────────────────┤
│ │
│ Deep Implementation│ ← Complex logic hidden
│ │
└─────────────────────┘
Módulo raso = interface grande + pouca implementação (evite):
┌─────────────────────────────────┐
│ Large Interface │ ← Many methods, complex params
├─────────────────────────────────┤
│ Thin Implementation │ ← Just passes through
└─────────────────────────────────┘
Ao projetar uma interface, pergunte:
- Posso reduzir o número de métodos?
- Posso simplificar os parâmetros?
- Posso esconder mais complexidade internamente?
Princípios
- A profundidade é uma propriedade da interface, não da implementação. Um módulo profundo pode ser internamente composto de partes pequenas, simuláveis e substituíveis — elas apenas não fazem parte da interface. Um módulo pode ter emendas internas (privadas à sua implementação, usadas por seus próprios testes) bem como a emenda externa em sua interface.
- O teste de exclusão. Imagine excluir o módulo. Se a complexidade desaparecer, foi um passe direto. Se a complexidade reaparecer em N chamadores, ele estava valendo a pena.
- A interface é a superfície de teste. Chamadores e testes cruzam a mesma emenda. Se você quiser testar além da interface, o módulo provavelmente está com o formato errado.
- Um adaptador significa uma emenda hipotética. Dois adaptadores significam uma emenda real. Não introduza uma emenda a menos que algo realmente varie através dela.
Projetando para Testabilidade
Boas interfaces tornam os testes naturais:
Aceite dependências, não as crie.
// Testável
…
Perguntas frequentes
O que é um 'módulo'?
É qualquer pedaço de código que tem uma forma de ser usado (interface) e um funcionamento interno (implementação). Pode ser uma função, uma classe ou algo maior.
O que significa 'profundidade' (depth)?
Significa que uma pequena 'interface' (a forma de usar) esconde muita lógica e comportamento dentro do 'módulo'. Isso dá mais poder (leverage) para quem usa o código e concentra as mudanças em um só lugar (localidade).
Por que usar termos específicos como 'seam' em vez de 'boundary'?
Para evitar confusão. 'Seam' se refere especificamente ao local onde o código pode ser alterado ou onde a 'interface' do módulo vive, enquanto 'boundary' pode ter outros significados em áreas como DDD (Domain-Driven Design).
Detalhes
Descrição original do autor
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2588
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
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