{"enrichment":{"faq":[{"a":"real-time-collaboration-engine guides you through the full stack: establish WebSocket connections for live sync, choose between Operational Transform (OT) and CRDTs based on your consistency needs, implement conflict resolution to merge concurrent edits, and add presence awareness for cursor tracking. The skill covers batching updates efficiently to avoid broadcasting every keystroke, which degrades performance, and handling offline queues so users can edit when disconnected then sync when reconnected.","q":"How do I build Google Docs style collaborative editing?"},{"a":"real-time-collaboration-engine explains that CRDTs (Conflict-free Replicated Data Types) guarantee convergence without a central server\u2014each client can apply edits in any order and reach the same state. Operational Transform (OT) requires a central authority to transform concurrent operations into a consistent order. CRDTs suit peer-to-peer and offline-first apps; OT works well when you have a reliable server. The skill helps you evaluate trade-offs in complexity, latency, and architecture for your use case.","q":"What's the difference between CRDT and Operational Transform?"},{"a":"real-time-collaboration-engine covers WebSocket sync with presence awareness: each client sends edits to a server or peers, which broadcasts changes back. Use optimistic updates\u2014apply changes locally immediately, then reconcile if conflicts arise. Batch changes to reduce message overhead. For offline scenarios, queue edits locally and replay them when reconnected. The skill details conflict resolution strategies so concurrent edits don't overwrite each other, and how to track cursor positions and user presence.","q":"How do I sync edits between multiple users in real time?"},{"a":"real-time-collaboration-engine emphasizes choosing the right conflict resolution model upfront: OT transforms overlapping operations into a consistent sequence, while CRDTs assign unique identifiers so edits commute. Avoid broadcasting every keystroke\u2014batch updates and send them periodically. Implement optimistic updates so the UI feels responsive. Handle reconnection gracefully by replaying queued changes. Test edge cases like simultaneous deletes, rapid insertions, and network partitions to catch lost edits before production.","q":"What are best practices for handling concurrent edits?"},{"a":"real-time-collaboration-engine shows how to send cursor metadata alongside edits: include user ID, position, and selection range in each message. Broadcast presence updates (join/leave/idle) over WebSocket so clients render remote cursors. Debounce cursor updates to reduce traffic. Store presence state on the server or use a CRDT to track it peer-to-peer. The skill covers rendering remote cursors with user colors and names, and cleaning up stale presence when users disconnect or timeout.","q":"How do I track cursor positions and presence awareness?"},{"a":"real-time-collaboration-engine advises queuing edits locally when offline, applying them optimistically to the UI immediately. When reconnected, replay the queue and let conflict resolution merge them with server changes. Use version vectors or timestamps to detect which edits succeeded. For CRDTs, offline edits naturally merge on reconnect. For OT, the server transforms queued ops against intervening changes. The skill warns against losing queued edits on page reload\u2014persist them to localStorage or IndexedDB.","q":"How should I handle offline sync and optimistic updates?"}],"shadow_tags":["conflict-resolution","operational-transform","crdt-sync","multiplayer-editing","presence-tracking","offline-first","optimistic-ui","websocket-architecture","concurrent-edits","real-time-sync"],"summary_rewrite":"This skill guides you through building multiplayer editing experiences like Google Docs, handling the full stack from WebSocket transport to conflict resolution strategies. It covers when to use Operational Transform versus CRDTs, how to batch updates efficiently, manage offline queues, and track user presence\u2014plus common pitfalls like broadcasting every keystroke or losing concurrent edits."},"files":[{"bytes":14310,"path":".claude/skills/real-time-collaboration-engine/SKILL.md","sha256":"bcf60102917edd2629ba7ac30e78718eb5ed1805cda05d726d592c161dfcf349","url":"https://skillfed.io/files/curiositech/some_claude_skills/real-time-collaboration-engine/dac13018/SKILL.md"}],"id":"curiositech/some_claude_skills/real-time-collaboration-engine","links":{"html":"https://skillfed.io/curiositech/some_claude_skills/real-time-collaboration-engine","md":"https://skillfed.io/curiositech/some_claude_skills/real-time-collaboration-engine.md","repo":"https://github.com/curiositech/some_claude_skills"},"meta":{"agents_supported":["claude-code"],"first_seen":"2026-07-28","forks":27,"language":"TypeScript","last_updated":"2026-07-14","license":"MIT","name":"real-time-collaboration-engine","publisher":"curiositech","stars":164},"relations":{"similar":[{"id":"ancoleman/ai-design-components/implementing-realtime-sync"},{"id":"oakoss/agent-skills/realtime-sync"},{"id":"rivet-dev/skills/collaborative-text-editor"},{"id":"miles990/claude-software-skills/realtime-systems"},{"id":"Jeffallan/claude-skills/websocket-engineer"},{"id":"patricio0312rev/skills/websocket-realtime-builder"},{"id":"travisjneuman/.claude/websockets-realtime"},{"id":"liveblocks/skills/yjs-best-practices"},{"id":"pproenca/dot-skills/yjs-nextjs"},{"id":"pluginagentmarketplace/custom-plugin-nodejs/websockets"}]},"slug":{"owner":"curiositech","repo":"some_claude_skills","skill":"real-time-collaboration-engine"},"version":"dac13018"}
