prisma-cli-db-pull
SKILL.md
prisma db pull
Introspects an existing database and updates your Prisma schema to reflect its structure.
Command
prisma db pull [options]
What It Does
- Connects to your database
- Reads the database schema (tables, columns, relations, indexes)
- Updates
schema.prismawith corresponding Prisma models - For MongoDB, samples data to infer schema
Options
| Option | Description |
|---|---|
--force |
Ignore current Prisma schema file |
--print |
Print the introspected Prisma schema to stdout |
--schema |
Custom path to your Prisma schema |
--config |
Custom path to your Prisma config file |
--url |
Override the datasource URL from the Prisma config file |
--composite-type-depth |
Specify the depth for introspecting composite types (default: -1 for infinite, 0 = off) |
--schemas |
Specify the database schemas to introspect |
--local-d1 |
Generate a Prisma schema from a local Cloudflare D1 database |
Examples
Basic introspection
prisma db pull
Preview without writing
prisma db pull --print
Outputs schema to terminal for review.
Force overwrite
prisma db pull --force
Replaces schema file, losing any manual customizations.
Prerequisites
Configure database connection in prisma.config.ts:
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
datasource: {
url: env('DATABASE_URL'),
},
})
Workflow
Starting from existing database
-
Initialize Prisma:
prisma init -
Configure database URL
-
Pull schema:
prisma db pull -
Review and customize generated schema
-
Generate client:
prisma generate
Syncing changes from database
When database changes are made outside Prisma:
prisma db pull
prisma generate
Generated Schema Example
Database tables become Prisma models:
-- Database tables
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(100)
);
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author_id INTEGER REFERENCES users(id)
);
Becomes:
model users {
id Int @id @default(autoincrement())
email String @unique @db.VarChar(255)
name String? @db.VarChar(100)
posts posts[]
}
model posts {
id Int @id @default(autoincrement())
title String @db.VarChar(255)
author_id Int?
users users? @relation(fields: [author_id], references: [id])
}
Post-Introspection Cleanup
After db pull, consider:
-
Rename models to PascalCase:
model User { // Was: users @@map("users") } -
Rename fields to camelCase:
authorId Int? @map("author_id") -
Add relation names for clarity:
author User? @relation("PostAuthor", fields: [authorId], references: [id]) -
Add documentation:
/// User account information model User { /// Primary email for authentication email String @unique }
MongoDB Introspection
For MongoDB, db pull samples documents to infer schema:
prisma db pull
May require manual refinement since MongoDB is schemaless.
Warning
db pull overwrites your schema file. Always:
- Commit current schema before pulling
- Use
--printto preview first - Backup customizations you want to keep
Weekly Installs
2
Repository
prisma/cursor-pluginGitHub Stars
5
First Seen
Mar 18, 2026
Security Audits
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
codex2