agentleFS
iwritec0deiwritec0de/app-dev/skills/prisma-orm/SKILL.md

prisma-orm

Skill3 starsChanged 7 months agoMITView on GitHub

Prisma ORM expertise for schema design, migrations, client usage, and deployment. Use when writing Prisma schemas, creating migrations, querying with Prisma Client, defining relations, or deploying database changes. Triggers on "prisma", "prisma schema", "prisma migrate", "prisma client", "prisma relation", "@@map", "@@index", "prisma generate", "prisma studio", "prisma deploy".

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read reference/client-patterns.md for CRUD recipes, nested writes, transactions, and error handling.

    line 96
  2. Very specific:

    Read reference/migration-workflow.md for CI/CD integration, handling drift, and rollback strategies.

    line 117

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Prisma ORM Skill

You are a Prisma ORM expert for TypeScript applications.

Critical Rules

  • Run prisma generate after schema changes — the client is code-generated, not runtime
  • Use migrate dev in development — creates migration files and applies them
  • Use migrate deploy in production — applies pending migrations without creating new ones
  • Never use db push in production — it doesn't create migration files and can lose data
  • Name relations explicitly — when a model has multiple relations to the same target
  • Add @@index for query performance — Prisma doesn't auto-create indexes on FKs
  • Use transactions for multi-step operations — prisma.$transaction() for consistency

Schema Design

model User {
  id        String   @id @default(uuid())
  email     String   @unique
  name      String?
  posts     Post[]
  profile   Profile?
  createdAt DateTime @default(now()) @map("created_at")
  updatedAt DateTime @updatedAt @map("updated_at")

  @@map("users")
  @@index([email])
}

model Post {
  id       String @id @default(uuid())
  title    String
  content  String?
  author   User   @relation(fields: [authorId], references: [id], onDelete: Cascade)
  authorId String @map("author_id")

  @@map("posts")
  @@index([authorId])
}

Key attributes: @id, @unique, @default(), @map(), @relation(), @@map(), @@index(), @@unique(). Read reference/schema-patterns.md for all types and patterns.

Relations

TypeSchema Pattern
One-to-OneFK with @unique on one side, optional ? field on other
One-to-ManyFK on "many" side, array [] on "one" side
Many-to-Many (implicit)Array [] on both sides, Prisma creates junction table
Many-to-Many (explicit)Junction model with two @relation fields
Self-relationModel references itself (e.g., parent/children)

Client Usage

// Create with relation
const user = await prisma.user.create({
  data: { email: 'a@b.com', name: 'Alice', posts: { create: { title: 'Hello' } } },
  include: { posts: true },
});

// Query with filtering
const posts = await prisma.post.findMany({
  where: { author: { email: { contains: '@company.com' } } },
  orderBy: { createdAt: 'desc' },
  take: 20,
  skip: 0,
  select: { id: true, title: true, author: { select: { name: true } } },
});

// Cursor pagination (preferred over offset)
const next = await prisma.post.findMany({
  cursor: { id: lastId },
  skip: 1,
  take: 20,
  orderBy: { id: 'asc' },
});

Read reference/client-patterns.md for CRUD recipes, nested writes, transactions, and error handling.

Migrations

# Development: create and apply migration
npx prisma migrate dev --name add_user_table

# Production: apply pending migrations
npx prisma migrate deploy

# Reset database (development only)
npx prisma migrate reset

# Generate client after schema change
npx prisma generate

# Browse database
npx prisma studio

Read reference/migration-workflow.md for CI/CD integration, handling drift, and rollback strategies.

Advanced

  • Raw queries — prisma.$queryRaw for complex SQL not supported by client
  • Transactions — prisma.$transaction([...]) for sequential, or prisma.$transaction(async (tx) => {...}) for interactive
  • Middleware — prisma.$use() for logging, soft delete, audit trails
  • Connection pooling — use pgbouncer=true in connection string for serverless

Anti-Patterns

  • Don't use db push in prod — no migration history, can drop columns
  • Don't skip @@index — Prisma doesn't auto-index foreign keys
  • Don't fetch all fields — use select to reduce payload
  • Don't ignore N+1 — use include to eager-load relations
  • Don't edit migration files — create new migrations to fix issues
  • Don't use prisma migrate dev in CI — use prisma migrate deploy

Related

  • reference/schema-patterns.md — Model patterns, field types, attributes, enums, multi-file schemas
  • reference/client-patterns.md — CRUD recipes, filtering, transactions, raw SQL, error handling
  • reference/migration-workflow.md — Dev vs prod workflow, seeding, CI/CD, rollback

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.