ios-liquid-glass — скилл для Claude Code: справочник по Liquid Glass
Справочник по API Liquid Glass из iOS 26+: модификаторы glassEffect, контейнеры, морфинг-переходы и навигация. Пригодится, когда верстаешь стеклянные панели в SwiftUI.
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a claude-codeЧто делает ios-liquid-glass
Скилл отвечает на вопросы про систему Liquid Glass: как накладывать glassEffect, какие есть варианты (.regular, .clear, .identity), как собрать GlassEffectContainer и сделать переходы между элементами через glassEffectID и @Namespace. Внутри — примеры кода на SwiftUI: тонировка, интерактивное поведение, кастомные формы вроде .rect(cornerRadius: .containerConcentric).
Отдельные разделы — навигация и системные эффекты. Плавающий таб-бар, группировка кнопок в тулбаре через ToolbarSpacer, шторки с .navigationTransition(.zoom), эффекты SF Symbols и хаптики на UIKit. Есть таблица принципов Apple — иерархия, гармония, согласованность — и пометка, что это ориентир, а не жёсткое правило.
Ограничение, о котором стоит знать заранее: стекло не может сэмплить другое стекло. Если наложить эффект на контентную поверхность, а не на слой навигации, модель сэмплинга ломается — поэтому несколько элементов собирают в GlassEffectContainer. Скилл запускается в форк-контексте с агентом Explore, то есть не грузит основную сессию.
Какие задачи решает
- наложить стеклянный эффект на кнопку или панель в SwiftUI
- собрать несколько стеклянных элементов в один контейнер
- сделать морфинг-переход между кнопками через
glassEffectID - настроить плавающий таб-бар и группировку в тулбаре
- проверить, как стекло ведёт себя при Reduce Transparency
Примеры запросов агенту
- Покажи, как применить
glassEffectк кнопке с тонировкой и интерактивным поведением - Собери
GlassEffectContainerс морфинг-переходом между тремя кнопками - Как сделать шторку с
.navigationTransition(.zoom)из кнопки в тулбаре?
Как установить ios-liquid-glass
1Через Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a claude-code2Вручную: положить файлы
~/.claude/skills/ios-liquid-glass/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/ios-liquid-glass/
1Через Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a codex2Вручную: положить файлы
.agents/skills/ios-liquid-glass/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a cursor2Вручную: положить файлы
.cursor/skills/ios-liquid-glass/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Prisma-Labs-Dev/apple-skills ios-liquid-glass2Вручную: положить файлы
.github/skills/ios-liquid-glass/SKILL.md1Через Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a gemini-cli2Командой платформы
gemini skills install https://github.com/Prisma-Labs-Dev/apple-skills --path skills/ios-liquid-glassВручную: положить файлы
.devin/skills/ios-liquid-glass/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о ios-liquid-glass
Как установить ios-liquid-glass в Claude?
Выполни npx skills add Prisma-Labs-Dev/apple-skills --skill ios-liquid-glass -a claude-code. Скилл встанет в ~/.claude/skills/ios-liquid-glass/SKILL.md.
Что делает ios-liquid-glass?
Даёт справочник по API Liquid Glass для iOS 26+: модификаторы glassEffect, GlassEffectContainer, морфинг-переходы, навигационные паттерны и хаптики. Агент отвечает по этим примерам вместо того, чтобы угадывать синтаксис.
Почему стекло нельзя накладывать на контент?
Liquid Glass рассчитан на слой навигации и управления. На контентной поверхности его модель сэмплинга не работает, поэтому несколько стеклянных элементов собирают в GlassEffectContainer.
Исходный текст
SKILL.md · MIT
---
name: ios-liquid-glass
user-invocable: true
description: "API reference: Liquid Glass (iOS 26+). Query for glass effects, navigation patterns, GlassEffect modifiers, design principles."
context: fork
agent: Explore
---
# iOS Liquid Glass Reference
API reference for the Liquid Glass design system (iOS 26+): glass effects, containers, morphing transitions, and related system behaviors. This documents what the system provides — design direction is yours.
## When to Use
- Implementing glass materials, `glassEffect` modifiers, or `GlassEffectContainer`
- Navigation surfaces that use system glass (tabs, toolbars, sheets)
- Checking how glass adapts to accessibility settings
- Creating app icons with Icon Composer
## Apple's Stated Design Principles
Apple describes Liquid Glass with three principles (reference, not a mandate):
| Principle | Description |
|-----------|-------------|
| **Hierarchy** | Controls float above content. Glass frames content rather than obscuring it. |
| **Harmony** | Software design aligns with hardware — concentric corners, fluid gestures. |
| **Consistency** | Adapts across iPhone, iPad, Mac — same identity, contextual expression. |
One functional constraint worth knowing: glass is designed for the navigation/control layer. Applying it to content surfaces defeats its sampling model (see containers below).
## Liquid Glass Core API
### Basic Glass Effect
```swift
import SwiftUI
// Simple glass application
Text("Action")
.padding()
.glassEffect() // .regular variant, .capsule shape
// With explicit parameters
Button("Confirm") { }
.padding()
.glassEffect(.regular, in: RoundedRectangle(cornerRadius: 12), isEnabled: true)
```
### Glass Variants
| Variant | Use Case |
|---------|----------|
| `.regular` | Toolbars, nav bars, tab bars, standard controls |
| `.clear` | Floating controls over media (photos, maps, video) |
| `.identity` | Conditional disable: `glassEffect(isActive ? .regular : .identity)` |
### Glass Modifiers
```swift
// Semantic tinting
.glassEffect(.regular.tint(.accentColor))
// Interactive behaviors (scaling, shimmer, touch illumination)
.glassEffect(.regular.interactive())
// Combined
.glassEffect(.regular.tint(.blue).interactive())
```
### Custom Shapes
```swift
// Standard shapes
.glassEffect(.regular, in: .capsule)
.glassEffect(.regular, in: .circle)
.glassEffect(.regular, in: RoundedRectangle(cornerRadius: 16))
// Container-concentric (matches device/container corners)
.glassEffect(.regular, in: .rect(cornerRadius: .containerConcentric))
```
## GlassEffectContainer & Morphing
### Container Setup
Glass cannot sample other glass. Use containers for multiple glass elements:
```swift
GlassEffectContainer(spacing: 30) {
HStack(spacing: 20) {
ForEach(actions) { action in
Button(action.title, systemImage: action.icon) { }
.frame(width: 44, height: 44)
.glassEffect(.regular.interactive())
}
}
}
```
### Morphing Transitions
```swift
struct ExpandableActions: View {
@State private var isExpanded = false
@Namespace private var namespace
var body: some View {
GlassEffectContainer(spacing: 30) {
VStack(spacing: 30) {
if isExpanded {
ActionButton(icon: "rotate.right")
.glassEffectID("rotate", in: namespace)
}
HStack(spacing: 30) {
if isExpanded {
ActionButton(icon: "slider.horizontal.3")
.glassEffectID("adjust", in: namespace)
}
Button {
withAnimation(.bouncy) { isExpanded.toggle() }
} label: {
Image(systemName: isExpanded ? "xmark" : "plus")
.frame(width: 56, height: 56)
}
.glassEffect(.regular.tint(.accentColor).interactive())
.glassEffectID("toggle", in: namespace)
if isExpanded {
ActionButton(icon: "crop")
.glassEffectID("crop", in: namespace)
}
}
if isExpanded {
ActionButton(icon: "wand.and.stars")
.glassEffectID("enhance", in: namespace)
}
}
}
}
}
```
## Navigation Patterns
### Tab Bar (Floating)
```swift
TabView {
Tab("Home", systemImage: "house") {
HomeView()
}
Tab("Search", systemImage: "magnifyingglass") {
SearchView()
}
Tab("Profile", systemImage: "person") {
ProfileView()
}
}
// Tab bar now floats, reacts to background, collapses on scroll
```
### Toolbar with Grouping
```swift
.toolbar {
ToolbarItemGroup(placement: .topBarTrailing) {
Button("Edit", systemImage: "pencil") { }
Button("Share", systemImage: "square.and.arrow.up") { }
}
ToolbarSpacer(.flexible, placement: .topBarTrailing)
ToolbarItem(placement: .topBarTrailing) {
Button("Done", systemImage: "checkmark") { }
.tint(.accentColor)
}
}
```
### Sheets with Morphing
```swift
struct ContentView: View {
@State private var showSettings = false
@Namespace private var namespace
var body: some View {
NavigationStack {
ContentView()
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Button("Settings", systemImage: "gear") {
showSettings = true
}
.matchedTransitionSource(id: "settings", in: namespace)
}
}
.sheet(isPresented: $showSettings) {
SettingsView()
.navigationTransition(.zoom(sourceID: "settings", in: namespace))
.presentationDetents([.medium, .large])
}
}
}
}
```
## SF Symbols Effects
```swift
Image(systemName: "checkmark.circle")
.symbolEffect(.drawOn, value: isComplete)
Image(systemName: "heart.fill")
.symbolEffect(.bounce, value: isFavorite)
```
## Haptics API
```swift
import UIKit
// Impact feedback
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.impactOccurred()
// Selection feedback
let selection = UISelectionFeedbackGenerator()
selection.selectionChanged()
// Success/error
let notification = UINotificationFeedbackGenerator()
notification.notificationOccurred(.success)
```
## Accessibility Behaviors
### Automatic Glass Adaptations
Glass automatically adapts to:
- **Reduce Transparency**: More frosting
- **Increase Contrast**: Stark borders
- **Reduce Motion**: Tones down animation
### Manual Checks
```swift
@Environment(\.accessibilityReduceTransparency) var reduceTransparency
@Environment(\.accessibilityReduceMotion) var reduceMotion
var animation: Animation? {
reduceMotion ? nil : .bouncy
}
```
System expectations: minimum 44x44pt touch targets, accessibility labels, Dynamic Type support.
## Reference
For official Apple documentation links, WWDC session IDs, and API quick reference tables, see [reference.md](reference.md).
© Prisma-Labs-Dev · MIT · Prisma-Labs-Dev/apple-skills