roblox-server-data — скилл для Claude Code: данные между серверами
Скилл для работы с общими данными между серверами Roblox: лидерборды, рассылки, MemoryStore, сезоны и гильдии.
npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a claude-codeЧто делает roblox-server-data
Скилл подсказывает агенту, какой сервис Roblox брать под конкретную задачу. OrderedDataStore — для глобальных лидербордов, MessagingService — для сообщений между серверами, MemoryStoreService — для временной координации вроде матчмейкинга и лизов, GlobalDataStore — для состояния гильдий и сезонов.
Внутри есть раздел с подводными камнями. MessagingService работает по принципу «отправил и забыл»: порядок доставки не гарантирован, поэтому повторы надо делать идемпотентными. Для запросов с ответом скилл советует связку {reqId} с подтверждением и таймаутом, причём отсутствие подтверждения не значит, что операция не выполнилась — повторяйте с тем же reqId, иначе начислите награду дважды.
Ещё один момент: квоты MemoryStoreService общие на всю игру, а не на сервер. Батч чтения из очереди удаляют только после успешной обработки. Идентификацию пользователей скилл советует вести по player.User (User.Id, DomainType, DomainId), а кросс-серверные данные привязывать к UserId, потому что доменные идентификаторы свои для каждого опыта.
Какие задачи решает
- собрать глобальный лидерборд на OrderedDataStore
- разослать объявление по всем серверам игры
- сделать очередь матчмейкинга с истекающими записями
- хранить состояние сезона или гильдии вне сессии игрока
- разобраться, почему повтор запроса начислил награду дважды
Примеры запросов агенту
- Сделай глобальный лидерборд по монетам через OrderedDataStore
- Настрой рассылку ивента на все серверы через MessagingService
- Проверь очередь матчмейкинга на MemoryStoreService — не теряются ли записи
Как установить roblox-server-data
1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a claude-code2Вручную: положить файлы
~/.claude/skills/roblox-server-data/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/roblox-server-data/
1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a codex2Вручную: положить файлы
.agents/skills/roblox-server-data/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a cursor2Вручную: положить файлы
.cursor/skills/roblox-server-data/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install TabooHarmony/roblox-brain roblox-server-data2Вручную: положить файлы
.github/skills/roblox-server-data/SKILL.md1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a gemini-cli2Командой платформы
gemini skills install https://github.com/TabooHarmony/roblox-brain --path skills/core/roblox-server-dataВручную: положить файлы
.devin/skills/roblox-server-data/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о roblox-server-data
Как установить roblox-server-data в Claude?
Выполните npx skills add TabooHarmony/roblox-brain --skill roblox-server-data -a claude-code. Скилл появится в ~/.claude/skills/roblox-server-data/SKILL.md.
Что делает roblox-server-data?
Подсказывает агенту, какой сервис Roblox использовать для общих данных: OrderedDataStore для лидербордов, MessagingService для сообщений между серверами, MemoryStoreService для временной координации, GlobalDataStore для состояния гильдий и сезонов.
Чем этот скилл отличается от roblox-data?
roblox-server-data отвечает за данные между серверами, а roblox-data — за сохранение прогресса игрока. Для Open Cloud в том же наборе есть roblox-cloud.
Исходный текст
SKILL.md · MIT
---
name: roblox-server-data
description: "Use when building or fixing Roblox cross-server data: OrderedDataStore leaderboards, MessagingService, MemoryStore, world state, seasons."
when_to_use: "Also for global leaderboards, cross-server announcements or events, matchmaking queues, shared counters, and reviewing non-player persistence."
last_reviewed: 2026-10-14
sources:
- https://create.roblox.com/docs/reference/engine/classes/MemoryStoreSortedMap
- https://create.roblox.com/docs/reference/engine/classes/OrderedDataStore
- https://create.roblox.com/docs/reference/engine/classes/MessagingService
- https://create.roblox.com/docs/reference/engine/classes/MemoryStoreService
- https://create.roblox.com/docs/reference/engine/classes/DataStoreService
- https://create.roblox.com/docs/cloud-services/data-stores/right-to-be-forgotten
- https://create.roblox.com/docs/cloud-services/data-stores/error-codes-and-limits
- original
---
# Roblox Server & Shared Data
## When to Load
Load for leaderboards, messaging, MemoryStore coordination, world state, seasons, or guilds. Player persistence: `roblox-data`; Open Cloud: `roblox-cloud`.
## Quick Reference
### OrderedDataStore (Leaderboards)
- Sortable DataStore: string keys (`tostring(UserId)`), integer sort values; `GetSortedAsync` → pages; `BatchGetAsync` multi-key read (missing keys omitted).
- Budget bursts via `GetRequestBudgetForRequestType(OrderedWrite)` (per server: 30 + numPlayers×5 writes/min).
- Leaderboards only, never player saves. Keep `player_<UserId>` a static key substring so RTBF templates match.
### MessagingService (Cross-Server)
- `SubscribeAsync` / `PublishAsync`; no delivery or ordering guarantee — design for idempotency.
- Request/response: `{reqId}` correlation + ack + timeout; no ack ≠ not executed — replay same reqId, don't double-grant.
- Budget broadcast receives, not just sends; limits and polling trade-offs: full.md. <!-- temporal: 2026-10 -->
### GlobalDataStore (Shared State)
- Persistent non-player state (guilds, seasons, counters). Use `UpdateAsync`; never for player session data.
### MemoryStoreService (Temporary Coordination)
- Queues and sorted maps for expiring matchmaking, leases, coordination.
- Remove a read batch only after successful, idempotent processing.
- Sorted-map paging: last item's `{key, sortKey}` = next exclusive bound. Quotas are **game-level** (one shared pool): request units 1000+120×CCU/min, memory 64 KB+1.2 KB/user, value ≤32 KB, TTL 45 days; batch calls bill per item. <!-- temporal: 2026-10 -->
### Cross-Server Patterns
- Register servers with expiring heartbeats; notify via MessagingService.
### User Identity
- Identify users with `player.User` (`User.Id`, `DomainType`, `DomainId`); `UserId` stays valid. Domain IDs are per-experience: key cross-server data on `UserId`.
### Pitfalls
- MessagingService: fire-and-forget, unordered; not for time-critical work
- GlobalDataStore: same rate limits as player DataStores
- Never store Instances; `SetAsync` overwrites — use `UpdateAsync` for shared counters
> Store selection and workflows: [references/full.md](references/full.md)
© TabooHarmony · MIT · TabooHarmony/roblox-brain