关于 zod
zod 是面向使用 Zod 进行模式定义与验证的开发技能,涵盖类型推断、错误处理、JSON Schema、编译优化及从 Zod 3 迁移到 Zod 4。
主要功能
- 01设计运行时验证模式
- 02处理推断类型与解析错误
- 03使用 JSON Schema 和元数据
- 04使用 Zod Mini 与 Zod Core
- 05指导 Zod 3 到 Zod 4 迁移
适用场景
- 01验证 API 或表单输入
- 02解析环境变量和持久化数据
- 03生成 JSON Schema 或 OpenAPI 契约
- 04将项目迁移到 Zod 4
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill zod安装后在 Claude Code 中输入/zod确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/effects-errors.mdmetadata-jsonschema-migration.mdschema-api.mdsetup-core.mdsource-map.md详细介绍
Zod
在涉及 Zod 验证、架构设计、类型推断、错误处理、JSON Schema、AOT 编译、Zod Mini、Zod Core 或从 Zod 3 迁移到 Zod 4 时,使用此技能。
快照:[email protected] / @zod/[email protected](已于 2026-10-01 验证)。使用 Zod 4 的 latest 版本。不要使用 canary。若版本不同,请从 source-map.md 刷新文档。
工作流
- 修改代码前,检查本地 Zod 使用情况:
zod、可选的@zod/mini、验证适配器、表单库、API 层、代码生成器和 TypeScript 的包版本。- 导入:
zod、zod/v4、zod/mini、@zod/mini、zod/v4/core、zod/compile或zod/v3。 - 架构用途:不可信边界验证、API 契约、表单值、环境解析、持久化、JSON Schema/OpenAPI、热路径编译、库集成或迁移。
- 类型流:
z.input<>、z.output<>和z.infer<>的使用位置,尤其是涉及转换、编解码器、强制转换、默认值和预处理器的情况。
- 当用户询问最新/当前行为、无法确定已安装的版本,或工作涉及对迁移敏感的 API 时,刷新文档。从 source-map.md 开始。
- 安装、导入、parse/
validate/compile、类型推断、包变体和边界设计,请使用 setup-core.md。 - 架构原语、字符串格式、对象、记录、数组、联合、递归架构、函数、品牌、
z.toZod和实例属性检查,请使用 schema-api.md。 - 精化、
.check()、转换、管道、预处理、编解码器、默认值、预填充值、捕获值和错误,请使用 effects-errors.md。 - 元数据、注册表、JSON Schema 转换、Zod Mini、Zod Core、库作者支持,以及 Zod 4 / 4.5 / 4.6 迁移检查,请使用 metadata-jsonschema-migration.md。
- 按照现有项目风格实现:
- 遵循本地导入约定,除非版本边界要求使用不同的子路径。
- 优先使用显式边界架构,避免使用宽泛的
z.any()或未经检查的类型断言。 - 在 API、表单、环境和存储边界处,确保解析和转换行为清晰可见。
- 不要引入仅 canary 版本支持的行为。相较于
latest,npm 的canary已过时。
Zod 判断
- 将 schema 视为运行时契约,而不只是 TypeScript 类型工厂。
- 对可恢复的用户输入失败使用
safeParse,对无效数据属于异常情况时使用parse。 - 如果只需要布尔类型守卫且不想产生
ZodError,请使用.validate()/z.validate()。 - 只要任何 refinement、transform 或 codec 路径是异步的,就使用
parseAsync、safeParseAsync或validateAsync。 - 使用
coerce、preprocess、transform、pipe、codec、default、prefault或catch时,请区分z.input<>和z.output<>。运行时的z.input(schema)/z.output(schema)会分别映射 codec/pipe 的两侧。 - 编写新代码时,优先使用 Zod 4 顶层字符串格式 API(
z.email()、z.uuid()、z.hash("sha256")、z.creditCard()、z.iban()、z.iso.datetime()),而不是已弃用的方法形式。 - 请记住,
z.object()默认会剔除未知键;请有意选择使用z.strictObject()、z.looseObject()或.catchall()。__proto__始终会被剔除。 - 对于以枚举为键的 record,Zod 4 会检查其完整性。对于可选的枚举键映射,请使用
z.partialRecord()。 - 对象组合优先使用对象展开或
.extend();扩展带有 refinement 的 schema 时使用.safeExtend()。 - 双向序列化使用 codec,单向解析使用 transform。
- 使用
z.compile()编译热点对象/数组/联合路径(或在应用中使用import "zod/compile")。编译最终 schema。不要在库中编译。 - 使用
z.instanceof(C).properties({ ... })原地验证类实例,而不要使用z.object()。 - 对于库作者,支持 Zod 和 Zod Mini 时,请使用
zod/v4/core和顶层 parse 辅助函数。新库只应将zod@^4.0.0声明为 peer 依赖。
验证
优先使用仓库中已有的检查。对于有实际意义的 Zod 工作,请包含相关子集:
- 对推断出的输入/输出类型、schema 组合、品牌、
z.toZod<T>()和库泛型约束进行类型检查。 - 针对有效输入、无效输入、未知键、默认值/预设值、转换、codec、异步路径和错误路径进行有针对性的测试。
- 对 API 处理程序、环境变量加载器、表单、服务端操作、CLI 和持久化适配器等边界解析器进行运行时冒烟测试。
- 对热点 schema 进行编译检查:有效输入仍应保持快速;无效输入仍应产生相同的问题;派生 schema(
.extend()、.refine())若需要快速路径,应重新编译。 - 当 schema 元数据或转换行为发生变化时,为 JSON Schema/OpenAPI 输出添加快照或契约测试。
- 对已弃用的 Zod 3 API、4.5/4.6 正确性修复(datetime 秒数、字符串码点、
z.emoji()、JSON Schema 边界)、对象默认值、枚举 record、函数和已移除的内部 API 进行迁移检查。
评论
支持 Markdown