axiom-codex/skills/axiom-uikit/SKILL.md
Use when bridging UIKit and SwiftUI, debugging Auto Layout constraints, working with Combine, TextKit, or UIKit animations.
npx skillsauth add charleswiltgen/axiom axiom-uikitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You MUST use this skill for ANY UIKit bridging, Auto Layout, Combine, TextKit, or UIKit animation work.
| Symptom / Task | Reference |
|----------------|-----------|
| UIViewRepresentable, UIViewControllerRepresentable | See skills/uikit-bridging.md |
| Embedding SwiftUI in UIKit (UIHostingController) | See skills/uikit-bridging.md |
| Coordinator pattern, updateUIView lifecycle | See skills/uikit-bridging.md |
| "Unable to simultaneously satisfy constraints" | See skills/auto-layout-debugging.md |
| Constraint conflicts, ambiguous layout | See skills/auto-layout-debugging.md |
| Views not appearing, positioned incorrectly | See skills/auto-layout-debugging.md |
| CAAnimation completion handler not firing | See skills/uikit-animation-debugging.md |
| Spring physics wrong on device, duration mismatch | See skills/uikit-animation-debugging.md |
| Animation jank, CATransaction timing | See skills/uikit-animation-debugging.md |
| Combine publishers, AnyCancellable lifecycle | See skills/combine-patterns.md |
| @Published properties, Combine ↔ async/await | See skills/combine-patterns.md |
| When to use Combine vs async/await | See skills/combine-patterns.md |
| TextKit 2 architecture, NSTextLayoutManager | See skills/textkit-ref.md |
| Writing Tools integration (iOS 26) | See skills/textkit-ref.md |
| SwiftUI TextEditor, TextKit 1 migration | See skills/textkit-ref.md |
digraph uikit {
start [label="UIKit task" shape=ellipse];
what [label="What do you need?" shape=diamond];
start -> what;
what -> "skills/uikit-bridging.md" [label="wrap UIKit in SwiftUI\nor SwiftUI in UIKit"];
what -> "skills/auto-layout-debugging.md" [label="constraint errors,\nlayout issues"];
what -> "skills/uikit-animation-debugging.md" [label="CAAnimation bugs,\nspring physics,\ncompletion handlers"];
what -> "skills/combine-patterns.md" [label="publishers, sinks,\n@Published,\nasync/await bridge"];
what -> "skills/textkit-ref.md" [label="text layout,\nWriting Tools,\nTextKit migration"];
}
skills/uikit-bridging.mdskills/auto-layout-debugging.mdskills/uikit-animation-debugging.mdskills/combine-patterns.mdskills/textkit-ref.md/skill axiom-swiftui/skill axiom-designskills/objc-block-retain-cycles.md)skills/combine-patterns.md, then axiom-performance if leak persistsuikit vs swiftui: When working with UI code:
uikit vs concurrency: When Combine interacts with async/await:
skills/combine-patterns.md) for bridging Combine pipelines with async/awaituikit vs performance: When animations or layout cause performance issues:
uikit vs axiom-data: When @Published properties relate to data persistence:
| Thought | Reality |
|---------|---------|
| "I'll just use UIHostingController, it's simple" | Hosting has sizing, lifecycle, and navigation edge cases. skills/uikit-bridging.md covers the gotchas. |
| "Auto Layout error is just a warning, I'll ignore it" | Unsatisfied constraints cause unpredictable layout at runtime. Fix them now. |
| "I know how CAAnimation works" | 90% of CAAnimation bugs are CATransaction timing, not Core Animation. Check skills/uikit-animation-debugging.md. |
| "Combine is dead, just rewrite with async/await" | Combine has no deprecation notice. Rewriting working pipelines wastes time. skills/combine-patterns.md covers when to migrate vs maintain. |
| "TextKit 1 still works fine" | TextKit 1 misses Writing Tools integration and has known layout bugs Apple won't fix. See skills/textkit-ref.md. |
| "I'll store cancellables in a local variable" | Local AnyCancellable deallocates immediately, killing the subscription. |
User: "How do I wrap a UIKit view in SwiftUI?"
→ Read: skills/uikit-bridging.md
User: "I'm getting 'Unable to simultaneously satisfy constraints'"
→ Read: skills/auto-layout-debugging.md
User: "My CAAnimation completion handler never fires"
→ Read: skills/uikit-animation-debugging.md
User: "Should I use Combine or async/await for this?"
→ Read: skills/combine-patterns.md
User: "How do I integrate Writing Tools with my text editor?"
→ Read: skills/textkit-ref.md
User: "My SwiftUI view has a memory leak from a Combine subscription"
→ Read: skills/combine-patterns.md
User: "How do I embed SwiftUI in my UIKit app?"
→ Read: skills/uikit-bridging.md
development
Use when building ANY watchOS app — app structure, independent apps, Watch Connectivity, Smart Stack widgets, complications, controls, RelevanceKit, background tasks, ClockKit migration.
development
Use when working with HealthKit, WorkoutKit, health data, workouts, or fitness features on iOS or watchOS. Covers permissions, queries, background delivery, custom workouts, multidevice coordination.
development
Use when building, fixing, or improving ANY SwiftUI UI — views, navigation, layout, animations, performance, architecture, gestures, debugging, iOS 26 features.
content-media
Use when working with camera, photos, audio, haptics, ShazamKit, or Now Playing. Covers AVCaptureSession, PHPicker, PhotosPicker, AVFoundation, Core Haptics, audio recognition, MediaPlayer, CarPlay, MusicKit.