npx claudepluginhub dvrd/ui-studio --plugin dvrdThis skill uses the workspace's default tool permissions.
Adds server-sent events for real-time updates (job status, notifications, live data).
Configures Server-Sent Events (SSE) setups for API integrations with step-by-step guidance, production-ready code generation, and best practices validation. Useful for real-time streaming tasks.
Implements real-time bidirectional communication using WebSockets, SSE, or long polling for chat apps, live dashboards, collaborative editing, notifications, and instant updates.
Builds event-driven APIs with webhooks, Server-Sent Events, message brokers, event schemas, subscribers, retries, and dead-letter queues.
Share bugs, ideas, or general feedback.
Adds server-sent events for real-time updates (job status, notifications, live data).
Confirm with user:
streamName — what is being streamed? (e.g. job-status, notifications, analytics)Read go-stack: pattern://sse-streaming.md
Write internal/services/broker.go — event broker:
type Broker struct {
clients map[string][]chan Event // userID → channels
subscribe chan subscription
unsubscribe chan subscription
publish chan Event
}
Start() — goroutine that manages client channelsSubscribe(userID) → chan EventUnsubscribe(userID, ch)Publish(userID, event) or Broadcast(event)Write SSE handler in internal/handlers/sse.go:
func (h *Handler) Events(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
// subscribe, stream events, handle disconnect
}
Write internal/ui/components/sse_listener.templ:
<div hx-ext="sse" hx-sse="connect:/api/sse"><div hx-sse="swap:{event-name}">Register GET /api/sse in cmd/server/main.go (behind RequireAuth)
Initialize broker in main.go and inject into relevant services that need to emit events
Add heartbeat tick (every 30s) to keep connection alive through proxies
Run go build ./... + templ generate
go build ./... passesGET /api/sse returns Content-Type: text/event-stream