prisma-workflow

SKILL.md

Prisma Workflow

Schema Design

model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String?
  role      Role     @default(USER)
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@index([email])
}

model Post {
  id        String   @id @default(cuid())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id], onDelete: Cascade)
  authorId  String

  @@index([authorId])
}

enum Role {
  USER
  ADMIN
}

Migration Workflow

  1. Edit schema.prisma
  2. npx prisma migrate dev --name descriptive_name
  3. Review generated SQL in prisma/migrations/
  4. Test on development
  5. npx prisma migrate deploy for production

Good Migration Names

npx prisma migrate dev --name add_user_role
npx prisma migrate dev --name create_posts_table
npx prisma migrate dev --name add_index_on_email

Query Patterns

Select Specific Fields

const user = await prisma.user.findUnique({
  where: { id },
  select: { id: true, email: true, name: true }
})

Include Relations

const user = await prisma.user.findUnique({
  where: { id },
  include: { posts: true }
})

Pagination

const users = await prisma.user.findMany({
  skip: (page - 1) * limit,
  take: limit,
  orderBy: { createdAt: 'desc' }
})

Transactions

await prisma.$transaction([
  prisma.user.update({ where: { id }, data: { balance: { decrement: 100 } } }),
  prisma.order.create({ data: { userId: id, amount: 100 } })
])

Performance Tips

  • Always index foreign keys
  • Use select to fetch only needed fields
  • Use take for large tables
  • Batch operations with createMany
  • Use transactions for related operations

Prisma Service (NestJS)

@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
  async onModuleInit() {
    await this.$connect()
  }
}
Weekly Installs
2
GitHub Stars
13
First Seen
Feb 14, 2026
Installed on
antigravity2
gemini-cli2
mcpjam1
claude-code1
windsurf1
zencoder1