Antigravity-fullstack-hq prisma-workflow
Prisma ORM best practices, schema design, migrations, seeding, and query optimization for PostgreSQL. Use when working with database schemas, migrations, or Prisma queries.
install
source · Clone the upstream repo
git clone https://github.com/desilokesh1/antigravity-fullstack-hq
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/desilokesh1/antigravity-fullstack-hq "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/prisma-workflow" ~/.claude/skills/desilokesh1-antigravity-fullstack-hq-prisma-workflow && rm -rf "$T"
manifest:
skills/prisma-workflow/SKILL.mdsource content
Prisma Workflow
Schema Design
model User { id String @id @default(cuid()) email String @unique name String? role Role @default(USER) posts Post[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([email]) } model Post { id String @id @default(cuid()) title String content String? published Boolean @default(false) author User @relation(fields: [authorId], references: [id], onDelete: Cascade) authorId String @@index([authorId]) } enum Role { USER ADMIN }
Migration Workflow
- Edit
schema.prisma npx prisma migrate dev --name descriptive_name- Review generated SQL in
prisma/migrations/ - Test on development
for productionnpx prisma migrate deploy
Good Migration Names
npx prisma migrate dev --name add_user_role npx prisma migrate dev --name create_posts_table npx prisma migrate dev --name add_index_on_email
Query Patterns
Select Specific Fields
const user = await prisma.user.findUnique({ where: { id }, select: { id: true, email: true, name: true } })
Include Relations
const user = await prisma.user.findUnique({ where: { id }, include: { posts: true } })
Pagination
const users = await prisma.user.findMany({ skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' } })
Transactions
await prisma.$transaction([ prisma.user.update({ where: { id }, data: { balance: { decrement: 100 } } }), prisma.order.create({ data: { userId: id, amount: 100 } }) ])
Performance Tips
- Always index foreign keys
- Use
to fetch only needed fieldsselect - Use
for large tablestake - Batch operations with
createMany - Use transactions for related operations
Prisma Service (NestJS)
@Injectable() export class PrismaService extends PrismaClient implements OnModuleInit { async onModuleInit() { await this.$connect() } }