SPELL / Documentação
← Site principal

Convenções

ConvencoesD — banco de dados

O bloco ConvencoesD (Convenções de Dados) define as regras de nomenclatura e comportamento para o banco de dados. É um bloco de Padrões de Engenharia (padroes.spell):

ConvencoesD {
  idioma-de-tabelas: inglês
  capitalizacao-de-tabelas: snake_case
  tabelas: plural
  chave-primaria: id UUID
  campos-de-auditoria: created_at, updated_at, created_by
  soft-delete: sim, via deleted_at
  soft-delete-filtro-global: sim
  /// Filtro global de soft delete via HasQueryFilter no DbContext (EF Core)
}
CampoDescriçãoExemplos de valor
idioma-de-tabelasIdioma usado nos nomes de tabelas e colunasportuguês, inglês
capitalizacao-de-tabelasConvenção de capitalizaçãosnake_case, PascalCase, camelCase
tabelasSingular ou plural no nome da tabelasingular, plural
chave-primariaTipo e convenção da chave primáriaid UUID, id inteiro auto-incremento
campos-de-auditoriaCampos de auditoria automáticos em toda tabelacreated_at, updated_at
soft-deleteEstratégia de soft deletesim, via deleted_at, nao
soft-delete-filtro-globalORM aplica filtro automaticamente em todas as queriessim, nao

ConvencoesC — código

O bloco ConvencoesC define as convenções de escrita do código. A IA usa essas definições para nomear classes, métodos, variáveis e outros elementos:

ConvencoesC {
  idioma-do-codigo: inglês
  classes: PascalCase
  metodos: PascalCase
  variaveis: camelCase
  constantes: UPPER_SNAKE_CASE
  interfaces: prefixo I — IRepository, IService
  sufixo-service: Service — UserService, OrderService
  sufixo-repository: Repository — UserRepository
}

Bloco API

O bloco API define os padrões da interface HTTP do sistema:

API {
  estilo: REST
  urls: kebab-case, plural — /api/v1/pedidos-ativos
  versionamento: prefixo de URL — /api/v1/
  envelope: sim — {data: ..., meta: ...}
  paginacao: skip/take
  datas: ISO 8601 UTC
  cors: meusite.com.br, app.meusite.com.br
}

Interface e Qualidade

Os blocos Interface e Qualidade definem padrões de UI e testes respectivamente:

Interface {
  design-system: shadcn/ui
  tema: escuro por padrão, com toggle
  formularios: validação inline com mensagens amigáveis
  feedback: toast para ações de sucesso e erro
  - Todas as ações destrutivas pedem confirmação
  - Loading states em todos os botões de ação
}

Qualidade {
  tipos-de-teste: unitário, integração, e2e
  cobertura-minima: 80% nas regras de negócio
  nomenclatura-de-testes: Dado_Quando_Entao
  - Testes de integração usam banco em memória
  - E2E rodando em pipeline de CI/CD
}

Bloco Engenharia e Configuracoes

O bloco Engenharia define práticas de desenvolvimento e o sub-bloco Configuracoes declara as variáveis de ambiente esperadas:

Engenharia {
  branching: trunk-based — branch por feature, merge via PR
  commits: conventional commits — feat, fix, chore, docs
  documentacao: README atualizado a cada feature, Swagger gerado automaticamente

  Configuracoes {
    DATABASE_URL: segredo
    JWT_SECRET: segredo
    AWS_ACCESS_KEY_ID: segredo
    AWS_SECRET_ACCESS_KEY: segredo
    STRIPE_SECRET_KEY: segredo
    CORS_ORIGINS: https://meusite.com.br
    NODE_ENV: production
  }
}

Campos com valor segredo são marcados no output gerado com uma coluna "Segredo: sim" — a IA sabe que não deve incluir esses valores em código ou logs. O output gerado é uma tabela Chave | Valor | Segredo.