Create Prisma schema models with relations and indexes. Use when designing database schemas, adding models, or defining entity relationships.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: database-model
description: Create Prisma schema models with relations and indexes. Use when designing database schemas, adding models, or defining entity relationships.
---
## ⚠️ CRITICAL - DO NOT MODIFY
```prisma
// prisma/schema.prisma - NEVER change these blocks
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
```
Import: `import { prisma } from '@/lib/prisma'` (already exists)
## Model Conventions
```prisma
model Product {
id String @id @default(uuid())
name String
price Float // Use Float for UI (returns number directly)
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
category Category @relation(fields: [categoryId], references: [id], onDelete: Cascade)
categoryId String
@@index([categoryId])
@@index([name])
}
```
**Rules:**
- Model names: PascalCase
- Field names: camelCase
- IDs: `@id @default(uuid())`
- Always: `createdAt`, `updatedAt`
- Always: `@@index` on foreign keys
## Number Types
| Type | Returns | Use Case |
|------|---------|----------|
| `Int` | number | Counts, whole numbers |
| `Float` | number | Prices (recommended) |
| `Decimal` | Prisma.Decimal | Financial (needs conversion) |
## Relations
### One-to-Many
```prisma
model Category {
id String @id @default(uuid())
name String @unique
products Product[]
}
model Product {
id String @id @default(uuid())
category Category @relation(fields: [categoryId], references: [id], onDelete: Cascade)
categoryId String
@@index([categoryId])
}
```
### One-to-One
```prisma
model User {
id String @id @default(uuid())
profile Profile?
}
model Profile {
id String @id @default(uuid())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
userId String @unique // @unique = one-to-one
}
```
### Many-to-Many
```prisma
model Post {
id String @id @default(uuid())
tags Tag[] // Prisma handles junction table
}
model Tag {
id String @id @default(uuid())
name String @unique
posts Post[]
}
```
## NextAuth Models
User, Account, Session already exist in boilerplate. Just add relations:
```prisma
model User {
// ... existing fields
posts Post[] // Add your relations
}
```
## After Schema Changes
DO NOT run db push manually. Runs automatically in validation phase.
## NEVER
- Modify datasource/generator blocks
- Recreate lib/prisma.ts
- Recreate User/Account/Session
- Forget @@index on foreign keys
- Skip onDelete: Cascade on children
- Run db push during implementation
No comments yet. Be the first to comment!