axiom-accessibility
Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance,…
Use when the user mentions SwiftUI navigation issues, deep linking problems, state restoration bugs, or navigation architecture review.
Claude Code
$ npx -y skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav --agent claude-code
Codex
$ npx skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav -a codex -y
Cursor
$ npx skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav -a cursor -y
Gemini CLI
$ npx skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav -a gemini-cli -y
GitHub Copilot
$ npx skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav -a github-copilot -y
OpenCode
$ npx skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav -a opencode -y
Windsurf
$ npx skills add charleswiltgen/axiom --skill axiom-audit-swiftui-nav -a windsurf -y
name: axiom-audit-swiftui-nav description: Use when the user mentions SwiftUI navigation issues, deep linking problems, state restoration bugs, or navigation architecture review. license: MIT
You are an expert at detecting SwiftUI navigation issues — both known anti-patterns AND missing/incomplete navigation architecture that causes deep link failures, state loss, and broken user journeys.
**Scope**: Navigation architecture and correctness. For performance issues, use `swiftui-performance-analyzer`.
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: **/*.swift (excluding test/vendor paths) Grep for: - `NavigationStack` — stack-based navigation - `NavigationSplitView` — master-detail navigation - `TabView` — tab structure - `UINavigationController`, `UITabBarController` — UIKit navigation
Grep for: - `NavigationPath`, `@State.*path` — programmatic navigation state - `.navigationDestination(for:` — type-based routing - `NavigationLink` — static navigation links - `.sheet`, `.fullScreenCover` — modal presentations - `.onOpenURL` — deep link handlers - `@SceneStorage` — state preservation
Read 2-3 key navigation files to understand:
Write a brief **Navigation Architecture Map** (8-12 lines) summarizing:
Present this map in the output before proceeding.
Run all 10 existing detection patterns. For every grep match, use Read to verify the surrounding context before reporting — grep patterns have high recall but need contextual verification.
**Pattern**: NavigationStack without path binding **Search**: `NavigationStack\s*(\(\s*\))?\s*\{` (stacks opened without a `path:` argument) — compare against `@State.*NavigationPath` count **Issue**: Can't navigate programmatically or handle deep links **Fix**: Add `@State private var path = NavigationPath()` and bind with `NavigationStack(path: $path)`
**Pattern**: Missing deep link handling **Search**: `Glob: **/Info.plist` and `Glob: **/*.entitlements` for `CFBundleURLSchemes` and associated domains, then grep for the `.onOpenURL` handler **Issue**: Deep links fail silently, external navigation broken **Fix**: Implement `.onOpenURL` handler that routes to correct NavigationPath destination
**Pattern**: Missing `.navigationDestination(for:)` for path types **Search**: `.navigationDestination(for:` — count registrations vs types pushed onto path **Issue**: Navigation state lost when types aren't registered **Fix**: Add `.navigationDestination(for:)` for every type used in NavigationPath
**Pattern**: Wrong navigation container for the use case **Search**: `NavigationStack` in master-detail contexts (iPad apps); `NavigationSplitView` for linear flows **Issue**: Poor iPad/Mac experience, wasted screen space **Fix**: Use NavigationSplitView for master-detail, NavigationStack for linear flows
**Pattern**: Multiple `.navigationDestination` with same type **Search**: Multiple `.navigationDestination(for:` with the same type parameter **Issue**: Undefined behavior — wrong view shown, navigation breaks **Fix**: Use unique types or wrapper enum with associated values
**Pattern**: TabView nesting NavigationStack without an iPad sidebar intent **Search**: `TabView` containing `NavigationStack` and no `.tabViewStyle(.sidebarAdaptable)` **Issue**: Only a gap if the app intends a sidebar on iPad — a plain tab bar is a valid design **Fix**: If a sidebar is intended, add `.tabViewStyle(.sidebarAdaptable)`
**Pattern**: No persistence for navigation path **Search**: Absence of `@SceneStorage` for navigation path data **Issue**: User loses their place when app is terminated by system **Fix**: Store NavigationPath data in `@SceneStorage` with Codable encoding
**Pattern**: Using deprecated iOS 16+ APIs **Search**: `isActive:` or `tag:` — the deprecated initializer labels; Read each match and keep only the ones whose enclosing call is a `NavigationLink`. A line-oriented `NavigationLink.*` pattern misses calls that swift-format wraps across lines. **Issue**: Deprecated, will be removed in future iOS versions **Fix**: Migrate to NavigationStack + NavigationPath pattern
**Pattern**: Navigation logic scattered across views **Search**: Multiple files with `path.append(`, navigation logic in leaf views **
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…