Olore Opennext Latest
olorehq/olore
Local opennext documentation reference (latest). An agent skill from olorehq/olore.
Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).
$ npx skills add secondsky/claude-skills --skill cloudflare-nextjs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install secondsky/claude-skills cloudflare-nextjs --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/secondsky/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/cloudflare-nextjs/skills/cloudflare-nextjs .claude/skills/cloudflare-nextjs && 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 "cloudflare-nextjs" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjs into .claude/skills/cloudflare-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-nextjs", 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/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjsType 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 secondsky/claude-skills --skill cloudflare-nextjs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install secondsky/claude-skills cloudflare-nextjs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/cloudflare-nextjs/skills/cloudflare-nextjs .agents/skills/cloudflare-nextjs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cloudflare-nextjs" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjs into .agents/skills/cloudflare-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-nextjs", 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 secondsky/claude-skills --skill cloudflare-nextjs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install secondsky/claude-skills cloudflare-nextjs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/cloudflare-nextjs/skills/cloudflare-nextjs .cursor/skills/cloudflare-nextjs && 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 "cloudflare-nextjs" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjs into .cursor/skills/cloudflare-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-nextjs", 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/secondsky/claude-skills.git --path plugins/cloudflare-nextjs/skills/cloudflare-nextjs--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 secondsky/claude-skills --skill cloudflare-nextjs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install secondsky/claude-skills cloudflare-nextjs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/cloudflare-nextjs/skills/cloudflare-nextjs .gemini/skills/cloudflare-nextjs && 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 "cloudflare-nextjs" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjs into .gemini/skills/cloudflare-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-nextjs", 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 secondsky/claude-skills cloudflare-nextjsInstalls 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 secondsky/claude-skills --skill cloudflare-nextjs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/cloudflare-nextjs/skills/cloudflare-nextjs .github/skills/cloudflare-nextjs && 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 "cloudflare-nextjs" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjs into .github/skills/cloudflare-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-nextjs", 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 secondsky/claude-skills --skill cloudflare-nextjs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install secondsky/claude-skills cloudflare-nextjs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/cloudflare-nextjs/skills/cloudflare-nextjs .opencode/skills/cloudflare-nextjs && 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 "cloudflare-nextjs" agent skill from https://github.com/secondsky/claude-skills/tree/main/plugins/cloudflare-nextjs/skills/cloudflare-nextjs into .opencode/skills/cloudflare-nextjs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-nextjs", 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.
cloudflare-nextjsDeploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).
Cloudflare Nextjs is an agent skill from secondsky/claude-skills. Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare). Use for SSR/ISR/SSG/App or Pages Router, getCloudflareContext, bindings (D1/R2/KV/AI/Hyperdrive), caching tiers, skew protection, multi-worker, custom worker, env vars, or worker size/runtime/keepnames/FinalizationRegistry/connection-scoping errors.
Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 19 other files, including scripts, reference files and assets (for example `assets/workflow-diagram.md`, `references/advanced.md` and `references/bindings-and-services.md`).
It sits in Backend & APIs, covering Caching. It works with Next.js, Cloudflare, Cloudflare Workers and Node.js. The repository describes itself as: Production-ready skills for Claude Code CLI - Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8837836. 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.
Ships 3 files in scripts/ (Shell and TypeScript), which the agent can run.
Shell commands in SKILL.md call:
npmnpxwranglerFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
opennext.js.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CACHE_PURGE_API_TOKENCF_WORKERS_SCRIPTS_API_TOKENCLOUDFLARE_ACCESS_CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Cloudflare Nextjs loads about 5.3k tokens when it runs, and up to ~24k if it reads all its reference files. Until then it costs about 89 tokens; SKILL.md has 1,569 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 noted patterns worth knowing about, such as sudo or a known installer.
- **Env vars** — use Next.js `.env` files (not just `.dev.vars`); `NEXTJS_ENV` in `.dev.vars` selects the env; `--keep-vsize`, `@libsql/isomorphic-ws`). Or set `.env`: `WRANGLER_BUILD_CONDITIONS=""` + `WRANGLER_BUILD_PLATFORM="node"`.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); the scripts in this folder are not scanned.
The full file from secondsky/claude-skills at commit 8837836, republished under its MIT licence (© secondsky). 1,569 words, ~5,261 tokens.
.claude/skills/cloudflare-nextjs/SKILL.md (or your agent's skills folder). This skill also uses 16 other files; get the full folder from GitHub.Deploy Next.js applications to Cloudflare Workers using the OpenNext adapter (@opennextjs/cloudflare). The adapter takes a standard Next.js build, runs package.json build script, then transforms the output to run on the Workers runtime using the Node.js compatibility layer (nodejs_compat) — not the Edge runtime.
| Requirement | Value | Why |
|---|---|---|
| Runtime | Node.js (default). Remove every export const runtime = "edge"; | Edge runtime is unsupported; OpenNext uses nodejs_compat. |
compatibility_flags | ["nodejs_compat", "global_fetch_strictly_public"] | Node APIs + allow fetch() in app code. |
compatibility_date | ≥ 2024-09-23; ≥ 2025-05-05 recommended (FinalizationRegistry) | Older dates break FinalizationRegistry, DOs, and more. |
| Wrangler | ≥ 3.99.0 to deploy; ≥ 4.13.0 for keep_names; ≥ 4.36.0 for stable remote bindings | Feature gates in the docs. |
| Next.js | v16 all minors/patches supported; latest minors of v14 and v15; v14 dropped Q1 2026 | Stated on the overview page. |
| Worker size (gzip) | 3 MiB Free / 10 MiB Paid (compressed only) | Hard Cloudflare limits. |
Windows: not fully guaranteed (Next.js tooling issues). Use WSL, a Linux VM, or Linux/macOS CI. See known issue #1305.
nextjsnextjs skill → framework/App Router/Server Components/Cache Components patterns, any platform (Vercel, self-hosted, ...). Use for async params, proxy.ts migration, "use cache".cloudflare-nextjs) → deploying Next.js to Workers via the OpenNext adapter: wrangler.jsonc, open-next.config.ts, getCloudflareContext, caching tiers, bindings, skew protection, multi-worker, the Workers-specific errors.proxy.ts caveat (Next 16): Next 16 renamed
middleware.ts→proxy.ts, but@opennextjs/cloudflaredoes not recognizeproxy.tsyet (issue #1277) — on Cloudflare, keep usingmiddleware.ts. This is the one place thenextjsskill's guidance does NOT apply here.
npm create cloudflare@latest -- my-next-app --framework=next --platform=workersC3 scaffolds a Next.js app, installs @opennextjs/cloudflare, creates wrangler.jsonc + open-next.config.ts + .dev.vars, wires package.json scripts, and (if R2 is enabled) creates an R2 bucket for caching.
npx @opennextjs/cloudflare migratemigrate automates: install adapter + wrangler, create wrangler.jsonc/open-next.config.ts/.dev.vars, update scripts, add public/_headers, add .open-next to .gitignore, wire initOpenNextCloudflareForDev() into next.config.ts, and create+configure an R2 cache bucket (only if R2 is enabled on the account).
<details><summary>Manual install (if you prefer not to run migrate)</summary>
npm install @opennextjs/cloudflare@latest
npm install --save-dev wrangler@latestThen create the three files (see references/wrangler.jsonc, references/open-next.config.ts, references/package.json) and add the dev/preview/deploy/upload/cf-typegen scripts. Pin adapter versions and audit before upgrading — see the dependency-upgrade skill.
</details>
// package.json
{
"dev": "next dev", // fast HMR via Next dev server
"preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview", // build + run in workerd locally
"deploy": "opennextjs-cloudflare build && opennextjs-cloudflare deploy", // build + serve immediately
"upload": "opennextjs-cloudflare build && opennextjs-cloudflare upload", // build + upload a version (gradual rollout)
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts"
}dev — fastest feedback loop; add initOpenNextCloudflareForDev() to next.config.ts so getCloudflareContext() works locally with simulated/remote bindings.preview — runs in the actual Workers runtime (not Node). Always run before deploy to catch runtime-only issues.deploy — populates the remote cache, then wrangler deploy. App serves immediately.upload — populates remote cache, then wrangler versions upload. Does NOT serve automatically; for gradual deployments.build, preview, deploy, upload all implicitly call populateCache — you do not need to run it manually.
next.config.tsimport type { NextConfig } from "next";
const nextConfig: NextConfig = { /* ... */ };
export default nextConfig;
import { initOpenNextCloudflareForDev } from "@opennextjs/cloudflare";
initOpenNextCloudflareForDev();getCloudflareContext()Do NOT use process.env for bindings. The official API is getCloudflareContext() from @opennextjs/cloudflare.
import { getCloudflareContext } from "@opennextjs/cloudflare";
export async function GET() {
const { env, cf, ctx } = getCloudflareContext();
await env.MY_KV.put("foo", "bar");
return new Response(await env.MY_KV.get("foo"));
}Static routes (ISR/SSG) MUST use async mode — and be careful: secrets/local values are used during static generation.
const { env } = await getCloudflareContext({ async: true });TypeScript types: npm run cf-typegen generates cloudflare-env.d.ts (re-run after any binding change).
Remote bindings (local dev → real resources): stabilized in Wrangler 4.36.0. On older wrangler, enable via initOpenNextCloudflareForDev({ experimental: { remoteBindings: true } }) and use the experimental_remote (not remote) key on binding options. Note: remote bindings are also used during build.
Full patterns (D1/R2/KV/AI/Hyperdrive, Drizzle, Prisma, Stripe) → references/bindings-and-services.md.
OpenNext's cache has three parts: Incremental Cache (storage), Queue (dedupe/revalidate), Tag Cache (on-demand revalidateTag/revalidatePath).
| Site profile | Incremental | Queue | Tag Cache | When |
|---|---|---|---|---|
| SSG only (no revalidation) | staticAssetsIncrementalCache + enableCacheInterception: true | none | none | Fastest option; read-only |
| Small site (ISR/on-demand) | r2IncrementalCache | doQueue | d1NextTagCache | Low traffic; D1 tag cache |
| Large/high-traffic site | withRegionalCache(r2IncrementalCache, { mode: "long-lived" }) | doQueue | doShardedTagCache({ baseShardSize: 12 }) + purgeCache({ type: "direct" }) | DO-sharded; add cache purge if using on-demand |
Reserved binding names (do not reuse): ASSETS, WORKER_SELF_REFERENCE, NEXT_INC_CACHE_R2_BUCKET, NEXT_CACHE_DO_QUEUE, NEXT_TAG_CACHE_D1, NEXT_TAG_CACHE_DO_SHARDED, NEXT_CACHE_DO_PURGE, IMAGES.
CACHE_PURGE_API_TOKEN + CACHE_PURGE_ZONE_ID secrets).res.revalidate requires a self-reference service binding named WORKER_SELF_REFERENCE.next.config.ts headers() for public/ and immutable build files do not apply. Use public/_headers.Deep dive (all options, env vars, regional modes, migration from 0.6) → references/caching.md and references/known-issues.md.
cache() from react; maxUses: 1 on PG pools; getCloudflareContext({ async: true }) for ISR/SSG; Prisma needs previewFeatures = ["driverAdapters"], no output dir in schema.prisma, and serverExternalPackages: ["@prisma/client", ".prisma/client"]. → references/bindings-and-services.mdnode:https; pass httpClient: Stripe.createFetchHttpClient(). → references/bindings-and-services.mdimages.binding: "IMAGES" in wrangler.jsonc, or a custom loader (/cdn-cgi/image/...) for zones. minimumCacheTTL and dangerouslyAllowLocalIP are not supported; custom loader bypasses middleware and ignores remotePatterns. → references/advanced.md.env files (not just .dev.vars); NEXTJS_ENV in .dev.vars selects the env; --keep-vars on deploy; secrets are write-only. → references/dev-deploy-and-env.mdscheduled, Durable Object exports) — point main at your worker that re-exports the generated fetch handler. → references/advanced.md@opennextjs/cloudflare deploy. → references/advanced.mdcloudflare.skewProtection.enabled, run_worker_first: true, getDeploymentId(), env vars CF_WORKER_NAME/CF_PREVIEW_DOMAIN/CF_WORKERS_SCRIPTS_API_TOKEN/CF_ACCOUNT_ID. Disabled for Workers with a Durable Object (move DOs to a separate worker). → references/advanced.mdreferences/error-catalog-extended.md)"Your Worker exceeded the size limit of 3 MiB" (Free) / "10 MiB" (Paid). Only gzip size counts. Free → upgrade to Paid. Paid → analyze bundle: npx @opennextjs/cloudflare build, then inspect .open-next/server-functions/default/handler.mjs.meta.json (visualize with ESBuild Bundle Analyzer); remove unused deps, use dynamic imports.
Global DB client (e.g. postgres, pg Pool) reused across requests. Create the client inside the request handler (or use cache() from react), and maxUses: 1 for PG pools.
Enable nodejs_compat, ensure compatibility_date ≥ 2024-09-23. Some packages ship a workerd export — add them to serverExternalPackages in next.config.ts (e.g. @prisma/client, .prisma/client, postgres, jose, react-textarea-autosize, @libsql/isomorphic-ws). Or set .env: WRANGLER_BUILD_CONDITIONS="" + WRANGLER_BUILD_PLATFORM="node".
/_next/image SSRF. Upgrade immediately: @opennextjs/cloudflare@^1.3.0 (current: ^1.18.1).
server/chunks/ssr/<name>.jsOutdated adapter with Turbopack builds. Upgrade @opennextjs/cloudflare to latest, or switch to webpack (next build without --turbo).
ReferenceError: FinalizationRegistry is not definedcompatibility_date too old. Set "compatibility_date": "2025-05-05" (or later) in wrangler.jsonc.
Uncaught ReferenceError: __name is not definedWrangler's esbuild keep-names injects __name into generated script strings that some libs (e.g. next-themes) eval at runtime. Set "keep_names": false in wrangler.jsonc (requires Wrangler ≥ 4.13.0). You lose original function names in debugging.
populateCache remoteAccount protected by Cloudflare Access blocks the open-next-cache-populate helper worker. Do not create a separate Access app for it; add a Service Auth policy (Include = Any Access Service Token) to the existing app covering *.<account>.workers.dev, create a service token, and export CLOUDFLARE_ACCESS_CLIENT_ID / CLOUDFLARE_ACCESS_CLIENT_SECRET.
Always check the issue tracker — these are recurring at the time of writing:
| # | Bug | Workaround |
|---|---|---|
| #1171 | v1.18.0 breaks R2 cache population (pinned) | Pin to 1.17.x or upgrade past the fix |
| #1277 | proxy.js not supported — Next 16 proxy.ts rename breaks routing | Keep middleware.ts on Cloudflare |
| #1130 / #1225 | cacheComponents: true crashes (Unexpected identifier '$' / Connection closed) | Disable cacheComponents |
| #1321 | Intermittent React hydration mismatch (~9% of loads) | — |
| #1322 / #1214 | Hyperdrive + pg / @prisma/adapter-pg bundling failure | — |
| #1315 | Time-based fetch-cache revalidation silently no-ops on Next 16 (deployed) | — |
| #1305 | Windows + Turbopack routes 500 | Use Linux/macOS or webpack |
| #1317 | @cf-wasm/photon Turbopack build fails (raw .wasm) | Use webpack |
| #1326 | Webpack chunk inlining misses named chunks → Unknown chunk N | — |
| #617 | Node middleware (Next 15.2+) unsupported (feature request) | Use standard middleware |
Full tracker: https://github.com/opennextjs/opennextjs-cloudflare/issues
| Feature | Status | Notes |
|---|---|---|
| App Router, Pages Router, Route Handlers, Dynamic routes | ✅ | Full |
| React Server Components, Server Actions | ✅ | Full |
| SSG, SSR, ISR | ✅ | Full |
| Middleware | ✅ | Except Node middleware (Next 15.2+, issue #617) |
| Image optimization | ✅ | Via Cloudflare Images (binding or custom loader) |
| Partial Prerendering (PPR) | ✅ | But cache interception + PPR incompatible today |
Composable Caching ('use cache'), after | ✅ | |
| Turbopack | ✅ | But see #1305, #1317, #1326 — webpack is safer |
| Edge Runtime | ❌ | Node runtime only; remove runtime = "edge" |
| Node Middleware (15.2+) | ❌ | #617 |
| Skill | Use for |
|---|---|
nextjs | Next.js framework/App Router patterns on any platform (the proxy.ts/cache/Server Components reference) |
cloudflare-workers | Generic Workers patterns; framework decision tree (Hono vs OpenNext) |
drizzle-orm-d1 | Drizzle + D1 deep dive (note: OpenNext must not bundle Wrangler — see its error catalog) |
cloudflare-r2 / cloudflare-kv / cloudflare-d1 | Service-specific deep dives |
dependency-upgrade | Pinning/auditing @opennextjs/cloudflare (production traffic) |
| File | Load when |
|---|---|
references/caching.md | Choosing/configuring incremental/queue/tag cache, regional cache, cache purge |
references/bindings-and-services.md | Integrating D1/R2/KV/AI/Hyperdrive, Drizzle/Prisma request-scoped clients, Stripe |
references/dev-deploy-and-env.md | Setting up dev/preview/deploy, Workers Builds CI, env vars/secrets |
references/advanced.md | Custom worker, multi-worker, skew protection, static assets, keep_names, workerd packages, image optimization |
references/known-issues.md | DO build warnings, migrating 0.6 → 1.0.0-beta |
references/error-catalog-extended.md | Any error beyond the top 8 above |
references/troubleshooting.md | Step-by-step debugging + profiling/minification |
references/feature-support.md | Detailed feature compatibility matrix |
references/wrangler.jsonc | Small-site and large-site wrangler templates (all reserved bindings) |
references/open-next.config.ts | The three caching tiers as runnable configs |
references/database-client-example.ts | Request-scoped DB client patterns |
references/package.json | Reference scripts + versions |
Version: @opennextjs/cloudflare ^1.18.1 · Next.js 14/15/16 · Wrangler ≥ 3.99.0 · compatibility_date ≥ 2025-05-05
Last Verified: 2026-08-05
© secondsky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 16 other files (scripts, references, assets) in plugins/cloudflare-nextjs/skills/cloudflare-nextjs of secondsky/claude-skills.
Open the folder on GitHubat commit 8837836
Cloudflare Nextjs 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 |
|---|---|---|---|---|---|---|
| Cloudflare Nextjs this skillsecondsky/claude-skills | 227 | — | ~5.3k | Automated safety check: Notes | MIT | |
| Olore Opennext Latestolorehq/olore | 104 | — | ~825 | Automated safety check: Pass | MIT | |
| Cloudflare Email Servicehodgef/apiker | 127 | 3 repos | ~2k | Automated safety check: Pass | MIT | |
| Spiceflowremorses/spiceflow | 167 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Cloudflareericrisco/rsc-harness | 167 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Fullstack Debuggercuriositech/some_claude_skills | 243 | — | ~3.7k | Automated safety check: Notes | MIT |
olorehq/olore
Local opennext documentation reference (latest). An agent skill from olorehq/olore.
hodgef/apiker
Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing).
remorses/spiceflow
Spiceflow is a super simple, fast, and type-safe API and React Server Components framework for TypeScript.
ericrisco/rsc-harness
A skill your agent uses when working on Cloudflare's edge platform — wrangler.jsonc bindings, choosing between D1/KV/R2/Durable Objects/Queues, deploying a Worker or SPA via Static Assets, or…
curiositech/some_claude_skills
Expert debugger for Next.js + Cloudflare Workers + Supabase stacks.
curiositech/some_claude_skills
Cloudflare Workers, KV, Durable Objects, and edge computing development.
secondsky/claude-skills
TanStack AI (alpha) provider-agnostic type-safe chat with streaming for OpenAI, Anthropic, Gemini, Ollama.
secondsky/claude-skills
AutoAnimate (@formkit/auto-animate) zero-config animations for React.
secondsky/claude-skills
MUI Base UI unstyled React components with Floating UI. An agent skill from secondsky/claude-skills.
secondsky/claude-skills
This skill should be used when the user asks to "upload images to Cloudflare", "implement direct creator upload", "configure image transformations", "optimize WebP/AVIF", "create image variants"…
secondsky/claude-skills
Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.
secondsky/claude-skills
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design.
Categories
Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare). Cloudflare Nextjs is an agent skill from secondsky/claude-skills.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).
Cloudflare Nextjs fits situations like: SSR/ISR/SSG/App; getCloudflareContext; bindings (D1/R2/KV/AI/Hyperdrive); skew protection.
Run `npx skills add secondsky/claude-skills --skill cloudflare-nextjs -a claude-code`. Or copy the skill folder (plugins/cloudflare-nextjs/skills/cloudflare-nextjs in secondsky/claude-skills) into .claude/skills/cloudflare-nextjs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add secondsky/claude-skills --skill cloudflare-nextjs -a codex`. Or copy the skill folder (plugins/cloudflare-nextjs/skills/cloudflare-nextjs in secondsky/claude-skills) into .agents/skills/cloudflare-nextjs 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 secondsky/claude-skills --skill cloudflare-nextjs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cloudflare-nextjs, .gemini/skills/cloudflare-nextjs, .github/skills/cloudflare-nextjs and .opencode/skills/cloudflare-nextjs in your project.
Going by SKILL.md and its folder, Cloudflare Nextjs needs a shell and TypeScript for the scripts in its folder, the command-line tools its instructions call (npm, npx and wrangler) and credentials named CACHE_PURGE_API_TOKEN, CF_WORKERS_SCRIPTS_API_TOKEN and CLOUDFLARE_ACCESS_CLIENT_SECRET. Our summary lists: Node.js; A Bash shell; A credential in CACHE_PURGE_API_TOKEN.
SKILL.md names 2 domains. As links in the text: opennext.js.org and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Cloudflare Nextjs is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 18k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Cloudflare Nextjs: Olore Opennext Latest (olorehq/olore, 104 stars), Cloudflare Email Service (hodgef/apiker, 127 stars), Spiceflow (remorses/spiceflow, 167 stars) and Cloudflare (ericrisco/rsc-harness, 167 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
secondsky (a GitHub user) maintains it in secondsky/claude-skills, which has 227 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 28, 2026.
Source: secondsky/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.