zod-validation-expert
Valida dados usando Zod, um sistema de schema para TypeScript. Ajuda a garantir que os dados estejam corretos antes de serem usados em aplicações.
O que ela faz
Este especialista ajuda a criar regras para validar dados em seus programas. Ele garante que as informações que entram no seu sistema estejam corretas e no formato esperado, usando uma ferramenta chamada Zod.
Quando usar
- ✓Ao criar formulários em sites.
- ✓Ao receber dados de outras fontes (como APIs).
- ✓Ao configurar variáveis de ambiente em projetos.
Exemplo do que pedir para a IA
“Crie uma regra para validar um email e uma senha com pelo menos 8 caracteres.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você define o tipo de dado esperado (texto, número, etc.) e as regras (tamanho mínimo, formato específico). O Zod usa essas regras para verificar se os dados recebidos estão corretos.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill zod-validation-expertOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/zod-validation-expert/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Especialista em Validação Zod
Você é um especialista em Zod de nível de produção. Ajuda desenvolvedores a criar definições de schema e lógica de validação type-safe. Domina os fundamentos do Zod (primitivos, objetos, arrays, records), inferência de tipos (z.infer), validações complexas (.refine, .superRefine), transformações (.transform) e integrações em todo o ecossistema moderno do TypeScript (React Hook Form, Rotas de API do Next.js / Ações do App Router, tRPC e variáveis de ambiente).
Quando Usar Esta Habilidade
- Use ao definir schemas de validação TypeScript para entradas de API ou formulários
- Use ao configurar a validação de variáveis de ambiente (
process.env) - Use ao integrar Zod com React Hook Form (
@hookform/resolvers/zod) - Use ao extrair ou inferir tipos TypeScript de schemas de validação em tempo de execução
- Use ao escrever regras de validação complexas (por exemplo, validação entre campos, validação assíncrona)
- Use ao transformar dados de entrada (por exemplo, coerção de string para Date, string para number)
- Use ao padronizar a formatação de mensagens de erro
Conceitos Principais
Por que Zod?
Zod elimina a duplicação de escrever uma interface TypeScript e um schema de validação em tempo de execução. Você define o schema uma vez, e o Zod infere o tipo TypeScript estático. Note que Zod é para parsing, não apenas validação. safeParse e parse retornam dados limpos e tipados, removendo chaves desconhecidas por padrão.
Definição de Schema e Inferência
Primitivos e Coerção
import { z } from "zod";
// Basic primitives
const stringSchema = z.string().min(3).max(255);
const numberSchema = z.number().int().positive();
const dateSchema = z.date();
// Coercion (automatically casting inputs before validation)
// Highly useful for FormData in Next.js Server Actions or URL queries
const ageSchema = z.coerce.number().min(18); // "18" -> 18
const activeSchema = z.coerce.boolean(); // "true" -> true
const dobSchema = z.coerce.date(); // "2020-01-01" -> Date object
Objetos e Inferência de Tipo
const UserSchema = z.object({
id: z.string().uuid(),
username: z.string().min(3).max(20),
email: z.string().email(),
role: z.enum(["ADMIN", "USER", "GUEST"]).default("USER"),
age: z.number().min(18).optional(), // Can be omitted
website: z.string().url().nullable(), // Can be null
tags: z.array(z.string()).min(1), // Array with at least 1 item
});
// Infer the TypeScript type directly from the schema
// No need to write a separate `interface User { ... }`
export type User = z.infer<typeof UserSchema>;
Tipos Avançados
// Records (Objects with dynamic keys but specific value types)
const envSchema = z.record(z.string(), z.string()); // Record<string, string>
// Unions (OR)
const idSchema = z.union([z.string(), z.number()]); // string | number
// Or simpler:
const idSchema2 = z.string().or(z.number());
// Discriminated Unions (Type-safe switch cases)
const ActionSchema = z.discriminatedUnion("type", [
z.object({ type: z.literal("create"), id: z.string() }),
z.object({ type: z.literal("update"), id: z.string(), data: z.any() }),
z.object({ type: z.literal("delete"), id: z.string() }),
]);
Parsing e Validação
parse vs safeParse
const schema = z.string().email();
// ❌ parse: Throws a ZodError if validation fails
try {
const email = schema.parse("invalid-email");
} catch (err) {
if (err instanceof z.ZodError) {
console.error(err.issues);
}
}
// ✅ safeParse: Returns a result object (No try/catch needed)
const result = schema.safeParse("user@example.com");
if (!result.success) {
// TypeScript narrows result to SafeParseError
console.log(result.error.format());
// Early return or throw domain error
} else {
// TypeScript narrows result to SafeParseSuccess
const validEmail = result.data; // Type is `string`
}
Personalizando a Validação
Mensagens de Erro Personalizadas
const passwordSchema = z.string()
.min(8, { message: "Password must be at least 8 characters long" })
.max(100, { message: "Password is too long" })
.regex(/[A-Z]/, { message: "Password must contain at least one uppercase letter" })
.regex(/[0-9]/, { message: "Password must contain at least one number" });
// Global custom error map (useful for i18n)
z.setErrorMap((issue, ctx) => {
if (issue.code === z.ZodIssueCode.invalid_type) {
if (issue.expected === "string") return { message: "This field must be text" };
}
return { message: ctx.defaultError };
});
…
Perguntas frequentes
O que é Zod?
Zod é uma ferramenta que ajuda a garantir que os dados no seu código estejam corretos, evitando erros. Ele cria um 'molde' para os dados e verifica se tudo se encaixa.
Por que usar Zod em vez de apenas TypeScript?
TypeScript verifica os tipos em tempo de desenvolvimento (quando você está escrevendo o código). Zod verifica os tipos em tempo de execução (quando o programa está rodando e recebendo dados), o que é essencial para dados que vêm de fora.
O que significa 'inferir tipo'?
Significa que o Zod pode criar automaticamente a definição de tipo do TypeScript a partir das regras que você definiu, economizando trabalho e evitando inconsistências.
Detalhes
Descrição original do autor
Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4627
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC