axiom-accessibility
Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance,…
Use when the user mentions window resizing support, resizable-window readiness, iPhone Mirroring compatibility, iPhone Duo readiness, scene-lifecycle migration checking, or preparing an app for the 27-cycle resizing model.
Claude Code
$ npx -y skills add charleswiltgen/axiom --skill axiom-audit-resize --agent claude-code
Codex
$ npx skills add charleswiltgen/axiom --skill axiom-audit-resize -a codex -y
Cursor
$ npx skills add charleswiltgen/axiom --skill axiom-audit-resize -a cursor -y
Gemini CLI
$ npx skills add charleswiltgen/axiom --skill axiom-audit-resize -a gemini-cli -y
GitHub Copilot
$ npx skills add charleswiltgen/axiom --skill axiom-audit-resize -a github-copilot -y
OpenCode
$ npx skills add charleswiltgen/axiom --skill axiom-audit-resize -a opencode -y
Windsurf
$ npx skills add charleswiltgen/axiom --skill axiom-audit-resize -a windsurf -y
name: axiom-audit-resize description: Use when the user mentions window resizing support, resizable-window readiness, iPhone Mirroring compatibility, iPhone Duo readiness, scene-lifecycle migration checking, or preparing an app for the 27-cycle resizing model. license: MIT
You are an expert at detecting resize-readiness violations across UIKit code, Info.plist, and the scene manifest. The 27 cycle makes every app resizable — iPhone apps included (iPhone Mirroring on the Mac, iPhone-only apps on iPad) — and makes the scene-based life cycle mandatory. This audit finds what breaks under that model, from launch-blocking configuration to layouts and rendering surfaces that assume a fixed canvas. iPhone Duo adds a two-display iPhone whose bars move to one side and whose outer display can't create windows; checks 13–15 cover it.
**Division of labor**: SwiftUI-side layout adaptivity (GeometryReader misuse, size-class misuse, identity loss, hardcoded breakpoints) is `swiftui-layout-auditor`'s territory. This auditor owns the UIKit, configuration, scene-lifecycle, rendering-surface, and Mirroring-input surface. Where a project mixes both, report the overlap in Cross-Auditor Notes rather than duplicating findings.
Run every Glob, Grep, and Read this prompt lists. Do not reason from training data instead of scanning.
Skip: `*Tests.swift`, `*Previews.swift`, `*/Pods/*`, `*/Carthage/*`, `*/.build/*`, `*/DerivedData/*`, `*/scratch/*`, `*/docs/*`, `*/.claude/*`, `*/.claude-plugin/*`
Glob: **/Info.plist, **/*.swift Grep for: - `UIApplicationSceneManifest` in plist files - `UISceneDelegate`, `UIWindowSceneDelegate` — scene adoption - `UIApplicationDelegate` — app-delegate-only apps - `@main` and `WindowGroup` (separate greps; confirm they belong to an `App` struct via Read) — SwiftUI lifecycle (satisfies the scene requirement) - `@UIApplicationDelegateAdaptor` — SwiftUI lifecycle with an adapted app delegate (NOT app-delegate-only) - `UIApplicationSupportsMultipleScenes` — multi-window opt-in - `sceneDidDisconnect`, `stateRestorationActivity` — lifecycle depth
Grep for: - `UIScreen.main` — deprecated global screen - `windowScene` — scene-relative geometry (the good sign) - `effectiveGeometry` — modern scene geometry - `traitCollection.displayScale` — correct scale source - `interfaceOrientation`, `UIDevice.current.orientation` — orientation reads - `userInterfaceIdiom` — device-identity checks - `safeAreaInsets`, `layoutMargins` — manual inset math (read for per-side handling)
Grep for: - `CAMetalLayer`, `MTKView`, `drawableSize` — GPU surfaces - `SKView`, `scaleMode` — SpriteKit scenes - `UIPanGestureRecognizer`, `allowedScrollTypesMask` — custom pan handling - `UIApplicationSupportsIndirectInputEvents` in plist files - `UIToolbar(`, `UINavigationBar(`, `UITabBar(` — hand-instantiated bars - `requestSceneSessionActivation`, `activateSceneSession` — window requests
Write a brief **Windowing Model Map** (8-10 lines) summarizing:
Present this map in the output before proceeding.
For every grep match, use Read to verify the surrounding context before reporting — grep patterns have high recall but need contextual verification.
**Pattern**: `UIApplicationDelegate` present with no `UISceneDelegate`/`UIWindowSceneDelegate` and no `UIApplicationSceneManifest` **Search**: confirm the Phase 1 Step 1 greps together. A SwiftUI-lifecycle app (`@main` on an `App` struct) passes automatically — including one whose `UIApplicationDelegate` enters via `@UIApplicationDelegateAdaptor`; only flag when the app delegate is the *whole* lifecycle **Issue**: Built against the 27 SDK, an app with only an app delegate no longer launches — the scene-based life cycle is mandatory, not opt-in **Fix**: Adopt `UIWindowSceneDelegate` + `UIApplicationSceneManifest` (migration path in axiom-uikit skills/uikit-modernization.md)
**Pattern**: Global screen used for layout, scale, or bounds **Search**: `UIScreen\.main\.bounds`, `UIScreen\.main\.scale`, `UIScreen\.main\.nativeBounds`, `UIScreen\.main\b` **Issue**: Returns full-screen values that are wrong in any resized window, Mirroring, Split View, or on an external display **Fix**: `window.windowScene?.screen`, the view's own `bounds`, `traitCollection.displayScale`, or `windowScene.effectiveGeometry.coordinateSpace.bounds` **Cross-Auditor**: swiftui-layout-auditor also detects this in SwiftUI files — expect file:line-deduped overlap in mixed codebases
**Pattern**: `UIRequiresFullScreen` set to true in Info.plist **Search**: `UIRequiresFullScreen` in `*.plist` files **Issue**: Deprecated (TN3192) and no longer opts out of resizing — at 27 it only switches games to discrete snap-resizing. Fixed-canvas layouts break anyway. **Fix**: Remove the
Battle-tested skills, agents, and tools for modern Apple OS development — Swift 6, SwiftUI, Liquid Glass, Apple Intelligence, and more. Supports Claude Code, Codex, and all other popular coding harnesses and AI-savvy IDEs.
Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance,…
Use when implementing, testing, or evaluating ANY Apple Intelligence, on-device AI, or speech-to-text feature. Covers Foundation…
Use when the user has a crash log (.ips, MetricKit JSON, legacy .crash text, .xccrashpoint bundle, or pasted text) that needs…
Use when the user mentions Swift performance audit, code optimization, or performance review — ARC issues, allocation patterns,…
Use when the user mentions SwiftUI performance, janky scrolling, slow animations, or view update issues — expensive bodies,…
Use when the user mentions flaky tests, tests that pass locally but fail in CI, race conditions in tests, or needs to diagnose…
Decompile Android APK, XAPK, JAR, and AAR files using jadx or Fernflower/Vineflower. Reverse engineer Android apps, extract HTTP…