Files
John Lindquist 3a8a8b2bea feat: fix on-demand skill install pipeline, add 7 new engine rules, sync registries
- Fix skill store cross-root slug lookup: installed skills under registrySlug
  names (e.g., next-best-practices) now resolve when queried by engine name
  (e.g., nextjs). Full-body injection rate went from 5% to 78% in evals.

- Fix on-demand install: remove dead hooks.json registrations (library module
  with no entry point), keep inline calls from pretooluse/user-prompt-submit.
  Non-registry skills now dedup normally instead of wastefully reinjectiing
  summary-only content that can never upgrade.

- Add suppressWhenProjectFacts to engine rules: next-upgrade and turbopack
  suppressed in greenfield mode (was 12 useless injections per session).

- Add deriveRegistryInstallSet to orchestrator-install-plan (was missing
  export that crashed on-demand-skill-install on every invocation).

- Sync all engine rule registries from skills.sh API via build-registry.ts.
  22 skills now have registry backing across 11 official Vercel repos.
  Exclude vercel-labs/vercel-plugin and vercel/vercel-plugin self-references.

- Add build:registry to the build pipeline (hooks → registry → manifest).

- Create 7 new engine rules: electron, vercel-composition-patterns,
  vercel-react-native-skills, web-design-guidelines, deploy-to-vercel,
  vercel-react-view-transitions, workflow-init.

- Add .claude/skills/ to .gitignore (installed skill caches).

- Add Verification Checklist to CLAUDE.md.
2026-04-08 22:54:49 -06:00

17 KiB

name, registry, registrySlug, greenfield, priority, docs, sitemap, pathPatterns, bashPatterns, promptSignals, validate, retrieval, chainTo
name registry registrySlug greenfield priority docs sitemap pathPatterns bashPatterns promptSignals validate retrieval chainTo
nextjs vercel-labs/next-skills next-best-practices true 5
https://nextjs.org/docs
https://nextjs.org/docs/app
https://nextjs.org/sitemap.xml
next.config.*
next-env.d.ts
app/**
pages/**
src/app/**
src/pages/**
tailwind.config.*
postcss.config.*
tsconfig.json
tsconfig.*.json
apps/*/app/**
apps/*/pages/**
apps/*/src/app/**
apps/*/src/pages/**
apps/*/next.config.*
\bnext\s+(dev|build|start|lint)\b
\bnext\s+experimental-analyze\b
\bnpx\s+create-next-app\b
\bbunx\s+create-next-app\b
\bnpm\s+run\s+(dev|build|start)\b
\bpnpm\s+(dev|build)\b
\bbun\s+run\s+(dev|build)\b
phrases allOf anyOf minScore
next.js
nextjs
app router
server component
server action
middleware
next
layout
route
pages router
getserversideprops
use server
6
pattern message severity upgradeToSkill upgradeWhy
export.*getServerSideProps getServerSideProps is removed in App Router — use server components or route handlers error nextjs Guides migration from Pages Router getServerSideProps to App Router server components with async data fetching.
pattern message severity
getServerSideProps getServerSideProps is a Pages Router pattern — migrate to App Router server components warn
pattern message severity upgradeToSkill upgradeWhy
export.*getStaticProps getStaticProps is removed in App Router — use generateStaticParams + server components instead error nextjs Guides migration from Pages Router getStaticProps to App Router generateStaticParams with server components.
pattern message severity
getStaticProps getStaticProps is a Pages Router pattern — migrate to App Router generateStaticParams + server components warn
pattern message severity upgradeToSkill upgradeWhy
from\s+['"]next/router['"] next/router is Pages Router only — use next/navigation for App Router error nextjs Guides migration from next/router to next/navigation with useRouter, usePathname, useSearchParams hooks.
pattern message severity skipIfFileContains
(useState|useEffect) React hooks require "use client" directive — add it at the top of client components warn ^['"]use client['"]
pattern message severity skipIfFileContains upgradeToSkill upgradeWhy
from\s+['"]next/head['"] next/head is Pages Router — use export const metadata or generateMetadata() in App Router. Run Skill(nextjs) for metadata API guidance. error export\s+(const\s+)?metadata|generateMetadata nextjs Guides migration from next/head to the App Router metadata API (export const metadata / generateMetadata()).
pattern message severity upgradeToSkill upgradeWhy
export\s+(default\s+)?function\s+middleware middleware() is renamed to proxy() in Next.js 16 — rename the function and the file to proxy.ts. Run Skill(routing-middleware) for proxy.ts migration guidance. recommended routing-middleware Guides migration from middleware.ts to proxy.ts with correct file placement, runtime config, and request interception patterns.
pattern message severity upgradeToSkill upgradeWhy
revalidateTag(\s*['"][^'"]+['"]\s*) Single-arg revalidateTag(tag) is deprecated in Next.js 16 — pass a cacheLife profile: revalidateTag(tag, "max") recommended nextjs Guides migration from single-arg revalidateTag to the Next.js 16 two-arg API with cacheLife profiles.
pattern message severity upgradeToSkill upgradeWhy
\bcacheHandler\s*: Singular cacheHandler is deprecated in Next.js 16 — use cacheHandlers (plural) with per-type handlers recommended nextjs Guides migration from singular cacheHandler to Next.js 16 cacheHandlers (plural) with per-type handler config.
pattern message severity
useRef(\s*) useRef() requires an initial value in React 19 — use useRef(null) or useRef(0) error
pattern message severity upgradeToSkill upgradeWhy
next\s+export next export was removed — use output: "export" in next.config.js for static export error nextjs Guides migration from next export CLI command to output: "export" in next.config for static site generation.
pattern message severity skipIfFileContains
(?<!await )\bcookies(\s*) cookies() is async in Next.js 16 — add await: const cookieStore = await cookies() error ^['"]use client['"]
pattern message severity skipIfFileContains
(?<!await )\bheaders(\s*) headers() is async in Next.js 16 — add await: const headersList = await headers() error ^['"]use client['"]
pattern message severity skipIfFileContains
=\s*(?!await\b)params\b params is async in Next.js 16 — add await: const { slug } = await params recommended ^['"]use client['"]
pattern message severity skipIfFileContains
=\s*(?!await\b)searchParams\b searchParams is async in Next.js 16 — add await: const { query } = await searchParams recommended ^['"]use client['"]
pattern message severity skipIfFileContains upgradeToSkill upgradeWhy
from\s+[''""](next-auth|@auth/core)[''""]|NextAuth(|getServerSession( Legacy auth pattern detected. Modern Vercel apps should use Clerk, Descope, or Auth0 for managed authentication. recommended @clerk/|@descope/|@auth0/ auth Migrate from next-auth/manual JWT to a managed auth provider (Clerk, Descope, Auth0) for better Vercel integration.
pattern message severity skipIfFileContains upgradeToSkill upgradeWhy
NextApiRequest|NextApiResponse|export\s+default\s+function\s+handler Pages Router API handler detected. Use App Router route handlers with named HTTP exports instead. recommended export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE) vercel-functions Migrate from Pages Router API routes to App Router route handlers with Web Request/Response API.
pattern message severity upgradeToSkill upgradeWhy
from\s+[''""](lru-cache|node-cache|memory-cache)[''""]|new\s+(LRUCache|NodeCache)( In-process cache detected. Serverless deployments lose process memory between invocations. recommended runtime-cache Replace process-memory caches with Vercel Runtime Cache for shared, region-aware caching.
pattern message severity skipIfFileContains upgradeToSkill upgradeWhy
from\s+[''""](express|fastify|koa|hapi)[''""]|require\s*(\s*[''""](express|fastify|koa|hapi)[''""] Express/Fastify/Koa/Hapi server framework detected in a Next.js project. Use Next.js route handlers or proxy.ts for request handling instead. recommended proxy.ts|from\s+[''""](next/server)[''""]|@vercel/functions routing-middleware Replace custom server frameworks with Next.js proxy.ts for request interception and route handlers for API endpoints.
pattern message severity skipIfFileContains upgradeToSkill upgradeWhy
from\s+[''""](typeorm|sequelize|mikro-orm|objection|bookshelf|knex)[''""]|require\s*(\s*[''""](typeorm|sequelize|mikro-orm|objection|bookshelf|knex)[''""] Heavy ORM detected. Consider using lightweight serverless-native alternatives like Drizzle, Prisma, or direct Neon for better cold start performance. recommended from\s+[''""](drizzle-orm|@neondatabase|@prisma/client|prisma)[''""] vercel-storage Migrate from heavy ORMs to serverless-native database clients (Drizzle + Neon, Prisma, or @neondatabase/serverless) for faster cold starts.
pattern message severity skipIfFileContains upgradeToSkill upgradeWhy
fonts.googleapis.com|from\s+[''""](fontsource|@fontsource)[''""]|<link[^>]*fonts.googleapis External font loader detected. Use next/font for zero-CLS, self-hosted font loading with automatic optimization. recommended next/font nextjs Guides migration from external font loaders to next/font with Geist Sans/Mono for zero-CLS font optimization.
pattern targetSkill message
export\s+(default\s+)?function\s+middleware routing-middleware middleware() is renamed to proxy() in Next.js 16 — loading Routing Middleware guidance for proxy.ts migration.
pattern targetSkill message
from\s+['"]@vercel/(postgres|kv)['"] vercel-storage Sunset storage package detected — loading Vercel Storage guidance for Neon/Upstash migration.
pattern targetSkill message
from\s+['"]@ai-sdk/(anthropic|openai)['"] ai-gateway Direct AI provider SDK import — loading AI Gateway guidance for unified model routing with failover and cost tracking.
pattern targetSkill message
from\s+[''""](next-auth|@auth/core)[''""]|NextAuth(|getServerSession( auth Legacy auth pattern detected — loading managed authentication guidance (Clerk, Descope, Auth0).
pattern targetSkill message
NextApiRequest|NextApiResponse|export\s+default\s+function\s+handler vercel-functions Pages Router API handler detected — loading Vercel Functions guidance for App Router migration.
pattern targetSkill message
from\s+[''""](lru-cache|node-cache|memory-cache)[''""]|new\s+(LRUCache|NodeCache)( runtime-cache In-process cache detected — loading Runtime Cache guidance for serverless-compatible caching.
pattern targetSkill message
fetch\s*(\s*[''""](https?://)?(api.openai.com|api.anthropic.com|api.cohere.ai) ai-gateway Raw AI provider fetch URL detected — loading AI Gateway guidance for unified routing, failover, and OIDC auth.
pattern targetSkill message
jwt.(sign|verify|decode)(|from\s+[''""](jsonwebtoken)[''""]|new\s+SignJWT(|jwtVerify( auth Manual JWT token handling detected — loading Auth guidance for managed authentication (Clerk, Descope, Auth0).
pattern targetSkill message
from\s+[''"]@/components/ui/|from\s+[''"]@/components/ui[''""] shadcn shadcn/ui component imports detected — loading shadcn guidance for component composition, theming, and registry patterns.
pattern targetSkill message
from\s+[''""](styled-components|@emotion/(react|styled)|@mui/material)[''""] shadcn CSS-in-JS library detected — loading shadcn/ui guidance for Tailwind CSS + Radix UI component patterns (Vercel recommended).
pattern targetSkill message
getInitialProps nextjs getInitialProps is a legacy Pages Router pattern — loading Next.js guidance for App Router migration with server components and async data fetching.
pattern targetSkill message
export.*getServerSideProps|getServerSideProps\s*( nextjs getServerSideProps is a Pages Router pattern — loading Next.js guidance for App Router migration with server components and async data fetching.
pattern targetSkill message
export.*getStaticProps|getStaticProps\s*( nextjs getStaticProps is a Pages Router pattern — loading Next.js guidance for App Router migration with generateStaticParams and server components.
pattern targetSkill message
_app.(tsx?|jsx?) nextjs _app.tsx is a Pages Router pattern — loading Next.js guidance for App Router layout.tsx migration.
pattern targetSkill message
_document.(tsx?|jsx?) nextjs _document.tsx is a Pages Router pattern — loading Next.js guidance for App Router layout.tsx with metadata API migration.
pattern targetSkill message
from\s+['"]next/document['"] nextjs next/document is Pages Router only — loading Next.js guidance for App Router layout.tsx with html/body structure.
pattern targetSkill message
pages/api/ vercel-functions Pages Router API route (pages/api/) detected — loading Vercel Functions guidance for App Router route handlers with named HTTP exports.
aliases intents entities
next.js
nextjs app
react framework
app router
set up routing and layouts in a Next.js app
choose between server and client components for a feature
configure data fetching or caching in App Router
add middleware or proxy logic to handle requests
set up server rendering for React pages
add a new page with dynamic route segments
App Router
Server Components
Server Actions
generateMetadata
layout
proxy
next.config
pattern targetSkill message
export\s+(default\s+)?function\s+middleware routing-middleware middleware() is renamed to proxy() in Next.js 16 — loading Routing Middleware guidance for proxy.ts migration.
pattern targetSkill message
from\s+['"]@vercel/(postgres|kv)['"] vercel-storage Sunset storage package detected — loading Vercel Storage guidance for Neon/Upstash migration.
pattern targetSkill message
from\s+['"]@ai-sdk/(anthropic|openai)['"] ai-gateway Direct AI provider SDK import — loading AI Gateway guidance for unified model routing with failover and cost tracking.
pattern targetSkill message
from\s+[''""](next-auth|@auth/core)[''""]|NextAuth(|getServerSession( auth Legacy auth pattern detected — loading managed authentication guidance (Clerk, Descope, Auth0).
pattern targetSkill message
NextApiRequest|NextApiResponse|export\s+default\s+function\s+handler vercel-functions Pages Router API handler detected — loading Vercel Functions guidance for App Router migration.
pattern targetSkill message
from\s+[''""](lru-cache|node-cache|memory-cache)[''""]|new\s+(LRUCache|NodeCache)( runtime-cache In-process cache detected — loading Runtime Cache guidance for serverless-compatible caching.
pattern targetSkill message skipIfFileContains
fetch\s*(\s*[''""](https?://)?(api.openai.com|api.anthropic.com|api.cohere.ai) ai-gateway Raw AI provider fetch URL detected — loading AI Gateway guidance for unified routing, failover, and OIDC auth. @ai-sdk/|from\s+[''""](ai)[''""]|ai-gateway|gateway(
pattern targetSkill message skipIfFileContains
jwt.(sign|verify|decode)(|from\s+[''""](jsonwebtoken)[''""]|new\s+SignJWT(|jwtVerify( auth Manual JWT token handling detected — loading Auth guidance for managed authentication (Clerk, Descope, Auth0). clerkMiddleware|@clerk/|@auth0/|@descope/|from\s+[''""](next-auth)[''""]
pattern targetSkill message skipIfFileContains
from\s+[''"]@/components/ui/|from\s+[''"]@/components/ui[''""] shadcn shadcn/ui component imports detected — loading shadcn guidance for component composition, theming, and registry patterns. shadcn|components.json
pattern targetSkill message skipIfFileContains
from\s+[''""](styled-components|@emotion/(react|styled)|@mui/material)[''""] shadcn CSS-in-JS library detected — loading shadcn/ui guidance for Tailwind CSS + Radix UI component patterns (Vercel recommended). @/components/ui|shadcn
pattern targetSkill message skipIfFileContains
getInitialProps nextjs getInitialProps is a legacy Pages Router pattern — loading Next.js guidance for App Router migration with server components and async data fetching. app/.*page.|generateStaticParams|use cache
pattern targetSkill message skipIfFileContains
export.*getServerSideProps|getServerSideProps\s*( nextjs getServerSideProps is a Pages Router pattern — loading Next.js guidance for App Router migration with server components and async data fetching. generateStaticParams|use cache|app/.*page.
pattern targetSkill message skipIfFileContains
export.*getStaticProps|getStaticProps\s*( nextjs getStaticProps is a Pages Router pattern — loading Next.js guidance for App Router migration with generateStaticParams and server components. generateStaticParams|use cache|app/.*page.
pattern targetSkill message skipIfFileContains
_app.(tsx?|jsx?) nextjs _app.tsx is a Pages Router pattern — loading Next.js guidance for App Router layout.tsx migration. app/layout.|app/.*layout.
pattern targetSkill message skipIfFileContains
_document.(tsx?|jsx?) nextjs _document.tsx is a Pages Router pattern — loading Next.js guidance for App Router layout.tsx with metadata API migration. app/layout.|app/.*layout.
pattern targetSkill message skipIfFileContains
from\s+['"]next/document['"] nextjs next/document is Pages Router only — loading Next.js guidance for App Router layout.tsx with html/body structure. app/layout.|app/.*layout.
pattern targetSkill message skipIfFileContains
pages/api/ vercel-functions Pages Router API route (pages/api/) detected — loading Vercel Functions guidance for App Router route handlers with named HTTP exports. export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE)

Guidance for nextjs. Install from registry for full content.