skills/.system/guicedee-websockets/SKILL.md
RFC 6455 WebSocket support for GuicedEE using Vert.x 5: call-scoped connections, action-based message routing via IWebSocketMessageReceiver SPI, group management and broadcasting, WebSocketServerOptions, and lifecycle hooks. Use when adding WebSocket messaging, implementing real-time communication, managing WebSocket groups, or creating message receivers.
npx skillsauth add guicedee/ai-rules guicedee-websocketsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Lightweight RFC 6455 WebSocket support for GuicedEE using Vert.x 5.
Connections are call-scoped, messages are dispatched through an action-based receiver SPI, and group membership is managed via the Vert.x EventBus. Builds on top of web for HTTP server plumbing.
com.guicedee:websockets dependency (pulls in web transitively).public class ChatReceiver implements IWebSocketMessageReceiver<Void, ChatReceiver> {
@Override
public Set<String> messageNames() {
return Set.of("chat");
}
@Override
public Uni<Void> receiveMessage(WebSocketMessageReceiver<?> message) {
String text = (String) message.getData().get("text");
IGuicedWebSocket ws = IGuiceContext.get(IGuicedWebSocket.class);
ws.broadcastMessage("chat:lobby", text);
return Uni.createFrom().voidItem();
}
}
module my.app {
requires com.guicedee.vertx.sockets;
provides com.guicedee.client.services.websocket.IWebSocketMessageReceiver
with my.app.ChatReceiver;
}
IGuiceContext.registerModuleForScanning.add("my.app");
IGuiceContext.instance().inject();
Inbound messages are JSON with an action field for routing:
{ "action": "chat", "data": { "text": "Hello, world!" } }
| Field | Type | Required | Purpose |
|---|---|---|---|
| action | String | ✅ | Routes to matching IWebSocketMessageReceiver |
| data | Map<String, Object> | ❌ | Arbitrary key/value payload |
| broadcastGroup | String | ❌ | Auto-set to connection's RequestContextId |
| webSocketSessionId | String | ❌ | Optional client-set session identifier |
Every connection is added to the Everyone group automatically.
IGuicedWebSocket ws = IGuiceContext.get(IGuicedWebSocket.class);
ws.addToGroup("chat:lobby");
ws.removeFromGroup("chat:lobby");
ws.broadcastMessage("chat:lobby", "Hello everyone!");
ws.broadcastMessageSync("chat:lobby", "Immediate message");
| SPI | Purpose |
|---|---|
| GuicedWebSocketOnAddToGroup | Intercept group join |
| GuicedWebSocketOnRemoveFromGroup | Intercept group leave |
| GuicedWebSocketOnPublish | Intercept broadcast |
Client connects (ws://...)
→ CallScoper enters @CallScope
→ Connection added to "Everyone" group
→ Per-connection EventBus consumer registered
→ textMessageHandler installed
→ JSON deserialized to WebSocketMessageReceiver
→ Action lookup → IWebSocketMessageReceiver.receiveMessage()
→ closeHandler removes from all groups
requires com.guicedee.vertx.sockets;.opens to com.google.guice.opens to com.fasterxml.jackson.databind.module-info.java + META-INF/services/).receiveMessage() returns Uni<Void> for non-blocking composition.development
Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).
tools
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Codex's capabilities with specialized knowledge, workflows, or tool integrations.
development
WebAwesome icon integration for JWebMP — modern, open-source icon library. Provides 1,500+ icons with solid/regular styles, sizing, rotation, animation, and CSS utilities. Drop-in FontAwesome alternative with fresh designs. Use when working with WebAwesome icons, modern icon designs, or as FontAwesome alternative in JWebMP applications.
development
WebAwesome Pro integration for JWebMP with premium icons and features. Extends jwebmp-webawesome with additional styles, premium icons, and advanced features. Use when working with WebAwesome Pro icons or premium WebAwesome features in JWebMP applications.