Loading...
Loading...
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.
npx skill4agent add bratsos/zodipus zodipus| User Intent | Skill |
|---|---|
| Install, setup, configure generator | |
| Query engine, createRegistry, type-safe queries | |
| JSON fields, @zodSchema, custom schemas | |
| Errors, validation failed, not working | |
| Migrate from other generators | |
generator zodipus {
provider = "zodipus"
output = "./generated"
}// Generated UserSchema validates: id, email, name, role, createdAt, updatedAt
// Does NOT include: posts, comments, profile (relations)
const user = UserSchema.parse(data);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 }[] }@zodSchemamodel Post {
/// @zodSchema PostMetadataSchema
metadata Json?
}npm install zodipus zodgenerator 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
}npx prisma generateimport { 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);prisma generate| File | Contents |
|---|---|
| Prisma enums as Zod schemas |
| Clean model schemas (no relations) |
| Placeholder for @zodSchema definitions |
| Relation metadata for Query Engine |
| Re-exports and convenience exports |
| Priority | Feature | When to Use |
|---|---|---|
| Critical | | Validate any model data |
| Critical | | Set up Query Engine |
| High | | Validate findMany results |
| High | | Handle errors without throwing |
| Medium | | Type JSON fields |
| Medium | | Deep nested queries |
| Low | CLI inspect command | Debug schema issues |