About edge-computing
A skill reference for developers building compute close to users on edge platforms. It covers platform options alongside patterns for geo-routing, caching, and stateful connections.
Key features
- 01References Cloudflare Workers, Deno Deploy, and others
- 02Routes requests by geographic location
- 03Caches responses with KV
- 04A/B testing and bot detection patterns
- 05Stateful connections with Durable Objects
- 06Notes on edge runtime constraints
Use cases
- 01Choose an API based on request country
- 02Cache origin responses to avoid repeated fetches
- 03Assign users an A/B test variant
- 04Build chat sessions over WebSockets
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill edge-computingAfter installing, type/edge-computingin Claude Code to confirm it loaded.
Details
From the project READMEEdge Computing — Cloudflare Workers, Deno Deploy
Compute global faible latence, proche utilisateur.
Platforms
Cloudflare Workers — V8, 300+ POPs, KV/Durable
Deno Deploy — Deno, 30+ POPs, TypeScript
Vercel Edge — V8, 20+ POPs, Next.js
Fastly Compute@Edge — WASM, 70+ POPs
Geo-Routing
export default {
async fetch(req) {
const api = req.cf.country === 'US' ? 'us-api' : 'eu-api';
return fetch(`https://${api}.example.com${req.url}`);
}
};
Edge Caching (KV)
const key = new URL(req.url).pathname;
let cached = await env.KV.get(key);
if (cached) return new Response(cached, { headers: { 'X-Cache': 'HIT' } });
const resp = await fetch('https://origin.com' + key);
const body = await resp.text();
await env.KV.put(key, body, { expirationTtl: 3600 });
return new Response(body, { headers: { 'X-Cache': 'MISS' } });
A/B Testing
const variant = Math.random() < 0.5 ? 'A' : 'B';
resp.cookies.set('ab_test', variant);
Bot Detection
if (/bot|crawler/i.test(req.headers.get('User-Agent'))) {
return new Response('Forbidden', { status: 403 });
}
Durable Objects (Stateful)
export class ChatRoom {
async fetch(req) {
const [client, server] = Object.values(new WebSocketPair());
this.sessions.push(server); server.accept();
server.on('message', e => this.broadcast(e.data));
return new Response(null, { status: 101, webSocket: client });
}
}
Constraints
CPU 10-50ms → offload heavy
Memory 128MB → streaming
No FS → KV/R2
Voir @.claude/skills/wasm/SKILL.md
Comments
Markdown supported