Awesome-omni-skill cloudflare-workers-expert
Expert in Cloudflare Workers and the Edge Computing ecosystem. Covers Wrangler, KV, D1, Durable Objects, and R2 storage.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/cloudflare-workers-expert" ~/.claude/skills/diegosouzapw-awesome-omni-skill-cloudflare-workers-expert && rm -rf "$T"
manifest:
skills/development/cloudflare-workers-expert/SKILL.mdsource content
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
for configuration andwrangler.toml
for local testing.npx wrangler dev - Fetch API: Remember that Workers use the Web standard Fetch API, not Node.js globals.
- Bindings: Define all bindings (KV, D1, secrets) in
and access them through thewrangler.toml
parameter in theenv
handler.fetch - 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
for non-blocking asynchronous tasks (logging, analytics) that should run after the response is sent.waitUntil()
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
for secrets and environment variables.env.VAR_NAME - ✅ Do: Use
for clean edge-side redirects.Response.redirect() - ✅ Do: Use
for live production debugging.wrangler tail - ❌ Don't: Import large libraries; Workers have limited memory and CPU time.
- ❌ Don't: Use Node.js specific libraries (like
,fs
) unless using Node.js compatibility mode.path
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.