Agent skill

Swiftui Liquid Glass

by FloWritesCode in FloWritesCode/fwc-swiftui-skills

Implement, review, and refactor SwiftUI features using the iOS 26+ Liquid Glass API.

MITAuto-check passedMobile

Install Swiftui Liquid Glass

skills CLI
$ npx skills add FloWritesCode/fwc-swiftui-skills --skill swiftui-liquid-glass -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install FloWritesCode/fwc-swiftui-skills swiftui-liquid-glass --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/FloWritesCode/fwc-swiftui-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/swiftui-liquid-glass .claude/skills/swiftui-liquid-glass && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
swiftui-liquid-glass
GitHub stars
407
Token cost
~2.7k tokens
SKILL.md length
825 words
Files
2
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Implement, review, and refactor SwiftUI features using the iOS 26+ Liquid Glass API.

  • Works in 2 steps: Review existing UI → Implement or refactor
  • Adopting Liquid Glass in new UI
  • SKILL.md covers Core rules, Decision tree, Workflow and Patterns, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Swiftui Liquid Glass is an agent skill from FloWritesCode/fwc-swiftui-skills. Implement, review, and refactor SwiftUI features using the iOS 26+ Liquid Glass API. Use when adopting Liquid Glass in new UI, converting existing surfaces to glass, reviewing glass usage for correctness, or fixing common Liquid Glass pitfalls (custom blur stacks, scroll views, button shapes, bottom bars, pre-enclosed symbols).

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `reference.md`).

It sits in Mobile, covering iOS development. It works with SwiftUI and iOS. The repository describes itself as: Coding Agent Skills for modern SwiftUI development. The licence is MIT.

When your agent uses it

  • Adopting Liquid Glass in new UI
  • Converting existing surfaces to glass
  • Reviewing glass usage for correctness
  • Fixing common Liquid Glass pitfalls (custom blur stacks

Example prompts

  • “/swiftui-liquid-glass”

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Review existing UI
  2. Implement or refactor

What it can do on your machine

Read from SKILL.md and the folder at commit 3a6c74b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are swift).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • developer.apple.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Swiftui Liquid Glass loads about 2.7k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 825 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from FloWritesCode/fwc-swiftui-skills at commit 3a6c74b, republished under its MIT licence (© FloWritesCode). 825 words, ~2,695 tokens.

Download SKILL.mdSave it as .claude/skills/swiftui-liquid-glass/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
swiftui-liquid-glass
description
Implement, review, and refactor SwiftUI features using the iOS 26+ Liquid Glass API. Use when adopting Liquid Glass in new UI, converting existing surfaces to glass, reviewing glass usage for correctness, or fixing common Liquid Glass pitfalls (custom blur stacks, scroll views, button shapes, bottom bars, pre-enclosed symbols).

SwiftUI Liquid Glass

Use native Liquid Glass APIs on iOS 26+. Do not recreate the effect with materials, blurs, or shadows.

Core rules

  1. Don't build custom Liquid Glass through adding backgrounds, outlines, blurs and shadows.
  2. Buttons — style: use .buttonStyle(.glass) for non-colored buttons, and .buttonStyle(.glassProminent) for tinted buttons. .glassProminent supports .tint(), but this can only be a color (not a gradient).
  3. Buttons — shape: use .buttonBorderShape() instead of applying a shape to the button label by hand.
  4. Buttons — padding: using this button setup adds roughly 13pt of padding inside the liquid glass shape; keep this in mind when adapting designs.
  5. Custom views: use .glassEffect(.regular, in: ...) to embed custom Views inside liquid glass containers.
  6. Grouped glass: use GlassEffectContainer when multiple liquid glass elements are next to each other. this View / Container adds a liquid merge effect when the elements grow / touch each other.
  7. Scrolling: avoid using liquid glass inside ScrollView and List (anything that scrolls).
  8. Bottom bars: when anchoring a liquid glass View to the bottom of the screen, prefer embedding it in .safeAreaBar(.bottom) instead of a VStack or .overlay(). safeAreaBar adds a subtle blur effect behind its content.
  9. Toolbar items — no glass: on iOS 26+, navigation bar and window toolbar items get a shared Liquid Glass background by default. For items that should not show the glass capsule (plain icons, custom labels, status text, logos), apply .sharedBackgroundVisibility(.hidden) on the ToolbarItem, not on the inner view.
  10. SF Symbols — no pre-enclosed symbols: do not use pre-enclosed SF Symbol variants (such as plus.circle, xmark.circle.fill, or trash.circle) inside Liquid Glass buttons or containers. The glass shape already acts as the container; pre-enclosed symbols create an awkward "double enclosure" (a circle inside a circle). Use base/unenclosed symbols (plus, xmark, trash) and let .buttonBorderShape() or the glass container define the enclosing shape.

Decision tree

Need a button?
├─ Neutral / secondary → .buttonStyle(.glass)
└─ Tinted / primary    → .buttonStyle(.glassProminent).tint(someColor)

Icon in a glass button / surface?
└─ Plain unenclosed symbol (e.g. "plus", not "plus.circle") — glass provides enclosure

Need a custom non-button surface (chip, badge, card)?
└─ .glassEffect(.regular, in: shape) on the view content

Multiple glass elements nearby?
└─ Wrap in GlassEffectContainer(spacing: ...) { ... }

Fixed bottom toolbar / action bar?
└─ .safeAreaBar(.bottom) { ... }  — not VStack + overlay

Toolbar item without glass background?
└─ ToolbarItem { ... }.sharedBackgroundVisibility(.hidden)

Inside ScrollView, List, or Form rows?
└─ Do not use Liquid Glass — use solid/material fallback

Workflow

1) Review existing UI
  • Flag custom blur/material stacks masquerading as glass.
  • Check buttons use .glass / .glassProminent, not hand-built capsules.
  • Confirm .buttonBorderShape() is used instead of clipping the label.
  • Verify grouped elements sit in GlassEffectContainer.
  • Flag glass inside scrollable containers.
  • Check bottom-anchored bars use .safeAreaBar(.bottom).
  • Check toolbar items that should appear without glass use .sharedBackgroundVisibility(.hidden) on the ToolbarItem.
  • Flag pre-enclosed SF Symbols (e.g. circle/square variants) inside glass buttons or surfaces.
  • Gate with #available(iOS 26, *) and provide fallbacks.
2) Implement or refactor
  1. Pick the right primitive (button style vs glassEffect vs safeAreaBar).
  2. Apply layout and typography first; add glass modifiers last.
  3. Wrap adjacent glass elements in GlassEffectContainer.
  4. Account for ~13pt internal button padding when matching designs.
  5. Use unenclosed SF Symbols so the glass shape provides the enclosing geometry.
  6. Add iOS 26 availability checks and pre-26 fallbacks.

Patterns

Glass buttons
swift
// Secondary / neutral
Button("Cancel") { dismiss() }
    .buttonStyle(.glass)
    .buttonBorderShape(.capsule)

// Primary / tinted — color only, not gradient
Button("Save") { save() }
    .buttonStyle(.glassProminent)
    .tint(.blue)
    .buttonBorderShape(.roundedRectangle(radius: 12))

Do not clip the label yourself:

swift
// ❌ Wrong — shape on label, not the glass button
Button { action() } label: {
    Text("Save")
        .padding()
        .background(.ultraThinMaterial, in: Capsule())
}

// ✅ Right — native glass handles shape and padding
Button("Save") { action() }
    .buttonStyle(.glassProminent)
    .buttonBorderShape(.capsule)

Do not use pre-enclosed SF Symbols inside glass buttons:

swift
// ❌ Wrong — pre-enclosed symbol creates redundant double enclosure
Button { add() } label: {
    Image(systemName: "plus.circle.fill")
}
.buttonStyle(.glass)
.buttonBorderShape(.circle)

// ✅ Right — plain symbol, glass shape provides the enclosure
Button { add() } label: {
    Image(systemName: "plus")
}
.buttonStyle(.glass)
.buttonBorderShape(.circle)
Custom glass surfaces
swift
Label("3 items", systemImage: "tray")
    .padding(.horizontal, 16)
    .padding(.vertical, 10)
    .glassEffect(.regular, in: .capsule)

Add .interactive() when the surface responds to touch:

swift
Text("Tap me")
    .padding()
    .glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))
Grouped glass (merge effect)
swift
GlassEffectContainer(spacing: 24) {
    HStack(spacing: 24) {
        ToolButton(icon: "pencil")
        ToolButton(icon: "eraser")
        ToolButton(icon: "lasso")
    }
}

private struct ToolButton: View {
    let icon: String
    var body: some View {
        Image(systemName: icon)
            .frame(width: 56, height: 56)
            .font(.title2)
            .glassEffect(.regular, in: .circle)
    }
}

Tune spacing to control how close elements must be before the liquid merge kicks in.

Show full SKILL.md (330 more words)Show less
Bottom action bar
swift
ContentView()
    .safeAreaBar(.bottom) {
        HStack {
            Button("Share") { share() }
                .buttonStyle(.glass)
            Button("Done") { done() }
                .buttonStyle(.glassProminent)
        }
    }

Prefer this over pinning with VStack { Spacer(); ... } or .overlay(alignment: .bottom).

Toolbar items without glass

On iOS 26+, toolbar items in the same logical grouping share a Liquid Glass background. Hide it when the item should look bare:

swift
.toolbar {
    ToolbarItem(placement: .principal) {
        Text("Draft")
            .font(.headline)
    }
    .sharedBackgroundVisibility(.hidden)

    ToolbarItem(placement: .topBarTrailing) {
        Button { add() } label: {
            Image(systemName: "plus")
        }
    }
    .sharedBackgroundVisibility(.hidden)

    ToolbarItem(placement: .topBarTrailing) {
        Button("Save") { save() }
            .buttonStyle(.glassProminent)
    }
}

Apply .sharedBackgroundVisibility(.hidden) on the ToolbarItem, not on the Button or label inside. Hiding the effect places the item in its own grouping, which can change spacing relative to glass-backed neighbors.

Do not put the modifier on the inner view:

swift
// ❌ Wrong — modifier on Button, glass background remains
ToolbarItem(placement: .topBarTrailing) {
    Button { add() } label: {
        Image(systemName: "plus")
    }
    .sharedBackgroundVisibility(.hidden)
}

// ✅ Right — modifier on ToolbarItem
ToolbarItem(placement: .topBarTrailing) {
    Button { add() } label: {
        Image(systemName: "plus")
    }
}
.sharedBackgroundVisibility(.hidden)
Availability fallback
swift
if #available(iOS 26, *) {
    content.glassEffect(.regular, in: .rect(cornerRadius: 16))
} else {
    content.background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))
}

Anti-patterns

Anti-patternWhy it failsDo instead
.background(.ultraThinMaterial) + blur + stroke + shadowNot Liquid Glass; wrong optics and no merge/morph.glassEffect(...) or button styles
Gradient .tint() on .glassProminentAPI accepts color onlySolid Color tint, or custom label without glassProminent tint
Glass on List/ScrollView rowsScroll + glass = visual glitches, perf costOpaque/material rows; glass only on fixed chrome
Shape applied to button labelMisses native padding (~13pt) and border rendering.buttonBorderShape()
Bottom bar via .overlayNo system blur bar treatment.safeAreaBar(.bottom)
Multiple glass views without containerNo merge effect, worse renderingGlassEffectContainer
Glass capsule on toolbar items that should be bareiOS 26 adds shared glass to toolbar groupings by default.sharedBackgroundVisibility(.hidden) on the ToolbarItem
.sharedBackgroundVisibility on inner viewDoes not remove toolbar glass backgroundApply on ToolbarItem (or other ToolbarContent)
Pre-enclosed SF Symbols in glass buttons (plus.circle, xmark.circle.fill)Redundant double enclosure ("circle in circle"); clashes with glass shapeUse unenclosed symbol (plus, xmark) and let .buttonBorderShape provide the container

Review checklist

  • No hand-rolled blur/material glass imitations
  • Buttons use .glass or .glassProminent with .buttonBorderShape()
  • Design spacing accounts for ~13pt internal button padding
  • Custom surfaces use .glassEffect(.regular, in: ...)
  • Adjacent glass wrapped in GlassEffectContainer
  • No glass inside scroll views
  • Bottom chrome uses .safeAreaBar(.bottom)
  • Toolbar items without glass use .sharedBackgroundVisibility(.hidden) on ToolbarItem
  • No pre-enclosed SF Symbols in glass buttons (e.g. "plus" instead of "plus.circle")
  • #available(iOS 26, *) with fallback on older OS

Additional resources

© FloWritesCode, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/swiftui-liquid-glass of FloWritesCode/fwc-swiftui-skills.

  • SKILL.md
  • reference.md

Open the folder on GitHubat commit 3a6c74b

Compare with similar skills

Swiftui Liquid Glass next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Swiftui Liquid Glass compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Swiftui Liquid Glass this skillFloWritesCode/fwc-swiftui-skills407—~2.7kAutomated safety check: PassMIT
Update Swiftui APIsAvdLee/SwiftUI-Agent-Skill3.7k—~1.2kAutomated safety check: PassMIT
Swiftui Liquid Glassharperreed/dotfiles3348 repos~941Automated safety check: PassNone
Swiftui Expert Skillomarshahine/HomeClaw1754 repos~2.8kAutomated safety check: PassMIT
Hig Project Contextraintree-technology/hig-doctor1435 repos~1.2kAutomated safety check: PassMIT
Liquid Glass DesignAstraFoundry/KumoApp2915 repos~2.3kAutomated safety check: PassAGPL-3.0

Similar skills

  • Update Swiftui APIs

    AvdLee/SwiftUI-Agent-Skill

    Scan Apple's SwiftUI documentation for deprecated APIs and update the SwiftUI Expert Skill with modern replacements.

    3.7k GitHub stars~1.2k tokensUpdated 4 days ago
    MobileAuto-check passed
  • Swiftui Liquid Glass

    harperreed/dotfiles

    Implement, review, or improve SwiftUI features using the iOS 26+ Liquid Glass API.

    334 GitHub starsUsed in 8 repos~941 tokens
    MobileAuto-check passed
  • Swiftui Expert Skill

    omarshahine/HomeClaw

    A skill your agent uses when writing, reviewing, or refactoring SwiftUI code for iOS or macOS, including state management, view composition, performance, Liquid Glass adoption, or Instruments .trace…

    175 GitHub starsUsed in 4 repos~2.8k tokens
    MobileAuto-check passed
  • Hig Project Context

    raintree-technology/hig-doctor

    Create or update a shared Apple design context document that other HIG skills use to tailor guidance.

    143 GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • Liquid Glass Design

    AstraFoundry/KumoApp

    iOS 26 Liquid Glass design system — dynamic glass material with blur, reflection, and interactive morphing for SwiftUI, UIKit, and WidgetKit.

    291 GitHub starsUsed in 5 repos~2.3k tokens
    MobileAuto-check passed
  • Live-Device iOS QA

    garrytan/gstack

    Tests a SwiftUI app on a real iPhone connected by USB, reading the Swift source and then looping through screenshot, analysis and action to find bugs.

    136k GitHub stars~11k tokensUpdated yesterday
    MobileAuto-check: notes

More from FloWritesCode/fwc-swiftui-skills

  • Swiftui Iphone Duo

    FloWritesCode/fwc-swiftui-skills

    Adapts and reviews SwiftUI apps for iPhone Duo (Xcode 27.1 / iOS 27.1 SDK) and continuously changing window sizes.

    407 GitHub stars~3.9k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Swiftui Liquid Glass

What does Swiftui Liquid Glass do?

Implement, review, and refactor SwiftUI features using the iOS 26+ Liquid Glass API. Swiftui Liquid Glass is an agent skill from FloWritesCode/fwc-swiftui-skills. Implement, review, and refactor SwiftUI features using the iOS 26+ Liquid Glass API.

When should I use Swiftui Liquid Glass?

Swiftui Liquid Glass fits situations like: adopting Liquid Glass in new UI; converting existing surfaces to glass; reviewing glass usage for correctness; fixing common Liquid Glass pitfalls (custom blur stacks.

How do I install Swiftui Liquid Glass in Claude Code?

Run `npx skills add FloWritesCode/fwc-swiftui-skills --skill swiftui-liquid-glass -a claude-code`. Or copy the skill folder (skills/swiftui-liquid-glass in FloWritesCode/fwc-swiftui-skills) into .claude/skills/swiftui-liquid-glass in your project. Claude Code loads it when a task matches its description.

How do I install Swiftui Liquid Glass in Codex?

Run `npx skills add FloWritesCode/fwc-swiftui-skills --skill swiftui-liquid-glass -a codex`. Or copy the skill folder (skills/swiftui-liquid-glass in FloWritesCode/fwc-swiftui-skills) into .agents/skills/swiftui-liquid-glass in your project. Codex loads it when a task matches its description.

Can I use Swiftui Liquid Glass in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FloWritesCode/fwc-swiftui-skills --skill swiftui-liquid-glass -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/swiftui-liquid-glass, .gemini/skills/swiftui-liquid-glass, .github/skills/swiftui-liquid-glass and .opencode/skills/swiftui-liquid-glass in your project.

What does Swiftui Liquid Glass need to run?

SKILL.md names no scripts, command-line tools or credentials: Swiftui Liquid Glass is instructions for the agent only.

Does Swiftui Liquid Glass access the network?

SKILL.md names 1 domain. As links in the text: developer.apple.com. This is read from the text; nothing was executed.

Is Swiftui Liquid Glass safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Swiftui Liquid Glass use?

Swiftui Liquid Glass is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Swiftui Liquid Glass use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Swiftui Liquid Glass?

Skills that share tags, products or a category with Swiftui Liquid Glass: Update Swiftui APIs (AvdLee/SwiftUI-Agent-Skill, 3.7k stars), Swiftui Liquid Glass (harperreed/dotfiles, 334 stars), Swiftui Expert Skill (omarshahine/HomeClaw, 175 stars) and Hig Project Context (raintree-technology/hig-doctor, 143 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Swiftui Liquid Glass?

FloWritesCode (a GitHub user) maintains it in FloWritesCode/fwc-swiftui-skills, which has 407 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.

Source: FloWritesCode/fwc-swiftui-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.