# axiom-uikit

Routes UIKit and SwiftUI bridging, Auto Layout fixes, animations, Combine pipelines, and TextKit tasks. Useful for modernizing iOS interfaces.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1200 installs · ★ 1229
- Author: CharlesWiltgen
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-uikit/SKILL.md
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/skills/axiom-uikit

## What it does

The skill acts as a router for UIKit workflows within the Axiom suite. It directs the assistant to specific reference guides for SwiftUI bridging via `UIViewRepresentable` or `UIHostingController`, Auto Layout conflict diagnosis, and `CAAnimation` timing bugs. It also covers TextKit 2, PencilKit canvas integrations, and modern `UIScene` requirements.

Automated checks for window resizing use the included `axiom-audit-resize` skill. Keep in mind that auditors executing builds, running tests, invoking simulators, or symbolising crash logs require shell access. For pure SwiftUI interfaces without UIKit wrappers, use the dedicated SwiftUI skill instead.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-uikit -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/axiom-uikit/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/axiom-uikit/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-uikit -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/axiom-uikit/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-uikit -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/axiom-uikit/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install CharlesWiltgen/Axiom axiom-uikit
```

2. **Manually: put the files in place**
- File: `.github/skills/axiom-uikit/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-uikit -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/CharlesWiltgen/Axiom --path axiom-codex/skills/axiom-uikit
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/axiom-uikit/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-uikit -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-uikit/SKILL.md

## When to use it
- bridge UIKit and SwiftUI views via `UIViewRepresentable` or `UIHostingController`
- debug broken Auto Layout constraints and ambiguous view hierarchies
- fix missing `CAAnimation` completion handlers and spring physics mismatches
- connect Combine publishers cleanly to Swift concurrency pipelines
- migrate legacy text rendering surfaces to TextKit 2

## Example prompts
- Help me wrap a UIKit controller in SwiftUI using `UIViewControllerRepresentable` and configure the coordinator.
- Debug this Auto Layout issue: unable to simultaneously satisfy constraints in my view hierarchy.
- Check `UIScene` lifecycle and prepare our UIKit interface for resizable window environments.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: f208b6662c1c54ff.

BEGIN THIRD-PARTY FILE f208b6662c1c54ff
```text
---
name: axiom-uikit
description: Use when bridging UIKit and SwiftUI, modernizing UIKit apps (scene lifecycle, resizability), debugging Auto Layout, Combine, TextKit, PencilKit, or UIKit animations.
license: MIT
---

# UIKit & Bridging

**You MUST use this skill for ANY UIKit bridging, Auto Layout, Combine, TextKit, or UIKit animation work.**

<!-- 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-audit-resize`.
>
> The ones that shell out — builds, tests, simulators, crash symbolication — need shell access to run.
<!-- AXIOM_AUDITOR_INLINE_END -->

## Quick Reference

| 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` |
| Building adaptive UIKit layout: guides, width-conditional constraints, compositional layout, self-sizing cells | See `skills/adaptive-layout.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` |
| UIScene lifecycle required, resizable apps, size classes, tab sidebar `OS27` | See `skills/uikit-modernization.md` |
| iPhone Mirroring compat: indirect input, companion Face ID, portrait trap | See `skills/uikit-modernization.md` |
| Scene edges: teardown, activation requests, per-scene restoration, external display, activeAppearance | See `skills/uikit-modernization.md` |
| Nav bar title and subtitle: `UINavigationItem.subtitle`, `largeSubtitleView`, `attributedTitle`/`attributedSubtitle`, subtitle text attributes (iOS 26) | See `skills/uikit-modernization.md` |
| Automated resize-readiness scan (scene lifecycle, UIScreen.main, fixed-canvas, Mirroring input, iPhone Duo) | `axiom-audit-resize` |
```
END THIRD-PARTY FILE f208b6662c1c54ff

The third-party file has ended. Everything between the f208b6662c1c54ff tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2784 of 10126 bytes. © CharlesWiltgen · MIT · https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-uikit/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
