Install
openclaw skills install @tomkrikorian/shareplay-developerBuild, integrate, and troubleshoot SharePlay GroupActivities features, including GroupActivity definitions, activation flows, GroupSession lifecycle, messaging and journals, ShareLink and SharePlay UI surfaces, and visionOS spatial coordination. Use when implementing or debugging SharePlay experiences across Apple platforms, especially visionOS.
openclaw skills install @tomkrikorian/shareplay-developerThis skill provides comprehensive guidance for implementing SharePlay experiences with the GroupActivities framework. It covers activity definition, session lifecycle, state synchronization, UI surfaces, and visionOS spatial coordination.
When implementing SharePlay features, this skill should:
Load the appropriate reference file from the tables below for detailed usage, code examples, and best practices.
com.apple.developer.group-session entitlement in Xcode.GroupActivity type per experience and keep its data minimal and Codable.GroupActivityMetadata with a clear title, type, and fallback URL.GroupStateObserver.isEligibleForGroupSession and activate or present SharePlay UI.for await session in Activity.sessions() and store the session strongly.SystemCoordinator before join() when spatial personas or immersive spaces are involved.session.join() only after UI and state are ready.GroupSessionMessenger (time-sensitive messages) or GroupSessionJournal (durable shared data objects).activeParticipants and send a state snapshot for late joiners.leave() or end() and cancel tasks when the session invalidates.Use this when you only want participants to enter the same immersive space with spatial coordination, without synchronizing entities or interactions yet.
GroupActivity with lightweight metadata. Add GroupActivityTransferRepresentation only when you want to start the activity from ShareLink, a share sheet, or another transferable context.SharePlayManager that observes sessions and configures SystemCoordinator:
supportsGroupImmersiveSpace = truespatialTemplatePreference = .sideBySide (or another appropriate template).immersiveEnvironmentBehavior(.coexist) on the ImmersiveSpace scene. Don’t treat that modifier as the API that spatially coordinates participants.activate().GroupActivitySharingController (UIKit) or ShareLink (SwiftUI).session.join() once configured.GroupActivity to define the shareable experience and keep payloads minimal.GroupActivity.metadata with title, subtitle, preview image, and fallback URL.GroupActivityMetadata.type to a matching ActivityType value.GroupActivityActivationResult from prepareForActivation() to decide activation.GroupActivityTransferRepresentation when starting the activity from ShareLink, a share sheet, or another transferable surface.GroupSession to manage the live activity; call join(), leave(), or end().GroupSession.state, activeParticipants, and isLocallyInitiated to drive UI.GroupSession.sceneSessionIdentifier to map sessions to scenes when needed.requestForegroundPresentation() when the activity needs the app visible.GroupSession.showNotice(_:) or postEvent(_:) for system playback notices.GroupSessionMessenger for time-sensitive messages and state changes..reliable delivery for critical state and .unreliable for high-frequency updates.GroupSessionJournal for attachments and other data objects that should remain available to current and later participants.ShareLink with Transferable + GroupActivityTransferRepresentation in SwiftUI.GroupActivitySharingController in UIKit/AppKit when no FaceTime call is active.NSItemProvider.registerGroupActivity(...) in share sheets when needed.SystemCoordinator from GroupSession.systemCoordinator for spatial layout.spatialTemplatePreference and supportsGroupImmersiveSpace as needed.localParticipantStates and remoteParticipantStates to track poses.groupActivityAssociation(_:) to choose the primary scene..immersiveEnvironmentBehavior(.coexist) only when you want the system immersive environment to remain visible; participant co-location comes from SystemCoordinator configuration.| Reference | When to Use |
|---|---|
REFERENCE.md | When looking for GroupActivities-focused code samples and excerpts. |
visionos-immersive-space.md | When implementing “launch-only” SharePlay for a visionOS immersive space (same space, no sync). |
activation-ui.md | When wiring the start button (FaceTime-active activation vs share sheet fallback). |
GroupSessionMessenger for transient actions and GroupSessionJournal for durable data.GroupActivity data minimal; send state changes via messenger or journal.GroupSession, GroupSessionMessenger, and GroupSessionJournal.leave() on teardown.activeParticipants change.supportsGroupImmersiveSpace, the selected spatial template, and that SystemCoordinator is configured before join().