WidgetKit — Foundations Skill
Purpose
Route WidgetKit implementation tasks to the minimum required WidgetKit
Knowledge Contracts. v1 scope is home-screen and Lock-Screen widgets
built with Widget/WidgetConfiguration and TimelineProvider only —
no Live Activities, no watchOS complications as a distinct surface, no
Control Widgets, no StandBy-specific layout.
Routing
Load only the contracts relevant to the task. All paths relative to knowledge/widgetkit/.
- Conforming to
Widget,WidgetBundle, orWidgetConfiguration; choosingStaticConfiguration/AppIntentConfiguration; declaringsupportedFamiliesor reading@Environment(\.widgetFamily); applying.containerBackground(for: .widget); or thekindstring's stability -> widget-declaration-and-families.md - Implementing
TimelineProvider'splaceholder(in:),getSnapshot(in:completion:), orgetTimeline(in:completion:); building aTimelineofTimelineEntryvalues; or choosing aTimelineReloadPolicy-> timeline-provider-and-entries.md - Wiring
widgetURL(_:),Link,Button(intent:), orToggle(_:isOn:intent:)into a widget's view -> widget-interactivity-and-deep-links.md - Calling
WidgetCenter.shared.reloadTimelines(ofKind:)/reloadAllTimelines(), or reasoning about the refresh budget -> timeline-reloading-and-refresh-budget.md
Never load more than the contracts relevant to the specific question.
Stop Conditions
Stop and report if the requested topic has no matching Knowledge Contract in knowledge/widgetkit/ — do not guess or fall back to general knowledge.
- Live Activities and
ActivityKit— Deferred - watchOS complications as a distinct surface — Deferred
- Control Widgets (iOS 18
Controls/ControlWidget) — Deferred - StandBy-specific layout — Deferred
- Authoring an
AppIntentitself — its parameters,perform()body, and any entities it exposes — owned byapp-intents(knowledge.app-intents.intent-results-and-widget-hookup); this Skill only routes to wiring an already-authored intent into a widget's tap target - Scheduling the background work that produces new widget data (e.g. a
BGAppRefreshTask) — owned bybackgroundtasks(knowledge.backgroundtasks.background-refresh-and-widget-timeline-hookup); this Skill only routes to thereloadTimelines/reloadAllTimelinescall site once new data has already landed