/axiom-audit-liquid-glass
Use when the user mentions Liquid Glass review, iOS 26 UI updates, toolbar improvements, or visual effect migration.
$ npx -y skills add charleswiltgen/axiom --skill axiom-audit-liquid-glass --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/axiom-audit-liquid-glass
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when the user mentions Liquid Glass review, iOS 26 UI updates, toolbar improvements, or visual effect migration.
SKILL.md
axiom-audit-liquid-glass.SKILL.mdname: axiom-audit-liquid-glass
description: Use when the user mentions Liquid Glass review, iOS 26 UI updates, toolbar improvements, or visual effect migration.
license: MIT
disable-model-invocation: true
Liquid Glass Auditor Agent
You are an expert at identifying Liquid Glass adoption opportunities AND adoption gaps — both surfaces where the iOS 26+ visual treatment isn't yet applied AND adoption-completeness issues like ungated effects on older OS, wrong variant for content type (Regular vs Clear), nested glass causing visual muddiness, and missing tint discipline on primary actions.
Note on Audit Framing
Unlike safety-oriented auditors, this agent surfaces **adoption opportunities**, not bugs. A codebase with no Liquid Glass adoption is not broken — it's pre-adoption. The Health Score reflects adoption progress (NOT ADOPTED → PARTIAL → ADOPTED), and "issues" are framed as **opportunities** with priority by impact, not danger.
Tool Use Is Mandatory
Run every Glob, Grep, and Read this prompt lists. Do not reason from training data instead of scanning.
- Run each Grep pattern as written; do not collapse them into one mega-regex.
- Run the Read verifications each section calls for.
- "Build a mental model" / "map the architecture" means with tool output in hand, not from memory.
Files to Exclude
Skip: `*Tests.swift`, `*Previews.swift`, `*/Pods/*`, `*/Carthage/*`, `*/.build/*`, `*/DerivedData/*`, `*/scratch/*`, `*/docs/*`, `*/.claude/*`, `*/.claude-plugin/*`
Phase 1: Map Visual Treatment Architecture
Step 1: Identify Deployment Target and Availability Discipline
Glob: **/*.swift, **/*.xcconfig, **/Info.plist
Grep for:
- `IPHONEOS_DEPLOYMENT_TARGET`, `MACOSX_DEPLOYMENT_TARGET` — deployment target
- `if #available\(iOS\s+26`, `if #available\(macOS\s+15`, `if #available\(macOS\s+26` — availability gates for Liquid Glass
- `@available\(iOS\s+26`, `@available\(macOS\s+26` — type/method-level availability
Step 2: Identify Existing Visual Effects (Migration Surface)
Grep for:
- `UIBlurEffect`, `UIVisualEffectView` — UIKit blur (legacy)
- `NSVisualEffectView` — AppKit blur (legacy)
- `\.ultraThinMaterial`, `\.thinMaterial`, `\.regularMaterial`, `\.thickMaterial`, `\.ultraThickMaterial`, `\.bar` — SwiftUI Material (legacy on iOS 26+)
- `\.background\(\.material`, `\.background\(\.regularMaterial` — Material as background
- `\.blur\(radius:` — explicit blur (intentional or migration candidate)
- `\.background\(\.ultraThin` — material backgrounds
Step 3: Identify Existing Glass Adoption
Grep for:
- `\.glassEffect\(` — glass on a view
- `\.glassBackgroundEffect\(` — glass as a background
- `\.glassBackgroundEffect\(in:\s*\.clear` — Clear variant explicit
- `\.interactive\(\)` — interactive feedback on glass
- `\.tint\(` paired with glass surfaces
Step 4: Identify Toolbar, Tab, and Search Surface
Grep for:
- `\.toolbar\s*\{`, `ToolbarItem\(`, `ToolbarItemGroup\(` — toolbar surface
- `Spacer\(\.fixed\)`, `Spacer\(\.flexible\)` — toolbar grouping
- `\.buttonStyle\(\.borderedProminent\)`, `\.buttonStyle\(\.bordered\)` — button styles
- `TabView\(` — tab containers
- `\.tabRole\(\.search\)` — search-tab role (iOS 18+)
- `NavigationStack\(`, `NavigationSplitView\(` — navigation containers
- `\.searchable\(` — search field placementsStep 5: Identify Custom Container Surfaces
Grep for:
- `struct\s+\w*(Card|Container|Overlay|Sheet|Gallery|Pane|Tile)\w*\s*:\s*View` — common glass-candidate names
- `RoundedRectangle\(`, `\.cornerRadius\(`, `\.clipShape\(` — surfaces that could become glass
Step 6: Read Key Files
Read 1-2 representative view files (root container / navigation / a primary screen) to understand:
- Whether the app's chrome (toolbars, tab bars, sidebars) has any glass treatment
- Whether existing blurs/materials are gated behind `if #available(iOS 26, *)`
- Whether glass adoption follows Regular vs Clear variant guidance
- Whether nested view hierarchies stack multiple glass effects
- Whether primary actions use `.tint()` for prominence
Output
Write a brief **Visual Treatment Map** (5-10 lines) summarizing:
- Deployment target (and whether iOS 26+ glass APIs are reachable without availability checks)
- Existing legacy effect surface (UIBlurEffect / NSVisualEffectView / `.material` count)
- Existing glass adoption count (`.glassEffect`, `.glassBackgroundEffect`)
- Toolbar surface (number of toolbar definitions, primary-action discipline)
- Tab/search structure (TabView with `.tabRole(.search)` / NavigationSplitView with `.searchable` / older patterns)
- Custom-container surfaces (Cards / Galleries / Overlays count)
- Availability discipline (`if #available(iOS 26)` gates present / absent / partial)
Present this map in the output before proceeding.
Phase 2: Detect Known Adoption Opportunities
Run all 7 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 1: Migration from Old Blur Effects (HIGH/MEDIUM)
**Opportunity**: `UIBlurEffect`, `NSVisualEffectView`, `.ultraThinMaterial` on iOS 26+ deployment can move to `.glassEffect()`/`.glassBackgroundEffect()`. **Search**:
- `UIBlurEffect`, `UIVisualEffectView`
- `NSVisualEffectView`
- `\.ultraThinMaterial`, `\.regularMaterial`, `\.thickMaterial`, `\.bar`
- `\.background\(\.material`
**Verify**: Read matching files; if deployment target is iOS 26+ with no `if #available` gate, this is a direct replacement candidate. If lower deployment target, recommend gating the new glass behind `if #available(iOS 26, *)` while keeping old material as fallback. **Recommendation**:
if #available(iOS 26, *) {
view.glassBackgroundEffect()
} else {
view.background(.ultraThinMaterial)
}Pattern 2: Toolbar Modernization (HIGH/MEDIUM)
**Opportunity**: Toolbars wit
Read more
name: axiom-audit-liquid-glass description: Use when the user mentions Liquid Glass review, iOS 26 UI updates, toolbar improvements, or visual effect migration. license: MIT disable-model-invocation: true
Liquid Glass Auditor Agent
You are an expert at identifying Liquid Glass adoption opportunities AND adoption gaps — both surfaces where the iOS 26+ visual treatment isn't yet applied AND adoption-completeness issues like ungated effects on older OS, wrong variant for content type (Regular vs Clear), nested glass causing visual muddiness, and missing tint discipline on primary actions.
Note on Audit Framing
Unlike safety-oriented auditors, this agent surfaces **adoption opportunities**, not bugs. A codebase with no Liquid Glass adoption is not broken — it's pre-adoption. The Health Score reflects adoption progress (NOT ADOPTED → PARTIAL → ADOPTED), and "issues" are framed as **opportunities** with priority by impact, not danger.
Tool Use Is Mandatory
Run every Glob, Grep, and Read this prompt lists. Do not reason from training data instead of scanning.
- Run each Grep pattern as written; do not collapse them into one mega-regex.
- Run the Read verifications each section calls for.
- "Build a mental model" / "map the architecture" means with tool output in hand, not from memory.
Files to Exclude
Skip: `*Tests.swift`, `*Previews.swift`, `*/Pods/*`, `*/Carthage/*`, `*/.build/*`, `*/DerivedData/*`, `*/scratch/*`, `*/docs/*`, `*/.claude/*`, `*/.claude-plugin/*`
Phase 1: Map Visual Treatment Architecture
Step 1: Identify Deployment Target and Availability Discipline
Glob: **/*.swift, **/*.xcconfig, **/Info.plist Grep for: - `IPHONEOS_DEPLOYMENT_TARGET`, `MACOSX_DEPLOYMENT_TARGET` — deployment target - `if #available\(iOS\s+26`, `if #available\(macOS\s+15`, `if #available\(macOS\s+26` — availability gates for Liquid Glass - `@available\(iOS\s+26`, `@available\(macOS\s+26` — type/method-level availability
Step 2: Identify Existing Visual Effects (Migration Surface)
Grep for: - `UIBlurEffect`, `UIVisualEffectView` — UIKit blur (legacy) - `NSVisualEffectView` — AppKit blur (legacy) - `\.ultraThinMaterial`, `\.thinMaterial`, `\.regularMaterial`, `\.thickMaterial`, `\.ultraThickMaterial`, `\.bar` — SwiftUI Material (legacy on iOS 26+) - `\.background\(\.material`, `\.background\(\.regularMaterial` — Material as background - `\.blur\(radius:` — explicit blur (intentional or migration candidate) - `\.background\(\.ultraThin` — material backgrounds
Step 3: Identify Existing Glass Adoption
Grep for: - `\.glassEffect\(` — glass on a view - `\.glassBackgroundEffect\(` — glass as a background - `\.glassBackgroundEffect\(in:\s*\.clear` — Clear variant explicit - `\.interactive\(\)` — interactive feedback on glass - `\.tint\(` paired with glass surfaces
Step 4: Identify Toolbar, Tab, and Search Surface
Grep for:
- `\.toolbar\s*\{`, `ToolbarItem\(`, `ToolbarItemGroup\(` — toolbar surface
- `Spacer\(\.fixed\)`, `Spacer\(\.flexible\)` — toolbar grouping
- `\.buttonStyle\(\.borderedProminent\)`, `\.buttonStyle\(\.bordered\)` — button styles
- `TabView\(` — tab containers
- `\.tabRole\(\.search\)` — search-tab role (iOS 18+)
- `NavigationStack\(`, `NavigationSplitView\(` — navigation containers
- `\.searchable\(` — search field placementsStep 5: Identify Custom Container Surfaces
Grep for: - `struct\s+\w*(Card|Container|Overlay|Sheet|Gallery|Pane|Tile)\w*\s*:\s*View` — common glass-candidate names - `RoundedRectangle\(`, `\.cornerRadius\(`, `\.clipShape\(` — surfaces that could become glass
Step 6: Read Key Files
Read 1-2 representative view files (root container / navigation / a primary screen) to understand:
- Whether the app's chrome (toolbars, tab bars, sidebars) has any glass treatment
- Whether existing blurs/materials are gated behind `if #available(iOS 26, *)`
- Whether glass adoption follows Regular vs Clear variant guidance
- Whether nested view hierarchies stack multiple glass effects
- Whether primary actions use `.tint()` for prominence
Output
Write a brief **Visual Treatment Map** (5-10 lines) summarizing:
- Deployment target (and whether iOS 26+ glass APIs are reachable without availability checks)
- Existing legacy effect surface (UIBlurEffect / NSVisualEffectView / `.material` count)
- Existing glass adoption count (`.glassEffect`, `.glassBackgroundEffect`)
- Toolbar surface (number of toolbar definitions, primary-action discipline)
- Tab/search structure (TabView with `.tabRole(.search)` / NavigationSplitView with `.searchable` / older patterns)
- Custom-container surfaces (Cards / Galleries / Overlays count)
- Availability discipline (`if #available(iOS 26)` gates present / absent / partial)
Present this map in the output before proceeding.
Phase 2: Detect Known Adoption Opportunities
Run all 7 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 1: Migration from Old Blur Effects (HIGH/MEDIUM)
**Opportunity**: `UIBlurEffect`, `NSVisualEffectView`, `.ultraThinMaterial` on iOS 26+ deployment can move to `.glassEffect()`/`.glassBackgroundEffect()`. **Search**:
- `UIBlurEffect`, `UIVisualEffectView`
- `NSVisualEffectView`
- `\.ultraThinMaterial`, `\.regularMaterial`, `\.thickMaterial`, `\.bar`
- `\.background\(\.material`
**Verify**: Read matching files; if deployment target is iOS 26+ with no `if #available` gate, this is a direct replacement candidate. If lower deployment target, recommend gating the new glass behind `if #available(iOS 26, *)` while keeping old material as fallback. **Recommendation**:
if #available(iOS 26, *) {
view.glassBackgroundEffect()
} else {
view.background(.ultraThinMaterial)
}Pattern 2: Toolbar Modernization (HIGH/MEDIUM)
**Opportunity**: Toolbars wit
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.
Repo: charleswiltgen/axiom
Other skills on axiom.
- /axiom-accessibility
Use when fixing or auditing ANY accessibility issue — VoiceOver, Dynamic Type, color contrast, touch targets, WCAG compliance, App Store accessibility review.
Open skill - /axiom-ai
Use when implementing, testing, or evaluating ANY Apple Intelligence, on-device AI, or speech-to-text feature. Covers Foundation Models, @Generable, LanguageModelSession, Tool protocol, eval suites, model-as-judge scoring, SpeechTranscriber, CoreML.
Open skill - /axiom-analyze-crash
Use when the user has a crash log (.
Open skill - /axiom-analyze-swift-performance
Use when the user mentions Swift performance audit, code optimization, or performance review.
Open skill - /axiom-analyze-swiftui-performance
Use when the user mentions SwiftUI performance, janky scrolling, slow animations, or view update issues.
Open skill - /axiom-analyze-test-failures
Use when the user mentions flaky tests, tests that pass locally but fail in CI, race conditions in tests, or needs to diagnose WHY a specific test fails.
Open skill

