realtime — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited realtime (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are in AUTONOMOUS MODE. Do NOT ask questions. Detect everything from the codebase and proceed.
PURPOSE: Set up production-ready realtime communication. Auto-detect the project's framework and the requested realtime provider. Install the SDK, create a realtime service with subscribe/publish/ presence methods, implement robust connection management, handle authentication for private channels, and manage offline/online state transitions.
TASK: $ARGUMENTS
============================================================ PHASE 0: DETECTION ============================================================
============================================================ PHASE 1: SDK INSTALLATION ============================================================
Install the correct SDK for the detected provider and framework:
SOCKET.IO:
socket.io (Node.js)socket.io-clientsocket_io_clientsocket.io-client (same as web)python-socketioPUSHER:
pusherpusher-jspusher_channels_flutterpushergithub.com/pusher/pusher-http-go/v5ABLY:
ablyably_flutterablygithub.com/ably/ably-goSUPABASE REALTIME:
@supabase/supabase-jssupabase_flutterFIREBASE REALTIME:
firebase (Firestore onSnapshot / RTDB onValue)cloud_firestore or firebase_database@react-native-firebase/firestoreAfter installing:
REALTIME_URL, REALTIME_APP_KEY, REALTIME_SECRET.PUSHER_APP_ID, PUSHER_KEY, PUSHER_SECRET, PUSHER_CLUSTER.ABLY_API_KEY (server), ABLY_CLIENT_KEY (frontend — subscribe only).============================================================ PHASE 2: REALTIME SERVICE ============================================================
Create a realtime service that abstracts the provider.
FILE LOCATION:
src/lib/realtime.ts or src/services/realtime.tslib/services/realtime_service.dartapp/services/realtime.pyinternal/realtime/realtime.goTHE SERVICE MUST EXPOSE:
init(config) Initialize the realtime client. Set up connection with auth token.
connect() Establish the WebSocket/SSE connection. Returns a promise that resolves when connected.
disconnect() Gracefully close the connection. Clean up all subscriptions.
subscribe(channel, event, callback) Subscribe to an event on a channel. Returns an unsubscribe function. Callback receives: { data, channel, event, timestamp }.
unsubscribe(channel, event?) Unsubscribe from a specific event on a channel, or all events on that channel.
publish(channel, event, data) Publish an event to a channel (server-side, or client-side if provider allows).
subscribeToChannel(channel, handlers) Subscribe to all events on a channel with a handler map: { [event]: callback }. Returns an unsubscribe function for the entire channel.
presence(channel) Returns a presence object for the channel with:
setPresenceState(channel, state) Update the current user's presence state (e.g., { status: "typing" }).
getConnectionState() Returns: "connected" | "connecting" | "disconnected" | "reconnecting".
onConnectionChange(callback) Subscribe to connection state changes. Fires on connect, disconnect, reconnect.
IMPLEMENTATION REQUIREMENTS:
============================================================ PHASE 3: CONNECTION MANAGEMENT ============================================================
Implement robust connection handling. This is the most critical part of any realtime system.
getLatency() method.============================================================ PHASE 4: CHANNEL ARCHITECTURE ============================================================
Define a channel naming convention and access control model:
PUBLIC CHANNELS — anyone can subscribe: Pattern: public:{resource} (e.g., public:feed, public:announcements) No authentication required.
PRIVATE CHANNELS — authenticated users only: Pattern: private:{resource}:{id} (e.g., private:user:123, private:team:abc) Requires auth token validation before subscribing.
PRESENCE CHANNELS — private + who's online: Pattern: presence:{resource}:{id} (e.g., presence:room:456) Requires auth. Provides member list and join/leave events.
POST /api/realtime/authcanAccessChannel(userId, channelName) → boolean============================================================ PHASE 5: PRESENCE ============================================================
Implement presence (who's online) functionality:
interface PresenceMember {
userId: string;
name: string;
avatar?: string;
status: "online" | "away" | "busy";
joinedAt: Date;
customState?: Record<string, unknown>;
}REACT: Create src/hooks/usePresence.ts:
usePresence(channel) → returns { members, myState, setMyState }.FLUTTER: Create lib/widgets/presence_indicator.dart:
VUE: Create src/composables/usePresence.ts with equivalent functionality.
startTyping(channel) — broadcast typing state to other members.stopTyping(channel) — clear typing state.============================================================ PHASE 6: OFFLINE HANDLING ============================================================
Handle the transition between online and offline states:
navigator.onLine, online/offline events.connectivity_plus to detect network state.@react-native-community/netinfo.============================================================ PHASE 7: RATE LIMITING & SAFETY ============================================================
============================================================ PHASE 8: VALIDATION ============================================================
============================================================ DO NOT ============================================================
============================================================ OUTPUT ============================================================
NEXT STEPS:
After realtime is set up:
/ship to build features that use live updates (chat, notifications, collaboration)."/analytics-tracking to track realtime engagement metrics."/search to add live search results that update in realtime."/perf to load-test WebSocket connections and measure message latency."/check-vanta to verify realtime auth and data handling meet compliance requirements."============================================================ SELF-HEALING VALIDATION (max 3 iterations) ============================================================
After completing the integration, validate:
IF STILL FAILING after 3 iterations:
============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry format:
### /realtime — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.