⏳ This skill is pending AI review.
Scores will appear once the review pipeline completes.
open-pr
Take a cloudflare/agents GitHub issue plus any repro findings and one-shot a fix PR — branch, change, test, push, and open the PR linked to the issue.
Choose how to use this skill
You do not need every option. Choose the path your AI client supports. The stable page stays the same; versioned files are immutable.
1. Native installer
This listing has no registered native installer command. Use the complete package or source fallback below, depending on what your client supports.
Do not guess an installer command or replace an existing version without reviewing the diff.
2. Complete package recommended
Download the ZIP when available. It includes SKILL.md plus the references, security notes and version metadata.
No complete ProSkills package is published for this listing yet.3. Prompt-only
Copy the prompt above when the agent can read the stable page or when you want to adopt the workflow without installing a skill.
Need only the instruction file?
Download SKILL.md only if your client requires a single file. The complete ZIP is safer for a full installation because it preserves the references and release context.
No path installs or executes anything by itself. Your agent still needs access to the project files. Before updating, compare the installed version and review the diff.
// RATINGS
Not yet listed on ClawHub or SkillsMP
// README
Cloudflare Agents
Agents are persistent, stateful execution environments for agentic workloads, powered by Cloudflare Durable Objects. Each agent has its own state, storage, and lifecycle — with built-in support for real-time communication, scheduling, AI model calls, MCP, workflows, and more.
Agents hibernate when idle and wake on demand. You can run millions of them — one per user, per session, per game room — each costs nothing when inactive.
npm create cloudflare@latest -- --template cloudflare/agents-starter
Or add to an existing project:
npm install agents
Read the docs — getting started, API reference, guides, and more.
Quick Example
A counter agent with persistent state, callable methods, and real-time sync to a React frontend:
// server.ts
import { Agent, routeAgentRequest, callable } from "agents";
export type CounterState = { count: number };
export class CounterAgent extends Agent<Env, CounterState> {
initialState = { count: 0 };
@callable()
increment() {
this.setState({ count: this.state.count + 1 });
return this.state.count;
}
@callable()
decrement() {
this.setState({ count: this.state.count - 1 });
return this.state.count;
}
}
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext) {
return (
(await routeAgentRequest(request, env)) ??
new Response("Not found", { status: 404 })
);
}
};
// client.tsx
import { useAgent } from "agents/react";
import { useState } from "react";
import type { CounterAgent, CounterState } from "./server";
function Counter() {
const [count, setCount] = useState(0);
const agent = useAgent<CounterAgent, CounterState>({
agent: "CounterAgent",
onStateUpdate: (state) => setCount(state.count)
});
return (
<div>
<span>{count}</span>
<button onClick={() => agent.stub.increment()}>+</button>
<button onClick={() => agent.stub.decrement()}>-</button>
</div>
);
}
State changes sync to all connected clients automatically. Call methods like they're local functions.
The agent is a Durable Object, so it needs a binding and a SQLite migration in wrangler.jsonc:
{
"name": "counter",
"main": "server.ts",
"compatibility_date": "2026-06-11",
"compatibility_flags": ["nodejs_compat"],
"durable_objects": {
"bindings": [{ "name": "CounterAgent", "class_name": "CounterAgent" }]
},
"migrations": [{ "tag": "v1", "new_sqlite_classes": ["CounterAgent"] }]
}
Features
| Feature | Description |
|---|---|
| Persistent State | Syncs to all connected clients, survives restarts |
| Callable Methods | Type-safe RPC via the @callable() decorator |
| Sub-agents | Parent/child DO composition via facets, nested routing, and typed parent lookup |
| Agent Tools | Run chat-capable sub-agents as tools with streaming child timelines |
| Scheduling | One-time, recurring, and cron-based tasks |
| WebSockets | Real-time bidirectional communication with lifecycle hooks |
| AI Chat | Message persistence, resumable streaming, server/client tool execution |
| MCP | Act as MCP servers or connect as MCP clients (HTTP, SSE, RPC, elicitation) |
| WebMCP | Expose page-local tools or bridge remote MCP tools to browser agents |
| Workflows | Durable multi-step tasks with human-in-the-loop approval |
| Send, receive, and reply via Cloudflare Email Service | |
| Voice | Continuous STT, streaming TTS, VAD, interruption, SFU utilities |
| Browser Agents | Run agents in the browser tab with agents/browser |
| Code Mode | LLMs generate executable TypeScript instead of individual tool calls |
| Sandboxed Execution | Run generated code inside an isolated Worker with a virtual filesystem |
| x402 Payments | Pay-per-call APIs and tools via the x402 protocol |
| Observability | Built-in tracing, metrics, and structured logs |
| SQL | Direct SQLite queries via Durable Objects |
| React Hooks | useAgent, useAgentChat, useVoiceAgent for frontend integration |
| Vanilla JS Client | AgentClient and VoiceClient for non-React environments |
Packages
| Package | Description |
|---|---|
agents | Core SDK — Agents, routing, Voice, Channels, scheduling, MCP, workflows, x402, browser agents |
@cloudflare/ai-chat | Higher-level AI chat — persistent messages, resumable streaming, tool execution |
@cloudflare/think | Opinionated chat agent base — agentic loop, stream resumption, client tools, workspace tools |
@cloudflare/codemode | LLMs write executable code that calls your tools, instead of one tool call at a time |
@cloudflare/shell | Sandboxed JS execution + virtual filesystem (Workspace) for agents |
@cloudflare/voice | Deprecated compatibility wrapper for the agents/voice exports |
@cloudflare/worker-bundler | Build and bundle Workers at runtime, for use with the Worker Loader binding |
hono-agents | Hono middleware for adding agents to Hono apps |
AI-chat modules used to live in
agents/ai-chat-agent,agents/chat,agents/ai-react, andagents/ai-types. Those entry points still re-export, but they're deprecated — import from@cloudflare/ai-chatdirectly. New chat-from-scratch projects should look at@cloudflare/think.
Examples
The examples/ directory has 30+ self-contained demos. A non-exhaustive tour:
- Showcase —
playground/is the kitchen-sink app: state, callable methods, scheduling, chat, tools, MCP, workflows, email, voice — all in one UI - Chat & assistants —
assistant/,agents-as-tools/,agent-skills/,workspace-chat/,resumable-stream-chat/,structured-input/,dynamic-tools/,multi-ai-chat/,context-overflow-recovery/ - MCP —
mcp/,mcp-client/, [`mc
// HOW IT'S BUILT
KEY FILES