Sandbox Bench
vercel/next.js
Benchmark React or Next.js changes on Vercel Sandbox VMs with paired A/B statistics: react PR/commit vs base, or Next.js PR/commit vs base, measured end-to-end through the bench/render-pipeline app…
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces.
$ npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sanity-io/ui next-partial-prefetching-adoption --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sanity-io/ui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/next-partial-prefetching-adoption .claude/skills/next-partial-prefetching-adoption && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "next-partial-prefetching-adoption" agent skill from https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoption into .claude/skills/next-partial-prefetching-adoption/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next-partial-prefetching-adoption", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoptionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sanity-io/ui next-partial-prefetching-adoption --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sanity-io/ui.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/next-partial-prefetching-adoption .agents/skills/next-partial-prefetching-adoption && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "next-partial-prefetching-adoption" agent skill from https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoption into .agents/skills/next-partial-prefetching-adoption/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next-partial-prefetching-adoption", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sanity-io/ui next-partial-prefetching-adoption --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sanity-io/ui.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/next-partial-prefetching-adoption .cursor/skills/next-partial-prefetching-adoption && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "next-partial-prefetching-adoption" agent skill from https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoption into .cursor/skills/next-partial-prefetching-adoption/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next-partial-prefetching-adoption", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sanity-io/ui.git --path .agents/skills/next-partial-prefetching-adoption--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sanity-io/ui next-partial-prefetching-adoption --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sanity-io/ui.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/next-partial-prefetching-adoption .gemini/skills/next-partial-prefetching-adoption && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "next-partial-prefetching-adoption" agent skill from https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoption into .gemini/skills/next-partial-prefetching-adoption/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next-partial-prefetching-adoption", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sanity-io/ui next-partial-prefetching-adoptionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sanity-io/ui.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/next-partial-prefetching-adoption .github/skills/next-partial-prefetching-adoption && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "next-partial-prefetching-adoption" agent skill from https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoption into .github/skills/next-partial-prefetching-adoption/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next-partial-prefetching-adoption", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sanity-io/ui next-partial-prefetching-adoption --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sanity-io/ui.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/next-partial-prefetching-adoption .opencode/skills/next-partial-prefetching-adoption && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "next-partial-prefetching-adoption" agent skill from https://github.com/sanity-io/ui/tree/main/.agents/skills/next-partial-prefetching-adoption into .opencode/skills/next-partial-prefetching-adoption/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "next-partial-prefetching-adoption", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
next-partial-prefetching-adoptionTurn on Partial Prefetching in a Next.js app and work through the insights it surfaces.
Next Partial Prefetching Adoption is an agent skill from sanity-io/ui, published by the product's own GitHub organization. Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit <Link prefetch={true} calls, or resolve the link-prefetch-partial and instant-shell-url-data insights.
Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Next.js. The repository describes itself as: The Sanity UI design system. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit bcd7416. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxrgFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
nextjs.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Next Partial Prefetching Adoption loads about 5.8k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 3,097 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from sanity-io/ui at commit bcd7416, republished under its MIT licence (© sanity-io). 3,097 words, ~5,760 tokens.
.claude/skills/next-partial-prefetching-adoption/SKILL.md (or your agent's skills folder).Enable Partial Prefetching and walk the app until every link reuses a shared App Shell. This skill sequences the work; per-insight recipes live in the dev overlay fix cards and their docs pages. The Adopting Partial Prefetching guide is the canonical reference for the concepts this skill applies.
The one thing that shapes everything below: these insights surface only in next dev, in the dev overlay's Insights tab. Nothing fails the build. There is no build-only fallback loop — confirming an insight is cleared means driving the running app in a browser. But a missing browser gates that verification, not the whole skill: the adoption work is static and runs from the guide, so do the static pass anyway and hand off the live shell check.
Talk to the user in terms of what they'll see — PRs, features, and how the app behaves after — never the insight slugs or step labels. Before you start, tell them briefly what Partial Prefetching changes: a <Link> loads a shared App Shell, and prefetch={true} no longer prefetches everything the old full prefetch did.
Cache Components on (cacheComponents: true). This is the only hard requirement; partialPrefetching depends on it. Full Cache Components adoption is the ideal starting point but not a gate. Nothing in this skill blocks the build, and neither do the prerender insights an unadopted route surfaces, like a leftover unstable_noStore or a cookies() read outside <Suspense>: they are non-blocking dev signals, expected on any fresh branch off main, not a reason to stop. They replace the URL-data insight only on their own route in the step 3 sweep; the flag-off step 1 audit and its static adoption run regardless. The only thing that actually stops this skill is a build-blocking failure, and anything build-blocking would have been resolved before you reached here. Otherwise fix the prerender insights you hit as inline next-cache-components-adoption work, or hand them off, and keep going.
Next.js 16.3 or later. partialPrefetching, the prefetch route segment config, and the prefetch insights all land there.
A browser you can drive. Install next-dev-loop before starting (npx skills add https://github.com/vercel/next.js/tree/canary/skills/next-dev-loop). Install it without asking — it's a tool, not a product change — and don't assume it's blocked: verify a real blocker (no network, no npm, read-only filesystem) before falling back, and name it in your report. Link prefetches fire when a link renders and enters the viewport, and shell validation fires on navigation — neither is reachable from curl or the build. If the app is webpack-pinned, drive a browser directly (agent-browser, Playwright) — you lose the framework cross-checks, not the insights; they're still in the overlay and the dev log.
A runnable app. Verification runs against next dev for the insight sweep and a production next build/next start for prefetching (prefetching is prod-only), so the app has to boot in both. If it reads a database or required env at import (e.g. an env.ts that throws on a missing DATABASE_URL), confirm it starts — with the real environment, or local data you stand up — before step 1. An app that won't run can't be swept or verified.
Offline docs. Guide links have offline copies under node_modules/next/dist/docs/ (bundled since Next.js 16.2), with the directory layout numbered for ordering (e.g. node_modules/next/dist/docs/01-app/02-guides/adopting-partial-prefetching.md). If you can't predict the numbered prefix, find node_modules/next/dist/docs -name '<slug>.md' resolves it. The /docs/messages/* error pages are not bundled.
Older versions without bundled docs. Suggest npx @next/codemod@latest agents-md to the user before starting: it downloads a version-matched copy to .next-docs/ and writes an index into AGENTS.md / CLAUDE.md. It touches files in their repo, so ask first and run it only if they want it.
Adopting Partial Prefetching means every route still delivers what its links prefetched before, now split between the shared App Shell and any extra per-link data a link explicitly asks for. The guide is the canonical reference for what a prefetch contains and how to decide each case; this skill sequences that work against a running app.
The catch that decides most of the sweep: a default link warms only the shared App Shell. A route keyed by params or searchParams can prefetch more only after it has adopted Partial Prefetching and a specific link uses <Link prefetch={true}>; then Next.js resolves the URL data and any cached content behind it before the click (the guide's URL data section).
Error: Route "...": Next.js encountered ... lines with the https://nextjs.org/docs/messages/<slug> link. Tail the dev log during the sweep; it's the greppable record of what fired where, and it works the same on Turbopack and webpack.nextjs-portal), so accessibility-tree snapshots don't see it — evaluate into shadowRoot when you need to read or click it programmatically.next-dev-loop to drive navigations and read the overlay. Prefer it over hand-rolled browser automation for the same reasons as in the Cache Components skill (webpack apps: see requires). When browsing its /_next/mcp tools, the prefetch insights surface through get_errors and the overlay, not the similarly-named get_request_insights. That one is the span and performance recorder (gated behind experimental.requestInsights) and reports nothing about prefetching.Every insight has a docs page — open it. Fetch the linked page for every distinct insight you encounter; the inline message is a summary, the page is the recipe.
<Link prefetch={true}> (before enabling)If partialPrefetching: true is already set in next.config.ts, the app is adopted — skip to step 3. Otherwise work the audit with the global flag off, adopting each destination with export const prefetch = 'partial' — enabling the flag first would mark every route adopted and silence the link-prefetch-partial insight this audit runs on. Ask the user how to ship it, in the language of PRs:
The work is identical either way — only the commit boundaries differ. Default by app size: one branch for a handful of links, route by route when the audit is big enough that reviewers need smaller diffs. Note the choice in your report.
Enumerate the prefetch sites across the whole source tree, not only app/ — they often live in src/components or shared UI packages: rg -n '\bprefetch\b|router\.prefetch' -g '*.tsx' -g '*.jsx' .. Keep the <Link prefetch={true}> and bare-prop matches (a bare prop is true) as the over-prefetching links this audit adopts destinations for, and drop prefetch={false} and other values. Also audit existing imperative router.prefetch() call sites with the same table, because they can be preserving the same "fetch before navigation" behavior and have no dev insight. For new navigation prefetching, prefer <Link>, which the docs call the primary navigation API; use router.prefetch() only for manual prefetching. If the app already passes an internal kind option, treat that as existing implementation detail, not a pattern to spread. If nothing matches, check for a custom link wrapper before calling the audit empty. If there's still nothing, say so in your report and move on to step 2.
Then, for each one:
Click each <Link> in next dev. The insight fires at navigation time, not when the link prefetches, so a link sitting in the viewport won't trip it — you have to navigate through it. This click is verification: it confirms the insight fires before you adopt and clears after. Imperative router.prefetch() sites have no equivalent insight, so audit them from source and verify them in production (step 4). Without a browser, skip the click and adopt from link-prefetch-partial and the audit table below — the destination's structure tells you the row, and type-check gates the edit — then leave the live confirmation for the hand-off.
Adopt the destination. Add the temporary route config with a link to the migration guide. That clears the insight for every link pointing at it:
// See: https://nextjs.org/docs/app/guides/adopting-partial-prefetching
export const prefetch = 'partial'If the route reads URL data (params, searchParams), the default link still warms only its skeleton (the guide's URL data section), so it's a runtime-prefetch candidate for step 5, not a finished adoption. Keep prefetch={true} on its links and mark the route:
// TODO(runtime-prefetch): assess with the user whether URL data should resolve before click.
// See: https://nextjs.org/docs/app/guides/runtime-prefetching
export const prefetch = 'partial'Use that exact prefix so step 5 can grep them back. Don't cache or decide anything for these routes now.
Preserve what that prefetch delivered. The guide's audit table is the canonical decision — fetch it and apply the matching row. Caching uncached content is the judgment call in that table: trace where the data comes from and what freshness and revalidation it needs, per the use cache docs, and ask the user when the answer isn't clear-cut. The URL-data routes you marked in the previous item wait for step 5.
If you add
use cache, verify undernext start, not only the build. Acookies()/headers()/session read anywhere in the cached call tree throws at request time whilenext buildpasses clean. Seeuse cache.
Once every audited destination has prefetch = 'partial', finish in two moves.
Enable the flag globally. Set partialPrefetching: true in next.config.ts (alongside cacheComponents: true). Every route is adopted now, so every link is good.
Strip the redundant prefetch = 'partial' exports. Run the first-party remove-partial-prefetch codemod rather than a text find-and-replace. It removes only export const prefetch = 'partial' and its generated Partial Prefetching guide comment. It leaves other values such as prefetch = 'force-disabled' in place, along with your TODO(runtime-prefetch) markers and their Runtime Prefetching guide links, which wait for step 5.
npx @next/codemod@latest remove-partial-prefetch ./appThe codemod refuses to run on a dirty working tree. Commit or stash unrelated work first, or pass --force to let its edits land alongside your WIP. If the codemod isn't available (older @next/codemod, sandboxed environment, offline run), reproduce it by hand by removing export const prefetch = 'partial' and its generated Partial Prefetching guide comment from every app/**/{page,layout}.{js,jsx,ts,tsx} — leave other prefetch values in place, and leave the TODO(runtime-prefetch) markers and Runtime Prefetching guide links where they are. Don't hand-edit when the codemod can run.
This is a dev-only second pass. The shell check runs only with the flag on, fires at navigation time, and never blocks the build, so it can happen any time after step 2. Build the route queue from a concrete source (the last next build route table, or the app/ tree) and keep it as a todo list.
Sweep feature by feature. A feature is a single product surface — app/settings/**, app/posts/[slug]/** — not a whole top-level area. Finish one end-to-end before starting the next: load its routes in next dev and resolve their insights. The insight never blocks the build and each route is independent, so a partial sweep leaves a working app, and each feature is a self-contained change the user can review or ship on its own.
If the environment can't finish the whole sweep (slow first compiles, a dev server that falls over under load, no browser at all), take the browser-free work as far as it goes before handing off. Adopt every route you can statically: apply the fix from URL data (up to a new <Suspense> boundary) and opt the route into prefetch = 'partial', gating on type-check. Work the whole queue in one pass — a larger refactor isn't a reason to defer, and asking whether to continue to the next route or tier isn't a checkpoint; keep going. Stop only for a genuine judgment call, and batch those into the single hand-off report: the routes you statically adopted, the ones still needing a live shell check, and the queue.
Watch the Insights tab and the dev log for Next.js encountered … data lines. The signal this step adds is URL data: a params or searchParams read too high in the suspended subtree ties the shared shell to one URL. This insight is narrow; it most reliably appears on a generateStaticParams route where params is already under <Suspense>, but still awaited before the URL-specific leaf boundary. If a blocking-prerender-* error fires instead, apply the same structural fix.
Loading a route with the flag on prerenders its App Shell, which validates more of the route than the Cache Components build did. So a route that built cleanly under Cache Components (every route ◐, no errors) can still surface a blocking-prerender-* error here the first time its shell is prerendered — runtime data (cookies()/headers()), uncached data (an uncached fetch/DB call), or sync IO like Date.now()/new Date(). This doesn't mean the Cache Components adoption was incomplete; it's new validation reaching a path the build never exercised. These aren't Partial Prefetching insights — fix each one the same way you would any blocking-prerender error.
These fixes rarely involve the user — each insight names the offending read and its docs page has the fix, so apply it and keep sweeping. Collect the rare exceptions for one batched question at the end: a page that is entirely one URL-dependent region (wrapping it all leaves an empty shell), or a route that should arguably stay opted out. Don't narrate the refactor with comments — the <Suspense> boundaries speak for themselves.
Checklist before checking in with the user:
generateStaticParams route with params read inside <Suspense> but before the URL-specific leaf boundary; other shapes may surface blocking-prerender-* instead.<Suspense> around the whole page body passes validation with an empty shell, which defeats the point.next start: compare the _rsc prefetch response or resource timing before/after, and make sure any intentionally preserved full prefetch still carries the data the old call was warming. If it now returns only the App Shell, migrate that call site using the same decision as the nearest <Link prefetch={true}> destination — cache the data, or move runtime-prefetch behavior to a docs-supported <Link prefetch={true}>.partialPrefetching off (or on the pre-flag branch). The flag surfaces existing issues — a fragile request-time auth gate, a rewrite, deployment skew — earlier and more visibly, but rarely causes them. If it breaks flag-off too, it isn't a Partial Prefetching problem; fix it there, not here.next build still passes.Then check in with the user. Speak their language — no insight slugs or step labels.
use cache boundaries added, and which routes carry a TODO(runtime-prefetch) marker for later.next dev won't show the result — run next build and next start, and hand the user that URL. That run needs the app's real environment (database, auth, secrets), and a partial or stale install or leftover generated artifacts can fail the build for reasons unrelated to the adoption. Set the expectation up front that verification is a complete, credentialed production run, not a quick check.The audit marked the candidates instead of deciding them. Grep for TODO(runtime-prefetch) and walk the list with the user in one conversation. The question per route is whether they want the URL-dependent content prefetched ahead of the click, or streaming in after navigation is fine. A runtime prefetch costs a server invocation per prefetchable link — the guide's per-link prefetching trade-offs section is the checklist. Don't make these calls alone.
Where the answer is yes, follow the runtime prefetching guide: keep <Link prefetch={true}> on the links that should resolve more than the App Shell, and cache the content behind the URL-data read using the guide's patterns (use cache with the runtime value passed in, or use cache: private for per-user data). Each per-link prefetch is a server render when the destination needs non-static data, so use the guide's per-link trade-offs to decide when viewport prefetching is worth it and when hover-triggered prefetch is a better fit. Where it's no, delete the marker and leave the route on the App Shell default. Either way no TODO(runtime-prefetch) marker survives this step. Confirm the opted-in links against a production run (next build and next start — the runtime prefetch fires there, not in next dev), give the user the same click-through for them, and keep this as its own commit or PR.
@next/playwright instant() helper locks in what a navigation shows immediately; recommend it once the sweep is clean, since nothing else guards these in CI.next-cache-components-optimizer — grows each route's static shell so the App Shell carries more.© sanity-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/next-partial-prefetching-adoption of sanity-io/ui.
Open the folder on GitHubat commit bcd7416
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in sanity-io/ui, which our catalogue first saw on October 7, 2026.
Next Partial Prefetching Adoption next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Next Partial Prefetching Adoption this skillsanity-io/ui | 176 | 2 repos | ~5.8k | Automated safety check: Pass | MIT | |
| Sandbox Benchvercel/next.js | 143k | — | ~4.1k | Automated safety check: Pass | MIT | |
| Next Dev Loopvercel/next.js | 143k | 9 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Vercel Optimize Auditvercel-labs/agent-skills | 32k | 8 repos | ~4.3k | Automated safety check: Pass | None | |
| Supabase Development and Debuggingsupabase/agent-skills | 2.7k | 3 repos | ~3.6k | Automated safety check: Pass | MIT | |
| AI SDKvercel-labs/ai-facts | 168 | 20 repos | ~1.2k | Automated safety check: Pass | None |
vercel/next.js
Benchmark React or Next.js changes on Vercel Sandbox VMs with paired A/B statistics: react PR/commit vs base, or Next.js PR/commit vs base, measured end-to-end through the bench/render-pipeline app…
vercel/next.js
Verify Next.js runtime behavior after editing app code. An agent skill from vercel/next.js.
vercel-labs/agent-skills
Runs a metrics-first audit of a deployed Vercel project, gating investigations on real signals to produce ranked, citation-backed cost and performance recommendations.
supabase/agent-skills
General Supabase skill for database, auth, Edge Functions, Realtime and storage work, plus client libraries, migrations, security audits, debugging and reading logs.
vercel-labs/ai-facts
Answer questions about the AI SDK and help build AI-powered features.
chakra-ui/chakra-ui
Builds responsive, accessible Chakra UI v3 components and layouts, sets up Chakra in new or existing projects, and designs themes with tokens, semantic tokens and recipes.
sanity-io/ui
Record polished UI demo videos using Playwright. An agent skill from sanity-io/ui.
sanity-io/ui
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation).
sanity-io/ui
Inspect and profile the React component tree of a running Storybook story through chrome-devtools-mcp (React DevTools over the Chrome DevTools Protocol, via react-devtools-cdt-mcp).
sanity-io/ui
Integrates Sanity Live with Next.js Cache Components in next-sanity v13+ apps.
Works with
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Next Partial Prefetching Adoption is an agent skill from sanity-io/ui, published by the product's own GitHub organization.js app and work through the insights it surfaces.
Next Partial Prefetching Adoption fits situations like: the user wants to enable; adopt Partial Prefetching; flip the partialPrefetching flag; opt routes in with export const prefetch = partial.
Run `npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a claude-code`. Or copy the skill folder (.agents/skills/next-partial-prefetching-adoption in sanity-io/ui) into .claude/skills/next-partial-prefetching-adoption in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a codex`. Or copy the skill folder (.agents/skills/next-partial-prefetching-adoption in sanity-io/ui) into .agents/skills/next-partial-prefetching-adoption in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sanity-io/ui --skill next-partial-prefetching-adoption -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/next-partial-prefetching-adoption, .gemini/skills/next-partial-prefetching-adoption, .github/skills/next-partial-prefetching-adoption and .opencode/skills/next-partial-prefetching-adoption in your project.
Going by SKILL.md and its folder, Next Partial Prefetching Adoption needs the command-line tools its instructions call (npx and rg). Our summary lists: Node.js.
SKILL.md names 2 domains. In commands or code: nextjs.org and github.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Next Partial Prefetching Adoption is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Next Partial Prefetching Adoption: Sandbox Bench (vercel/next.js, 143k stars), Next Dev Loop (vercel/next.js, 143k stars), Vercel Optimize Audit (vercel-labs/agent-skills, 32k stars) and Supabase Development and Debugging (supabase/agent-skills, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sanity-io (a GitHub organization, an official publisher) maintains it in sanity-io/ui, which has 176 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: sanity-io/ui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.