Prisma orm
Full-stack Next.js development plugin for Claude Code
npx -y skills add iwritec0de/app-dev --skill prisma-ormAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Prisma ORM expertise for schema design, migrations, client usage, and deployment. Use when writing Prisma schemas, creating migrations, querying with Prisma Client, defining relations, or deploying database changes. Triggers on "prisma", "prisma schema", "prisma migrate", "prisma client", "prisma relation", "@@map", "@@index", "prisma generate", "prisma studio", "prisma deploy".
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.7 KB, as published. Nobody here has run it
Prisma ORM Skill
You are a Prisma ORM expert for TypeScript applications.
Critical Rules
- Run
prisma generateafter schema changes — the client is code-generated, not runtime - Use
migrate devin development — creates migration files and applies them - Use
migrate deployin production — applies pending migrations without creating new ones - Never use
db pushin production — it doesn't create migration files and can lose data - Name relations explicitly — when a model has multiple relations to the same target
- Add
@@indexfor query performance — Prisma doesn't auto-create indexes on FKs - Use transactions for multi-step operations —
prisma.$transaction()for consistency
Schema Design
model User {
id String @id @default(uuid())
email String @unique
name String?
posts Post[]
profile Profile?
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("users")
@@index([email])
}
model Post {
id String @id @default(uuid())
title String
content String?
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
authorId String @map("author_id")
@@map("posts")
@@index([authorId])
}
Key attributes: @id, @unique, @default(), @map(), @relation(), @@map(), @@index(), @@unique(). Read reference/schema-patterns.md for all types and patterns.
Relations
| Type | Schema Pattern |
|---|---|
| One-to-One | FK with @unique on one side, optional ? field on other |
| One-to-Many | FK on "many" side, array [] on "one" side |
| Many-to-Many (implicit) | Array [] on both sides, Prisma creates junction table |
| Many-to-Many (explicit) | Junction model with two @relation fields |
| Self-relation | Model references itself (e.g., parent/children) |
Client Usage
// Create with relation
const user = await prisma.user.create({
data: { email: '[email protected]', name: 'Alice', posts: { create: { title: 'Hello' } } },
include: { posts: true },
});
// Query with filtering
const posts = await prisma.post.findMany({
where: { author: { email: { contains: '@company.com' } } },
orderBy: { createdAt: 'desc' },
take: 20,
skip: 0,
select: { id: true, title: true, author: { select: { name: true } } },
});
// Cursor pagination (preferred over offset)
const next = await prisma.post.findMany({
cursor: { id: lastId },
skip: 1,
take: 20,
orderBy: { id: 'asc' },
});
Read reference/client-patterns.md for CRUD recipes, nested writes, transactions, and error handling.
Migrations
# Development: create and apply migration
npx prisma migrate dev --name add_user_table
# Production: apply pending migrations
npx prisma migrate deploy
# Reset database (development only)
npx prisma migrate reset
# Generate client after schema change
npx prisma generate
# Browse database
npx prisma studio
Read reference/migration-workflow.md for CI/CD integration, handling drift, and rollback strategies.
Advanced
- Raw queries —
prisma.$queryRawfor complex SQL not supported by client - Transactions —
prisma.$transaction([...])for sequential, orprisma.$transaction(async (tx) => {...})for interactive - Middleware —
prisma.$use()for logging, soft delete, audit trails - Connection pooling — use
pgbouncer=truein connection string for serverless
Anti-Patterns
- Don't use
db pushin prod — no migration history, can drop columns - Don't skip
@@index— Prisma doesn't auto-index foreign keys - Don't fetch all fields — use
selectto reduce payload - Don't ignore N+1 — use
includeto eager-load relations - Don't edit migration files — create new migrations to fix issues
- Don't use
prisma migrate devin CI — useprisma migrate deploy
Related
reference/schema-patterns.md— Model patterns, field types, attributes, enums, multi-file schemasreference/client-patterns.md— CRUD recipes, filtering, transactions, raw SQL, error handlingreference/migration-workflow.md— Dev vs prod workflow, seeding, CI/CD, rollback