/makers-edge-functions
V8-based lightweight edge functions on EdgeOne Makers. Covers routing, KV storage access, request/response handling, and environment variables at the edge.
$ npx -y skills add tencentedgeone/edgeone-pages-skills --skill makers-edge-functions --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/makers-edge-functions
Context preview
The summary Claude sees to decide when to auto-load this skill.
V8-based lightweight edge functions on EdgeOne Makers. Covers routing, KV storage access, request/response handling, and environment variables at the edge.
SKILL.md
makers-edge-functions.SKILL.mdname: edgeone-makers-edge-functions
description: >-
V8-based lightweight edge functions on EdgeOne Makers. Covers routing, KV storage access,
request/response handling, and environment variables at the edge.
pathPatterns:
- edge-functions/**
- functions/**
validate:
- pattern: "process\\.env"
message: "Use context.env in EdgeOne Makers runtime code."
- pattern: "new\\s+Headers\\s*\\("
message: "Use plain object headers for this runtime surface."
- pattern: "fs\\.writeFile"
message: "Edge Functions do not support filesystem writes."
metadata:
author: edgeone
version: "1.0.0"Edge Functions
V8-based lightweight functions running at the edge. Ideal for simple APIs, KV storage access, and ultra-low latency responses.
> **Runtime:** V8 (like Cloudflare Workers) — NOT Node.js. Do NOT use Node.js built-ins or npm packages. > > ⚠️ `Response.json()` is **NOT available** in this V8 runtime. Always use `new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })` instead.
Basic function
File: `edge-functions/api/hello.js`
export default function onRequest(context) {
return new Response('Hello from Edge Functions!');
}Access: `GET /api/hello`
HTTP method handlers
// edge-functions/api/users.js
// Handle all methods
export function onRequest(context) {
return new Response('Any method');
}
// Or use specific method handlers:
export function onRequestGet(context) {
return new Response(JSON.stringify({ users: [] }), {
headers: { 'Content-Type': 'application/json' },
});
}
export async function onRequestPost(context) {
const body = await context.request.json();
return new Response(JSON.stringify({ created: true }), {
status: 201,
headers: { 'Content-Type': 'application/json' },
});
}EventContext object
export function onRequest(context) {
const {
request, // Standard Request object
params, // Dynamic route params, e.g. { id: "123" }
env, // Environment variables from Makers console
waitUntil, // Extend function lifetime for async tasks
} = context;
// GEO info available via:
const geo = context.request.eo;
// geo.geo.countryName, geo.geo.cityName, geo.geo.latitude, etc.
return new Response('OK');
}Dynamic routes
// edge-functions/api/users/[id].js
// Matches: /api/users/123, /api/users/abc
export function onRequestGet(context) {
const userId = context.params.id;
return new Response(JSON.stringify({ userId }), {
headers: { 'Content-Type': 'application/json' },
});
}// edge-functions/api/[[default]].js
// Catches all unmatched routes under /api/
export function onRequest(context) {
return new Response('Catch-all route', { status: 404 });
}KV Storage (Edge Functions only)
> Cross-reference: if your code uses `context.store` or KV APIs, also read `skills/makers-storage/SKILL.md`.
⚠️ **Prerequisites**: You must enable KV Storage in the EdgeOne Makers console, create a namespace, and bind it to your project before using KV. See [kv-storage.md](kv-storage.md) for full setup instructions (same directory).
The KV namespace is a **global variable** (name is set when binding in the console) — it is **NOT** on `context.env`.
// edge-functions/api/counter.js
export async function onRequest(context) {
// ⚠️ my_kv is a GLOBAL variable (name set when binding namespace in console)
// Do NOT use context.env.KV ❌
// Read
const count = await my_kv.get('page_views') || '0';
const newCount = parseInt(count) + 1;
// Write
await my_kv.put('page_views', String(newCount));
return new Response(JSON.stringify({ views: newCount }), {
headers: { 'Content-Type': 'application/json' },
});
}For full KV Storage API reference and usage guide, see: [kv-storage.md](kv-storage.md) (same directory).
Supported Runtime APIs
Edge Functions run on V8 and support these Web Standard APIs:
- **Fetch API** — `fetch()` for outbound HTTP requests
- **Cache API** — `caches.open()`, `cache.match()`, `cache.put()`
- **Headers / Request / Response** — standard Web API objects
- **Streams** — `ReadableStream`, `WritableStream`, `TransformStream`
- **Web Crypto** — `crypto.subtle` for encryption/signing
- **Encoding** — `TextEncoder`, `TextDecoder`
- **URL / URLSearchParams** — URL parsing
⚠️ **NOT available**: Node.js built-ins (`fs`, `path`, `http`, `crypto` from Node), `require()`, npm packages.
Limits
| Resource | Limit | |----------|-------| | Code package size | 5 MB | | Request body | 1 MB | | CPU time per invocation | 200 ms | | Language | JavaScript (ES2023+) only |
Read more
name: edgeone-makers-edge-functions
description: >-
V8-based lightweight edge functions on EdgeOne Makers. Covers routing, KV storage access,
request/response handling, and environment variables at the edge.
pathPatterns:
- edge-functions/**
- functions/**
validate:
- pattern: "process\\.env"
message: "Use context.env in EdgeOne Makers runtime code."
- pattern: "new\\s+Headers\\s*\\("
message: "Use plain object headers for this runtime surface."
- pattern: "fs\\.writeFile"
message: "Edge Functions do not support filesystem writes."
metadata:
author: edgeone
version: "1.0.0"Edge Functions
V8-based lightweight functions running at the edge. Ideal for simple APIs, KV storage access, and ultra-low latency responses.
> **Runtime:** V8 (like Cloudflare Workers) — NOT Node.js. Do NOT use Node.js built-ins or npm packages. > > ⚠️ `Response.json()` is **NOT available** in this V8 runtime. Always use `new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })` instead.
Basic function
File: `edge-functions/api/hello.js`
export default function onRequest(context) {
return new Response('Hello from Edge Functions!');
}Access: `GET /api/hello`
HTTP method handlers
// edge-functions/api/users.js
// Handle all methods
export function onRequest(context) {
return new Response('Any method');
}
// Or use specific method handlers:
export function onRequestGet(context) {
return new Response(JSON.stringify({ users: [] }), {
headers: { 'Content-Type': 'application/json' },
});
}
export async function onRequestPost(context) {
const body = await context.request.json();
return new Response(JSON.stringify({ created: true }), {
status: 201,
headers: { 'Content-Type': 'application/json' },
});
}EventContext object
export function onRequest(context) {
const {
request, // Standard Request object
params, // Dynamic route params, e.g. { id: "123" }
env, // Environment variables from Makers console
waitUntil, // Extend function lifetime for async tasks
} = context;
// GEO info available via:
const geo = context.request.eo;
// geo.geo.countryName, geo.geo.cityName, geo.geo.latitude, etc.
return new Response('OK');
}Dynamic routes
// edge-functions/api/users/[id].js
// Matches: /api/users/123, /api/users/abc
export function onRequestGet(context) {
const userId = context.params.id;
return new Response(JSON.stringify({ userId }), {
headers: { 'Content-Type': 'application/json' },
});
}// edge-functions/api/[[default]].js
// Catches all unmatched routes under /api/
export function onRequest(context) {
return new Response('Catch-all route', { status: 404 });
}KV Storage (Edge Functions only)
> Cross-reference: if your code uses `context.store` or KV APIs, also read `skills/makers-storage/SKILL.md`.
⚠️ **Prerequisites**: You must enable KV Storage in the EdgeOne Makers console, create a namespace, and bind it to your project before using KV. See [kv-storage.md](kv-storage.md) for full setup instructions (same directory).
The KV namespace is a **global variable** (name is set when binding in the console) — it is **NOT** on `context.env`.
// edge-functions/api/counter.js
export async function onRequest(context) {
// ⚠️ my_kv is a GLOBAL variable (name set when binding namespace in console)
// Do NOT use context.env.KV ❌
// Read
const count = await my_kv.get('page_views') || '0';
const newCount = parseInt(count) + 1;
// Write
await my_kv.put('page_views', String(newCount));
return new Response(JSON.stringify({ views: newCount }), {
headers: { 'Content-Type': 'application/json' },
});
}For full KV Storage API reference and usage guide, see: [kv-storage.md](kv-storage.md) (same directory).
Supported Runtime APIs
Edge Functions run on V8 and support these Web Standard APIs:
- **Fetch API** — `fetch()` for outbound HTTP requests
- **Cache API** — `caches.open()`, `cache.match()`, `cache.put()`
- **Headers / Request / Response** — standard Web API objects
- **Streams** — `ReadableStream`, `WritableStream`, `TransformStream`
- **Web Crypto** — `crypto.subtle` for encryption/signing
- **Encoding** — `TextEncoder`, `TextDecoder`
- **URL / URLSearchParams** — URL parsing
⚠️ **NOT available**: Node.js built-ins (`fs`, `path`, `http`, `crypto` from Node), `require()`, npm packages.
Limits
| Resource | Limit | |----------|-------| | Code package size | 5 MB | | Request body | 1 MB | | CPU time per invocation | 200 ms | | Language | JavaScript (ES2023+) only |
Official AI Agent Skills for developing and deploying projects on EdgeOne Makers.
Repo: tencentedgeone/edgeone-pages-skills
Other skills on edgeone-makers-tools.
- /makers-agents
This skill guides building AI agent endpoints on EdgeOne Makers — five framework routes (DeepAgents, LangGraph, CrewAI, OpenAI Agents SDK, Claude Agent SDK), platform-injected `context.store` / `context.tools` / `context.sandbox`, conversation_id dual-channel routing, SSE
Open skill - /makers-cli
EdgeOne Makers CLI command reference. Use when running edgeone CLI commands for dev, build, deploy, env management.
Open skill - /makers-cloud-functions
EdgeOne Makers Cloud Functions — Node.js, Go, and Python runtimes. Use when building server-side APIs, Express/Koa patterns, or backend logic.
Open skill - /makers-deploy
This skill deploys frontend and full-stack projects to EdgeOne Makers (Tencent EdgeOne). Trigger this skill whenever deployment is part of the task — whether as the primary intent or a secondary step. Examples: "deploy my app", "publish this site", "push this live", "create a
Open skill - /makers-env-adaption
Environment-specific adaptation rules for EdgeOne Makers Skills running in sandboxed or restricted AI coding environments (e.g. WorkBuddy). Trigger when: the user is working in WorkBuddy, a sandboxed IDE, or any non-interactive/CI environment where CLI commands may hang or
Open skill - /makers-middleware
Edge middleware for EdgeOne Makers — request interception, redirects, rewrites, auth guards, A/B testing, and header injection at the edge (V8 runtime).
Open skill

