About domain-modeling
A skill for actively refining a project's domain model during design work. It helps teams clarify terminology, test domain boundaries against concrete scenarios and code, and maintain a glossary plus selective ADRs.
Key features
- 01Challenge terms against the glossary
- 02Clarify vague domain language
- 03Test edge cases with scenarios
- 04Check claims against code
- 05Update CONTEXT.md inline
- 06Create ADRs selectively
Use cases
- 01Resolving conflicting domain terms
- 02Distinguishing overloaded concepts
- 03Checking domain rules against implementation
- 04Recording settled vocabulary and decisions
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ leandrocfe/ skills --skill domain-modelingAfter installing, type/domain-modelingin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
ADR-FORMAT.mdCONTEXT-FORMAT.mdagents/openai.yamlDetails
From the project READMEDomain Modeling
Constrói ativamente e afia o modelo de domínio do projeto conforme você projeta. Esta é a disciplina ativa — desafiando termos, inventando cenários de edge-case e escrevendo o glossário e decisões no momento em que cristalizam. (Apenas ler CONTEXT.md para vocabulário não é esta skill — isso é um hábito de uma linha que qualquer skill pode fazer. Esta skill é para quando você está mudando o modelo, não apenas consumindo.)
Estrutura de arquivos
A maioria dos repos tem um único contexto:
/
├── CONTEXT.md
├── docs/
│ └── adr/
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-for-write-model.md
└── src/
Se um CONTEXT-MAP.md existir na raiz, o repo tem múltiplos contextos. O map aponta para onde cada um vive:
/
├── CONTEXT-MAP.md
├── docs/
│ └── adr/ ← decisões de sistema
├── src/
│ ├── ordering/
│ │ ├── CONTEXT.md
│ │ └── docs/adr/ ← decisões específicas do contexto
│ └── billing/
│ ├── CONTEXT.md
│ └── docs/adr/
Crie arquivos de forma lazy — só quando tiver algo para escrever. Se não existir CONTEXT.md, crie um quando o primeiro termo for resolvido. Se não existir docs/adr/, crie quando o primeiro ADR for necessário.
Durante a sessão
Desafie contra o glossário
Quando o usuário usar um termo que conflita com a linguagem existente em CONTEXT.md, chame atenção imediatamente. "Seu glossário define 'cancellation' como X, mas você parece estar querendo dizer Y — qual é?"
Afie linguagem vaga
Quando o usuário usar termos vagos ou sobrecarregados, proponha um termo canônico preciso. "Você está dizendo 'account' — quer dizer o Customer ou o User? São coisas diferentes."
Discuta cenários concretos
Quando relacionamentos de domínio estiverem sendo discutidos, stress-teste com cenários específicos. Invente cenários que sondem edge cases e forcem o usuário a ser preciso sobre os limites entre conceitos.
Cruze com o código
Quando o usuário afirmar como algo funciona, verifique se o código concorda. Se encontrar contradição, exponha: "Seu código cancela Orders inteiras, mas você acabou de dizer que cancelamento parcial é possível — qual está certo?"
Atualize CONTEXT.md inline
Quando um termo for resolvido, atualize CONTEXT.md ali mesmo. Não acumule — capture no momento. Use o formato em CONTEXT-FORMAT.md.
CONTEXT.md deve ser totalmente desprovido de detalhes de implementação. Não trate CONTEXT.md como uma spec, um rascunho ou repositório de decisões de implementação. É um glossário e nada mais.
Ofereça ADRs com parcimônia
Só ofereça criar um ADR quando todas as três condições forem verdadeiras:
- Difícil de reverter — o custo de mudar de ideia depois é significativo
- Surpreendente sem contexto — um leitor futuro vai se perguntar "por que eles fizeram assim?"
- Resultado de um trade-off real — havia alternativas genuínas e você escolheu uma por razões específicas
Se qualquer uma das três faltar, pule o ADR. Use o formato em ADR-FORMAT.md.