2.2 KiB
2.2 KiB
| trigger | description | globs | alwaysApply | |||
|---|---|---|---|---|---|---|
| always_on | Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript |
|
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 obrigatórias para uso de enums:
- Quando um valor estiver associado a um
enum, é obrigatório utilizar o enum, nunca strings literais. - O acesso deve seguir o padrão:
<NomeEnum>.VALOR.
Também é proibido, quando existir enum correspondente:
- utilizar strings literais no lugar do enum (ex:
"ativo","inativo","automatica","criar"); - utilizar cast para forçar compatibilidade com enum (ex:
"ativo" as StatusConta).
Proibido gerar código que apenas "faça compilar" usando:
as any: any[] as any{ } as any- dupla coerção como
as unknown as any
Em casos excepcionais, preferir:
as unknown as TipoEspecificosomente se houver justificativa clara e comentário técnico.
Diretriz para o agente:
Se encontrar uma string que represente um valor de domínio do sistema, o agente deve:
- procurar se já existe um
enumcorrespondente no projeto; - usar o
enumexistente; - se não existir, propor a criação de um
enumexplícito, em vez de manter strings soltas.
Referências
- Skill:
.agent/skills/diagnosticar-erros-build/SKILL.md(quando erros de tipagem causam falhas de build em cascata) - Workflow:
.agent/workflows/documentar-codigo.global.md(padrão de documentação para casts temporários)