Claude-skill-registry database-model
Create Prisma schema models with relations and indexes. Use when designing database schemas, adding models, or defining entity relationships.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/database-model" ~/.claude/skills/majiayu000-claude-skill-registry-database-model && rm -rf "$T"
manifest:
skills/data/database-model/SKILL.mdsource content
⚠️ CRITICAL - DO NOT MODIFY
// 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
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:
,createdAtupdatedAt - Always:
on foreign keys@@index
Number Types
| Type | Returns | Use Case |
|---|---|---|
| number | Counts, whole numbers |
| number | Prices (recommended) |
| Prisma.Decimal | Financial (needs conversion) |
Relations
One-to-Many
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
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
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:
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