Agent Native

vercel-storage

This skill guides agents through Vercel's storage ecosystem, including Blob for file uploads, Global Config for edge-accessible configuration, and Marketplace…

by VercelOfficial publisherNot reviewed

Identity proven by GitHub's verified organisation badge (vercel, vercel-labs)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
License
Apache-2.0 (permissive)
Pin
2a1e58dpinned Oct 9, 2026
Context cost
about 3,400 tokenswhen the skill loads
GitHub stars
300on vercel/vercel-plugin
Scripts
None found

What it does

“Vercel storage expert guidance — Blob, Global Config (formerly Edge Config), and Marketplace storage (Neon Postgres, Upstash Redis). Use when choosing, configuring, or using data storage with Vercel applications.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill guides agents through Vercel's storage ecosystem, including Blob for file uploads, Global Config for edge-accessible configuration, and Marketplace options like Neon Postgres, Upstash Redis, Supabase, Prisma, MongoDB, Convex, and Turso. It covers setup via Vercel Marketplace, API usage for each service, and migration paths from deprecated packages like @vercel/postgres and @vercel/kv.

When to use it

  • Choosing between Vercel storage solutions for a project
  • Setting up databases, caching, or file storage on Vercel
  • Migrating from sunset packages (@vercel/postgres, @vercel/kv)
  • Configuring Neon, Redis, Blob, or Global Config with environment variables

When not to

  • Using storage outside Vercel deployments or unrelated platforms
  • Implementing auth logic (use Auth skill for Clerk, Auth0)
  • General database design unrelated to Vercel integrations

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add vercel/vercel-plugin --skill vercel-storage

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install vercel/vercel-plugin vercel-storage@2a1e58dfb63c064c2589c0c21b3e93c53728f8d5

Installs the commit we checked (2a1e58d).

Copy by hand

Download the folder at 2a1e58d and put it in .claude/skills/vercel-storage for Claude Code and in .agents/skills/vercel-storage for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 2a1e58d

Claude Code plugin

/plugin install vercel@claude-plugins-official

The publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "vercel-storage" by Vercel.

Source, pinned to commit 2a1e58dfb63c064c2589c0c21b3e93c53728f8d5:
https://github.com/vercel/vercel-plugin/tree/2a1e58dfb63c064c2589c0c21b3e93c53728f8d5/skills/vercel-storage

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/vercel-storage/ for Claude Code and .agents/skills/vercel-storage/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/vercel/vercel-storage

SKILL.md at the pin

---
name: vercel-storage
description: Vercel storage expert guidance — Blob, Global Config (formerly Edge Config), and Marketplace storage (Neon Postgres, Upstash Redis). Use when choosing, configuring, or using data storage with Vercel applications.
metadata:
  priority: 7
  docs:
    - "https://vercel.com/docs/storage"
  sitemap: "https://vercel.com/sitemap.xml"
  pathPatterns:
    - 'lib/blob/**'
    - 'lib/storage/**'
    - 'src/lib/blob/**'
    - 'src/lib/storage/**'
    - 'lib/blob.*'
    - 'lib/storage.*'
    - 'lib/edge-config.*'
    - 'lib/global-config.*'
    - 'src/lib/blob.*'
    - 'src/lib/storage.*'
    - 'src/lib/edge-config.*'
    - 'src/lib/global-config.*'
    - 'supabase/**'
    - 'lib/supabase.*'
    - 'src/lib/supabase.*'
    - 'prisma/schema.prisma'
    - 'prisma/**'
  bashPatterns:
    - '\bnpm\s+(install|i|add)\s+[^\n]*@vercel/blob\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@vercel/blob\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@vercel/blob\b'
    - '\byarn\s+add\s+[^\n]*@vercel/blob\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@vercel/edge-config\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@vercel/edge-config\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@vercel/edge-config\b'
    - '\byarn\s+add\s+[^\n]*@vercel/edge-config\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@vercel/global-config\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@vercel/global-config\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@vercel/global-config\b'
    - '\byarn\s+add\s+[^\n]*@vercel/global-config\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@neondatabase/serverless\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@neondatabase/serverless\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@neondatabase/serverless\b'
    - '\byarn\s+add\s+[^\n]*@neondatabase/serverless\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@upstash/redis\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@upstash/redis\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@upstash/redis\b'
    - '\byarn\s+add\s+[^\n]*@upstash/redis\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@vercel/kv\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@vercel/kv\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@vercel/kv\b'
    - '\byarn\s+add\s+[^\n]*@vercel/kv\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@vercel/postgres\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@vercel/postgres\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@vercel/postgres\b'
    - '\byarn\s+add\s+[^\n]*@vercel/postgres\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@supabase/supabase-js\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@supabase/supabase-js\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@supabase/supabase-js\b'
    - '\byarn\s+add\s+[^\n]*@supabase/supabase-js\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@supabase/ssr\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@supabase/ssr\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@supabase/ssr\b'
    - '\byarn\s+add\s+[^\n]*@supabase/ssr\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@prisma/client\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@prisma/client\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@prisma/client\b'
    - '\byarn\s+add\s+[^\n]*@prisma/client\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*\bmongodb\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*\bmongodb\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*\bmongodb\b'
    - '\byarn\s+add\s+[^\n]*\bmongodb\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*\bconvex\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*\bconvex\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*\bconvex\b'
    - '\byarn\s+add\s+[^\n]*\bconvex\b'
    - '\bnpm\s+(install|i|add)\s+[^\n]*@libsql/client\b'
    - '\bpnpm\s+(install|i|add)\s+[^\n]*@libsql/client\b'
    - '\bbun\s+(install|i|add)\s+[^\n]*@libsql/client\b'
    - '\byarn\s+add\s+[^\n]*@libsql/client\b'
  importPatterns:
    - "@vercel/blob"
    - "@vercel/edge-config"
    - "@vercel/global-config"
    - "@neondatabase/serverless"
    - "@upstash/redis"
    - "@vercel/kv"
    - "@vercel/postgres"
    - "@supabase/supabase-js"
    - "@prisma/client"
validate:
  -
    pattern: from\s+['"]@vercel/kv['"]
    message: '@vercel/kv is deprecated — migrate to @upstash/redis (Redis.fromEnv()) instead. Run `vercel integration add upstash` for one-click setup.'
    severity: error
    upgradeToSkill: vercel-storage
    upgradeWhy: 'Reload storage guidance for @vercel/kv → @upstash/redis migration steps, Marketplace provisioning, and API differences.'
    skipIfFileContains: '@upstash/redis'
  -
    pattern: from\s+['"]@vercel/postgres['"]
    message: '@vercel/postgres is deprecated — use @neondatabase/serverless with drizzle-orm instead. Run `vercel integration add neon` for one-click setup.'
    severity: error
    upgradeToSkill: vercel-storage
    upgradeWhy: 'Reload storage guidance for @vercel/postgres → @neondatabase/serverless migration steps, Marketplace provisioning, and drizzle-orm setup.'
    skipIfFileContains: '@neondatabase/serverless'
  -
    pattern: from\s+['"]@vercel/edge-config['"]
    message: 'Edge Config is now Global Config — @vercel/global-config is a drop-in replacement for @vercel/edge-config. The legacy package cannot read newly connected stores (it only reads EDGE_CONFIG).'
    severity: recommended
    skipIfFileContains: '@vercel/global-config'
chainTo:
  -
    pattern: "@vercel/postgres"
    targetSkill: vercel-storage
    message: '@vercel/postgres is sunset — migrate to @neondatabase/serverless. Run `vercel integration add neon` for one-click Marketplace provisioning with unified billing.'
    skipIfFileContains: "@neondatabase/serverless|from\\s+['\"]@neondatabase"
  -
    pattern: "createPool\\s*\\(|from\\s+['\"]@vercel/postgres/pool['\"]"
    targetSkill: vercel-storage
    message: 'createPool from @vercel/postgres detected — this package is sunset. Use @neondatabase/serverless with neon() or Pool for connection pooling.'
    skipIfFileContains: "@neondatabase/serverless|from\\s+['\"]@neondatabase"
  -
    pattern: "sql\\s*`|from\\s+['\"]@vercel/postgres['\"].*sql"
    targetSkill: vercel-storage
    message: 'sql template literal from @vercel/postgres detected — this API is sunset. Use @neondatabase/serverless with neon() for tagged template queries.'
    skipIfFileContains: "@neondatabase/serverless|from\\s+['\"]@neondatabase"
  -
    pattern: "from\\s+['\"]@supabase/(supabase-js|ssr)['\"]"
    targetSkill: vercel-storage
    message: 'Supabase client detected — loading Vercel Storage guidance for Marketplace-native Neon Postgres + Upstash Redis alternatives with unified billing.'
  -
    pattern: "from\\s+['\"](mongodb|mongoose)['\"]"
    targetSkill: vercel-storage
    message: 'MongoDB/Mongoose import detected — loading Vercel Storage guidance for Marketplace-native database options (Neon Postgres, Upstash Redis) with auto-provisioned env vars.'
  -
    pattern: "from\\s+['\"]@prisma/client['\"]|from\\s+['\"]prisma['\"]"
    targetSkill: vercel-storage
    message: 'Prisma ORM detected — loading Vercel Storage guidance for Neon Postgres integration with Prisma, connection pooling, and Marketplace provisioning.'
    skipIfFileContains: "@neondatabase/serverless|POSTGRES_PRISMA_URL"
  -
    pattern: "from\\s+['\"]@libsql/client['\"]"
    targetSkill: vercel-storage
    message: 'libSQL/Turso client detected — loading Vercel Storage guidance for Marketplace-native alternatives (Neon Postgres, Upstash Redis) with unified billing and auto-provisioned env vars.'
    skipIfFileContains: "@neondatabase/serverless|@upstash/redis"
  -
    pattern: "from\\s+['\"]convex['\"]|from\\s+['\"]convex/['\"]"
    targetSkill: vercel-storage
    message: 'Convex import detected — loading Vercel Storage guidance for Marketplace-native database options (Neon Postgres, Upstash Redis) with auto-provisioned env vars and unified billing.'
    skipIfFileContains: "@neondatabase/serverless|@upstash/redis"
  -
    pattern: "from\\s+['\"]@supabase/supabase-js['\"]"
    targetSkill: auth
    message: 'Supabase client detected — if using Supabase Auth, loading Auth guidance for Clerk (native Vercel Marketplace) as the recommended managed auth provider.'
    skipIfFileContains: "@clerk/|@auth0/|@descope/"
retrieval:
  aliases:
    - database
    - blob storage
    - redis
    - postgres
  intents:
    - add storage
    - set up database
    - configure blob storage
    - use global config
    - use edge config
  entities:
    - Blob
    - Global Config
    - Edge Config
    - Neon Postgres
    - Upstash Redis
    - Vercel Storage

---

# Vercel Storage

You are an expert in Vercel's storage options. Know which products are active, which are sunset, and when to use each.

## Provider Choice for Bootstrap

Choose storage provisioning paths in this order:

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.
2. **Fallback**: Provider CLI/manual provisioning only when Marketplace is unavailable or you must use an existing external account.

When using fallback/manual provisioning, you must add/sync environment variables yourself and then re-run `vercel env pull .env.local --yes` locally.

## Active First-Party Storage

### Vercel Blob — File Storage

Fast, scalable storage for unstructured data (images, videos, documents, any files).

```bash
npm install @vercel/blob
```

```ts
import { put, del, list, get } from '@vercel/blob'

// Upload from server (public)
const blob = await put('images/photo.jpg', file, {
  access: 'public',
})
// blob.url → public URL

// Upload private file
const privateBlob = await put('docs/secret.pdf', file, {
  access: 'private',
})
// Read a private file by pathname
const privateFile = await get('docs/secret.pdf', { access: 'private' })
if (privateFile?.statusCode === 200) {
  // privateFile.stream contains the body; privateFile.blob contains metadata
}

// Client upload (up to 5 TB)
import { upload } from '@vercel/blob/client'
const blob = await upload('video.mp4', file, {
  access: 'public',
  handleUploadUrl: '/api/upload', // Your token endpoint
})

// List blobs
const { blobs } = await list()

// Conditional get with ETags
const response = await get('images/photo.jpg', {
  access: 'public', // `access` is required and must match the store
  ifNoneMatch: previousETag,
})
if (response?.statusCode === 304) {
  // Not modified, use cached version
}

// Delete
await del('images/photo.jpg')
```

**Private Storage** (generally available): Create a private store with `vercel blob create-store <name> --access private`. Connected projects use short-lived OIDC credentials and `BLOB_STORE_ID` by default. Use `access: 'private'` for uploads and reads. To deliver a private file, authenticate the request in your own route, call `get(pathname, { access: 'private' })`, return 404 when the result is `null`, and otherwise stream `result.stream` to the caller. Use `presignUrl()` when a caller needs temporary direct access. Pass `useCache: false` only when a read must reflect an overwrite immediately.

**Blob Data Transfer**: Public blob downloads, and Functions fetching private blobs from the store, use **Blob Data Transfer** (19 regional hubs, cost-optimized for large assets). When a Function streams a private blob to users, that response uses **Fast Data Transfer** (126+ PoPs across 51 countries, latency-optimized).

**Use when**: Media files, user uploads, documents, any large unstructured data.

### Vercel Global Config (formerly Edge Config)

Ultra-low-latency key-value store for application configuration. Not a database — designed for config data that must be read instantly at the edge. Renamed from **Edge Config** in July 2026 — the store itself is unchanged.

```bash
npm install @vercel/global-config
```

```ts
import { get, getAll, has } from '@vercel/global-config'

// Read a single value (< 1ms at the edge)
const isFeatureEnabled = await get('feature-new-ui')

// Read multiple values
const config = await getAll(['feature-new-ui', 'ab-test-variant', 'redirect-rules'])

// Check existence
const exists = await has('maintenance-mode')
```

**Use when**: Feature flags, A/B testing config, dynamic routing rules, maintenance mode toggles. Anything that must be read at the edge with near-zero latency.

**Do NOT use for**: User data, session state, frequently written data. Global Config is optimized for reads, not writes.

**Migration**: `@vercel/global-config` is a drop-in replacement for `@vercel/edge-config`. It reads the `GLOBAL_CONFIG` env var and falls back to `EDGE_CONFIG`, so upgrading is always safe. The legacy package only reads `EDGE_CONFIG` and cannot read newly connected stores — upgrade before connecting a new store. The `vercel edge-config` CLI command is now `vercel global-config` (old form still works). https://vercel.com/docs/global-config/migration-guide

**Next.js 16**: `@vercel/edge-config@^1.4.3` supports `cacheComponents` and the renamed `proxy.ts` (formerly `middleware.ts`); `@vercel/global-config` carries this forward.

## Marketplace Storage (Partner-Provided)

### IMPORTANT: @vercel/postgres and @vercel/kv are SUNSET

These packages no longer exist as first-party Vercel products. Use the marketplace replacements:

### Neon Postgres (replaces @vercel/postgres)

Serverless Postgres with branching, auto-scaling, and connection pooling. The driver is GA at `@neondatabase/serverless@^1.0.2` and requires **Node.js 19+**.

```bash
npm install @neondatabase/serverless
```

```ts
// Direct Neon usage
import { neon } from '@neondatabase/serverless'

const sql = neon(process.env.DATABASE_URL!)
const users = await sql`SELECT * FROM users WHERE id = ${userId}`

// With Drizzle ORM
import { drizzle } from 'drizzle-orm/neon-http'
import { neon } from '@neondatabase/serverless'

const sql = neon(process.env.DATABASE_URL!)
const db = drizzle(sql)
```

**Build-time safety**: The `neon()` call above throws if `DATABASE_URL` is not set. Since Next.js evaluates top-level module code at build time, this will crash `next build` when env vars aren't yet configured (e.g., first deploy before Marketplace provisioning). Use lazy initialization:

```ts
// src/db/index.ts — lazy initialization (safe for build time)
import { neon } from '@neondatabase/serverless'
import { drizzle } from 'drizzle-orm/neon-http'
import * as schema from './schema'

function createDb() {
  const sql = neon(process.env.DATABASE_URL!)
  return drizzle(sql, { schema })
}

let _db: ReturnType<typeof createDb> | null = null

export function getDb() {
  if (!_db) _db = createDb()
  return _db
}
```

**WARNING: Do NOT use JavaScript `Proxy` wrappers around the DB client.** A common pattern is wrapping `db` in a `Proxy` for lazy initialization. This breaks libraries like NextAuth/Auth.js that inspect the DB adapter object (e.g., checking method existence, iterating properties). The Proxy intercepts those checks and breaks the auth request chain, causing hangs with no error. Use a plain `getDb()` function or a simple module-level lazy `let` instead.

**Drizzle Kit migrations**: `drizzle-kit` and `tsx` do NOT auto-load `.env.local`. Source env vars manually or use `dotenv`:

```bash
# Option 1: Source env vars before running
source <(grep -v '^#' .env.local | sed 's/^/export /') && npx drizzle-kit push

# Option 2: Use dotenv-cli (recommended for scripts)
npm install -D dotenv-cli
npx dotenv -e .env.local -- npx drizzle-kit push
npx dotenv -e .env.local -- npx tsx scripts/seed.ts
```

This applies to any Node script that needs Vercel-provisioned env vars — only Next.js auto-loads `.env.local`.

Install via Vercel Marketplace for automatic environment variable provisioning.

#### Neon CLI Fallback Notes

If you use Neon CLI as the fallback path, account/project setup is managed on Neon directly instead of through Vercel Marketplace automation.

For **Vercel-managed Neon projects**, CLI operations require a **Neon API key**; do not rely on normal browser-auth login flow alone.

### Upstash Redis (replaces @vercel/kv)

Serverless Redis with same Vercel billing integration.

```bash
npm install @upstash/redis
```

```ts
import { Redis } from '@upstash/redis'

const redis = Redis.fromEnv() // Uses UPSTASH_REDIS_REST_URL & TOKEN

// Basic operations
await redis.set('session:abc', { userId: '123' }, { ex: 3600 })
const session = await redis.get('session:abc')

// Rate limiting
import { Ratelimit } from '@upstash/ratelimit'
const ratelimit = new Ratelimit({
  redis,
  limiter: Ratelimit.slidingWindow(10, '10s'),
})
const { success } = await ratelimit.limit('user:123')
```

Install via Vercel Marketplace for automatic environment variable provisioning.

### Supabase (Marketplace Native)

Full Postgres database with built-in auth, realtime subscriptions, and storage. Native Vercel Marketplace integration.

```bash
npm install @supabase/supabase-js @supabase/ssr
```

```ts
import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)

const { data, error } = await supabase.from('users').select('*')
```

Install via Vercel Marketplace: `vercel integration add supabase`

### Prisma ORM (Marketplace Native)

Type-safe ORM with auto-generated client, migrations, and Prisma Accelerate for connection pooling.

```bash
npm install prisma @prisma/client
npx prisma init
```

```ts
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()
const users = await prisma.user.findMany()
```

Install via Vercel Marketplace: `vercel integration add prisma`

### MongoDB Atlas

Document database with flexible schemas. Available via Vercel Marketplace.

```bash
npm install mongodb
```

```ts
import { MongoClient } from 'mongodb'

const client = new MongoClient(process.env.MONGODB_URI!)
const db = client.db('myapp')
const users = await db.collection('users').find({}).toArray()
```

Install via Vercel Marketplace: `vercel integration add mongodb-atlas`

### Convex

Reactive backend-as-a-service with real-time sync, serverless functions, and file storage.

```bash
npm install convex
npx convex dev
```

```ts
import { query } from './_generated/server'
import { v } from 'convex/values'

export const getUsers = query({
  args: {},
  handler: async (ctx) => {
    return await ctx.db.query('users').collect()
  },
})
```

### Turso (libSQL)

Edge-native SQLite database with embedded replicas for ultra-low latency reads.

```bash
npm install @libsql/client
```

```ts
import { createClient } from '@libsql/client'

const turso = createClient({
  url: process.env.TURSO_DATABASE_URL!,
  authToken: process.env.TURSO_AUTH_TOKEN!,
})

const result = await turso.execute('SELECT * FROM users')
```

Install via Vercel Marketplace: `vercel integration add turso`

## Storage Decision Matrix

| Need | Use | Package |
|------|-----|---------|
| File uploads, media, documents | Vercel Blob | `@vercel/blob` |
| Feature flags, A/B config | Global Config | `@vercel/global-config` |
| Relational data, SQL queries | Neon Postgres | `@neondatabase/serverless` |
| Key-value cache, sessions, rate limiting | Upstash Redis | `@upstash/redis` |
| Postgres + auth + realtime + storage | Supabase | `@supabase/supabase-js` |
| Type-safe ORM with migrations | Prisma | `@prisma/client` |
| Document database, flexible schemas | MongoDB Atlas | `mongodb` |
| Reactive backend with real-time sync | Convex | `convex` |
| Edge-native SQLite with replicas | Turso | `@libsql/client` |
| Full-text search | Neon Postgres (pg_trgm) or Elasticsearch (Marketplace) | varies |
| Vector embeddings | Neon Postgres (pgvector) or Pinecone (Marketplace) | varies |

## Migration Guide

### From @vercel/postgres → Neon
```diff
- import { sql } from '@vercel/postgres'
+ import { neon } from '@neondatabase/serverless'
+ const sql = neon(process.env.DATABASE_URL!)

```

### From @vercel/kv → Upstash Redis
```diff
- import { kv } from '@vercel/kv'
- await kv.set('key', 'value')
- const value = await kv.get('key')
+ import { Redis } from '@upstash/redis'
+ const redis = Redis.fromEnv()
+ await redis.set('key', 'value')
+ const value = await redis.get('key')
```

## Installing Marketplace Storage

Use the Vercel CLI or the Marketplace dashboard at `https://vercel.com/dashboard/{team}/stores`:

```bash
# Install a storage integration (auto-provisions env vars)
vercel integration add neon
vercel integration add upstash

# List installed integrations
vercel integration list
```

`vercel install <slug>` (or `vercel i <slug>`) is an alias for `vercel integration add <slug>`. Either form also installs the provider's own agent skills from [skills.sh](https://skills.sh) for providers that publish them — follow those instead of recalling the provider's API from memory. If the database provisions but only the skill install fails, don't re-run the command — that can create a *second* database. Have the user run the `npx skills add …` recovery command the CLI prints instead.

Browse additional storage options at the [Vercel Marketplace](https://vercel.com/marketplace). Installing via the CLI or dashboard (`https://vercel.com/dashboard/{team}/integrations`) automatically provisions accounts, creates databases, and sets environment variables.

## Cross-References

- **Choosing and installing a non-storage integration** → `⤳ skill: marketplace`
- **Pulling and syncing the provisioned env vars** → `⤳ skill: env-vars`
- **Sign up / log in providers** → `⤳ skill: auth`

## Official Documentation

- [Vercel Storage](https://vercel.com/docs/storage)
- [Vercel Blob](https://vercel.com/docs/vercel-blob)
- [Global Config](https://vercel.com/docs/global-config)
- [Vercel Marketplace](https://vercel.com/marketplace) — Neon, Upstash, and other storage integrations
- [Integrations](https://vercel.com/docs/integrations)
- [GitHub: Vercel Storage](https://github.com/vercel/storage)

From vercel/vercel-plugin at 2a1e58d, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at 2a1e58d

Files

2 files, 22 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 2a1e58d
All 50 skills from Vercel

More from Vercel

  • next-bundle-optimizer

    Audits Next.js applications to identify and reduce browser bundle size and initial-load work by analyzing routes, dependencies and client outputs.

    Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 6 days ago

  • next-cache-components-optimizer

    Optimize Next.js routes to display meaningful UI instantly on initial load or client navigation by encoding the optimization goal as a failing…

    Claude Code, Codex, Cursor +4 · about 5.6K tokens · pinned 6 days ago

  • next-partial-prefetching-adoption

    Enables Partial Prefetching in Next.js 16.3+ apps and guides adoption through auditing Link prefetch behavior, preserving UI in tests or manually, and…

    Claude Code, Codex, Cursor +4 · about 6.7K tokens · pinned 6 days ago

  • next-partial-prefetching-optimizer

    This skill optimizes Next.js client-side navigation under Partial Prefetching by defining what UI loads before and after a click.

    Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago

  • apple

    This skill emulates Apple's OAuth and OIDC services for local development and testing.

    Claude Code, Codex, Cursor +4 · about 1.9K tokens · pinned 6 days ago

  • aws

    This skill emulates AWS cloud services locally, providing S3 bucket and object operations, SQS message queues, IAM user and role management, and STS assume…

    Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago

  • prisma-8

    This skill helps agents work with Prisma 8, a contract-first data layer for TypeScript projects.

    by PrismaOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 3.5K tokens · pinned 6 days ago

  • prisma-next-contract

    This skill enables editing the Prisma Next data contract, the single source of truth for your data layer.

    by PrismaOfficial publisher

    Claude Code, Codex, Cursor +4 · about 6.9K tokens · pinned 6 days ago

  • prisma-next-migrations

    Author and execute Prisma Next migrations by choosing between quick database updates or formal migration plans with data transforms.

    by PrismaOfficial publisher

    Claude Code, Codex, Cursor +4 · about 10K tokens · pinned 6 days ago

  • prisma-next-queries

    Write queries against Postgres, SQLite, or MongoDB using Prisma Next.

    by PrismaOfficial publisher

    Claude Code, Codex, Cursor +4 · about 3.5K tokens · pinned 6 days ago

  • prisma-next-runtime

    This skill covers configuring and wiring the Prisma Next database runtime in db.ts, including choosing between Postgres, SQLite, or MongoDB facades, composing…

    by PrismaOfficial publisher

    Claude Code, Codex, Cursor +4 · about 6.1K tokens · pinned 6 days ago

  • neon-serverless

    Configures the Neon Serverless Driver for database connectivity in serverless and edge environments like Vercel Edge Functions, AWS Lambda, and Cloudflare…

    by NeonOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 680 tokens · pinned 6 days ago

Open roles at Vercel

5 of 11 open roles on the jobs board

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use