К основному содержанию
скилл CX Codex

encore-pubsub — скилл для Claude Code: что делает и как установить

Скилл помогает строить асинхронный обмен событиями в Encore.ts через Topic и Subscription, включая фоновые обработчики и доставку сообщений.

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

Что делает encore-pubsub

Скилл описывает обмен сообщениями между сервисами в Encore.ts. События публикуются в Topic, а потребители подключаются через Subscription. Один топик может передавать событие нескольким обработчикам, а Publisher позволяет передавать доступ к публикации в другой код.

Ресурсы нужно объявлять на уровне пакета, а не внутри функций. Для фильтрации и порядка доставки используются поля Attribute<T> и orderingAttribute. Доступны гарантии at-least-once и exactly-once; при at-least-once обработчики должны быть идемпотентными, потому что возможны дубликаты. publish возвращается после постановки сообщения в очередь, поэтому тяжёлую синхронную работу в вызывающем коде размещать не следует.

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

  • публиковать события между сервисами
  • подключать несколько обработчиков к одному событию
  • запускать фоновые обработчики сообщений
  • задавать порядок доставки по атрибуту
  • передавать публикацию через ссылку Publisher

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

  • Создай Topic для события order-created и подключи к нему подписку для отправки письма.
  • Настрой обработчик фонового события с гарантией at-least-once и сделай его идемпотентным.
  • Добавь Attribute<string> для упорядочивания событий одной корзины через orderingAttribute.

Как установить encore-pubsub

1Через Skills CLI (Vercel)

npx skills add encoredev/skills --skill encore-pubsub -a claude-code
npx skills add encoredev/skills --skill pubsub -a claude-code

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

~/.claude/skills/pubsub/SKILL.md

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

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о encore-pubsub

Как установить encore-pubsub в Claude Code?

Выполните npx skills add encoredev/skills --skill encore-pubsub -a claude-code, затем npx skills add encoredev/skills --skill pubsub -a claude-code. После установки файл доступен по пути ~/.claude/skills/pubsub/SKILL.md.

Что делает encore-pubsub?

Скилл помогает настроить асинхронный обмен событиями в Encore.ts через Topic и Subscription. Он также описывает фоновые обработчики, порядок доставки и гарантии доставки.

Почему обработчик должен быть идемпотентным?

Гарантия at-least-once допускает повторную доставку одного сообщения. Обработчик должен безопасно переживать такие дубликаты.

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

SKILL.md · Apache-2.0
---
name: encore-pubsub
description: Asynchronous messaging in Encore.ts via `Topic` and `Subscription` from `encore.dev/pubsub` — broadcast events, decouple producers from consumers, and run background handlers.
when_to_use: >-
  User wants to publish/broadcast events, fan out a single event to many handlers, fire-and-forget messages between services, react to something asynchronously, set up a worker that consumes events, configure delivery guarantees (at-least-once, exactly-once), or use ordering attributes. Trigger phrases: "publish an event", "broadcast", "subscribe to", "topic", "Pub/Sub", "pubsub", "event bus", "order_created event", "send to anyone listening", "background event handler", "queue", "fan out".
---

# Encore Pub/Sub

## Instructions

Pub/Sub is for asynchronous messaging between services. Producers publish events to a `Topic`; consumers attach `Subscription`s to react. Resources must be declared at package level — never inside functions.

## Topics

```typescript
import { Topic } from "encore.dev/pubsub";

interface OrderCreatedEvent {
  orderId: string;
  userId: string;
  total: number;
}

// Package level declaration
export const orderCreated = new Topic<OrderCreatedEvent>("order-created", {
  deliveryGuarantee: "at-least-once",
});
```

### Publishing

```typescript
await orderCreated.publish({
  orderId: "123",
  userId: "user-456",
  total: 99.99,
});
```

### Subscriptions

```typescript
import { Subscription } from "encore.dev/pubsub";

const _ = new Subscription(orderCreated, "send-confirmation-email", {
  handler: async (event) => {
    await sendEmail(event.userId, event.orderId);
  },
});
```

### Message Attributes

Use `Attribute<T>` for fields that should be treated as message attributes (for filtering/ordering):

```typescript
import { Topic, Attribute } from "encore.dev/pubsub";

interface CartEvent {
  cartId: Attribute<string>;  // Used for ordering
  userId: string;
  action: "add" | "remove";
  productId: string;
}

// Ordered topic: events with same cartId delivered in order
export const cartEvents = new Topic<CartEvent>("cart-events", {
  deliveryGuarantee: "at-least-once",
  orderingAttribute: "cartId",
});
```

### Topic References

Pass topic access to other code while maintaining static analysis:

```typescript
import { Publisher } from "encore.dev/pubsub";

const publisherRef = orderCreated.ref<Publisher>();

async function notifyOrder(ref: typeof publisherRef, orderId: string) {
  await ref.publish({ orderId, userId: "123", total: 99.99 });
}
```

## Delivery Guarantees

- `at-least-once` (default): may deliver duplicates → handlers must be idempotent.
- `exactly-once`: stricter, capped throughput (AWS 300 msg/s/topic, GCP 3000+ msg/s/region). Does not deduplicate on the publish side.

## Guidelines

- Topics and subscriptions must be declared at package level.
- Subscription handlers must be idempotent (at-least-once delivery is the default).
- Use `Attribute<T>` for fields meant for filtering/ordering, not for arbitrary metadata.
- Don't do heavy synchronous work in `publish` callers — `publish` returns once the message is queued.

© encoredev · Apache-2.0 · encoredev/skills

Похожие скиллы

Все скиллы по теме «Бэкенд и API» →
mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. 130 949установок claude-api официальный anthropics Справочник по Anthropic SDK и API Claude для генерации кода без устаревших параметров и выдуманных методов. 74 198установок lark-im larksuite Скилл подключает Lark IM к агенту: он отправляет сообщения, ищет историю, управляет чатами и файлами. Подойдёт для задач вокруг командных коммуникаций. CX Codex +1 472 900установок lark-event larksuite Слушает события Lark/Feishu и отдаёт их потоком NDJSON. Подходит для ботов, обработчиков сообщений и долгих подписчиков. CX Codex +1 466 800установок caveman-discover JuliusBrussee Находит точки вызова LLM в репозитории и размечает их воркфлоу для Caveman Cloud, чтобы расходы на токены не сливались в одну общую кучу. CX Codex +1 104 400установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок

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

encore-go-database Помогает создавать таблицы PostgreSQL, писать миграции и выполнять SQL-запросы в сервисах на Encore Go через пакет sqldb. CX Codex +1 553установок encore-go-code-review Скилл проверяет Go-код на Encore: инфраструктура внутри функций, забытый context, SQL-инъекции и другие анти-паттерны перед мержем. CX Codex +1 553установок encore-secret Скилл помогает хранить API-ключи и другие секреты в Encore.ts. Он подсказывает, как объявлять, читать и задавать значения по окружениям. CX Codex +1 418установок encore-cache Сохраняет данные в Redis через типизированные keyspace в Encore.ts. Подходит для TTL, счётчиков, временных токенов и горячих чтений. CX Codex +1 416установок encore-bucket Учит агента работать с объектным хранилищем Encore.ts: загрузка, скачивание, список и удаление файлов через Bucket. CX Codex +1 419установок encore-webhook Скилл учит агента принимать входящие вебхуки от Stripe, GitHub, Slack и других сервисов через api.raw() и проверять подписи. CX Codex +1 418установок encore-go-secret Скилл учит агента объявлять API-ключи и пароли в Encore Go через структуру secrets и задавать значения по окружениям. CX Codex +1 307установок encore-go-pubsub Помогает писать асинхронный обмен сообщениями в Encore Go через topics и subscriptions. Нужен для фоновых обработчиков и публикации событий. CX Codex +1 305установок

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

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