axiom-watchos — Claude Code skill for watchOS app development
A skill for building watchOS apps: app structure, Smart Stack widgets, complications, Watch Connectivity, background tasks and ClockKit migration.
npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a claude-codeWhat axiom-watchos does
The skill kicks in for anything watchOS-specific: app structure, independent apps, Smart Stack widgets, complications, controls, Live Activities on the watch, background tasks, and the move from ClockKit to WidgetKit. It is a router — a symptom table plus a decision tree that points to the right file: skills/platform-basics.md, skills/design-for-watchos.md, skills/smart-stack-and-complications.md, skills/watch-connectivity.md, skills/watch-device-diag.md, skills/background-and-networking.md, skills/modernization.md.
Two connections fail in ways that look identical, and the skill keeps them apart. watch-device-diag covers the Mac/Xcode → Watch link: install, launch, LLDB attach, a watch missing from Device Hub. watch-connectivity covers WCSession between the iPhone app and the watchOS app. When you are unsure, start with device diagnostics and run the app without the debugger attached. If it behaves correctly, the tunnel is at fault and no WCSession change will help.
There are explicit conflict rules for neighbouring suites too: general SwiftUI, HealthKit and workouts, iOS-side widgets and App Intents, accessibility, concurrency. In the Codex build some auditors are invoked as skills rather than Claude agents, and the ones that shell out — builds, tests, simulators, crash symbolication — need shell access.
What it helps with
- lay out the structure of a new watchOS app
- build a complication and a Smart Stack widget
- get data moving between the iPhone app and the watch over
WCSession - work out why Xcode cannot see or attach to the watch
- migrate a project from WatchKit and ClockKit to SwiftUI and WidgetKit
Example prompts for the agent
- Help me plan the structure of an independent watchOS app
- Xcode won't install the app on my watch — walk me through the diagnosis
- I need a complication for the Smart Stack; show me how to build one
How to install axiom-watchos
1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a claude-code2Manually: put the files in place
~/.claude/skills/axiom-watchos/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/axiom-watchos/
1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a codex2Manually: put the files in place
.agents/skills/axiom-watchos/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a cursor2Manually: put the files in place
.cursor/skills/axiom-watchos/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install CharlesWiltgen/Axiom axiom-watchos2Manually: put the files in place
.github/skills/axiom-watchos/SKILL.md1Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a gemini-cli2Platform CLI
gemini skills install https://github.com/CharlesWiltgen/Axiom --path axiom-codex/skills/axiom-watchosManually: put the files in place
.devin/skills/axiom-watchos/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about axiom-watchos
How do I install axiom-watchos in Claude?
Run npx skills add CharlesWiltgen/Axiom --skill axiom-watchos -a claude-code. The skill then lives at ~/.claude/skills/axiom-watchos/SKILL.md.
What does axiom-watchos do?
It routes watchOS development tasks to the right reference: app structure, Smart Stack and complications, controls, Watch Connectivity, background tasks, ClockKit migration.
How is watch-device-diag different from watch-connectivity?
The first covers the Mac and Xcode link to the watch: install, launch, debugger attach. The second covers WCSession between the iPhone app and the watchOS app. When unsure, the skill says to start with device diagnostics.
Source text
SKILL.md · MIT
---
name: axiom-watchos
description: Use when building ANY watchOS app — app structure, independent apps, Watch Connectivity, Smart Stack widgets, complications, controls, RelevanceKit, background tasks, ClockKit migration.
license: MIT
---
# watchOS Development
**You MUST use this skill for ANY watchOS-specific development including app structure, independent apps, Watch Connectivity, complications and Smart Stack widgets, controls, Live Activities on watch, background tasks, and ClockKit migration.**
<!-- AXIOM_AUDITOR_INLINE_BEGIN — rewritten for Codex by scripts/build-codex.ts; do not hand-edit -->
> **Auditors are skills here.** Where this router says "Launch `some-auditor` agent", invoke the
> matching Codex skill instead — same procedure, no Claude Code agent required.
>
> Available: `axiom-modernize`.
>
> The ones that shell out — builds, tests, simulators, crash symbolication — need shell access to run.
<!-- AXIOM_AUDITOR_INLINE_END -->
## Quick Reference
| Symptom / Task | Reference |
|----------------|-----------|
| App structure, independent apps, watchOS 26 submission requirements | See `skills/platform-basics.md` |
| watchOS HIG, glanceable UX, navigation model | See `skills/design-for-watchos.md` |
| Smart Stack widgets, complications, ClockKit→WidgetKit, RelevanceKit | See `skills/smart-stack-and-complications.md` |
| Controls on watch surfaces, Live Activities on watch | See `skills/controls-and-live-activities.md` |
| Watch Connectivity (WCSession), paired-device data transfer, Family Setup | See `skills/watch-connectivity.md` |
| Xcode won't install/launch/attach to a Watch; Watch missing or `unavailable` in Device Hub / devicectl | See `skills/watch-device-diag.md` |
| Background tasks, freshness scheduling, TN3135 networking limits | See `skills/background-and-networking.md` |
| BGTaskScheduler migration, deprecated WK background scheduling `OS27` | See `skills/background-and-networking.md` |
| Foundation Models / Private Cloud Compute on the watch `OS27` | See `skills/platform-basics.md` |
| WatchKit→SwiftUI migration, ClockKit→WidgetKit migration | See `skills/modernization.md` |
## Cross-Suite Routes
These topics overlap with watchOS development but live in separate suites:
#### SwiftUI (shared iOS/watchOS/macOS)
- View state, data flow, @Observable → See axiom-swiftui
- Navigation basics (NavigationStack) → See axiom-swiftui
- Layout, animations → See axiom-swiftui
#### Design
- General HIG, Liquid Glass, SF Symbols, typography → See axiom-design
#### Accessibility
- General VoiceOver, Dynamic Type, WCAG → See axiom-accessibility
- watchOS-specific (VoiceOver rotor on Digital Crown, AssistiveTouch, Double Tap) → See axiom-accessibility (`skills/watchos-a11y.md`)
#### Health and workouts
- HealthKit, `HKWorkoutSession`, `HKLiveWorkoutBuilder`, WorkoutKit → See axiom-health
- Workout recovery, multi-device coordination → See axiom-health (`skills/workouts.md`)
#### iOS-side widgets and App Intents
- iOS/iPadOS widgets, configuration intents, App Intents → See axiom-integration
- Live Activities on iPhone (initiation + ActivityKit) → See axiom-integration
#### Concurrency
- Swift 6 concurrency, actors, Sendable → See axiom-concurrency
#### New-on-watch frameworks (27 releases)
- Foundation Models depth (sessions, @Generable, tools, PCC) → See axiom-ai; watch scoping is in `skills/platform-basics.md`
- Vision framework (new on watchOS 27) → See axiom-vision
- NowPlaying / MusicUnderstanding (new on watchOS 27) → See axiom-media
## Conflict Resolution
**axiom-watchos vs axiom-swiftui**: When building a watchOS SwiftUI app:
1. **Use axiom-watchos** for watch-specific patterns: glanceable UI, constrained navigation, Digital Crown focus, Smart Stack placement
2. **Use axiom-swiftui** for cross-platform SwiftUI: state management, layout primitives, animations
3. **Both may apply**: A watchOS NavigationStack with complications needs axiom-watchos for complication surfaces and axiom-swiftui for NavigationStack basics
**axiom-watchos vs axiom-integration**: For widgets and Live Activities:
1. **Use axiom-watchos** for watch complications, Smart Stack placement, watch-side Live Activity presentation, RelevanceKit
2. **Use axiom-integration** for iOS/iPadOS widgets, core ActivityKit API, App Intents
**watch-device-diag vs watch-connectivity**: Two independent connections fail in ways that look identical. Decide which before writing any code:
1. **Use watch-device-diag** for the Mac/Xcode → Watch link (CoreDevice): install, launch, LLDB attach, a Watch that is missing or `unavailable`
2. **Use watch-connectivity** for the iPhone app ↔ watchOS app link (`WCSession`): transfer-API choice, delivery semantics, background-task completion
3. **When unsure, start with watch-device-diag.** Run the app without the debugger attached — if it behaves correctly, the fault is the tunnel and no `WCSession` change will help. Redesigning `WCSession` to compensate for a broken debugger tunnel is the most expensive mistake in watchOS work
4. **`isReachable == false` is not a transport failure** — it is the expected value across ordinary lifecycle transitions and routes to watch-connectivity, not here
**axiom-watchos vs axiom-health**: For workouts on Apple Watch:
1. **Use axiom-watchos** for watch-specific presentation: Always On display, Smart Stack placement, background mode coordination
2. **Use axiom-health** for `HKWorkoutSession` lifecycle, `HKLiveWorkoutBuilder`, recovery, multi-device mirroring
## Decision Tree
```dot
digraph watchos {
start [label="watchOS development task" shape=ellipse];
what [label="What area?" shape=diamond];
start -> what;
what -> "skills/platform-basics.md" [label="app structure, independent apps, submission"];
what -> "skills/design-for-watchos.md" [label="watch HIG, glanceable UX"];
what -> "skills/smart-stack-and-complications.md" [label="complications, Smart Stack, RelevanceKit"];
what -> "skills/controls-and-live-activities.md" [label="controls, watch Live Activities"];
what -> "skills/watch-connectivity.md" [label="WCSession, paired-device transfer"];
what -> "skills/watch-device-diag.md" [label="Xcode can't reach the Watch"];
what -> "skills/background-and-networking.md" [label="background tasks, BGTaskScheduler, networking limits"];
what -> "skills/platform-basics.md" [label="Foundation Models / PCC on watch"];
what -> "skills/modernization.md" [label="WatchKit/ClockKit migration"];
what -> "axiom-health" [label="workouts, HealthKit, WorkoutKit"];
what -> "axiom-swiftui" [label="general SwiftUI patterns"];
what -> "axiom-accessibility" [label="VoiceOver rotor, AssistiveTouch"];
what -> "axiom-integration" [label="iOS-side widgets, App Intents"];
}
```
## Resources
**WWDC**: 2021-10003, 2022-10133, 2023-10138, 2023-10029, 2023-10309, 2024-10098, 2024-10157, 2024-10205, 2025-334
**Docs**: /watchos-apps/building_a_watchos_app, /watchos-apps/creating-independent-watchos-apps, /watchconnectivity, /widgetkit/creating-accessory-widgets-and-watch-complications, /widgetkit/converting-a-clockkit-app, /relevancekit, /technotes/tn3135-low-level-networking-on-watchos, /technotes/tn3157-updating-your-watchos-project-for-swiftui-and-widgetkit
**Skills**: axiom-swiftui, axiom-design, axiom-accessibility, axiom-health, axiom-integration, axiom-concurrency, axiom-ai, axiom-vision, axiom-media
© CharlesWiltgen · MIT · CharlesWiltgen/Axiom