From ts-backend-dev
Create or modify Prisma schema for new entities using multi-schema by default. Use this skill when the user wants to define database models, add tables, create migrations, or design a schema with proper field types, relations, indexes, and conventions. Triggers on "prisma schema", "add model", "create table", "database schema", "define entity", or when the user mentions Prisma and needs a model defined. Covers multi-schema, soft deletes, high-precision decimals, snake_case mapping, UUID primary keys, and relation patterns.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ts-backend-dev:prisma-schemaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create/modify schema for: $ARGUMENTS
Create/modify schema for: $ARGUMENTS
Always define schemas in the datasource block. This enables organizing models into logical namespaces and is supported by PostgreSQL, CockroachDB, and SQL Server.
generator client {
provider = "prisma-client"
output = "./generated"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
schemas = ["base", "billing", "inventory"]
}
Every model and enum must declare its schema with @@schema("name"). Pick the schema that matches the model's domain. If only one schema is needed, use a single entry like schemas = ["public"].
model EntityName {
id String @id @default(uuid())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
// Business fields
status EntityStatus @default(ACTIVE)
name String
amount Decimal @db.Decimal(36, 18)
// Relations
accountId String @map("account_id")
account Account @relation(fields: [accountId], references: [id])
// Indexes
@@index([accountId])
@@index([status])
@@index([createdAt])
// Table and schema mapping
@@map("entity_names")
@@schema("base")
}
enum EntityStatus {
ACTIVE
INACTIVE
DELETED
@@schema("base")
}
Models in different schemas can reference each other. Both schemas must be listed in schemas.
// schema: "base"
model User {
id Int @id
orders Order[]
@@schema("base")
}
// schema: "billing"
model Order {
id Int @id
user User @relation(fields: [userId], references: [id])
userId Int
@@schema("billing")
}
When two schemas have tables with the same name, use unique model names and @@map to disambiguate:
model BaseConfig {
id Int @id
@@map("Config")
@@schema("base")
}
model UserConfig {
id Int @id
@@map("Config")
@@schema("users")
}
InvoicePayment)accountId)@map("account_id")@@map("invoice_payments")"billing", "inventory", "auth")id String @id @default(uuid())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at") // Soft delete
amount Decimal @db.Decimal(36, 18) // High precision
Use Decimal for any financial value. Float is not acceptable for money.
// One-to-Many
accountId String @map("account_id")
account Account @relation(fields: [accountId], references: [id])
// Many-to-Many (use explicit join table for control)
@@index([accountId]) // Foreign keys
@@index([status, createdAt]) // Common query patterns
@@unique([accountId, nonce]) // Business uniqueness constraints
Add indexes based on actual query patterns, not speculative.
prisma validateprisma formatprisma generateprisma migrate dev --name add_entity_nameDetect the package manager from the repo (lockfile or packageManager in package.json) and prefix commands accordingly (npx, pnpm exec, yarn exec, bunx, or direct if globally installed).
Moving a model from one schema to another drops the table in the source schema and recreates it in the target. Back up data before applying such migrations.
schemas array defined in datasource block@@schema("...")Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub widnyana/eyay-toolkits --plugin ts-backend-dev