Install
$ agentstack add skill-yordilorenzo-liquid-glass-skills-liquid-glass-motion ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Liquid Glass — motion, animation, and shaders
Companion to the liquid-glass skill (~/.claude/skills/liquid-glass/). Same tag system: [verified] / [apple] / [multi] / [single] / [version-pinned] — see that skill's SKILL.md. Composed 2026-08 and verified against Apple documentation and SDK interfaces.
Operating rules
- Before generating code, ALWAYS read the availability firewall in the companion
liquid-glass skill (installed alongside this one): references/availability-and-sdk27.md. Motion code trips the same SDK-27 breakages (.if ban, @ContentBuilder, renames).
- Load references on demand via the router — one topic, one file.
- The motion model: Liquid Glass and its motion were designed together. Glass does not
fade — it materializes by modulating lensing; when glass grows, its material gets thicker (deeper shadow, stronger lensing). Size change is a material change, which is why morphs must be the system animation, never hand-faked.
- Verify motion claims against
references/before repeating them — circulating write-ups
get several of these facts wrong; the corrected facts live in these files.
- Profiling evidence beats reasoning: record an Instruments trace with
xctracebefore
optimizing, and never trust the iOS Simulator for the SwiftUI instrument — see references/performance-and-instrumentation.md.
Hard rules (the short list)
- Never animate glass with
.opacity/ fades — useglassEffectTransition
(.materialize is the sanctioned fade-like option). [multi]
- Morphing silently no-ops unless ALL four hold: same
GlassEffectContainer;
glassEffectID per element in one shared @Namespace; the change is view insertion/removal (not a value change); the state change is inside withAnimation. Plus geometry: nearest edges within the container's spacing. [multi]
- The interactive "squish" is one boolean —
.interactive(). No public spring/damping/
stiffness knobs exist; do not promise tunable jelly. [multi]
- Gate every glass animation on
accessibilityReduceMotion— the default morph is a
kinetic effect, and reduce-motion users have experienced it as flickering. The system does NOT gate your withAnimation for you. [multi]
- One animation source per property — never mix implicit
.animation,withAnimation,
and scroll-driven updates on the same property. Implicit later in the view tree silently wins over explicit. [multi]
- The animation context must live OUTSIDE a conditional — an
.animation()inside the
if is destroyed with the view and removal never animates. [multi]
- Prefer renderer-side motion for scroll:
scrollTransition/visualEffect(in:)over
observable scroll-offset plumbing. [apple]
- Animate transforms first (scale/offset/rotation), frames second, identity changes last.
[multi]
Topic router
| Topic | Reference | |---|---| | Springs, curves, precedence, Transaction, @Animatable, CA bridge | references/animation-fundamentals.md | | Glass morphing, glassEffectID, union, glassEffectTransition | references/morphing.md | | Navigation zoom, custom Transition, sheets, touch-vs-trackpad | references/transitions-and-navigation.md | | Scroll-driven motion, scrollTransition, visualEffect, chrome interplay | references/scroll-driven.md | | PhaseAnimator, KeyframeAnimator, symbol effects | references/phase-and-keyframe.md | | Reduce Motion gating, replacement tables | references/reduce-motion.md | | Metal shaders with/under/instead-of glass | references/metal-and-glass.md | | Performance model, xctrace profiling | references/performance-and-instrumentation.md | | Static glass, availability, toolbars, platform APIs, a11y of the material | liquid-glass skill | | Choosing the actual spring/damping/duration values | apple-motion-feel skill |
Scripts
scripts/record_trace.py and scripts/analyze_trace.py (+ instruments_parser/) — vendored from Antoine van der Lee's SwiftUI-Agent-Skill (MIT; licence ships beside them as scripts/LICENSE-AvdLee-SwiftUI-Agent-Skill). Record and parse Instruments traces (Time Profiler, Hangs, Animation Hitches, SwiftUI lanes) into JSON/markdown. Usage and interpretation: references/performance-and-instrumentation.md.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: YordiLorenzo
- Source: YordiLorenzo/liquid-glass-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.