Pular para o conteúdo
Skillpedia
Código em geral48 mil · #2588

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/codebase-design/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/codebase-design/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-design

Ou 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.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.

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:

  1. 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.

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas