domain-modeling (mattpocock/skills)
Constrói o modelo de domínio de um projeto e mantém seu glossário e seus registros de decisões de arquitetura.
domain-modeling: transforma pedidos simples de 'monte um glossário / registre esta decisão' no formato curto GLOSSARY.md + ADR (controle 2.8, skill 5.0); um prompt de uma frase chega a 4.6; sem custo extra de tokens
Codex CLI · gpt-6-astra
28.2 / 30
Ganho sobre sem skill: +2.20 · Recomendado · 18 execuções
Recomendado: o total 28.2/30 é pelo menos 22, a qualidade da saída 5.0 é pelo menos 3.5 e o ganho +2.20 é pelo menos +1.0.
SOTA
AprovadoTestado com Codex.
Cobre Codex, Claude Code
Codex CLI 0.166 (nível SOTA): 18 execuções avaliadas. Uma aprovação aqui também vale para o Claude Code pela nossa regra de níveis; ela não diz nada sobre o segundo nível.
Notas
Cada dimensão vai de 0 a 5, e as seis somam o total de 30. 5 é melhor em todas as dimensões. Custo 5 significa barato e rápido. Instalação 5 significa fácil.
- Confiabilidade do acionamento
- 5.0
- Ganho sobre sem skill
- 4.2
- Qualidade da saída
- 5.0
- Custo de tokens e tempo
- 5.0
- Instalação e portabilidade
- 4.0
- Segurança
- 5.0
Revisão de segurança
SeguroVarredura estática: 0 CRÍTICO / 0 ALTO / 0 MÉDIO. Revisão manual: seguro para executar em sandbox sem rede (nenhum achado). Uma varredura limpa não prova que a skill é segura.
Instalar
npx skills@latest add mattpocock/skills --skill domain-modeling
Commit fixado: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Testado: 2026-11-02
O que testamos
- Criar um glossário a partir de termos sobrecarregados — Nosso app de empréstimo de biblioteca usa 'member', 'patron', 'borrower' e 'customer' para a mesma pessoa (alguém que pode pegar livros emprestados). Um 'loan' também é chamado de 'checkout' ou 'rental'. Um 'copy' é um livro físico, um 'title' é o livro abstrato. Por favor, monte o glossário…
- Registrar uma decisão difícil de reverter — Registre esta decisão de arquitetura para o repositório: armazenamos dinheiro como centavos inteiros no Postgres em vez de NUMERIC/DECIMAL, porque a API do parceiro de pagamentos usa centavos inteiros e bugs de arredondamento já nos atingiram duas vezes. Escreva o registro.
- Registrar só o que merece um ADR — Duas decisões da reunião de hoje: (a) estamos migrando a autenticação da nossa própria tabela de senhas para um provedor de identidade terceirizado (Auth0): um trimestre de trabalho para desfazer; (b) renomeamos a classe CSS .btn-main para .btn-primary. Registre o que merecer registro…
Prós
- Eleva a nota média de 2.8 para 5.0 em relação ao grupo sem skill (+2.20).
- A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.
- Sem custo extra de tokens: 0.96x os tokens do grupo sem skill.
- Supera em +0.39 uma versão de uma frase da própria regra.
- Qualidade absoluta alta com a skill: 5.0 de 5.
Contras
- Ressalva do teste: os globs de nome de arquivo nas verificações foram afrouxados depois que vimos os nomes de arquivo do grupo de controle, e todas as execuções foram reavaliadas com as mesmas regras afrouxadas.
- n=2 por tarefa por braço; diferenças abaixo de cerca de 1 ponto são ruído.
Avaliação
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC de teste Windows dedicado, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento), ausente (grupo de controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo do prompt de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo). Três tarefas com redação natural que não nomeia um formato: 'monte o glossário de domínio do projeto' (um app de biblioteca que chama a mesma pessoa de member/patron/borrower/customer), 'registre esta decisão de arquitetura' (dinheiro como centavos inteiros) e 'duas decisões da reunião; registre o que merecer registro' (uma migração para Auth0 difícil de desfazer e a renomeação de uma classe CSS que não é difícil de desfazer), partindo de um repositório com os ADRs 0001 e 0002. Prompt de uma frase = a convenção inteira em uma só frase.
Comparação entre os braços
| Braço | Nota média (0-5) | Tokens por execução |
|---|---|---|
| Sem a skill | 2.8 | 83k |
| Prompt de uma frase | 4.61 | 83k |
| Com a skill | 5.0 | 80k |
Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 28.2 / 30, veredito Recomendado.
Divulgação: Os globs de nome de arquivo nas verificações foram afrouxados depois que vimos os nomes de arquivo do grupo de controle, e todas as execuções foram reavaliadas com as mesmas regras afrouxadas.
Veredicto: Recomendado (28.2 / 30). Fonte: mattpocock/skills, skills/engineering/domain-modeling, fixado no commit 4ae2317. Instalação: npx skills@latest add mattpocock/skills --skill domain-modeling. Licença: MIT (LICENSE do repositório).
O que é
A skill domain-modeling (mattpocock/skills): mantém a linguagem de domínio de um projeto precisa. Ela mantém um GLOSSARY.md (um termo canônico em negrito por conceito, uma definição enxuta, sinônimos em _Avoid_:, nenhum termo genérico de programação) e escreve ADRs em docs/adr/ apenas para decisões difíceis de reverter, surpreendentes e com trade-offs reais, como um parágrafo curto com numeração sequencial.
Como testamos
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC de teste Windows dedicado, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento), ausente (controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo).
Três tarefas com redação natural que não nomeia um formato: "montar o glossário de domínio do projeto" (um app de biblioteca que chama a mesma pessoa de member/patron/borrower/customer), "registrar esta decisão de arquitetura" (dinheiro como centavos inteiros) e "duas decisões da reunião; registre o que merecer registro" (uma migração para Auth0 difícil de desfazer e uma renomeação de classe CSS que não é), partindo de um repositório com ADRs 0001 e 0002. Frase única = a convenção inteira em uma frase.
- Criar um glossário a partir de termos sobrecarregados — Nosso app de empréstimo de biblioteca usa "member", "patron", "borrower" e "customer" para a mesma pessoa (alguém que pode pegar livros emprestados). Um "loan" também é chamado de "checkout" ou "rental". Uma "copy" é um livro físico, um "title" é o livro abstrato. Por favor, monte o pr…
- Registrar uma decisão difícil de reverter — Registre esta decisão de arquitetura para o repositório: armazenamos dinheiro como centavos inteiros no Postgres em vez de NUMERIC/DECIMAL, porque a API do parceiro de pagamentos usa centavos inteiros e bugs de arredondamento nos atingiram duas vezes. Escreva o registro.
- Registre apenas o que merece um ADR — Duas decisões da reunião de hoje: (a) vamos migrar a autenticação da nossa própria tabela de senhas para um provedor de identidade terceirizado (Auth0): um trimestre de trabalho para desfazer; (b) renomeamos a classe CSS
.btn-mainpara.btn-primary. Registre o que merecer registro…
A pontuação é programática (testes ocultos / identificação de problemas plantados / verificações de restrições / renderização + OCR quando aplicável), de 0 a 5 por execução. Nenhum juiz LLM decidiu qualquer pontuação.
Resultados
A frase única dada ao terceiro grupo: "Mantenha a linguagem de domínio do projeto precisa: escreva um GLOSSARY.md com um termo canônico em negrito por conceito (uma definição enxuta e sinônimos em _Avoid_:, sem termos genéricos de programação), e registre apenas decisões difíceis de reverter, surpreendentes e com trade-offs reais como ADRs curtos e numerados sequencialmente em docs/adr/ (um parágrafo, não um template)."
| Tarefa | Pontuação do controle | Uma frase | Com a skill | Tokens do controle | Tokens de uma frase | Tokens com a skill | Skill lida |
|---|---|---|---|---|---|---|---|
| t1-glossary | 1.46 | 4.38 | 5.0 | 75k | 90k | 79k | 2/2 |
| t2-adr | 2.5 | 5.0 | 5.0 | 91k | 74k | 69k | 2/2 |
| t3-adr-numbering | 4.45 | 4.45 | 5.0 | 82k | 83k | 89k | 2/2 |
Pontuação média: 2.8 sem a skill vs. 5.0 com a skill (delta +2.2). Tokens por execução: 83k vs. 80k (0.96x); tempo 45s vs. 35s. Grupo de uma frase: 4.61 (ganho da skill sobre a frase única: +0.39; ganho da própria frase única sobre sem skill: +1.8); 83k tokens por execução no grupo de uma frase, então a skill custa 0.96x a frase única.
O que aconteceu
- Controle 2.80, frase única 4.61, skill 5.00 (n=6 cada). O controle faz a coisa sensata, mas do seu próprio jeito: um DOMAIN*GLOSSARY.md (não GLOSSARY.md) com tabela ou texto corrido, nenhuma linha
\_Avoid*em nenhuma das execuções, e ADRs de 263 e 355 palavras com títulos Contexto/Decisão/Consequências quando a convenção pede um parágrafo curto; um ADR do controle foi para docs/decisions/ em vez de docs/adr/. - As duas decisões de julgamento da skill estão certas: nas duas execuções de tratamento da terceira tarefa, ela registrou apenas a mudança para Auth0 como ADR 0003 (numeração correta após os 0001/0002 existentes) e disse que pulou a renomeação de CSS por ser fácil de reverter. O controle e a frase única também pularam a renomeação, mas a segunda execução do controle e a segunda da frase única deram um motivo que meu regex não reconheceu (mudança rotineira, não registrada), então a verificação "me diga por quê" os penaliza indevidamente.
- A frase única alcança a maior parte do formato (glossário 3.75 e 5.0, ADRs 5.0, 5.0), mas um glossário da frase única usou um layout diferente, então não passou na verificação da estrutura
_Avoid_. - Sem custo extra: 80k tokens por execução com a skill, 83k com o controle e a frase única. A skill foi lida em 6/6 execuções com a skill sem ser nomeada.
Pontuação por dimensão
| Dimensão | Pontuação | Por quê |
|---|---|---|
| 1_output_quality | 5.0 | Pontuação média de 5.00/5 com a skill (verificações programáticas; consulte a tabela por tarefa). |
| 2_lift_vs_no_skill | 4.2 | +2.20 pontos vs. 2.80 sem a skill (n=2 por tarefa; abaixo de ~1 ponto é ruído). |
| 3_trigger | 5.0 | Arquivo da skill lido em 6/6 execuções com a skill. |
| 4_instructions_portability | 4 | SKILL.md curto com alguns templates de referência; nenhum script. |
| 5_efficiency | 5 | 0.96x tokens (80k vs. 83k por execução) e 0.78x tempo (35s vs. 45s). |
| 6_safety_hygiene | 5 | Somente texto; consulte security.md. |
Limites deste teste
- Verificações por regras em nomes de arquivos, títulos, contagens de termos em negrito, contagens de palavras e linhas
_Avoid_. Várias são verificações de formato que um controle não consegue cumprir sem que lhe digam o formato; as verificações medem a adesão a esta convenção da casa, não a qualidade geral da escrita. - Afrouxei os padrões de nome de arquivo e layout depois de ver que o controle escreveu DOMAIN_GLOSSARY.md e a frase única escreveu entradas em marcadores (o nome do arquivo continua sendo uma verificação separada), e reavaliei todas as execuções com as mesmas regras. O regex de "por que (b) foi pulado" continua rígido.
- Repositórios sintéticos pequenos; nenhum glossário de longa duração que precise ser atualizado com o tempo.
- n = 2 por grupo por tarefa: diferenças abaixo de cerca de 1 ponto são ruído.
- A pontuação por regras mede o que as verificações conseguem ver; não julga bom gosto nem se o resultado é o melhor possível.
Segurança
Consulte security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredicto: segura para execução (sandbox sem rede). Um scan limpo não prova que uma skill é segura.
Conclusão
Para uma equipe que quer esta convenção de glossário e ADR, a skill acerta de primeira e mantém os ADRs escassos, sem tokens extras. Uma instrução de uma frase dá conta da maior parte, então a skill principalmente evita que você cole a convenção toda vez.
Transcrição
Log de execuções: domain-modeling (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colunas: tarefa, grupo-execução, nota (0-5), tokens, segundos, verificações aprovadas, arquivos da skill abertos pelo agente. t1-glossary control-1: nota 1.25, tokens 67501, s 45.5, verificações 2/7, nada aberto t1-glossary control-2: nota 1.67, tokens 82953, s 59.9, verificações 3/7, nada aberto t1-glossary oneliner-1: nota 5.0, tokens 99071, s 37.6, verificações 7/7, nada aberto t1-glossary oneliner-2: nota 3.75, tokens 82400, s 36.8, verificações 6/7, nada aberto t1-glossary treatment-1: nota 5.0, tokens 89157, s 40.7, verificações 7/7, abriu domain-modeling t1-glossary treatment-2: nota 5.0, tokens 70479, s 32.2, verificações 7/7, abriu domain-modeling t2-adr control-1: nota 3.12, tokens 99540, s 43.6, verificações 3/5, nada aberto t2-adr control-2: nota 1.88, tokens 82829, s 51.1, verificações 2/5, nada aberto t2-adr oneliner-1: nota 5.0, tokens 66964, s 43.7, verificações 5/5, nada aberto
18 execuções, 3 artefatos
Resultado de exemplo
SOTA · With the skill: GLOSSARY.md (t1-glossary, run 1, Codex)
# Library Lending The library-lending context describes people who can borrow books, the books available to borrow, and their loans. ## Language **Member**: A person who can borrow books from the library, whether or not they currently have a loan. _Avoid_: Patron, borrower, customer **Loan**: An instance of a member borrowing a physical copy of a title from the library. _Avoid_: Checkout, rental **Copy**: One physical book belonging to a title. Two physical books of the same title are two distinct copies. _Avoid_: Title (when referring to a physical book) **Title**: The abstract book represented by physical copies. Multiple copies of the same book share a title. _Avoid_: Copy (when referring to the abstract book)