codebase-design
Vocabulário compartilhado para projetar módulos profundos (deep modules).
Skill by leandrocfe
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/leandrocfe-codebase-design
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/codebase-design
What's inside
- Skill name
codebase-design- Description
- Vocabulário compartilhado para projetar módulos profundos (deep modules). Use quando o usuário quiser projetar ou melhorar a interface de um módulo, encontrar oportunidades de deepening, decidir onde colocar um seam, tornar o código mais testável ou navegável por IA, ou quando outra skill precisar do vocabulário de deep-module.
- License
- MIT
- Instructions
- 111 lines in SKILL.md · view on GitHub
Files (4)
- DEEPENING.md
- DESIGN-IT-TWICE.md
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# Codebase Design
Projete **módulos profundos (deep modules)**: muito comportamento atrás de uma interface pequena, posicionado em um seam limpo, testável através dessa interface. Use esta linguagem e estes princípios sempre que código estiver sendo projetado ou reestruturado. O objetivo é *leverage* para quem chama, *locality* para mantenedores e testabilidade para todos.
## Glossário
Use estes termos exatamente — não substitua por "component", "service", "API" ou "boundary". Linguagem consistente é o objetivo principal.
**Module** — qualquer coisa que tenha uma interface e uma implementação. Deliberadamente agnóstico em escala: uma função, classe, pacote ou um slice que atravessa camadas. _Evite_: unit, component, service.
**Interface** — tudo que um caller precisa saber para usar o módulo corretamente: a assinatura de tipo, mas também invariantes, restrições de ordenação, modos de erro, configuração necessária e características de performance. _Evite_: API, signature (muito estreito — referem-se apenas à superfície de tipo).
**Implementation** — o que está dentro do módulo, seu corpo de código. Diferente de **Adapter**: uma coisa pode ser um adapter pequeno com uma implementation grande (um repositório Postgres) ou um adapter grande com uma implementation pequena (um fake em memória). Use "adapter" quando o seam for o tema; "implementation" caso contrário.
**Depth** — leverage na interface: a quantidade de comportamento que um caller (ou teste) consegue exercer por unidade de interface que precisa aprender. Um módulo é **deep** quando uma grande quantidade de comportamento fica atrás de uma interface pequena, **shallow** quando a interface é quase tão complexa quanto a implementação.
**Seam** _(Michael Feathers)_ — um lugar onde você pode alterar comportamento sem editar naquele lugar; a *localização* onde a interface do módulo vive. Onde colocar o seam é uma decisão de design própria, distinta do que fica atrás dele. _Evite_: boundary (sobrecarregado com bounded context do DDD).
**Adapter** — uma coisa concreta que satisfaz uma interface em um seam. Descreve *papel* (qual slot ele preenche), não substância (o que tem dentro).
**Leverage** — o que os callers ganham com depth: mais capacidade por unidade de interface que aprendem. Uma implementação traz retorno em N pontos de chamada e M testes.
**Locality** — o que os mantenedores ganham com depth: mudança, bugs, conhecimento e verificação se concentram em um lugar só em vez de se espalharem pelos callers. Conserta uma vez, consertado em todo lugar.
## Deep vs shallow
**Deep module** = interface pequena + muita implementação:
```
┌─────────────────────┐
│ Small Interface │ ← Poucos métodos, parâmetros simples
├─────────────────────┤
│ │
│ Deep Implementation│ ← Lógica complexa escondida
│ │
└─────────────────────┘
```
**Shallow module** = interface grande + pouca implementação (evite):
```
┌─────────────────────────────────┐
│ Large Interface │ ← Muitos métodos, parâmetros complexos
├─────────────────────────────────┤
│ Thin Implementation │ ← Apenas repassa
└─────────────────────────────────┘
```
Ao projetar uma interface, pergunte:
- Posso reduzir o número de métodos?
- Posso simplificar os parâmetros?
- Posso esconder mais complexidade por dentro?
## Princípios
- **Depth é propriedade da interface, não da implementação.** Um módulo profundo pode ser composto internamente de partes pequenas, mockáveis e trocáveis — elas simplesmente não fazem parte da interface. Um módulo pode ter **internal seams** (privados à sua implementação, usados por seus próprios testes) assim como o **external seam** na sua interface.
- **O deletion test.** Imagine deletar o módulo. Se a complexidade some, era um pass-through. Se a complexidade reaparece em N callers, ele estava cumprindo seu papel.
- **A interface é a test surface.** Callers e testes cruzam o mesmo seam. Se você quer testar *além* da interface, o módulo provavelmente tem o formato errado.
- **Um adapter significa um seam hipotético. Dois adapters significam um seam real.** Não introduza um seam a menos que algo realmente varie através dele.
## Projetando para testabilidade
Boas interfaces tornam o teste natural:
1. **Aceite dependências, não as crie.**
```typescript
// Testável
function processOrder(order, paymentGateway) {}
// Difícil de testar
function processOrder(order) {
const gateway = new StripeGateway();
}
```
2. **Retorne resultados, não produza side effects.**
```typescript
// Testável
function calculateDiscount(cart): Discount {}
// Difícil de testar
function applyDiscount(cart): void {
cart.total -= discount;
}
```
3. **Superfície pequena.** Menos métodos = menos testes necessários. Menos parâmetros = setup de teste mais simples.
## Relacionamentos
- Um **Module** tem exatamente uma **Interface** (a superfície que ele apresenta para callers e testes).
- **Depth** é propriedade de um **Module**, medida contra sua **Interface**.
- Um **Seam** é onde a **Interface** de um **Module** vive.
- Um **Adapter** senta em um **Seam** e satisfaz a **Interface**.
- **Depth** produz **Leverage** para callers e **Locality** para mantenedores.
## Enquadramentos rejeitados
- **Depth como razão entre linhas de implementação e linhas de interface** (Ousterhout): premia inflar a implementação. Usamos depth como leverage em vez disso.
- **"Interface" como a keyword `interface` do TypeScript ou métodos públicos de uma classe**: muito estreito — interface aqui inclui todo fato que um caller precisa saber.
- **"Boundary"**: sobrecarregado com bounded context do DDD. Diga **seam** ou **interface**.
## Indo mais fundo
- **Fazer deepening de um cluster considerando suas dependências** — veja [DEEPENING.md](DEEPENING.md): categorias de dependência, disciplina de seam e estratégia replace-don't-layer para testes.
- **Explorar interfaces alternativas** — veja [DESIGN-IT-TWICE.md](DESIGN-IT-TWICE.md): dispare sub-agents em paralelo para projetar a interface de várias formas radicalmente diferentes, depois compare em termos de depth, locality e posicionamento do seam.From leandrocfe/skills, MIT.
More from leandrocfe/skills
- 0.617score
diagnosing-bugs
leandrocfe
Loop de diagnóstico para bugs difíceis e regressões de performance.
SkillBFreshness: B★ 40Claude Code +9 - 0.615score
wizard
leandrocfe
Gera um wizard bash interativo que conduz um humano por passos que só ele pode executar.
SkillBFreshness: B★ 40Claude Code +9 - 0.615score
code-review
leandrocfe
Revisa as mudanças desde um ponto fixo (commit, branch, tag ou merge-base) em dois eixos — Standards (o código segue os padrões de codificação documentados…
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
prototype
leandrocfe
Constrói um prototype descartável para responder a uma pergunta de design.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
improve-codebase-architecture
leandrocfe
Escaneia uma codebase em busca de oportunidades de deepening, apresenta como relatório HTML visual e depois sabatina a escolhida.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
setup-leandrocfe-skills
leandrocfe
Configura este repo para as engineering skills — configura seu issue tracker, vocabulário de triage labels e layout de docs de domínio.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
to-spec
leandrocfe
Transforma a conversa atual em uma spec e publica no issue tracker do projeto — sem entrevista, só síntese do que você já discutiu.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
tdd
leandrocfe
Test-driven development.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
to-tickets
leandrocfe
Quebra um plano, spec ou a conversa atual em um conjunto de tickets tracer-bullet, cada um declarando suas blocking edges, publicados no tracker configurado —…
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
wayfinder
leandrocfe
Planeja um pedaço enorme de trabalho — maior do que uma sessão de agent consegue segurar — como um mapa compartilhado de decision tickets no seu issue…
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
domain-modeling
leandrocfe
Constrói e afia o modelo de domínio de um projeto.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
sync-upstream
leandrocfe
Sincroniza este repositório com um novo release do upstream (mattpocock/skills), adaptando as mudanças para pt-BR em vez de copiá-las.
SkillBFreshness: B★ 40Claude Code +9
Signals
- Stars
- 40
- Forks
- 2
- Open issues
- 1
- Last commit (this folder)
- Aug 10, 2026 (2 months ago)
- Last release
- Aug 10, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/leandrocfe/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from leandrocfe
- 0.617score
diagnosing-bugs
leandrocfe
Loop de diagnóstico para bugs difíceis e regressões de performance.
SkillBFreshness: B★ 40Claude Code +9 - 0.615score
wizard
leandrocfe
Gera um wizard bash interativo que conduz um humano por passos que só ele pode executar.
SkillBFreshness: B★ 40Claude Code +9 - 0.615score
code-review
leandrocfe
Revisa as mudanças desde um ponto fixo (commit, branch, tag ou merge-base) em dois eixos — Standards (o código segue os padrões de codificação documentados…
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
prototype
leandrocfe
Constrói um prototype descartável para responder a uma pergunta de design.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
improve-codebase-architecture
leandrocfe
Escaneia uma codebase em busca de oportunidades de deepening, apresenta como relatório HTML visual e depois sabatina a escolhida.
SkillBFreshness: B★ 40Claude Code +9 - 0.612score
domain-modeling
leandrocfe
Constrói e afia o modelo de domínio de um projeto.
SkillBFreshness: B★ 40Claude Code +9
Cite this page
codebase-design skill. Agent Mart. https://agentmart.dev/skills/leandrocfe-codebase-design (last updated 2026-10-24)