From aai-stack-prisma
Provides Prisma schema design patterns for models, field types, ID strategies, and relationships including one-to-one, one-to-many, many-to-many, and self-relations. Useful for modeling database schemas.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aai-stack-prisma:prisma-schemaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Patterns for designing Prisma schemas.
Patterns for designing Prisma schemas.
model User {
id String @id @default(uuid())
email String @unique
name String?
role Role @default(USER)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
posts Post[]
profile Profile?
sessions Session[]
@@index([email])
@@map("users")
}
enum Role {
USER
ADMIN
MODERATOR
}
model Example {
// Scalar types
id String @id @default(uuid())
name String
bio String? // Optional
age Int
price Float
active Boolean @default(true)
count BigInt
// Dates
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
// Database-specific
data Json
content String @db.Text
amount Decimal @db.Decimal(10, 2)
metadata Bytes
}
// UUID (recommended for distributed systems)
model User {
id String @id @default(uuid())
}
// CUID (shorter, URL-safe)
model Post {
id String @id @default(cuid())
}
// Auto-increment
model Legacy {
id Int @id @default(autoincrement())
}
// Composite ID
model OrderItem {
orderId String
productId String
@@id([orderId, productId])
}
model User {
id String @id @default(uuid())
profile Profile?
}
model Profile {
id String @id @default(uuid())
bio String?
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model User {
id String @id @default(uuid())
posts Post[]
}
model Post {
id String @id @default(uuid())
title String
authorId String
author User @relation(fields: [authorId], references: [id])
@@index([authorId])
}
model Post {
id String @id @default(uuid())
title String
categories Category[]
}
model Category {
id String @id @default(uuid())
name String
posts Post[]
}
model Post {
id String @id @default(uuid())
tags PostTag[]
}
model Tag {
id String @id @default(uuid())
name String @unique
posts PostTag[]
}
model PostTag {
postId String
tagId String
createdAt DateTime @default(now())
post Post @relation(fields: [postId], references: [id], onDelete: Cascade)
tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)
@@id([postId, tagId])
}
model Category {
id String @id @default(uuid())
name String
parentId String?
parent Category? @relation("CategoryHierarchy", fields: [parentId], references: [id])
children Category[] @relation("CategoryHierarchy")
}
model User {
id String @id @default(uuid())
followedBy User[] @relation("UserFollows")
following User[] @relation("UserFollows")
}
model User {
id String @id @default(uuid())
email String @unique
// Compound unique
@@unique([organizationId, email])
}
model Post {
id String @id @default(uuid())
authorId String
status String
createdAt DateTime @default(now())
// Single column index
@@index([authorId])
// Compound index
@@index([status, createdAt])
// Named index
@@index([authorId], name: "post_author_idx")
}
model Article {
id String @id @default(uuid())
title String
content String
@@fulltext([title, content])
}
model Post {
id String @id @default(uuid())
authorId String
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
// Options:
// Cascade - Delete related records
// SetNull - Set FK to null (requires optional field)
// Restrict - Prevent deletion
// NoAction - Database handles it
// SetDefault - Set to default value
}
model Organization {
id String @id @default(uuid())
name String
users User[]
posts Post[]
}
model User {
id String @id @default(uuid())
email String
organizationId String
organization Organization @relation(fields: [organizationId], references: [id])
@@unique([organizationId, email])
@@index([organizationId])
}
model Post {
id String @id @default(uuid())
organizationId String
organization Organization @relation(fields: [organizationId], references: [id])
@@index([organizationId])
}
model Post {
id String @id @default(uuid())
title String
deletedAt DateTime?
isDeleted Boolean @default(false)
@@index([isDeleted])
}
model Resource {
id String @id @default(uuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
createdBy String?
updatedBy String?
}
enum OrderStatus {
PENDING
PROCESSING
SHIPPED
DELIVERED
CANCELLED
}
model Order {
id String @id @default(uuid())
status OrderStatus @default(PENDING)
}
Used by:
database-developer agentfullstack-developer agentSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub bradtaylorsf/alphaagent-team