Integrate Apple Music catalog, playback, and personal library using MusicKit. Use when requesting MusicKit authorization, searching the catalog, playing songs/albums/playlists, checking subscription status, offering subscription sheets, or managing user playlists.
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Access the Apple Music catalog, play tracks, query personal cloud libraries, and present subscription upsells using MusicKit. Targets Swift 6.4 / iOS 26+.
Add NSAppleMusicUsageDescription to Info.plist. Request user authorization:
import MusicKit
func requestMusicAccess() async -> MusicAuthorization.Status {
let status = await MusicAuthorization.request()
return status
}Check capabilities on MusicSubscription.current before offering catalog playback:
func verifySubscription() async -> Bool {
let sub = try? await MusicSubscription.current
return sub?.canPlayCatalogContent ?? false
}Search Apple Music songs, albums, and artists:
func searchMusic(term: String) async throws -> MusicItemCollection<Song> {
var request = MusicCatalogSearchRequest(term: term, types: [Song.self])
request.limit = 20
let response = try await request.response()
return response.songs
}
func fetchCharts() async throws -> MusicItemCollection<Song> {
let request = MusicCatalogChartsRequest(types: [Song.self])
let response = try await request.response()
return response.songs.first?.items ?? []
}Use ApplicationMusicPlayer for app-scoped playback or SystemMusicPlayer for system-wide Music app playback:
let player = ApplicationMusicPlayer.shared
func playSong(_ song: Song) async throws {
player.queue = [song]
try await player.play()
}Present the native subscription sheet when canBecomeSubscriber is true:
import SwiftUI
import MusicKit
struct MusicView: View {
@State private var showOffer = false
var body: some View {
Button("Subscribe to Apple Music") {
showOffer = true
}
.musicSubscriptionOffer(isPresented: $showOffer)
}
}subscription.canPlayCatalogContent is true.MusicAuthorization.request().SystemMusicPlayer replaces the user's active Music app queue. Use ApplicationMusicPlayer.shared for in-app music.player.play().NSAppleMusicUsageDescription added to Info.plistMusicAuthorization.request() handled before library/playback callssubscription.canPlayCatalogContent verified prior to full track streamingmusicSubscriptionOffer provided for non-subscribersApplicationMusicPlayer vs SystemMusicPlayer)thienqo/ios-skills
6bf8b62
Canonical home
since May 23, 2026
Also appears in
on Oct 29, 2026
since May 22, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.