К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

durable-objects — скилл для Claude Code: установка

Скилл помогает создавать, отлаживать и проверять Cloudflare Durable Objects для состояния, координации и постоянных соединений.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add cloudflare/skills --skill durable-objects -a claude-code
Открыть на GitHub

Что делает durable-objects

Скилл направляет агента при создании классов Durable Objects, RPC-методов, alarm-обработчиков и WebSocket-логики. Он также помогает настроить привязки и миграции в wrangler.jsonc или wrangler.toml, выбрать маршрутизацию через getByName() и хранение в SQLite.

Внутри есть правила для состояния, конкурентного доступа, RPC, alarm-ов, Workers и наблюдаемости, а также отдельные материалы по тестированию через интеграцию Cloudflare с Vitest. Перед реализацией агенту советуют запросить актуальную документацию. Для тестов нужно сначала свериться с references/testing.md.

Скилл отдельно отмечает границы Durable Objects: они подходят для координации сущностей, согласованного состояния и постоянных соединений, но не для stateless-обработки запросов или максимального глобального распределения. blockConcurrencyWhile() нельзя держать во время fetch() или внешнего ввода-вывода, поэтому это повод проверить такой код при ревью.

Какие задачи решает

  • создать класс Durable Object для состояния сущности
  • настроить привязки и миграции в wrangler.jsonc
  • маршрутизировать запросы через getByName()
  • проверить RPC, alarm-ы и WebSocket-обработчики
  • написать тесты через интеграцию Cloudflare с Vitest

Примеры запросов агенту

  • Создай Durable Object для комнаты чата с SQLite-хранилищем и RPC-методами.
  • Проверь этот код Durable Objects: найди ошибки в миграциях, конкурентном доступе и использовании `blockConcurrencyWhile()`.
  • Настрой `wrangler.jsonc` для класса `MyDurableObject`, привязки `MY_DO` и миграции SQLite.

Как установить durable-objects

1Через Skills CLI (Vercel)

npx skills add cloudflare/skills --skill durable-objects -a claude-code

2Вручную: положить файлы

~/.claude/skills/durable-objects/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/durable-objects/

Из того же набора13

Весь набор →
cloudflare cloudflare Помогает агенту подбирать сервисы Cloudflare под задачи проекта, от хостинга до очередей и AI, и выбирать между CLI cf и Wrangler. Claude Code CX Codex Cursor +1 136 500установок wrangler cloudflare Помогает запускать команды Wrangler CLI, настраивать конфигурации и отлаживать деплой Cloudflare Workers в существующих проектах. Claude Code CX Codex Cursor +1 128 500установок workers-best-practices cloudflare Скилл настраивает ИИ на проверку продакшен-кода Cloudflare Workers по актуальным правилам рантайма, типам Wrangler и антипаттернам. Claude Code CX Codex Cursor +1 124 900установок web-perf cloudflare Пошаговый аудит Core Web Vitals, диагностика медленной загрузки и поиск блокирующих скриптов прямо в терминале. Claude Code CX Codex Cursor +1 109 300установок agents-sdk cloudflare Помогает создавать, отлаживать и проверять приложения на базе Cloudflare Agents SDK и пакета agents с актуальной документацией. Claude Code CX Codex Cursor +1 105 700установок cloudflare-email-service cloudflare Скилл для работы с Cloudflare Email Sending и Email Routing: помогает настроить отправку и приём писем в Workers. Claude Code CX Codex Cursor +1 101 400установок cloudflare-one cloudflare Помогает агенту проектировать, настраивать и разбирать развёртывания Cloudflare One Zero Trust и SASE. Пригодится, когда нужно спланировать Access, Gateway или туннели без похода в документацию вручную. Claude Code CX Codex Cursor +1 92 200установок turnstile-spin cloudflare Настраивает защиту от ботов Cloudflare Turnstile во фронтенде и бэкенде: добавляет виджет, прописывает проверку siteverify и проверяет токены API. Claude Code CX Codex Cursor +1 92 200установок

Похожие

bmad-agent-architect bmad-code-org Скилл превращает требования тикета в техническую архитектуру с явными компромиссами. Подойдёт, когда нужно обсудить решение с архитектором Winston. Claude Code CX Codex Cursor +1 11 800установок bmad-qa-generate-e2e-tests bmad-code-org Скилл добавляет e2e- и API-тесты для уже работающих функций по тестовому каркасу проекта. Подойдёт для автоматизации QA-покрытия. Claude Code CX Codex Cursor +1 11 400установок backend-patterns affaan-m Скилл с паттернами бэкенда для Node.js, Express и Next.js API routes: слои, кэш, транзакции, обработка ошибок. Claude Code CX Codex Cursor +1 5 900установок cloud browser-use Скилл даёт справку по Browser Use Cloud, его API и SDK для браузерной автоматизации. Пригодится для новых облачных интеграций и поддержки v2 или v3. Claude Code CX Codex Cursor +1 3 200установок google-cloud-recipe-auth официальный Google LLC Скилл объясняет аутентификацию и права доступа в Google Cloud. Пригодится для настройки IAM, ADC и сервисных аккаунтов в разработке и продакшене. Claude Code Gemini CLI CX Codex 15 450установок api-design affaan-m Скилл задаёт правила проектирования REST API: именование эндпоинтов, выбор статус-кодов, пагинацию и формат ошибок. Помогает при создании и ревью серверных контрактов. Claude Code CX Codex Cursor +1 5 500установок mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. Claude Code Claude.ai 130 949установок google-agents-cli-adk-code официальный Google Скилл даёт примеры и справку по Agent Development Kit: агентам, инструментам, колбэкам, состоянию и графовым workflow. Нужен при написании кода. Claude Code CX Codex Cursor +1 511 400установок

Вопросы о durable-objects

Как установить durable-objects в Claude Code?

Выполните npx skills add cloudflare/skills --skill durable-objects -a claude-code, затем повторите эту команду и используйте файл ~/.claude/skills/durable-objects/SKILL.md.

Что делает durable-objects?

Скилл помогает писать и проверять Cloudflare Durable Objects для координации, постоянного состояния, RPC, alarm-ов и WebSocket-соединений.

Когда Durable Objects не подходят?

Они не предназначены для stateless-обработки запросов, максимального глобального распределения и большого числа независимых запросов.

Исходный текст

SKILL.md · Apache-2.0
---
name: durable-objects
description: Build, debug, or review Cloudflare Durable Objects code for persistent state and coordination.
---

# Durable Objects

Build stateful, coordinated applications on Cloudflare's edge using Durable Objects.

## Retrieval Sources

Your knowledge of Durable Objects APIs and configuration may be outdated. **Prefer retrieval over pre-training** for any Durable Objects task.

| Resource | URL |
|----------|-----|
| Docs | https://developers.cloudflare.com/durable-objects/index.md |
| API Reference | https://developers.cloudflare.com/durable-objects/api/index.md |
| Best Practices | https://developers.cloudflare.com/durable-objects/best-practices/index.md |
| Examples | https://developers.cloudflare.com/durable-objects/examples/index.md |
| Roles and permissions | https://developers.cloudflare.com/workers/authorization/durable-objects/index.md |

Fetch the relevant doc page when implementing features.

## When to Use

- Creating new Durable Object classes for stateful coordination
- Implementing RPC methods, alarms, or WebSocket handlers
- Reviewing existing DO code for best practices
- Configuring wrangler.jsonc/toml for DO bindings and migrations
- Writing tests with Cloudflare’s Vitest integration
- Designing sharding strategies and parent-child relationships

## Reference Documentation

- `./references/rules.md` - Core rules, storage, concurrency, RPC, alarms
- [Testing reference](./references/testing.md) - Current Vitest documentation, migration choices, and test selection
- `./references/workers.md` - Workers handlers, types, wrangler config, observability

Search: `blockConcurrencyWhile`, `idFromName`, `getByName`, `setAlarm`, `sql.exec`

## Core Principles

### Use Durable Objects For

| Need | Example |
|------|---------|
| Coordination | Chat rooms, multiplayer games, collaborative docs |
| Strong consistency | Inventory, booking systems, turn-based games |
| Per-entity storage | Multi-tenant SaaS, per-user data |
| Persistent connections | WebSockets, real-time notifications |
| Scheduled work per entity | Subscription renewals, game timeouts |

### Do NOT Use For

- Stateless request handling (use plain Workers)
- Maximum global distribution needs
- High fan-out independent requests

## Quick Reference

### Wrangler Configuration

```jsonc
// wrangler.jsonc
{
  "durable_objects": {
    "bindings": [{ "name": "MY_DO", "class_name": "MyDurableObject" }]
  },
  "migrations": [{ "tag": "v1", "new_sqlite_classes": ["MyDurableObject"] }]
}
```

### Basic Durable Object Pattern

```typescript
import { DurableObject } from "cloudflare:workers";

export interface Env {
  MY_DO: DurableObjectNamespace<MyDurableObject>;
}

export class MyDurableObject extends DurableObject<Env> {
  constructor(ctx: DurableObjectState, env: Env) {
    super(ctx, env);
    ctx.blockConcurrencyWhile(async () => {
      this.ctx.storage.sql.exec(`
        CREATE TABLE IF NOT EXISTS items (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          data TEXT NOT NULL
        )
      `);
    });
  }

  async addItem(data: string): Promise<number> {
    const result = this.ctx.storage.sql.exec<{ id: number }>(
      "INSERT INTO items (data) VALUES (?) RETURNING id",
      data
    );
    return result.one().id;
  }
}

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const stub = env.MY_DO.getByName("my-instance");
    const id = await stub.addItem("hello");
    return Response.json({ id });
  },
};
```

## Critical Rules

1. **Model around coordination atoms** - One DO per chat room/game/user, not one global DO
2. **Use `getByName()` for deterministic routing** - Same input = same DO instance
3. **Use SQLite storage** - Configure `new_sqlite_classes` in migrations
4. **Initialize in constructor** - Use `blockConcurrencyWhile()` for schema setup only
5. **Use RPC methods** - Not fetch() handler (compatibility date >= 2024-04-03)
6. **Persist first, cache second** - Always write to storage before updating in-memory state
7. **One alarm per DO** - `setAlarm()` replaces any existing alarm

## Authorization

Durable Objects do not have separate roles or permissions; access follows the Worker that implements them. Retrieve the current [Durable Objects authorization guidance](https://developers.cloudflare.com/workers/authorization/durable-objects/index.md) before granting observability or Data Studio access, and scope the Workers role to the intended Worker or Workers product.

## Anti-Patterns (NEVER)

- Single global DO handling all requests (bottleneck)
- Using `blockConcurrencyWhile()` on every request (kills throughput)
- Storing critical state only in memory (lost on eviction/crash)
- Using `await` between related storage writes (breaks atomicity)
- Holding `blockConcurrencyWhile()` across `fetch()` or external I/O

## Stub Creation

```typescript
// Deterministic - preferred for most cases
const stub = env.MY_DO.getByName("room-123");

// From existing ID string
const id = env.MY_DO.idFromString(storedIdString);
const stub = env.MY_DO.get(id);

// New unique ID - store mapping externally
const id = env.MY_DO.newUniqueId();
const stub = env.MY_DO.get(id);
```

## Storage Operations

```typescript
// SQL (synchronous, recommended)
this.ctx.storage.sql.exec("INSERT INTO t (c) VALUES (?)", value);
const rows = this.ctx.storage.sql.exec<Row>("SELECT * FROM t").toArray();

// KV (async)
await this.ctx.storage.put("key", value);
const val = await this.ctx.storage.get<Type>("key");
```

## Alarms

```typescript
// Schedule (replaces existing)
await this.ctx.storage.setAlarm(Date.now() + 60_000);

// Handler
async alarm(): Promise<void> {
  // Process scheduled work
  // Optionally reschedule: await this.ctx.storage.setAlarm(...)
}

// Cancel
await this.ctx.storage.deleteAlarm();
```

## Testing

Read the [testing reference](./references/testing.md) before configuring a suite or writing Durable Object tests. It routes to current setup, APIs, and examples and identifies the behavior to cover.

© cloudflare · Apache-2.0 · cloudflare/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой