用途:指导按项目的 Zod-first 方式设计与实现 Zod schema,即先定义 schema 再写业务逻辑,适用于创建新数据结构、为输入添加校验、设计配置 schema、实现类型安全转换以及构建测试数据构造器。
主要能力:以 schema 为唯一事实来源,用 z.infer<> 推导类型而非手写类型,同一 schema 同时用于运行时校验与测试,并由基础 schema 组合出复杂 schema。决策指南覆盖基础校验(如 z.string().min(1))、领域安全(品牌类型,如 transform((v) => v as EntitySlug))、多类型(z.discriminatedUnion('type', [...]))、跨字段规则(.refine)、数据规范化(.transform)、部分更新(Schema.partial())。
项目约定:Slug 实体用 z.string().regex(/^[a-z0-9-]+$/);Name 实体用 z.string().min(1).max(100).trim();标准实体含 name、slug、可选 description;类型始终由 schema 推导。schema 位于 src/modules/config/schema/,含 schema.ts、primitives.ts、entities/ 与 index.ts。
校验检查点:schema 定义后用 npx tsc --noEmit 检查无 TS 错误;确认 z.infer 可用;用 safeParse 测试并运行 pnpm test。
常见错误:手写类型导致类型漂移,应改用 z.infer;直接用 .parse() 会在无效时抛错,应使用 .safeParse();漏写 .optional() 引发运行时错误;精化逻辑过于复杂难以调试,应拆分为更小 schema;未用品牌类型造成类型混淆,可用 .brand() 或 transform。
限制:资料未提供该技能的安装方式、收费、平台与效果信息;外部最新 Zod 模式可通过 Context7 MCP 获取,Zod 文档见 https://zod.dev。