benchmark-agents
Advanced AI agent benchmark scenarios that push Vercel's cutting-edge platform features —…
Vercel Runtime Cache API guidance — ephemeral per-region key-value cache with tag-based invalidation. Shared across Functions, Routing Middleware, and Builds. Use when implementing caching strategies beyond framework-level caching.
$ npx -y skills add vercel/vercel-plugin --skill runtime-cache --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/runtime-cacheContext preview
The summary Claude sees to decide when to auto-load this skill.
Vercel Runtime Cache API guidance — ephemeral per-region key-value cache with tag-based invalidation. Shared across Functions, Routing Middleware, and Builds. Use when implementing caching strategies beyond framework-level caching.
name: runtime-cache
description: Vercel Runtime Cache API guidance — ephemeral per-region key-value cache with tag-based invalidation. Shared across Functions, Routing Middleware, and Builds. Use when implementing caching strategies beyond framework-level caching.
metadata:
priority: 6
docs:
- "https://nextjs.org/docs/app/api-reference/directives/use-cache-remote"
sitemap: "https://nextjs.org/sitemap.xml"
pathPatterns:
- 'lib/cache/**'
- 'src/lib/cache/**'
- 'lib/cache.*'
- 'src/lib/cache.*'
bashPatterns:
- '\bnpm\s+(install|i|add)\s+[^\n]*@vercel/functions\b'
- '\bpnpm\s+(install|i|add)\s+[^\n]*@vercel/functions\b'
- '\bbun\s+(install|i|add)\s+[^\n]*@vercel/functions\b'
- '\byarn\s+add\s+[^\n]*@vercel/functions\b'
validate:
-
pattern: 'from\s+[''""](redis|ioredis)[''""]|require\s*\(\s*[''""](redis|ioredis)[''""]|new\s+Redis\('
message: 'Direct Redis/ioredis client detected. Use Upstash Redis (@upstash/redis) for serverless-native Redis with HTTP-based connections.'
severity: recommended
upgradeToSkill: vercel-storage
upgradeWhy: 'Replace direct Redis/ioredis with @upstash/redis for serverless-compatible HTTP-based Redis that works without persistent TCP connections.'
skipIfFileContains: 'from\s+[''""]\@upstash/redis[''""]'
retrieval:
aliases:
- cache api
- kv cache
- region cache
- tag invalidation
intents:
- add caching
- cache api response
- invalidate cache
- set up runtime cache
entities:
- Runtime Cache
- tag-based invalidation
- key-value
- cache
chainTo:
-
pattern: 'from\s+[''""]@vercel/kv[''""]'
targetSkill: vercel-storage
message: '@vercel/kv is sunset — loading Vercel Storage guidance for Upstash Redis migration.'
-
pattern: 'from\s+[''""]ioredis[''""]|new\s+Redis\('
targetSkill: vercel-storage
message: 'Direct Redis client detected — loading Vercel Storage guidance for Upstash Redis (serverless-native) integration.'You are an expert in the Vercel Runtime Cache — an ephemeral caching layer for serverless compute.
The Runtime Cache is a **per-region key-value store** accessible from Vercel Functions, Routing Middleware, and Builds. It supports **tag-based invalidation** for granular cache control.
All APIs from `@vercel/functions`:
import { getCache } from '@vercel/functions';
const cache = getCache();
// Store data with TTL and tags
await cache.set('user:123', userData, {
ttl: 3600, // seconds
tags: ['users', 'user:123'], // for bulk invalidation
name: 'user-profile', // human-readable label for observability
});
// Retrieve cached data (returns value or undefined)
const data = await cache.get('user:123');
// Delete a specific key
await cache.delete('user:123');
// Expire all entries with a tag (propagates globally within 300ms)
await cache.expireTag('users');
await cache.expireTag(['users', 'user:123']); // multiple tagsconst cache = getCache({
namespace: 'api', // prefix for keys
namespaceSeparator: ':', // separator (default)
keyHashFunction: (key) => sha256(key), // custom key hashing
});import { getCache } from '@vercel/functions';
export default {
async fetch(request: Request) {
const cache = getCache();
const cached = await cache.get('blog-posts');
if (cached) {
return Response.json(cached);
}
const posts = await fetch('https://api.example.com/posts').then(r => r.json());
await cache.set('blog-posts', posts, {
ttl: 3600,
tags: ['blog'],
});
return Response.json(posts);
},
};'use server';
import { getCache } from '@vercel/functions';
export async function invalidateBlog() {
await getCache().expireTag('blog');
}These purge across **all three cache layers** (CDN + Runtime Cache + Data Cache):
import { invalidateByTag, dangerouslyDeleteByTag } from '@vercel/functions';
// Stale-while-revalidate: serves stale, revalidates in background
await invalidateByTag('blog-posts');
// Hard delete: next request blocks while fetching from origin (cache stampede risk)
await dangerouslyDeleteByTag('blog-posts', {
revalidationDeadlineSeconds: 3600,
});**Important distinction**:
// next.config.ts
const nextConfig: NextConfig = { cacheComponents: true };import { cacheLife, cacheTag } from 'next/cache';
async function getData() {
'use cache: remote' // stores in Vercel Runtime Cache
cacheTag('example-tag')
cacheLife({ expire: 3600 })
return fetch('https://api.example.com/data').then(r => r.json());
}| Function | Context | Behavior | |----------|---------|----------| | `updateTag(tag)` | Server Actions only | Immediate expiration, read-your-own-writes | | `revalidateTag(tag, 'max')` | Server Actions + Route Handlers | Stale-while-revalidate
Comprehensive Vercel ecosystem plugin — relational knowledge graph, skills for every major product, specialized agents, and Vercel conventions. Turns any AI agent into a Vercel expert.
Repo: vercel-labs/vercel-plugin
Advanced AI agent benchmark scenarios that push Vercel's cutting-edge platform features —…
End-to-end benchmark suite for vercel-plugin. Runs realistic projects through skill…
Run vercel-plugin eval scenarios in Vercel Sandboxes instead of local WezTerm panels.…
Create and launch benchmark test projects to exercise vercel-plugin skill injection across…
Audit vercel-plugin performance on real-world projects. Extracts tool calls from Claude Code…
Release vercel-plugin — run gates, bump version, generate artifacts, commit, and push. Use…