home / skills / willsigmon / sigstack / widget-extension-builder
This skill helps you create and refresh iOS widgets for Leavn by managing data sharing, localization, and refresh strategies.
npx playbooks add skill willsigmon/sigstack --skill widget-extension-builderReview the files below or copy the command above to add this skill to your agents.
---
name: Widget Extension Builder
description: Create and maintain iOS widgets for Leavn - VOTD widget, reading plan widget, prayer widget with proper data sharing and refresh
allowed-tools: Read, Write, Edit
---
# Widget Extension Builder
Build iOS widgets:
1. **Widget types**:
- VerseOfDayWidget
- ReadingPlanWidget
- CommunityPrayerWidget
- ReadingLiveActivity
2. **Data sharing**:
- Use SharedWidgetStore
- App group: `group.com.leavn.app`
- Write from main app, read from widget
3. **Localization**:
- Use WidgetI18n (separate from main app)
- All 6 languages supported
4. **Refresh**:
- Timeline provider
- Background refresh
- User-triggered reload
Use when: Creating widgets, updating widget data, widget refresh issues
This skill builds and maintains iOS widgets for the Leavn app family, including Verse of the Day, Reading Plan, Community Prayer widgets, and a Reading LiveActivity. It provides patterns for safe data sharing via an app group, localized widget strings, and strategies for reliable refresh behavior. The skill focuses on practical integration between the main app and widget extensions using TypeScript-driven tooling and configuration.
The skill configures widget extensions to read data from a SharedWidgetStore backed by the app group group.com.leavn.app so the main app can write updates and widgets can read them. It supplies a timeline provider with background refresh and user-triggered reload hooks, plus a separate WidgetI18n resource to load localized strings for six supported languages. LiveActivity support is included for reading sessions, with explicit refresh and expiration handling.
How does the widget read data from the main app?
Widgets read from SharedWidgetStore using the app group group.com.leavn.app; the main app must write updates into that store.
Where should localization live for widgets?
Use a separate WidgetI18n resource for widget strings so you can manage six supported languages independently of the main app.