AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured migration path for upgrading Prisma ORM from version 6 to 7. It addresses critical breaking changes, including the move to an ESM-first architecture, the introduction of the prisma.config.ts file, and the mandatory requirement of driver adapters for SQL-based database connections. The guide covers package updates, schema generator modifications, environment variable handling, and client instantiation updates. Note that this migration path is strictly for SQL-based projects; MongoDB users are advised to remain on Prisma 6.x or consider alternative upgrade paths.
What it does
- Provides step-by-step instructions for upgrading Prisma packages to v7.
- Guides the configuration of driver adapters for various SQL databases.
- Details the transition to the new prisma.config.ts file format.
- Explains how to update TypeScript configurations for ESM compatibility.
- Outlines the replacement of deprecated patterns like Prisma.validator.
- Offers specific guidance for users of Prisma Accelerate.
When to use it
- When upgrading an existing project from Prisma ORM v6 to v7.
- When encountering errors related to Prisma v7 breaking changes.
- When configuring new driver adapters for SQL database connectivity.
- When setting up the required prisma.config.ts file.
Advantages
- Ensures a systematic approach to handling critical breaking changes.
- Reduces manual effort by providing clear configuration templates.
- Provides specific paths for both standard SQL and Accelerate-based setups.
- Helps avoid common pitfalls like incorrect import paths or missing adapters.
Usage examples
- “How do I upgrade my project to Prisma 7?”
- The agent provides the full migration workflow, starting with package updates, schema generator changes, and the installation of the appropriate driver adapter.
- “I am getting errors after upgrading to Prisma 7, what should I check?”
- The agent guides you through verifying your prisma.config.ts, checking your driver adapter implementation, and ensuring your import paths match the new generated client structure.
- “How do I configure a driver adapter for PostgreSQL in Prisma 7?”
- The agent provides the specific npm installation command and the TypeScript code snippet to instantiate the PrismaClient with the PrismaPg adapter.
- “Can I use this guide to migrate my MongoDB project to Prisma 7?”
- The agent clarifies that Prisma 7 does not support MongoDB and advises keeping the project on Prisma 6.x.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/prisma/prisma-upgrade-v7/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip prisma-upgrade-v7.zip -d .agents/skills
Documentation by prisma
Upgrade to Prisma ORM 7
Complete guide for migrating from Prisma ORM v6 to v7. This upgrade introduces significant breaking changes around the new prisma-client generator, driver adapters, prisma.config.ts, explicit environment loading, and generated client entrypoints.
When to Apply
Reference this skill when:
Upgrading from Prisma v6 to v7
Updating to the
prisma-clientgeneratorSetting up driver adapters
Configuring
prisma.config.tsFixing import errors after upgrade
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Schema Migration | CRITICAL | schema-changes |
| 2 | Database Connectivity | CRITICAL | driver-adapters |
| 3 | Module System | CRITICAL | esm-support |
| 4 | Config and Env | HIGH | prisma-config, env-variables |
| 5 | Removed Features | HIGH | removed-features |
| 6 | Accelerate | HIGH | accelerate-users |
Quick Reference
schema-changes- generator migration, required output paths, generated entrypoints, andPrisma.validatorreplacementdriver-adapters- required adapter installation for SQL providers, pool differences, and Prisma Postgres adapter choicesesm-support- ESM-first setup plus CommonJS fallback withmoduleFormat = "cjs"prisma-config- creating and usingprisma.config.tsenv-variables- explicit environment loadingremoved-features- removed middleware, metrics, and legacy CLI behavioraccelerate-users- migration notes for Accelerate users
Using MongoDB? This guide does not apply
Prisma 7 has no MongoDB connector. Do not apply any step in this guide to a project with
provider = "mongodb" — see the prisma-mongodb-upgrade skill for the actual decision
(stay on v6 deliberately vs migrate to Prisma 8).
Important Notes
MongoDB projects should stay on Prisma 6.x or migrate to Prisma 8 - do not migrate MongoDB apps to Prisma 7's SQL client path (see
prisma-mongodb-upgrade)Node.js 20.19.0+ required
TypeScript 5.4.0+ required
Latest stable Prisma ORM version:
7.6.0
Upgrade Steps Overview
Update packages to v7
Choose your module format (
esmby default,cjsif needed)Update TypeScript configuration
Update the schema generator block
Create
prisma.config.tsInstall and configure a driver adapter for SQL providers
Update Prisma Client imports
Update client instantiation
Replace deprecated helper patterns like
Prisma.validatorRun
prisma generateand test
Quick Upgrade Commands
# Update packages
npm install @prisma/client@7
npm install -D prisma@7
# Install a driver adapter (PostgreSQL or Prisma Postgres via direct TCP)
npm install @prisma/adapter-pg pg
# Install dotenv for env loading
npm install dotenv
# Regenerate client
npx prisma generateBreaking Changes Summary
| Change | v6 | v7 |
|---|---|---|
| Module format | Implicit / mixed | ESM-first, moduleFormat = "cjs" supported |
| Generator provider | prisma-client-js | prisma-client is the default, while prisma-client-js still exists for legacy setups |
| Output path | Auto (node_modules) | Required explicit |
| Driver adapters | Optional | Required for SQL providers |
| Config file | .env + schema | prisma.config.ts |
| Env loading | Automatic | Manual (dotenv) |
| Generated entrypoints | Single package export | client, browser, models, enums entrypoints |
| Type-safe query fragments | Prisma.validator() | TypeScript satisfies |
| Middleware | $use() | Client Extensions |
| Metrics | Preview feature | Removed |
Rule Files
Detailed migration guides for each breaking change:
references/esm-support.md - ESM and CommonJS configuration
references/schema-changes.md - Generator, output, imports, and generated entrypoints
references/driver-adapters.md - Required driver adapter setup
references/prisma-config.md - New configuration file
references/env-variables.md - Environment variable loading
references/removed-features.md - Middleware, metrics, and CLI flags
references/accelerate-users.md - Special handling for AccelerateStep-by-Step Migration
1. Update package.json for ESM-first projects
{
"type": "module"
}If you need to stay on CommonJS, keep your app as CJS and set moduleFormat = "cjs" in the generator block instead of forcing ESM.
2. Update tsconfig.json
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"strict": true,
"esModuleInterop": true
}
}3. Update schema.prisma
// Before (v6)
generator client {
provider = "prisma-client-js"
}
// After (v7)
generator client {
provider = "prisma-client"
output = "../generated/prisma"
// Optional if you need CommonJS:
// moduleFormat = "cjs"
}4. Create prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})5. Install a driver adapter (SQL providers only)
# PostgreSQL
npm install @prisma/adapter-pg pg
# MySQL
npm install @prisma/adapter-mariadb mariadb
# SQLite
npm install @prisma/adapter-better-sqlite3 better-sqlite3
# Prisma Postgres in standard Node.js apps (recommended)
npm install @prisma/adapter-pg pg
# Prisma Postgres serverless driver (edge/serverless)
npm install @prisma/adapter-ppg @prisma/ppg
# Neon
npm install @prisma/adapter-neonMongoDB does not have a SQL @prisma/adapter-* package in the published Prisma 7.6.0 packages. If you're upgrading a MongoDB project, stop and keep that project on the latest Prisma 6.x release instead of following the standard Prisma 7 migration path.
6. Update client instantiation
// Before (v6)
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// After (v7)
import { PrismaClient } from '../generated/prisma/client'
import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL
})
const prisma = new PrismaClient({ adapter })7. Replace Prisma.validator with satisfies
import { Prisma } from '../generated/prisma/client'
const userSelect = {
id: true,
email: true,
name: true,
} satisfies Prisma.UserSelect8. Run migrations and generate
npx prisma generate
npx prisma migrate dev # if neededTroubleshooting
"Cannot find module" errors
Check that the generator
outputpath matches your import pathEnsure
prisma generateran successfully
SSL certificate errors
Add
ssl: { rejectUnauthorized: false }to the adapter config if you need to preserve old behaviorOr configure your certificates properly with
NODE_EXTRA_CA_CERTS/ OpenSSL CA settings
Connection timeout issues
Driver adapters use the underlying driver's defaults, which differ from v6
Configure pool settings explicitly on the adapter if needed
Resources
How to Use
Follow references/schema-changes.md and references/driver-adapters.md first, then apply the remaining reference files based on your project setup.
Files
- ATTRIBUTION.mdAdded by AutoGineer867 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md7.9 KiB
- references/accelerate-users.md3.4 KiB
- references/driver-adapters.md6.0 KiB
- references/env-variables.md3.3 KiB
- references/esm-support.md3.1 KiB
- references/prisma-config.md3.3 KiB
- references/removed-features.md4.6 KiB
- references/schema-changes.md3.6 KiB
references/removed-features.md
Removed Features
Several features have been removed in Prisma v7. Here's how to migrate.
Client Middleware
Removed
// ❌ No longer works in v7
prisma.$use(async (params, next) => {
const before = Date.now()
const result = await next(params)
const after = Date.now()
console.log(`Query took ${after - before}ms`)
return result
})Use Client Extensions Instead
// ✅ v7 approach
const prisma = new PrismaClient({ adapter }).$extends({
query: {
$allModels: {
async $allOperations({ operation, model, args, query }) {
const before = Date.now()
const result = await query(args)
const after = Date.now()
console.log(`${model}.${operation} took ${after - before}ms`)
return result
},
},
},
})Common Middleware Patterns
Soft delete
const prisma = new PrismaClient({ adapter }).$extends({
query: {
user: {
async delete({ args, query }) {
// Convert delete to soft delete
return prisma.user.update({
where: args.where,
data: { deletedAt: new Date() },
})
},
async findMany({ args, query }) {
// Filter out soft-deleted records
args.where = { ...args.where, deletedAt: null }
return query(args)
},
},
},
})Logging
const prisma = new PrismaClient({ adapter }).$extends({
query: {
$allModels: {
async $allOperations({ operation, model, args, query }) {
console.log(`${model}.${operation}`, JSON.stringify(args))
return query(args)
},
},
},
})Metrics
Removed
The Metrics preview feature has been removed.
// ❌ No longer works
const metrics = await prisma.$metrics.json()Alternatives
Custom counter with extensions
let totalQueries = 0
const prisma = new PrismaClient({ adapter }).$extends({
client: {
async $totalQueries() {
return totalQueries
},
},
query: {
$allModels: {
async $allOperations({ query, args }) {
totalQueries += 1
return query(args)
},
},
},
})
// Usage
const count = await prisma.$totalQueries()Use driver-level metrics
Access metrics from the underlying driver adapter.
CLI Flags Removed
--skip-generate
Removed from migrate dev and db push.
# v6
prisma migrate dev --skip-generate
# v7 - generate is not run automatically
prisma migrate dev
prisma generate # Run explicitly if neededLocal verification with Prisma 7.6.0 showed no generated client files emitted by migrate dev or db push, even though some CLI help text still says migrate dev "trigger[s] generators".
--skip-seed
Removed from migrate dev. More importantly, Prisma v7 no longer auto-runs seeds during migrate dev or migrate reset, so seed explicitly when you need it.
# v6
prisma migrate dev --skip-seed
# v7 - seed is not run automatically
prisma migrate dev
prisma db seed # Run explicitly if needed--schema and --url from db execute
# v6
prisma db execute --file ./script.sql --url "$DATABASE_URL"
# v7 - configure in prisma.config.ts
prisma db execute --file ./script.sqlmigrate diff Options
| Removed | Replacement |
|---|---|
--from-url | --from-config-datasource |
--to-url | --to-config-datasource |
--from-schema-datasource | --from-config-datasource |
--to-schema-datasource | --to-config-datasource |
--shadow-database-url | Configure in prisma.config.ts |
Example
# v6
prisma migrate diff --from-url "$DATABASE_URL" --to-schema schema.prisma
# v7
prisma migrate diff --from-config-datasource --to-schema schema.prismaAutomatic Behaviors Removed
Auto-generate after migrate
# v7 workflow
prisma migrate dev --name add_field
prisma generate # Must run explicitlyAuto-seed after migrate
# v7 workflow
prisma migrate reset --force
prisma db seed # Must run explicitlyPrisma.validator
The prisma-client generator no longer exposes Prisma.validator. Use TypeScript's satisfies operator instead.
import { Prisma } from '../generated/prisma/client'
const userSelect = {
id: true,
email: true,
} satisfies Prisma.UserSelectrejectOnNotFound
Removed in v5.0.0 (already deprecated).
// ❌ Removed
const prisma = new PrismaClient({
rejectOnNotFound: true,
})
// ✅ Use OrThrow methods
const user = await prisma.user.findUniqueOrThrow({
where: { id: 1 },
})
const user = await prisma.user.findFirstOrThrow({
where: { email: '[email protected]' },
})Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- prisma
- Publisher
- Prisma (Official)
- Source
- prisma/skills · prisma-upgrade-v7 · commit 8ea289b
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by prisma or Prisma.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download prisma-upgrade-v7.zip