Pular para o conteúdo
Skillpedia
Código em geral48 mil · #4627

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/zod-validation-expert/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/zod-validation-expert/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-expert

Ou 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.md
Conteú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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4627
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas