plugins/api-realtime/skills/overview/SKILL.md
Cross-protocol API and real-time communication strategy: protocol selection (REST vs GraphQL vs gRPC vs OData vs WebSocket vs SSE vs SignalR vs Socket.IO), API gateway design, versioning strategy, authentication across protocols, and multi-protocol architecture. Use when the question is strategic or comparative — "API design", "which protocol", "REST vs GraphQL", "WebSocket vs SSE", "API gateway", "API versioning", "CORS", "protocol comparison", "real-time architecture", "multi-protocol architecture". Do NOT use for technology-specific implementation questions (GraphQL resolvers, gRPC interceptors, SignalR hubs, etc.) — use the specific technology's skill instead.
npx skillsauth add chrishuffman5/domain-expert overviewInstall 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.
This skill covers cross-protocol API architecture: request/response APIs (REST, GraphQL, gRPC, OData), real-time transports (WebSocket, SSE, SignalR, Socket.IO), API gateway patterns, authentication, versioning, and protocol selection. For technology-specific implementation, read the relevant sibling skill directly.
Use this skill when the question is cross-protocol or strategic:
Read a technology skill directly when the question is technology-specific:
graphql skillgrpc skillrest skillodata skillsignalr skillsocketio skillwebsocket skillsse skillClassify the request:
references/concepts.md for design theory, authentication, versioning, observabilityreferences/paradigm-request-response.md for REST vs GraphQL vs gRPC vs ODatareferences/paradigm-realtime.md for WebSocket vs SSE vs SignalR vs Socket.IOGather context -- Client types (browser, mobile, server), latency requirements, data flow direction, team expertise, existing infrastructure, cloud provider, scale expectations
Analyze -- Apply API design principles. Every protocol has trade-offs; never recommend without qualifying.
Recommend -- Actionable guidance with trade-offs, not a single answer
Synchronous communication where the client sends a request and waits for a response. Best for CRUD operations, queries, and commands.
| Protocol | Model | Data Format | Best For | Trade-offs | |---|---|---|---|---| | REST | Resource-oriented (HTTP verbs + URLs) | JSON (typically) | Public APIs, CDN-cacheable data, broad compatibility | Over-fetching/under-fetching, no standard query language | | GraphQL | Query-based (single endpoint) | JSON | BFF layers, mobile apps, federated microservices | Caching complexity, query cost analysis required, POST-default | | gRPC | RPC with binary encoding (HTTP/2) | Protocol Buffers | Internal microservices, polyglot systems, streaming | No browser support without proxy, binary debugging harder | | OData | REST superset with query language | JSON | Enterprise data APIs, Power BI/Excel integration, Microsoft/SAP | Smaller ecosystem outside Microsoft, verbose URLs |
Persistent connections where data flows without explicit client requests. Best for live updates, notifications, and collaborative features.
| Protocol | Direction | Transport | Best For | Trade-offs | |---|---|---|---|---| | WebSocket | Bidirectional | TCP (after HTTP upgrade) | Chat, gaming, trading, collaborative editing | No auto-reconnect, no rooms, proxy issues, sticky sessions | | SSE | Server-to-client only | HTTP (standard) | LLM streaming, dashboards, notifications, log tailing | No client-to-server push, text-only (JSON serialized) | | SignalR | Bidirectional (abstraction) | WS > SSE > Long Polling | .NET real-time apps, transport fallback needed | .NET server required, Azure dependency for managed scaling | | Socket.IO | Bidirectional (abstraction) | WS > Long Polling | Node.js real-time apps, rooms/namespaces pattern | Custom protocol (not raw WS), larger payload overhead |
| Pattern | Description | Protocols | |---|---|---| | Request/Response | Client asks, server answers | REST, GraphQL, gRPC, OData | | Server Push | Server sends updates to client | SSE, WebSocket, SignalR, Socket.IO | | Bidirectional | Both sides send freely | WebSocket, SignalR, Socket.IO, gRPC (bidi streaming) | | Streaming | Continuous data flow | SSE, gRPC streaming, WebSocket |
| Client | Best Protocols | Avoid | |---|---|---| | Browser (public) | REST, GraphQL, SSE, WebSocket | gRPC (needs proxy) | | Mobile app | REST, GraphQL (field selection), SSE | OData (complex for mobile) | | Internal microservice | gRPC (performance), REST (simplicity) | GraphQL (overkill for service-to-service) | | Enterprise tool (Excel, Power BI) | OData, REST | GraphQL (no native support) | | IoT device | gRPC, WebSocket, MQTT | GraphQL (too heavy) |
| Requirement | Protocol | Typical Latency | |---|---|---| | Sub-10ms message delivery | WebSocket (post-handshake) | 0.5-10ms | | Low-latency RPC | gRPC | 10-50ms | | Real-time push (acceptable 10-50ms) | SSE, WebSocket | 10-50ms | | Standard API calls | REST, GraphQL | 50-300ms | | Polling replacement | SSE (server push), Long Polling | 10ms-500ms |
| Constraint | Impact | Recommendation | |---|---|---| | Corporate proxies blocking WebSocket | WS upgrade fails | SSE (works through all proxies) or SignalR/Socket.IO (automatic fallback) | | CDN caching required | POST-based protocols not cached | REST (GET), GraphQL with persisted queries (GET) | | No sticky sessions available | Stateful connections break | SSE (stateless reconnect), REST | | HTTP/2 not available | gRPC requires HTTP/2 | REST, GraphQL | | Browser cannot set custom headers | WS/SSE handshake limited | Query string tokens, cookie auth |
| Team / Stack | Natural Fit | |---|---| | .NET / C# team | REST (ASP.NET Core), SignalR (real-time), gRPC (.NET native), OData (Microsoft ecosystem) | | Node.js / TypeScript team | REST (Express/Fastify), GraphQL (Apollo), Socket.IO (real-time), SSE (native) | | Python team | REST (FastAPI/Django), GraphQL (Strawberry), gRPC (grpcio), SSE (sse-starlette) | | Go team | REST (net/http), gRPC (native), WebSocket (gorilla/websocket), SSE (net/http + Flusher) | | Java / Kotlin team | REST (Spring Boot), gRPC (grpc-java), GraphQL (GraphQL Java), WebSocket (Spring) | | Multi-language microservices | gRPC (code generation for all languages) |
Most production systems use multiple protocols at different layers:
External Clients (Browser, Mobile)
|
v
API Gateway (REST / GraphQL) <-- Public-facing; broad compatibility
|
v
BFF / Aggregation Layer <-- GraphQL Federation or REST aggregation
| |
v v
Service A Service B <-- Internal gRPC microservices
(gRPC) (gRPC)
|
v
Event Bus (Kafka / SNS) <-- Async event-driven side effects
|
v
Real-time Push (SSE / WebSocket) <-- Client notifications
Pattern: REST or GraphQL at the edge (browser compatibility, caching), gRPC internally (performance, type safety), SSE or WebSocket for push (real-time updates).
| Dimension | REST | GraphQL | gRPC | OData | WebSocket | SSE | SignalR | Socket.IO | |---|---|---|---|---|---|---|---|---| | Caching | Excellent (HTTP native) | Hard (POST default) | None (binary) | Good (HTTP GET) | None | None | None | None | | Browser support | Universal | Universal | Proxy required | Universal | 99%+ | 99%+ | JS client | JS client | | Schema/contract | OpenAPI | SDL (introspectable) | Protobuf (.proto) | CSDL ($metadata) | None (app-defined) | None | None | None | | Payload efficiency | JSON (verbose) | JSON (precise fields) | Protobuf (3-10x smaller) | JSON (verbose) | App-defined | Text only | JSON or MessagePack | JSON + binary | | Streaming | Chunked transfer | Subscriptions (WS) | 4 streaming modes | No | Native | Native | Native | Native | | Code generation | openapi-generator | GraphQL Codegen | protoc (all languages) | OData client gen | None | None | None | None | | Auto-reconnect | N/A | N/A | N/A | N/A | No (manual) | Yes (built-in) | Yes | Yes |
| Technology | Plugin / Skill | When |
|---|---|---|
| Backend frameworks | backend plugin | Framework-specific REST/API implementation (Express, FastAPI, ASP.NET Core) |
| Kafka | messaging plugin, kafka skill | Event streaming as async layer behind APIs |
| Database | database plugin | Data layer behind APIs (query optimization, connection pooling) |
| Request Pattern | Route To |
|---|---|
| Request/Response APIs | |
| GraphQL, Apollo, Federation, schema design, DataLoader, Relay, Strawberry, Hot Chocolate | graphql skill |
| gRPC, protobuf, proto3, streaming RPC, load balancing, health check, interceptors | grpc skill |
| REST, OpenAPI, HTTP semantics, CORS, caching, API gateway, rate limiting, pagination | rest skill |
| OData, $filter, $expand, $select, EDM, CSDL, batch, SAP, Power BI | odata skill |
| Real-Time / Event-Driven | |
| SignalR, hub, group, Azure SignalR Service, backplane, .NET real-time | signalr skill |
| Socket.IO, rooms, namespaces, adapters, Engine.IO, scaling | socketio skill |
| WebSocket, RFC 6455, ws, wss, close codes, frames, ping/pong | websocket skill |
| SSE, Server-Sent Events, EventSource, text/event-stream, LLM streaming | sse skill |
| Cross-Protocol | |
| Protocol comparison, which protocol, REST vs GraphQL, WebSocket vs SSE | This skill (use tables above) |
| API authentication, JWT, OAuth, CORS, API keys | Load references/concepts.md |
| API versioning strategy | Load references/concepts.md |
| API gateway design | Load references/concepts.md |
references/concepts.md -- API design theory, authentication across protocols, versioning strategies, API gateway patterns, observability, error handling, idempotency, performance patterns. Read for architecture and design questions.references/paradigm-request-response.md -- When and why to use REST vs GraphQL vs gRPC vs OData. Detailed comparison with code examples and decision criteria. Read when evaluating request/response protocols.references/paradigm-realtime.md -- When and why to use WebSocket vs SSE vs SignalR vs Socket.IO. Transport comparison, scaling patterns, authentication constraints. Read when evaluating real-time technologies.tools
kubectl command-line usage and scripting: kubeconfig and context management, output formats (jsonpath, custom-columns, go-template), all major verbs (get, describe, apply, delete, exec, logs, port-forward, rollout, scale, drain), workload resources, config/storage, networking, RBAC, node management, debugging (CrashLoopBackOff, ImagePullBackOff, OOMKilled), and scripting patterns (dry-run, diff, wait, jq, kustomize). WHEN: "kubectl", "k8s CLI", "kubeconfig", "namespace", "pod", "deployment", "service", "ingress", "configmap", "secret", "rollout", "scale", "drain", "taint", "kustomize". Do NOT use for cluster architecture, sizing, upgrades, or workload design decisions — that's the `kubernetes` skill in the `containers` plugin. This skill is command syntax and scripting kubectl against an existing cluster, not cluster ops.
tools
Bash 5.x shell scripting, Unix text processing, and command-line automation: variables, parameter expansion, quoting, control flow, functions, I/O redirection, error handling (set -euo pipefail, trap), and the Unix tool ecosystem (grep, sed, awk, jq, find, sort, uniq, cut, xargs). Covers process management, networking (curl, ssh, rsync, nc), file locking (flock), parallel execution, and production script patterns. WHEN: "Bash", "bash", "shell", "sh", ".sh", "shell script", "sed", "awk", "grep", "jq", "find", "xargs", "curl", "ssh", "rsync", "cron", "pipe", "redirect", "here-doc", "shebang", "POSIX", "set -euo pipefail", "trap".
tools
Azure CLI (az) command syntax and scripting: authentication (interactive, service principal, managed identity, SSO), output formats and JMESPath queries, resource groups, VMs, storage accounts/blobs, networking (VNets, NSGs, load balancers, DNS), Entra ID, AKS, App Service, Functions, databases (SQL, Cosmos DB, MySQL, PostgreSQL), Key Vault, Monitor/alerting, and infrastructure scripting patterns. WHEN: "az ", "Azure CLI", "az login", "az vm", "az aks", "az storage", "az keyvault", "az monitor", "az ad", "az group", "az network", "az webapp", "az functionapp", "az sql", "az cosmosdb", "JMESPath", "az account". Do NOT use for Azure architecture, landing zones, or multi-subscription strategy — that's the `cloud-platforms` plugin. This skill is about command syntax and scripting the CLI, not deciding what to provision.
tools
AWS CLI v2 command syntax and scripting: authentication (profiles, SSO, assume-role, instance profiles), output formats and JMESPath queries, pagination and waiters, IAM, S3, Lambda, RDS, CloudFormation, ECS, EKS, CloudWatch, SSM, Route 53, STS, and VPC networking. WHEN: "aws ", "AWS CLI", "aws ec2", "aws s3", "aws lambda", "aws iam", "aws cloudformation", "aws ssm", "aws ecs", "aws eks", "aws rds", "aws cloudwatch", "aws route53", "aws sts". Do NOT use for AWS architecture, service selection, multi-account strategy, or FinOps — that's the `cloud-platforms` plugin. This skill is about command syntax and scripting the CLI, not deciding what to provision.