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

websocket-engineer — скилл Claude Code: установка

Скилл помогает проектировать WebSocket- и Socket.IO-системы: сообщения, комнаты, presence и масштабирование через Redis.

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

Что делает websocket-engineer

Скилл ведёт разработку real-time-систем от требований до проверки. Он помогает определить масштаб соединений и объём сообщений, спроектировать кластеры, pub/sub и хранение состояния, затем собрать сервер с аутентификацией, комнатами и событиями. Для локальной проверки предусмотрены тесты соединения, авторизации, входа в комнату и доставки сообщений.

Внутри есть справочные материалы по протоколу, масштабированию, шаблонам, безопасности и альтернативам вроде SSE и long polling. Рабочие примеры охватывают Socket.IO, Redis adapter, JWT, переподключение клиента с exponential backoff и очередь сообщений при разрыве. Для горизонтального масштабирования нужны sticky sessions, heartbeat и проверка Redis pub/sub; без sticky sessions состояние WebSocket-соединения может попасть на другой экземпляр.

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

  • спроектировать WebSocket-сервер с аутентификацией
  • организовать комнаты, namespaces и рассылку сообщений
  • масштабировать Socket.IO через Redis pub/sub
  • добавить presence и очистку данных при отключении
  • проверить переподключение клиента и очередь сообщений

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

  • Используй скилл `websocket-engineer` и спроектируй Socket.IO-сервер с JWT-аутентификацией и комнатами.
  • Собери горизонтальное масштабирование WebSocket через Redis adapter, sticky sessions и проверку pub/sub.
  • Проверь обработку disconnect, presence, переподключение клиента и доставку сообщений из очереди.

Как установить websocket-engineer

1Через Skills CLI (Vercel)

npx skills add Jeffallan/claude-skills --skill websocket-engineer -a claude-code

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

~/.claude/skills/websocket-engineer/SKILL.md

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

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

Весь набор →
laravel-specialist https://github.com/Jeffallan Настраивает агента на разработку бэкенда на Laravel 10+ и PHP 8.2+. Помогает писать модели Eloquent, очереди Horizon, API resources и тесты Pest. Claude Code CX Codex Cursor +1 23 300установок golang-pro https://github.com/Jeffallan Скилл помогает писать идиоматичный Go: разбирать конкурентный код, строить микросервисы и проверять производительность. Пригодится для goroutines, gRPC и тестов. Claude Code CX Codex Cursor +1 18 900установок php-pro https://github.com/Jeffallan Задаёт правила разработки на PHP 8.3+ для Laravel и Symfony: включает strict_types, анализ в PHPStan на уровне 9 и тесты PHPUnit или Pest. Claude Code CX Codex Cursor +1 15 500установок flutter-expert https://github.com/Jeffallan Скилл для разработки кросс-платформных приложений на Flutter 3+ и Dart. Помогает с виджетами, управлением состоянием через Riverpod или Bloc, маршрутизацией GoRouter и оптимизацией производительности. Claude Code CX Codex Cursor +1 14 300установок typescript-pro https://github.com/Jeffallan Настраивает строгую типизацию TypeScript, генерирует брендированные типы и связывает tRPC. Пригодится при проектировании надёжных API и сложных generic-структур. Claude Code CX Codex Cursor +1 14 200установок kubernetes-specialist https://github.com/Jeffallan Скилл помогает создавать и проверять Kubernetes-манифесты, настраивать безопасность и разбирать сбои подов. Пригодится для деплоя и сопровождения кластерных workloads. Claude Code CX Codex Cursor +1 14 100установок devops-engineer https://github.com/Jeffallan Скилл создаёт Dockerfile, CI/CD-конфигурации и манифесты Kubernetes. Нужен для инфраструктуры, деплоя и разбора инцидентов. Claude Code CX Codex Cursor +1 11 200установок wordpress-pro https://github.com/Jeffallan Скилл помогает разрабатывать темы и плагины WordPress, блоки Gutenberg и магазины WooCommerce. Нужен для задач с REST API, хуками, безопасностью и производительностью. Claude Code CX Codex Cursor +1 9 700установок

Похожие

cloud-design-patterns официальный github Скилл для GitHub Copilot с 42 паттернами проектирования распределённых систем. Пригодится, когда проектируешь или разбираешь архитектуру облачной нагрузки. GitHub Copilot 2 200установок printing-press-reprint mvanhorn Перегенерирует CLI с нуля в Printing Press с сохранением прошлых правок и контекста исследований. Пригодится при обновлении генератора или расширении MCP. Claude Code CX Codex Cursor +1 6 400установок omni-combos-routing cheaper-inference Скилл создаёт и настраивает связки моделей с разными стратегиями маршрутизации, цепочками fallback и метриками. Пригодится для управления OmniRoute через API. Claude Code CX Codex Cursor +1 1 200установок qa garrytan Скилл для автоматизированного поиска и фиксации ошибок в браузере, API, CLI, джобах и вебхуках. Работает с Bash, поиском по файлам и вебом. Claude Code CX Codex Cursor +1 457установок workers-profiling cloudflare Скилл для анализа использования CPU и памяти в развёрнутых Cloudflare Workers и Durable Objects. Помогает найти узкие места в коде и предложить оптимизацию. Claude Code CX Codex Cursor +1 12 100установок fullstack-dev MiniMax-AI Пошаговый регламент для создания фулстек-приложений и интеграции бекенда с фронтендом. Задаёт архитектурный чек-лист от сбора требований до проверки сборки. Claude Code CX Codex Cursor +1 3 400установок 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установок

Вопросы о websocket-engineer

Как установить websocket-engineer в Claude Code?

Выполните npx skills add Jeffallan/claude-skills --skill websocket-engineer -a claude-code, затем повторите npx skills add Jeffallan/claude-skills --skill websocket-engineer -a claude-code. Файл скилла находится по пути ~/.claude/skills/websocket-engineer/SKILL.md.

Что делает websocket-engineer?

Скилл помогает создавать WebSocket- и Socket.IO-системы с аутентификацией, комнатами, событиями, presence и переподключением. Он также разбирает горизонтальное масштабирование через Redis.

Что нужно проверить перед масштабированием WebSocket-системы?

Нужно проверить соединение Redis и round-trip pub/sub, настроить sticky sessions и подтвердить работу тестовыми соединениями на нескольких экземплярах. Также скилл требует heartbeat и нагрузочного тестирования до production.

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

SKILL.md · MIT
---
name: websocket-engineer
description: Use when building real-time communication systems with WebSockets or Socket.IO. Invoke for bidirectional messaging, horizontal scaling with Redis, presence tracking, room management.
license: MIT
metadata:
  author: https://github.com/Jeffallan
  company: https://synergetic.solutions
  version: "1.1.0"
  domain: api-architecture
  triggers: WebSocket, Socket.IO, real-time communication, bidirectional messaging, pub/sub, server push, live updates, chat systems, presence tracking
  role: specialist
  scope: implementation
  output-format: code
  related-skills: fastapi-expert, nestjs-expert, devops-engineer, monitoring-expert, security-reviewer
---

# WebSocket Engineer

## Core Workflow

1. **Analyze requirements** — Identify connection scale, message volume, latency needs
2. **Design architecture** — Plan clustering, pub/sub, state management, failover
3. **Implement** — Build WebSocket server with authentication, rooms, events
4. **Validate locally** — Test connection handling, auth, and room behavior before scaling (e.g., `npx wscat -c ws://localhost:3000`); confirm auth rejection on missing/invalid tokens, room join/leave events, and message delivery
5. **Scale** — Verify Redis connection and pub/sub round-trip before enabling the adapter; configure sticky sessions and confirm with test connections across multiple instances; set up load balancing
6. **Monitor** — Track connections, latency, throughput, error rates; add alerts for connection-count spikes and error-rate thresholds

## Reference Guide

Load detailed guidance based on context:

| Topic | Reference | Load When |
|-------|-----------|-----------|
| Protocol | `references/protocol.md` | WebSocket handshake, frames, ping/pong, close codes |
| Scaling | `references/scaling.md` | Horizontal scaling, Redis pub/sub, sticky sessions |
| Patterns | `references/patterns.md` | Rooms, namespaces, broadcasting, acknowledgments |
| Security | `references/security.md` | Authentication, authorization, rate limiting, CORS |
| Alternatives | `references/alternatives.md` | SSE, long polling, when to choose WebSockets |

## Code Examples

### Server Setup (Socket.IO with Auth and Room Management)

```js
import { createServer } from "http";
import { Server } from "socket.io";
import { createAdapter } from "@socket.io/redis-adapter";
import { createClient } from "redis";
import jwt from "jsonwebtoken";

const httpServer = createServer();
const io = new Server(httpServer, {
  cors: { origin: process.env.ALLOWED_ORIGIN, credentials: true },
  pingTimeout: 20000,
  pingInterval: 25000,
});

// Authentication middleware — runs before connection is established
io.use((socket, next) => {
  const token = socket.handshake.auth.token;
  if (!token) return next(new Error("Authentication required"));
  try {
    socket.data.user = jwt.verify(token, process.env.JWT_SECRET);
    next();
  } catch {
    next(new Error("Invalid token"));
  }
});

// Redis adapter for horizontal scaling
const pubClient = createClient({ url: process.env.REDIS_URL });
const subClient = pubClient.duplicate();
await Promise.all([pubClient.connect(), subClient.connect()]);
io.adapter(createAdapter(pubClient, subClient));

io.on("connection", (socket) => {
  const { userId } = socket.data.user;
  console.log(`connected: ${userId} (${socket.id})`);

  // Presence: mark user online
  pubClient.hSet("presence", userId, socket.id);

  socket.on("join-room", (roomId) => {
    socket.join(roomId);
    socket.to(roomId).emit("user-joined", { userId });
  });

  socket.on("message", ({ roomId, text }) => {
    io.to(roomId).emit("message", { userId, text, ts: Date.now() });
  });

  socket.on("disconnect", () => {
    pubClient.hDel("presence", userId);
    console.log(`disconnected: ${userId}`);
  });
});

httpServer.listen(3000);
```

### Client-Side Reconnection with Exponential Backoff

```js
import { io } from "socket.io-client";

const socket = io("wss://api.example.com", {
  auth: { token: getAuthToken() },
  reconnection: true,
  reconnectionAttempts: 10,
  reconnectionDelay: 1000,       // initial delay (ms)
  reconnectionDelayMax: 30000,   // cap at 30 s
  randomizationFactor: 0.5,      // jitter to avoid thundering herd
});

// Queue messages while disconnected
let messageQueue = [];

socket.on("connect", () => {
  console.log("connected:", socket.id);
  // Flush queued messages
  messageQueue.forEach((msg) => socket.emit("message", msg));
  messageQueue = [];
});

socket.on("disconnect", (reason) => {
  console.warn("disconnected:", reason);
  if (reason === "io server disconnect") socket.connect(); // manual reconnect
});

socket.on("connect_error", (err) => {
  console.error("connection error:", err.message);
});

function sendMessage(roomId, text) {
  const msg = { roomId, text };
  if (socket.connected) {
    socket.emit("message", msg);
  } else {
    messageQueue.push(msg); // buffer until reconnected
  }
}
```

## Constraints

### MUST DO
- Use sticky sessions for load balancing (WebSocket connections are stateful — requests must route to the same server instance)
- Implement heartbeat/ping-pong to detect dead connections (TCP keepalive alone is insufficient)
- Use rooms/namespaces for message scoping rather than filtering in application logic
- Queue messages during disconnection windows to avoid silent data loss
- Plan connection limits per instance before scaling horizontally

### MUST NOT DO
- Store large state in memory without a clustering strategy (use Redis or an external store)
- Mix WebSocket and HTTP on the same port without explicit upgrade handling
- Forget to handle connection cleanup (presence records, room membership, in-flight timers)
- Skip load testing before production — connection-count spikes behave differently from HTTP traffic spikes

## Output Templates

When implementing WebSocket features, provide:
1. Server setup (Socket.IO/ws configuration)
2. Event handlers (connection, message, disconnect)
3. Client library (connection, events, reconnection)
4. Brief explanation of scaling strategy

## Knowledge Reference

Socket.IO, ws, uWebSockets.js, Redis adapter, sticky sessions, nginx WebSocket proxy, JWT over WebSocket, rooms/namespaces, acknowledgments, binary data, compression, heartbeat, backpressure, horizontal pod autoscaling

Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)

[Documentation](https://jeffallan.github.io/claude-skills/skills/api-architecture/websocket-engineer/)

© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills

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

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

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