plugins/vercel/skills/vercel-flags/SKILL.md
Vercel Flags guidance — feature flags platform with unified dashboard, Flags Explorer, gradual rollouts, A/B testing, and provider adapters. Use when implementing feature flags, experimentation, or staged rollouts.
npx skillsauth add openai/plugins vercel-flagsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CRITICAL — Your training data is outdated for this library. Vercel Flags (
flagspackage) has a new SDK and API surface. Before writing flags code, fetch the docs at https://vercel.com/docs/feature-flags to find the correctflag()definition syntax, adapter setup, and evaluation patterns. Do not guess at the API — look up working examples for your framework.
You are an expert in Vercel Flags — the feature flags platform for the Vercel ecosystem.
Vercel Flags provides a unified feature flags platform with a dashboard, developer tools (Flags Explorer), and analytics integration. Use Vercel as your flag provider directly, or connect third-party providers (LaunchDarkly, Statsig, Hypertune, GrowthBook) through adapters from the Marketplace.
Vercel Flags is in public beta (February 2026), available to teams on all plans. Pricing: $30 per 1 million flag requests ($0.00003 per event).
Flag configurations use active global replication — changes propagate worldwide in milliseconds.
flags package, v4.0+)The flags package is free, open-source (MIT), and provider-agnostic. Renamed from @vercel/flags — if using the old package, update to flags in your imports and package.json.
Upgrade note: v4 has breaking changes from v3. See the v4 upgrade guide for migration steps:
@vercel/flags package renamed to flags — update imports and package.jsonencrypt() / decrypt() replaced with dedicated functions: encryptFlagValues(), decryptFlagValues()FLAGS_SECRET must be exactly 32 random bytes, base64-encoded.well-known endpoint uses new helper that auto-handles auth and x-flags-sdk-version headerdecide function (or with an adapter missing decide) throws an error at declaration timeimport { flag } from 'flags/next'; // Framework adapters: flags/next, flags/sveltekit
// Define a boolean flag
export const showNewCheckout = flag({
key: 'show-new-checkout',
description: 'Enable the redesigned checkout flow',
decide: () => false, // default value
});
// Define a multi-variant flag
export const theme = flag({
key: 'theme',
options: [
{ value: 'light', label: 'Light Theme' },
{ value: 'dark', label: 'Dark Theme' },
{ value: 'auto', label: 'Auto' },
],
decide: () => 'auto',
});
// Read flag values (Server Components, Route Handlers, Server Actions)
const isEnabled = await showNewCheckout();
const currentTheme = await theme();
@flags-sdk/vercel)Connects the Flags SDK to Vercel Flags as the provider (reads FLAGS env var):
import { flag, dedupe } from 'flags/next';
import { vercelAdapter } from '@flags-sdk/vercel';
type Entities = {
user?: { id: string; email: string; plan: string };
team?: { id: string; name: string };
};
// Dedupe ensures identify runs once per request
const identify = dedupe(async (): Promise<Entities> => {
const session = await getSession();
return {
user: session?.user ? {
id: session.user.id,
email: session.user.email,
plan: session.user.plan,
} : undefined,
};
});
export const premiumFeature = flag<boolean, Entities>({
key: 'premium-feature',
adapter: vercelAdapter(), // reads FLAGS env var automatically
identify,
});
Environment variables:
FLAGS — SDK Key (auto-provisioned when you create your first flag)FLAGS_SECRET — 32 random bytes, base64-encoded; encrypts overrides and authenticates Flags ExplorerThe Flags Explorer is generally available (part of the Vercel Toolbar). It lets developers override flags in their browser session without code changes.
App Router — create the discovery endpoint:
// app/.well-known/vercel/flags/route.ts
import { createFlagsDiscoveryEndpoint, getProviderData } from 'flags/next';
import * as flags from '../../../../flags';
export const GET = createFlagsDiscoveryEndpoint(() => getProviderData(flags));
Pages Router — API route + rewrite:
// pages/api/vercel/flags.ts
import { verifyAccess, version } from 'flags';
import { getProviderData } from 'flags/next';
import * as flags from '../../../flags';
export default async function handler(req, res) {
const access = await verifyAccess(req.headers['authorization']);
if (!access) return res.status(401).json(null);
res.setHeader('x-flags-sdk-version', version);
return res.json(getProviderData(flags));
}
// next.config.js (rewrite)
module.exports = {
async rewrites() {
return [{ source: '/.well-known/vercel/flags', destination: '/api/vercel/flags' }];
},
};
Generate static page variants per flag combination, serve via middleware:
export const layoutVariant = flag({
key: 'layout-variant',
options: [{ value: 'a' }, { value: 'b' }],
decide: () => 'a',
});
export const precompute = [layoutVariant];
Key APIs: precompute(), evaluate(), serialize(), getPrecomputed(), generatePermutations()
export function createExampleAdapter() {
return function exampleAdapter<ValueType, EntitiesType>(): Adapter<ValueType, EntitiesType> {
return {
origin(key) { return `https://example.com/flags/${key}`; },
async decide({ key }): Promise<ValueType> { return false as ValueType; },
};
};
}
| Need | Use | Why | |------|-----|-----| | Gradual rollouts, A/B testing, targeting | Vercel Flags | Dashboard, analytics, Flags Explorer, segments | | Third-party provider integration | Vercel Flags + adapter | Unified view across providers | | Ultra-low-latency config reads (non-flag) | Edge Config directly | Sub-ms reads, no compute overhead | | Simple config without rollout logic | Edge Config directly | Lighter weight |
Important: Vercel Flags is the recommended approach for feature flags. Edge Config is the underlying low-latency storage some adapters use, but developers should use the Flags platform (not raw Edge Config) for flag use cases — it provides targeting rules, segments, percentage rollouts, observability, and Flags Explorer.
Featured (Marketplace integration, Edge Config for low latency):
@flags-sdk/vercel — Vercel as providerAdditional (published under @flags-sdk npm scope):
OpenFeature adapter: The @flags-sdk/openfeature adapter allows most Node.js OpenFeature Providers to work with the Flags SDK, bridging the OpenFeature ecosystem (AB Tasty, CloudBees, Confidence by Spotify, and more)
https://vercel.com/{team}/{project}/flags: All flags across all providers in one placevercel flags add, vercel flags sdk-keys ls, and full flag lifecycle from the terminalPromise.all flag evaluations no longer trigger duplicate network requests — initialization is properly sharedtools
Top-level workflow skill for USD performance diagnosis and optimization. Use for slow loading, high memory, low FPS, or 'optimize my scene' requests; delegates auth/runtime setup to Phase 0 owners.
data-ai
Use when the user mentions MagicPath, designs, UI components, themes, canvas selections, or repo-to-canvas UI work; run magicpath-ai to search, inspect, install, or author components.
documentation
Use as the top-level router for Omniverse Realtime Viewer USD app requests and focused viewer reference documents.
tools
Turn Notion specs into implementation plans, tasks, and progress tracking; use when implementing PRDs/feature specs and creating Notion plans + tasks from them.