3.2 KiB
3.2 KiB
| type | name | trigger | description | scope | updatedAt | globs | alwaysApply |
|---|---|---|---|---|---|---|---|
| rule | typescript-sem-any | always_on | Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript | global | 2026-06-01 | **/*.ts, **/*.tsx, **/*.vue | true |
Regras obrigatórias para TypeScript neste projeto:
- Nunca usar
any. - Nunca usar
as any. - Nunca contornar erro de tipagem com cast forçado.
- Quando o tipo não for conhecido, usar
unknown. - Antes de acessar valores
unknown, fazer narrowing com:typeofinArray.isArray- type guards
- schemas de validação como Zod
- Preferir:
- generics
- union types
Record<string, unknown>Partial<T>Pick<T, K>PropType<T>em Vue- tipos derivados de funções existentes
- Se faltar tipo, o agente deve:
- procurar tipos já existentes no projeto;
- criar um tipo/interface local explícita;
- inferir a partir do contexto sempre que possível;
- deixar um
TODO de tipagemexplícito, mas sem usarany.
Regras Inegociáveis para Uso de Enums e zEnums
🚨 REGRA DE OURO: SE EXISTE ENUM OU zENUM DISPONÍVEL (EM QUALQUER MÓDULO OU APLICAÇÃO), O USO DO ENUM É 100% OBRIGATÓRIO — SEM NENHUMA EXCEÇÃO.
-
Proibição Universal de Strings Literais (Magic Strings):
- É estritamente proibido utilizar strings literais no lugar de qualquer enum ou zEnum existente no sistema (seja para tabelas, colunas, status, tipos, categorias, eventos, ações, etc.).
- É proibido utilizar casts para forçar compatibilidade com tipos de domínio (ex:
"ativo" as StatusContaou"pontos" as TipoNomeTabela).
-
Padrão Canônico de Acesso:
- Enums TypeScript nativos:
<NomeEnum>.VALOR(ex:CategoriasSuporte.ADMIN,TipoProcessamento.BATCH). - Enums Zod / Objetos derivados:
<zSchema>.enum.VALORou<enumDerivado>.<membro>(ex:enumTabelas.pontos,enumColunas.codigo,zStatus.enum.ativo,zTipoPessoa.enum.fisica).
- Enums TypeScript nativos:
-
Operações em Todas as Camadas (Banco, Filas, APIs e Frontend):
- Banco de dados & Queries: Nomes de tabelas, entidades e colunas DEVEM consumir os enums correspondentes do pacote
*-comuns(nunca strings hardcoded em queries de banco). - Regras de Negócio & Lógica: Comparações condicionais, transições de estado, status e categorias DEVEM usar os membros do enum.
- Frontend & Telas: Filtros, selects, badges e renderizações condicionais DEVEM importar e referenciar os enums canônicos.
- Banco de dados & Queries: Nomes de tabelas, entidades e colunas DEVEM consumir os enums correspondentes do pacote
-
Diretriz de Busca Prévia Obrigatória: Antes de escrever qualquer string que represente conceito de domínio, entidade, tabela, coluna, status ou opção, o agente DEVE:
- Inspecionar o pacote
*-comuns(src/enums/,src/tabelas/,src/tipos/) da respectiva aplicação; - Se existir qualquer enum correspondente, é obrigatório utilizar o enum existente;
- Se não existir, propor/criar o
enumouz.enumno*-comunsem vez de espalhar strings literais.
- Inspecionar o pacote
Referências
- Skill:
global/skills/diagnosticar-erros-build/SKILL(quando erros de tipagem causam falhas de build em cascata) - Workflow:
global/workflows/codigo-limpo(ouglobal/workflows/otimizar-codigos)