AgentSkillsCN

zodipus

配备可组合 Query Engine 的 Prisma 至 Zod 架构生成器。当用户提及 zodipus、prisma zod 架构、prisma 验证、从 Prisma 获取 Zod 数据、使用 Zod 构建查询、运行时数据库验证,或进行类型安全的 Prisma 查询时,可调用此技能。

SKILL.md
--- frontmatter
name: zodipus
description: Prisma-to-Zod schema generator with composable Query Engine. Use when user mentions zodipus, prisma zod schemas, prisma validation, zod from prisma, query builders with zod, runtime database validation, or type-safe prisma queries.
license: MIT
metadata:
  author: zodipus
  version: "1.0.0"

Zodipus

Type-safe Zod schema generator for Prisma with composable Query Engine.

When to Apply

  • User mentions "zodipus" anywhere in conversation
  • User wants Zod schemas generated from Prisma
  • User needs runtime validation for Prisma queries
  • User asks about type-safe query builders
  • User has Prisma + Zod integration questions
  • User mentions "prisma-zod" or similar terms

Quick Routing

User IntentSkill
Install, setup, configure generatorzodipus-setup
Query engine, createRegistry, type-safe querieszodipus-query-engine
JSON fields, @zodSchema, custom schemaszodipus-custom-schemas
Errors, validation failed, not workingzodipus-troubleshooting
Migrate from other generatorszodipus-migration

Core Concepts

1. Generator

Zodipus is a Prisma generator that outputs Zod schemas:

prisma
generator zodipus {
  provider = "zodipus"
  output   = "./generated"
}

2. Clean Schemas

Generated schemas contain scalar fields only (no relations). This keeps validation fast and focused:

typescript
// Generated UserSchema validates: id, email, name, role, createdAt, updatedAt
// Does NOT include: posts, comments, profile (relations)
const user = UserSchema.parse(data);

3. Query Engine

Build composable queries with automatic validation:

typescript
import { createRegistry } from 'zodipus/queryEngine';
import { models, modelRelations } from './generated/generated-index';

const registry = createRegistry({ models, relations: modelRelations });
const userQuery = registry.createQuery('user');

const query = userQuery({
  select: { id: true, email: true },
  posts: { select: { title: true } }
});

const result = query.parse(await prisma.user.findFirst(query.query));
// Fully typed: { id: string; email: string; posts: { title: string }[] }

4. Custom JSON Schemas

Type Prisma JSON fields with @zodSchema:

prisma
model Post {
  /// @zodSchema PostMetadataSchema
  metadata Json?
}

Minimal Working Example

Step 1: Install

bash
npm install zodipus zod

Step 2: Configure

prisma
generator client {
  provider = "prisma-client-js"
}

generator zodipus {
  provider = "zodipus"
  output   = "./generated"
}

model User {
  id    String @id @default(cuid())
  email String @unique
  name  String?
  posts Post[]
}

model Post {
  id       String  @id @default(cuid())
  title    String
  author   User    @relation(fields: [authorId], references: [id])
  authorId String
}

Step 3: Generate

bash
npx prisma generate

Step 4: Use

typescript
import { UserSchema, PostSchema } from './generated';
import { createRegistry } from 'zodipus/queryEngine';
import { models, modelRelations } from './generated/generated-index';

// Direct validation
const user = UserSchema.parse(userData);

// Query with validation
const registry = createRegistry({ models, relations: modelRelations });
const query = registry.createQuery('user')({
  select: { id: true, email: true, name: true }
});

const users = await prisma.user.findMany(query.query);
const validated = query.array().parse(users);

Generated Files

After running prisma generate, Zodipus creates:

FileContents
enums.tsPrisma enums as Zod schemas
models.tsClean model schemas (no relations)
custom-schemas.tsPlaceholder for @zodSchema definitions
generated-relations.tsRelation metadata for Query Engine
generated-index.tsRe-exports and convenience exports

Priority Reference

PriorityFeatureWhen to Use
CriticalUserSchema.parse()Validate any model data
CriticalcreateRegistry()Set up Query Engine
Highquery.array().parse()Validate findMany results
Highquery.safeParse()Handle errors without throwing
Medium@zodSchema annotationType JSON fields
MediumrelationDepth configDeep nested queries
LowCLI inspect commandDebug schema issues

Quick Reference

See references/QUICK-REFERENCE.md for a complete cheat sheet.