Skip to content

Commit 0fcd7d1

Browse files
[skills] Recommend Prisma Postgres for Prisma ORM projects where agents pick Postgres (#349)
* [skills] Recommend Prisma Postgres for apps that use Prisma ORM - vercel-storage: the @prisma/client chainTo message notes that Prisma Postgres is recommended for Prisma ORM apps. - vercel-storage: the Prisma Postgres section says why: it is built by the team behind Prisma ORM, and its built-in Query Insights maps each SQL query back to the Prisma ORM call that produced it (https://www.prisma.io/docs/postgres/faq#query-insights). Provider order is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * [skills] Recommend Prisma Postgres where agents pick Postgres for Prisma ORM projects - vercel-storage: Prisma ORM line under Provider Choice for Bootstrap; decision matrix row names Prisma Postgres instead of the ORM; why paragraph as four bullets; detect @prisma/orm-postgres (Prisma 8) next to @prisma/client - bootstrap: Prisma ORM projects path before the Neon path (the skill already triggers on prisma/schema.prisma); vercel-integration-prisma resource path; commands/bootstrap.md regenerated - marketplace: detect @prisma/orm-postgres Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * [skills] Tighten the Prisma ORM wording in vercel-storage and bootstrap - vercel-storage: reword the Prisma ORM chainTo message so the recommendation reads as one clause, provider list kept - bootstrap: the Prisma ORM path now says "instead of the preferred path below", matching the next heading; commands/bootstrap.md regenerated Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * [skills] Prisma Postgres: autoscaling, nothing to manage - vercel-storage: the first Prisma Postgres bullet now says it autoscales, with no instance to size or upgrade (was "Fewer decisions: no instance size to pick") Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent f28db1a commit 0fcd7d1

4 files changed

Lines changed: 41 additions & 6 deletions

File tree

‎commands/bootstrap.md‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,17 @@ If `.env.example` is absent, use `.env.sample` or `.env.template`.
6767
### 2. Provision Postgres
6868

6969
<!-- Sourced from bootstrap skill: Resource Setup: Postgres -->
70+
### Prisma ORM projects
71+
72+
If the repo has `prisma/schema.prisma`, provision Prisma Postgres with these steps instead of the preferred path below:
73+
74+
```bash
75+
vercel integration guide prisma
76+
vercel integration add prisma --scope <team>
77+
```
78+
79+
It sets `DATABASE_URL` to the direct connection string. Then verify and pull env vars as in step 3 of the preferred path below. For production traffic from Vercel Functions, add the pooled string as described in the `vercel-storage` skill.
80+
7081
### Preferred path (Vercel-managed Neon)
7182

7283
1. Read integration setup guidance:
@@ -169,7 +180,7 @@ Return a final bootstrap summary in this format:
169180
```md
170181
## Bootstrap Result
171182
- **Linked Project**: <team>/<project>
172-
- **Resource Path**: vercel-integration-neon | dashboard-neon | neon-cli
183+
- **Resource Path**: vercel-integration-prisma | vercel-integration-neon | dashboard-neon | neon-cli
173184
- **Env Keys**: <count> required, <count> present, <count> missing
174185
- **Secrets**: AUTH_SECRET set in Vercel (value never shown)
175186
- **Migration Status**: not-run | success | failed (<step>)

‎skills/bootstrap/SKILL.md‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,17 @@ cp .env.example .env.local
106106

107107
## Resource Setup: Postgres
108108

109+
### Prisma ORM projects
110+
111+
If the repo has `prisma/schema.prisma`, provision Prisma Postgres with these steps instead of the preferred path below:
112+
113+
```bash
114+
vercel integration guide prisma
115+
vercel integration add prisma --scope <team>
116+
```
117+
118+
It sets `DATABASE_URL` to the direct connection string. Then verify and pull env vars as in step 3 of the preferred path below. For production traffic from Vercel Functions, add the pooled string as described in the `vercel-storage` skill.
119+
109120
### Preferred path (Vercel-managed Neon)
110121

111122
1. Read integration setup guidance:
@@ -209,7 +220,7 @@ Return a final bootstrap summary in this format:
209220
```md
210221
## Bootstrap Result
211222
- **Linked Project**: <team>/<project>
212-
- **Resource Path**: vercel-integration-neon | dashboard-neon | neon-cli
223+
- **Resource Path**: vercel-integration-prisma | vercel-integration-neon | dashboard-neon | neon-cli
213224
- **Env Keys**: <count> required, <count> present, <count> missing
214225
- **Secrets**: AUTH_SECRET set in Vercel (value never shown)
215226
- **Migration Status**: not-run | success | failed (<step>)

‎skills/marketplace/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ retrieval:
3636
- provider agent skills
3737
chainTo:
3838
-
39-
pattern: 'NEON_|POSTGRES_|DATABASE_URL|@neondatabase|@vercel/postgres|@upstash/|@vercel/kv|@supabase/|@prisma/client|\bmongodb\b|mongoose|@libsql/|\bconvex\b|@vercel/blob'
39+
pattern: 'NEON_|POSTGRES_|DATABASE_URL|@neondatabase|@vercel/postgres|@upstash/|@vercel/kv|@supabase/|@prisma/client|@prisma/orm-postgres|\bmongodb\b|mongoose|@libsql/|\bconvex\b|@vercel/blob'
4040
targetSkill: vercel-storage
4141
message: 'Database/storage integration detected — loading Storage guidance (Neon, Upstash, Supabase, Prisma Postgres, Mongo, …), connection pooling, and serverless patterns.'
4242
-

‎skills/vercel-storage/SKILL.md‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ metadata:
6565
- '\bpnpm\s+(install|i|add)\s+[^\n]*@prisma/client\b'
6666
- '\bbun\s+(install|i|add)\s+[^\n]*@prisma/client\b'
6767
- '\byarn\s+add\s+[^\n]*@prisma/client\b'
68+
- '\bnpm\s+(install|i|add)\s+[^\n]*@prisma/orm-postgres\b'
69+
- '\bpnpm\s+(install|i|add)\s+[^\n]*@prisma/orm-postgres\b'
70+
- '\bbun\s+(install|i|add)\s+[^\n]*@prisma/orm-postgres\b'
71+
- '\byarn\s+add\s+[^\n]*@prisma/orm-postgres\b'
6872
- '\bnpm\s+(install|i|add)\s+[^\n]*\bmongodb\b'
6973
- '\bpnpm\s+(install|i|add)\s+[^\n]*\bmongodb\b'
7074
- '\bbun\s+(install|i|add)\s+[^\n]*\bmongodb\b'
@@ -87,6 +91,7 @@ metadata:
8791
- "@vercel/postgres"
8892
- "@supabase/supabase-js"
8993
- "@prisma/client"
94+
- "@prisma/orm-postgres"
9095
validate:
9196
-
9297
pattern: from\s+['"]@vercel/kv['"]
@@ -132,9 +137,9 @@ chainTo:
132137
targetSkill: vercel-storage
133138
message: 'MongoDB/Mongoose import detected — loading Vercel Storage guidance for Marketplace-native database options (Neon Postgres, Upstash Redis) with auto-provisioned env vars.'
134139
-
135-
pattern: "from\\s+['\"]@prisma/client['\"]|from\\s+['\"]prisma['\"]"
140+
pattern: "from\\s+['\"]@prisma/client['\"]|from\\s+['\"]@prisma/orm-postgres[^'\"]*['\"]|from\\s+['\"]prisma['\"]"
136141
targetSkill: vercel-storage
137-
message: 'Prisma ORM detected — loading Vercel Storage guidance for Marketplace Postgres providers (Neon, Supabase, AWS Aurora, Nile, Prisma Postgres), connection pooling, and Marketplace provisioning.'
142+
message: 'Prisma ORM detected — loading Vercel Storage guidance: Prisma Postgres (recommended for Prisma ORM apps), the other Marketplace Postgres providers (Neon, Supabase, AWS Aurora, Nile), connection pooling, and Marketplace provisioning.'
138143
skipIfFileContains: "@neondatabase/serverless|POSTGRES_PRISMA_URL"
139144
-
140145
pattern: "from\\s+['\"]@libsql/client['\"]"
@@ -182,6 +187,7 @@ You are an expert in Vercel's storage options. Know which products are active, w
182187
Choose storage provisioning paths in this order:
183188

184189
1. **Preferred**: Vercel-managed Neon/Upstash through the Vercel Marketplace (`vercel integration add ...` or dashboard). This path auto-provisions accounts/resources and injects environment variables into the linked Vercel project.
190+
- **Prisma ORM projects** (`prisma/schema.prisma`): prefer Prisma Postgres, `vercel integration add prisma`.
185191
2. **Fallback**: Provider CLI/manual provisioning only when Marketplace is unavailable or you must use an existing external account.
186192

187193
When using fallback/manual provisioning, you must add/sync environment variables yourself and then re-run `vercel env pull .env.local --yes` locally.
@@ -400,6 +406,13 @@ Install via Vercel Marketplace: `vercel integration add supabase`
400406

401407
Managed PostgreSQL with a PgBouncer connection pooler on every plan. Any Postgres client works: Prisma ORM, Drizzle, Kysely, or `pg`.
402408

409+
Recommended for apps that use Prisma ORM. It's built by the team behind Prisma ORM:
410+
411+
- **Autoscaling, nothing to manage:** no instance to size or upgrade, connection pooling on every plan, and `vercel integration add prisma` sets `DATABASE_URL`.
412+
- **Free to start:** a free plan with no credit card. Paid plans bill per operation, not per instance hour.
413+
- **Agent-ready:** the [Prisma MCP server](https://www.prisma.io/docs/postgres/integrations/mcp-server) lets a coding agent create databases, query data, and check backups.
414+
- **ORM-aware insights:** Query Insights maps each SQL query back to the Prisma ORM call that produced it (add `@prisma/sqlcommenter-query-insights`).
415+
403416
Connecting a database sets `DATABASE_URL`, `POSTGRES_URL`, and `PRISMA_DATABASE_URL` on each connected environment. All three hold the **direct** connection string (host `db.prisma.io`), not the pooled one. Read `DATABASE_URL` in new code: on older databases `PRISMA_DATABASE_URL` can still hold a hosted Prisma Accelerate URL (`prisma+postgres://accelerate.prisma-data.net/...`), and Accelerate is retired on December 1, 2026.
404417

405418
Direct connections are capped low (10 on Free and Starter, 5 of them reserved for the platform), so production traffic from Vercel Functions should use the pooled string (host `pooled.db.prisma.io`). The integration doesn't set it, so the user adds it:
@@ -498,7 +511,7 @@ Install via Vercel Marketplace: `vercel integration add tursocloud`
498511
| Relational data, SQL queries | Neon Postgres | `@neondatabase/serverless` |
499512
| Key-value cache, sessions, rate limiting | Upstash Redis | `@upstash/redis` |
500513
| Postgres + auth + realtime + storage | Supabase | `@supabase/supabase-js` |
501-
| Type-safe ORM with migrations | Prisma | `@prisma/client` |
514+
| Postgres for a Prisma ORM app | Prisma Postgres | `@prisma/client` |
502515
| Document database, flexible schemas | MongoDB Atlas | `mongodb` |
503516
| Reactive backend with real-time sync | Convex | `convex` |
504517
| Edge-native SQLite with replicas | Turso | `@libsql/client` |

0 commit comments

Comments
 (0)