swiftship/internal/skills/data/ui/media/SKILL.md
Comprehensive media patterns: video playback, audio/music players, HLS streaming, remote images, AVAudioSession, memory management. Use when implementing any media-related features.
npx skillsauth add abdullah4ai/apple-dev-docs mediaInstall 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.
Media playback URLs are permitted. The forbidden-patterns networking ban targets REST API clients (URLSession data tasks, custom HTTP clients), not media playback. The following are allowed:
AVPlayer with remote URLs (MP4, HLS .m3u8 streams)AsyncImage loading remote image URLsKFImage (Kingfisher) loading and caching remote imagesURLSession.shared.download(from:) only for downloading media files to local storageDo not use URLSession for REST API calls, JSON fetching, or custom networking — that ban still applies.
Pick the right pattern based on what you're building:
| Building | Reference | Key API |
|----------|-----------|---------|
| Video player | video-playback | VideoPlayer, AVPlayer |
| HLS/live streaming | video-playback | AVPlayer + .m3u8 URL |
| Video feed (TikTok-style) | video-playback + media-memory-management | FeedPlayerCoordinator |
| Music/audio player | audio-playback + audio-session | AVAudioPlayer (local) or AVPlayer (streaming) |
| Podcast player | audio-playback + audio-session | AVPlayer + Now Playing + Remote Commands |
| Background audio | audio-session | .playback category + UIBackgroundModes |
| Image gallery/feed | remote-images | KFImage (Kingfisher) |
| Simple remote image | remote-images | AsyncImage |
| Sound effects | audio-playback | AVAudioPlayer with .ambient category |
| Sample content | sample-media-urls | Public URLs, local audio generation |
| Feature | iOS | macOS | tvOS | watchOS | visionOS | |---------|-----|-------|------|---------|----------| | Video playback | VideoPlayer | AVPlayerView (NSViewRepresentable) | VideoPlayer | No | VideoPlayer | | Audio playback | AVAudioPlayer / AVPlayer | AVAudioPlayer / AVPlayer | AVAudioPlayer / AVPlayer | WKAudioFilePlayer | AVAudioPlayer / AVPlayer | | AVAudioSession | Yes | No (not needed) | Yes | Limited | Yes | | Background audio | Yes (UIBackgroundModes) | N/A | No | Limited | Yes | | Now Playing info | Yes | Yes | Limited | No | Yes | | Remote commands | Yes | Yes | Limited | No | Yes | | AsyncImage | Yes | Yes | Yes | Yes | Yes | | Kingfisher | Yes | Yes | Yes | No | Yes |
All already in the curated package registry — no new dependencies to add:
For background audio playback, add to the target's info section in project.yml:
UIBackgroundModes: ["audio"]
No other Info.plist keys are needed for basic media playback.
camera skill (not duplicated here)camera skillmaps skill (not duplicated here)swiftui skillhaptics skillThis skill includes the following reference documents (auto-loaded):
saytools
Apple platform skill for docs, WWDC lookup, App Store Connect work, and SwiftUI app generation. Use repo-local `node cli.js` for Apple docs and WWDC search, `appledev store` for App Store Connect workflows, and `appledev build` for app scaffolding or fix loops on macOS. USE WHEN: Apple APIs, WWDC sessions, TestFlight/App Store tasks, or building/fixing Apple-platform apps. DON'T USE WHEN: non-Apple platforms, generic backend work, or general web research. EDGE CASES: docs-only queries use `node cli.js` in this repo, not `appledev`; release workflows use `appledev store`; app scaffolding uses `appledev build`; rules-only requests can read `references/ios-rules/` or `references/swiftui-guides/` progressively without invoking binaries.
tools
All-in-one Apple developer skill with three integrated tools shipped as a single unified binary. (1) Documentation search across Apple frameworks, symbols, and 1,267 WWDC sessions from 2014-2025. No credentials needed. (2) App Store Connect CLI with 120+ commands covering builds (find/wait/upload), TestFlight, pre-submission validate, submissions, signing, subscriptions (family-sharable), IAP, analytics, Xcode Cloud, metadata workflows, release pipeline dashboard, insights, win-back offers, promoted purchases, product pages, nominations, accessibility declarations, pre-orders, pricing filters, localizations update, diff, webhooks with local receiver, workflow automation, and more. Requires App Store Connect API key. (3) Multi-platform app builder (iOS/watchOS/tvOS/iPad/macOS/visionOS) that generates complete Swift/SwiftUI apps from natural language with auto-fix, simulator launch, interactive chat mode, and open-in-Xcode. Requires an LLM API key and Xcode. Includes 38 iOS development rules and 12 SwiftUI best practice guides for Liquid Glass, navigation, state management, and modern APIs. All three tools ship as one binary (appledev). USE WHEN: Apple API docs, App Store Connect management, WWDC lookup, or building iOS/watchOS/tvOS/macOS/visionOS apps from scratch. DON'T USE WHEN: non-Apple platforms or general coding.
testing
watchOS complications: WidgetKit complication families, accessory sizes, timeline providers for watch face. Use when implementing watchOS-specific patterns related to widgets.
development
watchOS haptic feedback: WKInterfaceDevice preset haptic types for wrist-based feedback. Use when implementing watchOS-specific patterns related to haptics.