mcpField
Z
zod-validation

zod-validation

github.com/oakoss开发20197 次安装10 周前更新
代码仓库

关于 zod-validation

用于在 TypeScript 中定义和使用 Zod v4 模式的技能,涵盖校验、解析、类型推断、错误处理、转换、元数据和 JSON Schema 转换。

主要功能

  1. 01定义 TypeScript 模式
  2. 02数据解析与类型推断
  3. 03类型强制转换与转换
  4. 04错误格式化与本地化
  5. 05元数据与 JSON Schema 转换

适用场景

  1. 01校验 API 请求数据
  2. 02解析环境变量
  3. 03从模式推断 TypeScript 类型
  4. 04将模式转换为 JSON Schema

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oakoss/agent-skills --skill zod-validation

安装后在 Claude Code 中输入/zod-validation确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
common-patterns.md
error-handling.md
metadata-and-json-schema.md
schema-types.md
transforms-and-parsing.md

详细介绍

Zod 验证(v4)

适用于 TypeScript 的类型安全模式验证。Zod v4 引入了顶层格式函数、z.stringbool()、z.iso.* 日期格式、z.overwrite() 转换、z.file()、z.toJSONSchema()、基于 getter 的递归类型、.meta(),以及统一的 error 函数。

包: zod(小体积版本另有 zod/mini)

快速参考

模式用途
z.object({ ... })定义对象模式
z.string()、z.number()基本类型
z.email()、z.url()、z.uuid()顶层字符串格式(v4)
z.iso.date()、z.iso.datetime()ISO 日期/时间格式(v4)
z.int()、z.float32()、z.int32()固定宽度数字格式(v4)
z.templateLiteral([...])模板字面量类型验证(v4)
z.enum([...])、z.literal()枚举和字面量
z.union([...])、z.discriminatedUnion()联合类型
z.array()、z.tuple()数组和元组类型
z.record()、z.map()键值集合
.optional()、.nullable()可选和可空修饰符
.default()、.catch()默认值和回退值
.prefault()解析前默认值(经模式解析,v4)
z.coerce.number()验证前进行类型强制转换
z.stringbool()将字符串解析为布尔值(v4)
.transform()、.overwrite()输出转换
z.pipe()链接模式(输出作为下一个模式的输入)
.refine()、.superRefine()自定义验证逻辑
.parse()、.safeParse()验证并提取数据
z.infer<typeof Schema>从模式提取 TypeScript 类型
z.input<>、z.output<>转换后的输入类型与输出类型
z.file()文件实例验证(v4)
z.toJSONSchema()将模式转换为 JSON Schema(v4)
.meta()、.describe()为模式附加元数据(v4)
z.prettifyError()以人类可读的格式呈现错误(v4)
z.treeifyError()结构化错误树(取代 .format(),v4)
z.registry()类型化模式注册表(v4)
{ error: (issue) => ... }统一的错误自定义方式(v4)
基于 getter 的递归无需 z.lazy() 的递归类型(v4)
z.globalRegistry全局模式元数据注册表(v4)
z.config(z.locales.en())国际化错误消息(v4)

常见错误

错误修正
z.string().email()z.email()(v4 顶层格式)
z.string().url()z.url()(v4 顶层格式)
使用 parse 却不加 try/catch使用 safeParse 处理错误
忘记添加 .optional()字段可能为 undefined 时添加
对未知数据使用 z.any()使用 z.unknown(),以确保类型安全
对相同类型的值进行更改时使用 .transform()使用 .overwrite()(可自省,v4)
字符串缺少 .min(1)默认情况下,空字符串也能通过 z.string()
z.number().parse(Infinity)v4 中的 z.number() 会拒绝 Infinity
对浮点数使用 z.number().safe()v4 中 .safe() 等同于 .int()(不支持浮点数)
对递归类型使用 z.lazy()在 v4 中使用 getter 语法(保留对象方法)
required_error / invalid_type_error在 v4 中使用统一的 error 函数
.refine(fn, (val) => ({ message }))已移除第二个参数为函数的重载;请使用 .superRefine()
在 schema 上使用 errorMap在 v4 中已由 error 函数取代
z.record(z.string()) 单参数形式v4 要求两个参数:z.record(z.string(), z.string())
在 ZodError 上使用 .format() / .flatten()已弃用;请在 v4 中使用 z.treeifyError(err)
.default() 使用输入类型的值v4 的 .default() 使用输出类型;输入类型请使用 .prefault()

委派

此技能适用于 Zod schema 定义、验证、解析、类型推断、强制转换、错误格式化、元数据和 JSON Schema 转换。对于表单集成,请委派给 tanstack-form 技能。

参考资料

  • Schema 类型 — 基本类型、字符串格式、数字格式、模板字面量、对象、数组、枚举、联合类型、记录、可选、可空
  • 转换与解析 — 强制转换、stringbool、转换、overwrite、管道、细化、解析、类型推断
  • 错误处理 — 统一的 error 函数、prettifyError、treeifyError、ZodError、错误格式化、国际化
  • 常见模式 — 表单验证、API 响应、环境变量、schema 组合、递归类型、品牌类型
  • 元数据与 JSON Schema — meta、describe、globalRegistry、toJSONSchema、文件验证、Zod Mini

评论

支持 Markdown