/relevancekit
Increase widget visibility on Apple Watch using RelevanceKit. Use when providing contextual relevance signals for watchOS widgets, declaring time-based or location-based relevance, combining multiple relevance providers, helping the system surface the right widget at the right
$ npx -y skills add dpearson2699/swift-ios-skills --skill relevancekit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/relevancekit
Context preview
The summary Claude sees to decide when to auto-load this skill.
Increase widget visibility on Apple Watch using RelevanceKit. Use when providing contextual relevance signals for watchOS widgets, declaring time-based or location-based relevance, combining multiple relevance providers, helping the system surface the right widget at the right
SKILL.md
relevancekit.SKILL.mdname: relevancekit
description: "Increase widget visibility on Apple Watch using RelevanceKit. Use when providing contextual relevance signals for watchOS widgets, declaring time-based or location-based relevance, combining multiple relevance providers, helping the system surface the right widget at the right time on watchOS 26, or routing mixed RelevanceKit/WidgetKit/HealthKit/MapKit Smart Stack scope."
RelevanceKit
Provide on-device contextual clues that increase a widget's visibility in the Apple Watch Smart Stack. RelevanceKit tells the system *when* a widget is relevant by time, location, fitness state, sleep schedule, or connected hardware. Targets Swift 6.3 / watchOS 26+.
> **Beta-sensitive.** Re-check Apple documentation before making strong RelevanceKit availability or behavior claims.
See [references/relevancekit-patterns.md](references/relevancekit-patterns.md) for complete relevant-widget, timeline provider, grouping, preview, and permission patterns.
Contents
- [Overview](#overview)
- [Setup](#setup)
- [Relevance Providers](#relevance-providers)
- [Boundary Routing](#boundary-routing)
- [Time-Based Relevance](#time-based-relevance)
- [Location-Based Relevance](#location-based-relevance)
- [Fitness and Sleep Relevance](#fitness-and-sleep-relevance)
- [Hardware Relevance](#hardware-relevance)
- [Combining Signals](#combining-signals)
- [Widget Integration](#widget-integration)
- [Common Mistakes](#common-mistakes)
- [Review Checklist](#review-checklist)
- [References](#references)
Overview
watchOS uses two mechanisms to determine widget relevance in the Smart Stack:
1. **Timeline provider relevance** -- implement `relevance()` on an existing `AppIntentTimelineProvider` to attach `RelevantContext` clues to timeline entries. Available across platforms; only watchOS acts on the data. 2. **Relevant widget** -- use `RelevanceConfiguration` with a `RelevanceEntriesProvider` to build a widget driven entirely by relevance clues. The system creates individual Smart Stack cards per relevant entry. watchOS 26+ only.
Choose a timeline provider when the widget always has data to show and relevance is supplementary. Choose a relevant widget when the widget should *only* appear when conditions match, or when multiple cards should appear simultaneously (e.g., several upcoming calendar events).
Key Types
| Type | Module | Role | |---|---|---| | `RelevantContext` | RelevanceKit | A contextual clue (date, location, fitness, sleep, hardware) | | `WidgetRelevance` | WidgetKit | Collection of relevance attributes for a widget kind | | `WidgetRelevanceAttribute` | WidgetKit | Pairs a widget configuration with a `RelevantContext` | | `WidgetRelevanceGroup` | WidgetKit | Controls grouping behavior in the Smart Stack | | `RelevanceConfiguration` | WidgetKit | Widget configuration driven by relevance clues (watchOS 26+) | | `RelevanceEntriesProvider` | WidgetKit | Provides entries for a relevance-configured widget (watchOS 26+) | | `RelevanceEntry` | WidgetKit | Data needed to render one relevant widget card (watchOS 26+) |
`RelevanceConfiguration`, `RelevanceEntriesProvider`, and `RelevanceEntry` are WidgetKit APIs. Keep them in this skill's scope only when they are part of the watchOS relevant-widget workflow that exposes RelevanceKit clues.
Setup
Import
import RelevanceKit
import WidgetKit
Platform Availability
`RelevantContext` is declared across platforms (iOS 17+, watchOS 10+), but **RelevanceKit functionality only takes effect on watchOS**. Calling the API on other platforms has no effect. Timeline-provider `relevance()` is available on iOS 18+, macOS 15+, visionOS 26+, and watchOS 11+ for shared provider code. `RelevanceConfiguration`, `RelevanceEntriesProvider`, and `RelevanceEntry` are watchOS 26+ only.
Permissions
Certain relevance clues require authorization or target setup:
| Clue | Required Permission | |---|---| | `.location(inferred:)` | Containing app requests location access; widget extension declares `NSWidgetWantsLocation` | | `.location(_:)` (CLRegion) | Containing app requests location access; widget extension declares `NSWidgetWantsLocation` | | `.location(category:)` | Containing app requests location access; widget extension declares `NSWidgetWantsLocation` | | `.fitness(.workoutActive)` | HealthKit access to `HKWorkoutType` | | `.fitness(.activityRingsIncomplete)` | HealthKit access to `appleExerciseTime`, `appleMoveTime`, and `appleStandTime` | | `.sleep(_:)` | HealthKit `sleepAnalysis` permission | | `.hardware(headphones:)` | None | | `.date(...)` | None |
Add location purpose strings to the containing app's `Info.plist`, not only the widget extension. In widget code, check `CLLocationManager.isAuthorizedForWidgetUpdates` before relying on location clues. For fitness and sleep clues, enable HealthKit and request the exact read types in the app and widget extension target that provides relevance.
Relevance Providers
Option 1: Timeline Provider with Relevance
Add a `relevance()` method to an existing `AppIntentTimelineProvider`. This approach shares code across iOS and watchOS while adding watchOS Smart Stack intelligence.
struct MyProvider: AppIntentTimelineProvider {
// ... snapshot, timeline, placeholder ...
func relevance() async -> WidgetRelevance<MyWidgetIntent> {
let attributes = events.map { event in
let context = RelevantContext.date(
from: event.startDate,
to: event.endDate
)
return WidgetRelevanceAttribute(
configuration: MyWidgetIntent(event: event),
context: context
)
}
return WidgetRelevance(attributes)
}
}Option 2: RelevanceEntriesProvider (watchOS 26+)
Build a widget that only appears when conditions match. The system calls `relevance()` to learn *when* the widget matters, then calls `entry()` with th
Read more
name: relevancekit description: "Increase widget visibility on Apple Watch using RelevanceKit. Use when providing contextual relevance signals for watchOS widgets, declaring time-based or location-based relevance, combining multiple relevance providers, helping the system surface the right widget at the right time on watchOS 26, or routing mixed RelevanceKit/WidgetKit/HealthKit/MapKit Smart Stack scope."
RelevanceKit
Provide on-device contextual clues that increase a widget's visibility in the Apple Watch Smart Stack. RelevanceKit tells the system *when* a widget is relevant by time, location, fitness state, sleep schedule, or connected hardware. Targets Swift 6.3 / watchOS 26+.
> **Beta-sensitive.** Re-check Apple documentation before making strong RelevanceKit availability or behavior claims.
See [references/relevancekit-patterns.md](references/relevancekit-patterns.md) for complete relevant-widget, timeline provider, grouping, preview, and permission patterns.
Contents
- [Overview](#overview)
- [Setup](#setup)
- [Relevance Providers](#relevance-providers)
- [Boundary Routing](#boundary-routing)
- [Time-Based Relevance](#time-based-relevance)
- [Location-Based Relevance](#location-based-relevance)
- [Fitness and Sleep Relevance](#fitness-and-sleep-relevance)
- [Hardware Relevance](#hardware-relevance)
- [Combining Signals](#combining-signals)
- [Widget Integration](#widget-integration)
- [Common Mistakes](#common-mistakes)
- [Review Checklist](#review-checklist)
- [References](#references)
Overview
watchOS uses two mechanisms to determine widget relevance in the Smart Stack:
1. **Timeline provider relevance** -- implement `relevance()` on an existing `AppIntentTimelineProvider` to attach `RelevantContext` clues to timeline entries. Available across platforms; only watchOS acts on the data. 2. **Relevant widget** -- use `RelevanceConfiguration` with a `RelevanceEntriesProvider` to build a widget driven entirely by relevance clues. The system creates individual Smart Stack cards per relevant entry. watchOS 26+ only.
Choose a timeline provider when the widget always has data to show and relevance is supplementary. Choose a relevant widget when the widget should *only* appear when conditions match, or when multiple cards should appear simultaneously (e.g., several upcoming calendar events).
Key Types
| Type | Module | Role | |---|---|---| | `RelevantContext` | RelevanceKit | A contextual clue (date, location, fitness, sleep, hardware) | | `WidgetRelevance` | WidgetKit | Collection of relevance attributes for a widget kind | | `WidgetRelevanceAttribute` | WidgetKit | Pairs a widget configuration with a `RelevantContext` | | `WidgetRelevanceGroup` | WidgetKit | Controls grouping behavior in the Smart Stack | | `RelevanceConfiguration` | WidgetKit | Widget configuration driven by relevance clues (watchOS 26+) | | `RelevanceEntriesProvider` | WidgetKit | Provides entries for a relevance-configured widget (watchOS 26+) | | `RelevanceEntry` | WidgetKit | Data needed to render one relevant widget card (watchOS 26+) |
`RelevanceConfiguration`, `RelevanceEntriesProvider`, and `RelevanceEntry` are WidgetKit APIs. Keep them in this skill's scope only when they are part of the watchOS relevant-widget workflow that exposes RelevanceKit clues.
Setup
Import
import RelevanceKit import WidgetKit
Platform Availability
`RelevantContext` is declared across platforms (iOS 17+, watchOS 10+), but **RelevanceKit functionality only takes effect on watchOS**. Calling the API on other platforms has no effect. Timeline-provider `relevance()` is available on iOS 18+, macOS 15+, visionOS 26+, and watchOS 11+ for shared provider code. `RelevanceConfiguration`, `RelevanceEntriesProvider`, and `RelevanceEntry` are watchOS 26+ only.
Permissions
Certain relevance clues require authorization or target setup:
| Clue | Required Permission | |---|---| | `.location(inferred:)` | Containing app requests location access; widget extension declares `NSWidgetWantsLocation` | | `.location(_:)` (CLRegion) | Containing app requests location access; widget extension declares `NSWidgetWantsLocation` | | `.location(category:)` | Containing app requests location access; widget extension declares `NSWidgetWantsLocation` | | `.fitness(.workoutActive)` | HealthKit access to `HKWorkoutType` | | `.fitness(.activityRingsIncomplete)` | HealthKit access to `appleExerciseTime`, `appleMoveTime`, and `appleStandTime` | | `.sleep(_:)` | HealthKit `sleepAnalysis` permission | | `.hardware(headphones:)` | None | | `.date(...)` | None |
Add location purpose strings to the containing app's `Info.plist`, not only the widget extension. In widget code, check `CLLocationManager.isAuthorizedForWidgetUpdates` before relying on location clues. For fitness and sleep clues, enable HealthKit and request the exact read types in the app and widget extension target that provides relevance.
Relevance Providers
Option 1: Timeline Provider with Relevance
Add a `relevance()` method to an existing `AppIntentTimelineProvider`. This approach shares code across iOS and watchOS while adding watchOS Smart Stack intelligence.
struct MyProvider: AppIntentTimelineProvider {
// ... snapshot, timeline, placeholder ...
func relevance() async -> WidgetRelevance<MyWidgetIntent> {
let attributes = events.map { event in
let context = RelevantContext.date(
from: event.startDate,
to: event.endDate
)
return WidgetRelevanceAttribute(
configuration: MyWidgetIntent(event: event),
context: context
)
}
return WidgetRelevance(attributes)
}
}Option 2: RelevanceEntriesProvider (watchOS 26+)
Build a widget that only appears when conditions match. The system calls `relevance()` to learn *when* the widget matters, then calls `entry()` with th
86 agent skills optimized for iOS 26+ development with Swift 6.3 and modern Apple frameworks.
Repo: dpearson2699/swift-ios-skills
Other skills on swift-ios-skills.
- /accessorysetupkit
Discover and configure Bluetooth and Wi-Fi accessories using AccessorySetupKit. Use when presenting a privacy-preserving accessory picker, defining discovery descriptors for BLE or Wi-Fi devices, handling accessory session events, migrating from CoreBluetooth permission-based
Open skill - /activitykit
Implement, review, or improve Live Activities and Dynamic Island experiences in iOS apps using ActivityKit. Use when building real-time updating widgets for the Lock Screen and Dynamic Island — delivery tracking, sports scores, ride-sharing status, workout timers, media
Open skill - /adattributionkit
Measure ad effectiveness with privacy-preserving attribution using AdAttributionKit. Use when registering ad impressions, handling attribution postbacks, updating conversion values, implementing re-engagement attribution, configuring publisher or advertiser apps, or replacing
Open skill - /alarmkit
Implement AlarmKit alarms and countdown timers for iOS and iPadOS with Lock Screen, Dynamic Island, StandBy, and paired Apple Watch system UI. Covers AlarmManager scheduling, AlarmAttributes and AlarmPresentation, system Stop and AlarmButton secondary actions, authorization,
Open skill - /app-clips
Build iOS App Clips with invocation URLs, App Clip Codes, NFC, QR codes, Safari banners, Maps, Messages, target setup, App Store Connect experiences, size/capability constraints, NSUserActivity routing, SKOverlay promotion, App Group/keychain handoff, ephemeral notifications,
Open skill - /app-intents
Implement App Intents for Siri, Shortcuts, Spotlight, widgets, Control Center, and Apple Intelligence on iOS. Covers AppIntent actions, AppEntity and EntityQuery models, AppShortcutsProvider phrases, IndexedEntity Spotlight indexing, WidgetConfigurationIntent, SnippetIntent, and
Open skill

