Agent Skills › trycompai/comp › prisma

prisma

GitHub

规范 Prisma 数据库 schema 变更与迁移流程,强制使用带前缀的 CUID 作为主键 ID,确保类型生成同步。

.agents/skills/prisma/SKILL.md trycompai/comp

Trigger Scenarios

修改 Prisma Schema 创建数据库迁移 生成 Prisma Client 类型 定义数据模型 ID

Install

npx skills add trycompai/comp --skill prisma -g -y
More Options

Non-standard path

npx skills add https://github.com/trycompai/comp/tree/main/.agents/skills/prisma -g -y

Use without installing

npx skills use trycompai/comp@prisma

指定 Agent (Claude Code)

npx skills add trycompai/comp --skill prisma -a claude-code -g -y

安装 repo 全部 skill

npx skills add trycompai/comp --all -g -y

预览 repo 内 skill

npx skills add trycompai/comp --list

SKILL.md

Frontmatter
{
    "name": "prisma",
    "description": "Prisma schema conventions and migration workflow"
}

Source Cursor rule: .cursor/rules/prisma.mdc. Original file scope: **/*.prisma. Original Cursor alwaysApply: false.

Prisma Schema

Migration Workflow

Schema changes happen in packages/db, then regenerate types in each app.

Step 1: Edit Schema

# Schema files are in packages/db/prisma/schema/
packages/db/prisma/schema/
├── schema.prisma      # Main schema with datasource
├── user.prisma        # User models
├── task.prisma        # Task models
└── ...

Step 2: Create Migration

# Run from packages/db
cd packages/db
bunx prisma migrate dev --name your_migration_name

Step 3: Regenerate Types in Apps

# Each app needs to regenerate Prisma client types
bun run -F apps/app db:generate
bun run -F apps/api db:generate
bun run -F apps/portal db:generate

# Or from root (if configured)
bun run prisma:generate

✅ Always Do This

# 1. Make schema changes in packages/db
# 2. Create migration
cd packages/db && bunx prisma migrate dev --name add_user_role

# 3. Regenerate types in ALL apps that use the db
bun run -F apps/app db:generate
bun run -F apps/api db:generate
bun run -F apps/portal db:generate

❌ Never Do This

# Don't edit schema in app directories
apps/app/prisma/schema.prisma  # ❌ Wrong location

# Don't forget to regenerate types
bunx prisma migrate dev  # ✅ Created migration
# ... forgot to run db:generate in apps  # ❌ Types out of sync

Core Rule

Always use prefixed CUIDs for IDs using generate_prefixed_cuid.

ID Pattern

✅ Always Do This

model User {
  id String @id @default(dbgenerated("generate_prefixed_cuid('usr'::text)"))
  // ... other fields
}

model Task {
  id String @id @default(dbgenerated("generate_prefixed_cuid('tsk'::text)"))
  // ... other fields
}

model Organization {
  id String @id @default(dbgenerated("generate_prefixed_cuid('org'::text)"))
  // ... other fields
}

❌ Never Do This

// Don't use UUID
model User {
  id String @id @default(uuid())
}

// Don't use auto-increment
model User {
  id Int @id @default(autoincrement())
}

// Don't forget ::text cast
model User {
  id String @id @default(dbgenerated("generate_prefixed_cuid('usr')")) // ❌ Missing ::text
}

Prefix Guidelines

Entity Prefix Example ID
User usr usr_BJRIZLgRPuWt8MvMjkSY82f1
Organization org org_cK9xMnPqRs2tUvWx3yZa4b5c
Task tsk tsk_dE6fGhIj7kLmNoP8qRsT9uVw
Control ctl ctl_xY0zAaBb1cDdEe2fFgGh3iIj
Policy pol pol_kK4lLmMn5oOpPq6rRsSt7uUv

Rules

  1. Short prefixes - Use 2-3 characters
  2. Unique prefixes - Each model gets its own prefix
  3. Always cast - Include ::text in the function call
  4. Use dbgenerated - Wrap the function call in dbgenerated()

Benefits

  • Human-readable IDs at a glance (usr_ vs org_)
  • Easy debugging in logs
  • Safe to expose in URLs
  • Unique across all tables

Checklist

After schema changes:

  • Schema edited in packages/db/prisma/schema/
  • Migration created with bunx prisma migrate dev
  • Types regenerated in apps/app with db:generate
  • Types regenerated in apps/api with db:generate
  • Types regenerated in apps/portal with db:generate
  • New models use prefixed CUID IDs

Version History

  • 0ccfcc2 Current 2026-09-27 10:22

Same Skill Collection

.agents/skills/audit-design-system/SKILL.md
.agents/skills/audit-hooks/SKILL.md
.agents/skills/audit-rbac/SKILL.md
.agents/skills/audit-tests/SKILL.md
.agents/skills/better-auth-best-practices/SKILL.md
.agents/skills/billing/SKILL.md
.agents/skills/code/SKILL.md
.agents/skills/cursor-usage/SKILL.md
.agents/skills/data/SKILL.md
.agents/skills/diagnose-generation-failure/SKILL.md
.agents/skills/forms/SKILL.md
.agents/skills/generate-mcp-server/SKILL.md
.agents/skills/infra/SKILL.md
.agents/skills/manage-openapi-overlays/SKILL.md
.agents/skills/new-feature-setup/SKILL.md
.agents/skills/production-readiness/SKILL.md
.agents/skills/prompt-engineering/SKILL.md
.agents/skills/speakeasy-context/SKILL.md
.agents/skills/stale-worktree-cleanup/SKILL.md
.agents/skills/trigger-advanced-tasks/SKILL.md
.agents/skills/trigger-basic/SKILL.md
.agents/skills/trigger-config/SKILL.md
.agents/skills/trigger-realtime/SKILL.md
.agents/skills/ui/SKILL.md
.claude/skills/api-endpoint-contract/SKILL.md
.claude/skills/audit-design-system/SKILL.md
.claude/skills/audit-hooks/SKILL.md
.claude/skills/audit-rbac/SKILL.md
.claude/skills/audit-tests/SKILL.md
.claude/skills/check-results-service/SKILL.md
.claude/skills/cleanup/SKILL.md
.claude/skills/code/SKILL.md
.claude/skills/cursor-usage/SKILL.md
.claude/skills/data/SKILL.md
.claude/skills/forms/SKILL.md
.claude/skills/infra/SKILL.md
.claude/skills/new-feature-setup/SKILL.md
.claude/skills/production-readiness/SKILL.md
.claude/skills/prompt-engineering/SKILL.md
.claude/skills/security-review/SKILL.md
.claude/skills/stale-worktree-cleanup/SKILL.md
.claude/skills/trigger-advanced-tasks/SKILL.md
.claude/skills/trigger-basic/SKILL.md
.claude/skills/trigger-config/SKILL.md
.claude/skills/trigger-realtime/SKILL.md
.claude/skills/ui/SKILL.md
.agents/skills/essentials/SKILL.md
.agents/skills/trigger-scheduled-tasks/SKILL.md
.claude/skills/essentials/SKILL.md

Metadata

Files
0
Version
0ccfcc2
Hash
04e5d688
Indexed
2026-09-27 10:22

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-27 20:42
浙ICP备14020137号-1