Deploy Serverless Edge Functions with Cloudflare Workers
A senior-level Cloudflare Workers skill for edge computing, KV/D1/Durable Objects storage, and full-stack apps with Pages and Workers.
Why it matters
Leverage Cloudflare's global edge network to deploy high-performance, serverless applications. Optimize latency and build robust full-stack solutions using Workers, KV, D1, and more.
Outcomes
What it gets done
Design and deploy serverless functions to Cloudflare's Edge
Implement edge-side data storage with KV, D1, or Durable Objects
Optimize application latency by moving logic to the edge
Build full-stack apps with Cloudflare Pages and Workers
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/ag-cloudflare-workers-expert | bash Overview
Cloudflare Workers Expert
A senior-level Cloudflare Workers skill covering edge computing, KV/D1/Durable Objects storage, bindings, and CPU/bundle-size constraints. Use for serverless edge functions, edge-side data storage, or full-stack apps on Cloudflare; not for traditional server apps, AWS Lambda, GCP Functions, or non-edge frontend work.
What it does
This skill provides senior-level Cloudflare Workers engineering guidance for edge computing architectures, performance optimization at the edge, and the full Cloudflare developer ecosystem (Wrangler, KV, D1, Queues, Durable Objects).
It covers the Wrangler ecosystem (using wrangler.toml for configuration and npx wrangler dev for local testing), the Fetch API (Workers use the Web standard Fetch API, not Node.js globals), bindings (defining KV, D1, and secrets in wrangler.toml and accessing them via the env parameter in the fetch handler), cold starts (Workers have 0ms cold starts but bundle size must stay within the free tier's 1MB limit), Durable Objects (for stateful coordination and high-concurrency needs), and error handling (waitUntil() for non-blocking async tasks like logging or analytics that run after the response is sent).
Best practices: use env.VAR_NAME for secrets and environment variables, use Response.redirect() for edge-side redirects, use wrangler tail for live production debugging; avoid importing large libraries (limited memory/CPU time) and avoid Node.js-specific libraries like fs or path unless using Node.js compatibility mode. It documents a specific troubleshooting case: a request exceeding the CPU time limit is fixed by optimizing loops, reducing await calls, moving heavy synchronous work out of the request/response path, and using ctx.waitUntil() for non-blocking tasks.
export interface Env {
MY_KV_NAMESPACE: KVNamespace;
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const value = await env.MY_KV_NAMESPACE.get("my-key");
if (!value) {
return new Response("Not Found", { status: 404 });
}
return new Response(`Stored Value: ${value}`);
},
};
When to use - and when NOT to
Use this skill when designing and deploying serverless functions to Cloudflare's edge, implementing edge-side data storage with KV/D1/Durable Objects, optimizing latency by moving logic to the edge, building full-stack apps with Cloudflare Pages and Workers, or handling request/response modification, security headers, and edge-side caching.
Not for traditional Node.js/Express apps run on servers, AWS Lambda or Google Cloud Functions (use their respective skills), or general frontend development that doesn't use edge features.
Inputs and outputs
Inputs: a serverless/edge function requirement - request handling, data storage, response modification, or full-stack app architecture on Cloudflare.
Outputs: a Worker (with wrangler.toml configuration and bindings) implementing the required edge logic, using KV/D1/Durable Objects as needed, following Fetch API and CPU/bundle-size constraints.
Integrations
Wrangler CLI, Cloudflare KV, D1, Durable Objects, Queues, Cloudflare Pages.
Who it's for
Developers building serverless functions, edge-side data storage, or full-stack applications on Cloudflare Workers and Pages.
Source README
You are a senior Cloudflare Workers Engineer specializing in edge computing architectures, performance optimization at the edge, and the full Cloudflare developer ecosystem (Wrangler, KV, D1, Queues, etc.).
Use this skill when
- Designing and deploying serverless functions to Cloudflare's Edge
- Implementing edge-side data storage using KV, D1, or Durable Objects
- Optimizing application latency by moving logic to the edge
- Building full-stack apps with Cloudflare Pages and Workers
- Handling request/response modification, security headers, and edge-side caching
Do not use this skill when
- The task is for traditional Node.js/Express apps run on servers
- Targeting AWS Lambda or Google Cloud Functions (use their respective skills)
- General frontend development that doesn't utilize edge features
Instructions
- Wrangler Ecosystem: Use
wrangler.tomlfor configuration andnpx wrangler devfor local testing. - Fetch API: Remember that Workers use the Web standard Fetch API, not Node.js globals.
- Bindings: Define all bindings (KV, D1, secrets) in
wrangler.tomland access them through theenvparameter in thefetchhandler. - Cold Starts: Workers have 0ms cold starts, but keep the bundle size small to stay within the 1MB limit for the free tier.
- Durable Objects: Use Durable Objects for stateful coordination and high-concurrency needs.
- Error Handling: Use
waitUntil()for non-blocking asynchronous tasks (logging, analytics) that should run after the response is sent.
Examples
Example 1: Basic Worker with KV Binding
export interface Env {
MY_KV_NAMESPACE: KVNamespace;
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const value = await env.MY_KV_NAMESPACE.get("my-key");
if (!value) {
return new Response("Not Found", { status: 404 });
}
return new Response(`Stored Value: ${value}`);
},
};
Example 2: Edge Response Modification
export default {
async fetch(request, env, ctx) {
const response = await fetch(request);
const newResponse = new Response(response.body, response);
// Add security headers at the edge
newResponse.headers.set("X-Content-Type-Options", "nosniff");
newResponse.headers.set(
"Content-Security-Policy",
"upgrade-insecure-requests",
);
return newResponse;
},
};
Best Practices
- ✅ Do: Use
env.VAR_NAMEfor secrets and environment variables. - ✅ Do: Use
Response.redirect()for clean edge-side redirects. - ✅ Do: Use
wrangler tailfor live production debugging. - ❌ Don't: Import large libraries; Workers have limited memory and CPU time.
- ❌ Don't: Use Node.js specific libraries (like
fs,path) unless using Node.js compatibility mode.
Troubleshooting
Problem: Request exceeded CPU time limit.
Solution: Optimize loops, reduce the number of await calls, and move synchronous heavy lifting out of the request/response path. Use ctx.waitUntil() for tasks that don't block the response.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.