Agent skill

Swiftui Expert Skill

by ilyas-hallak in ilyas-hallak/romm-ios-app

Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption.

MITAuto-check passedMobile

Install Swiftui Expert Skill

skills CLI
$ npx skills add ilyas-hallak/romm-ios-app --skill swiftui-expert-skill -a claude-code

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

GitHub CLI
$ gh skill install ilyas-hallak/romm-ios-app swiftui-expert-skill --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/ilyas-hallak/romm-ios-app.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/swiftui-expert-skill .claude/skills/swiftui-expert-skill && 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-expert-skill
GitHub stars
173
Used in
1 other repo
Token cost
~2.9k tokens
SKILL.md length
1,156 words
Files
13 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption.

  • Works in 3 steps: Review existing SwiftUI code → Improve existing SwiftUI code → Implement new SwiftUI feature
  • Building new SwiftUI features
  • SKILL.md covers Overview, Workflow Decision Tree, Core Guidelines and Quick Reference, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Swiftui Expert Skill is an agent skill from ilyas-hallak/romm-ios-app. Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `references/animation-advanced.md`, `references/animation-basics.md` and `references/animation-transitions.md`).

It sits in Mobile, covering iOS development and State management. It works with SwiftUI and iOS. The repository describes itself as: Native iOS client for RomM: browse, play and sync your self-hosted retro library. The licence is MIT.

When your agent uses it

  • Building new SwiftUI features
  • Refactoring existing views
  • Reviewing code quality
  • Adopting modern SwiftUI patterns

Example prompts

  • “/swiftui-expert-skill”

Workflow steps

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

  1. Review existing SwiftUI code
  2. Improve existing SwiftUI code
  3. Implement new SwiftUI feature

What it can do on your machine

Read from SKILL.md and the folder at commit 904e8ca. 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

    No URLs in SKILL.md.

    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 Expert Skill loads about 2.9k tokens when it runs, and up to ~27k if it reads all its reference files. Until then it costs about 75 tokens; SKILL.md has 1,156 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~75
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~27k

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 ilyas-hallak/romm-ios-app at commit 904e8ca, republished under its MIT licence (© ilyas-hallak). 1,156 words, ~2,892 tokens.

Download SKILL.mdSave it as .claude/skills/swiftui-expert-skill/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
swiftui-expert-skill
description
Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns.

SwiftUI Expert Skill

Overview

Use this skill to build, review, or improve SwiftUI features with correct state management, optimal view composition, and iOS 26+ Liquid Glass styling. Prioritize native APIs, Apple design guidance, and performance-conscious patterns. This skill focuses on facts and best practices without enforcing specific architectural patterns.

Workflow Decision Tree

1) Review existing SwiftUI code
  • Check property wrapper usage against the selection guide (see references/state-management.md)
  • Verify view composition follows extraction rules (see references/view-structure.md)
  • Check performance patterns are applied (see references/performance-patterns.md)
  • Verify list patterns use stable identity (see references/list-patterns.md)
  • Check animation patterns for correctness (see references/animation-basics.md, references/animation-transitions.md)
  • Inspect Liquid Glass usage for correctness and consistency (see references/liquid-glass.md)
  • Validate iOS 26+ availability handling with sensible fallbacks
2) Improve existing SwiftUI code
  • Audit state management for correct wrapper selection (see references/state-management.md)
  • Extract complex views into separate subviews (see references/view-structure.md)
  • Refactor hot paths to minimize redundant state updates (see references/performance-patterns.md)
  • Ensure ForEach uses stable identity (see references/list-patterns.md)
  • Improve animation patterns (use value parameter, proper transitions, see references/animation-basics.md, references/animation-transitions.md)
  • Suggest image downsampling when UIImage(data:) is used (as optional optimization, see references/image-optimization.md)
  • Adopt Liquid Glass only when explicitly requested by the user
3) Implement new SwiftUI feature
  • Design data flow first: identify owned vs injected state (see references/state-management.md)
  • Structure views for optimal diffing (extract subviews early, see references/view-structure.md)
  • Keep business logic in services and models for testability (see references/layout-best-practices.md)
  • Use correct animation patterns (implicit vs explicit, transitions, see references/animation-basics.md, references/animation-transitions.md, references/animation-advanced.md)
  • Apply glass effects after layout/appearance modifiers (see references/liquid-glass.md)
  • Gate iOS 26+ features with #available and provide fallbacks

Core Guidelines

State Management
  • @State must be private; use for internal view state
  • @Binding only when a child needs to modify parent state
  • @StateObject when view creates the object; @ObservedObject when injected
  • iOS 17+: Use @State with @Observable classes; use @Bindable for injected observables needing bindings
  • Use let for read-only values; var + .onChange() for reactive reads
  • Never pass values into @State or @StateObject — they only accept initial values
  • Nested ObservableObject doesn't propagate changes — pass nested objects directly; @Observable handles nesting fine
View Composition
  • Extract complex views into separate subviews for better readability and performance
  • Prefer modifiers over conditional views for state changes (maintains view identity)
  • Keep view body simple and pure (no side effects or complex logic)
  • Use @ViewBuilder functions only for small, simple sections
  • Prefer @ViewBuilder let content: Content over closure-based content properties
  • Keep business logic in services and models; views should orchestrate UI flow
  • Action handlers should reference methods, not contain inline logic
  • Views should work in any context (don't assume screen size or presentation style)
Performance
  • Pass only needed values to views (avoid large "config" or "context" objects)
  • Eliminate unnecessary dependencies to reduce update fan-out
  • Check for value changes before assigning state in hot paths
  • Avoid redundant state updates in onReceive, onChange, scroll handlers
  • Minimize work in frequently executed code paths
  • Use LazyVStack/LazyHStack for large lists
  • Use stable identity for ForEach (never .indices for dynamic content)
  • Ensure constant number of views per ForEach element
  • Avoid inline filtering in ForEach (prefilter and cache)
  • Avoid AnyView in list rows
  • Consider POD views for fast diffing (or wrap expensive views in POD parents)
  • Suggest image downsampling when UIImage(data:) is encountered (as optional optimization)
  • Avoid layout thrash (deep hierarchies, excessive GeometryReader)
  • Gate frequent geometry updates by thresholds
  • Use Self._printChanges() to debug unexpected view updates
Animations
  • Use .animation(_:value:) with value parameter (deprecated version without value is too broad)
  • Use withAnimation for event-driven animations (button taps, gestures)
  • Prefer transforms (offset, scale, rotation) over layout changes (frame) for performance
  • Transitions require animations outside the conditional structure
  • Custom Animatable implementations must have explicit animatableData
  • Use .phaseAnimator for multi-step sequences (iOS 17+)
  • Use .keyframeAnimator for precise timing control (iOS 17+)
  • Animation completion handlers need .transaction(value:) for reexecution
  • Implicit animations override explicit animations (later in view tree wins)
Liquid Glass (iOS 26+)

Only adopt when explicitly requested by the user.

  • Use native glassEffect, GlassEffectContainer, and glass button styles
  • Wrap multiple glass elements in GlassEffectContainer
  • Apply .glassEffect() after layout and visual modifiers
  • Use .interactive() only for tappable/focusable elements
  • Use glassEffectID with @Namespace for morphing transitions

Quick Reference

Show full SKILL.md (483 more words)Show less
Property Wrapper Selection
WrapperUse When
@StateInternal view state (must be private)
@BindingChild modifies parent's state
@StateObjectView owns an ObservableObject
@ObservedObjectView receives an ObservableObject
@BindableiOS 17+: Injected @Observable needing bindings
letRead-only value from parent
varRead-only value watched via .onChange()
Liquid Glass Patterns
swift
// Basic glass effect with fallback
if #available(iOS 26, *) {
    content
        .padding()
        .glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))
} else {
    content
        .padding()
        .background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))
}

// Grouped glass elements
GlassEffectContainer(spacing: 24) {
    HStack(spacing: 24) {
        GlassButton1()
        GlassButton2()
    }
}

// Glass buttons
Button("Confirm") { }
    .buttonStyle(.glassProminent)

Review Checklist

State Management
  • @State properties are private
  • @Binding only where child modifies parent state
  • @StateObject for owned, @ObservedObject for injected
  • iOS 17+: @State with @Observable, @Bindable for injected
  • Passed values NOT declared as @State or @StateObject
  • Nested ObservableObject avoided (or passed directly to child views)
Sheets & Navigation (see references/sheet-navigation-patterns.md)
  • Using .sheet(item:) for model-based sheets
  • Sheets own their actions and dismiss internally
ScrollView (see references/scroll-patterns.md)
  • Using ScrollViewReader with stable IDs for programmatic scrolling
View Structure (see references/view-structure.md)
  • Using modifiers instead of conditionals for state changes
  • Complex views extracted to separate subviews
  • Container views use @ViewBuilder let content: Content
Performance (see references/performance-patterns.md)
  • View body kept simple and pure (no side effects)
  • Passing only needed values (not large config objects)
  • Eliminating unnecessary dependencies
  • State updates check for value changes before assigning
  • Hot paths minimize state updates
  • No object creation in body
  • Heavy computation moved out of body
List Patterns (see references/list-patterns.md)
  • ForEach uses stable identity (not .indices)
  • Constant number of views per ForEach element
  • No inline filtering in ForEach
  • No AnyView in list rows
Layout (see references/layout-best-practices.md)
  • Avoiding layout thrash (deep hierarchies, excessive GeometryReader)
  • Gating frequent geometry updates by thresholds
  • Business logic kept in services and models (not in views)
  • Action handlers reference methods (not inline logic)
  • Using relative layout (not hard-coded constants)
  • Views work in any context (context-agnostic)
Animations (see references/animation-basics.md, references/animation-transitions.md, references/animation-advanced.md)
  • Using .animation(_:value:) with value parameter
  • Using withAnimation for event-driven animations
  • Transitions paired with animations outside conditional structure
  • Custom Animatable has explicit animatableData implementation
  • Preferring transforms over layout changes for animation performance
  • Phase animations for multi-step sequences (iOS 17+)
  • Keyframe animations for precise timing (iOS 17+)
  • Completion handlers use .transaction(value:) for reexecution
Liquid Glass (iOS 26+)
  • #available(iOS 26, *) with fallback for Liquid Glass
  • Multiple glass views wrapped in GlassEffectContainer
  • .glassEffect() applied after layout/appearance modifiers
  • .interactive() only on user-interactable elements
  • Shapes and tints consistent across related elements

References

  • references/state-management.md - Property wrappers and data flow
  • references/view-structure.md - View composition, extraction, and container patterns
  • references/performance-patterns.md - Performance optimization techniques and anti-patterns
  • references/list-patterns.md - ForEach identity, stability, and list best practices
  • references/layout-best-practices.md - Layout patterns, context-agnostic views, and testability
  • references/animation-basics.md - Core animation concepts, implicit/explicit animations, timing, performance
  • references/animation-transitions.md - Transitions, custom transitions, Animatable protocol
  • references/animation-advanced.md - Transactions, phase/keyframe animations (iOS 17+), completion handlers (iOS 17+)
  • references/sheet-navigation-patterns.md - Sheet presentation and navigation patterns
  • references/scroll-patterns.md - ScrollView patterns and programmatic scrolling
  • references/image-optimization.md - AsyncImage, image downsampling, and optimization
  • references/liquid-glass.md - iOS 26+ Liquid Glass API

Philosophy

This skill focuses on facts and best practices, not architectural opinions:

  • We don't enforce specific architectures (e.g., MVVM, VIPER)
  • We do encourage separating business logic for testability
  • We optimize for performance and maintainability
  • We follow Apple's Human Interface Guidelines and API design patterns

© ilyas-hallak, 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 12 other files (references) in .agents/skills/swiftui-expert-skill of ilyas-hallak/romm-ios-app.

  • SKILL.md
  • references/animation-advanced.md
  • references/animation-basics.md
  • references/animation-transitions.md
  • references/image-optimization.md
  • references/layout-best-practices.md
  • references/liquid-glass.md
  • references/list-patterns.md
  • references/performance-patterns.md
  • references/scroll-patterns.md
  • references/sheet-navigation-patterns.md
  • references/state-management.md
  • references/view-structure.md

Open the folder on GitHubat commit 904e8ca

Used in 1 other repository

We found 6 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in ilyas-hallak/romm-ios-app, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Swiftui Expert Skill 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 Expert Skill compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Swiftui Expert Skill this skillilyas-hallak/romm-ios-app1731 repos~2.9kAutomated safety check: PassMIT
Swiftui Expert SkillAFK-surf/OpenBridge4302 repos~3.9kAutomated safety check: PassMIT
Swiftui Patternsaffaan-m/ECC277k4 repos~1.8kAutomated safety check: PassMIT
Swiftui Expert Skillsupabitapp/supaterm172—~1.5kAutomated safety check: PassCustom licence
iOS Patternshanamizuki/solopreneur152—~2.3kAutomated safety check: NotesMIT
Update Swiftui APIsAvdLee/SwiftUI-Agent-Skill3.7k—~1.2kAutomated safety check: PassMIT

Similar skills

  • Swiftui Expert Skill

    AFK-surf/OpenBridge

    Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, modern APIs, Swift concurrency, and iOS 26+ Liquid Glass adoption.

    430 GitHub starsUsed in 2 repos~3.9k tokens
    MobileAuto-check passed
  • Swiftui Patterns

    affaan-m/ECC

    SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS/macOS UI best practices.

    277k GitHub starsUsed in 4 repos~1.8k tokens
    MobileAuto-check passed
  • Swiftui Expert Skill

    supabitapp/supaterm

    Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, macOS-specific APIs, and iOS 26+ Liquid Glass adoption.

    172 GitHub stars~1.5k tokensUpdated 17 days ago
    MobileAuto-check passed
  • iOS Patterns

    hanamizuki/solopreneur

    A skill your agent uses when building iOS/macOS apps with SwiftUI — covers localization (String Catalogs), date/time formatting, JSON date decoding, Previews, state management, sheet/navigation…

    152 GitHub stars~2.3k tokensUpdated 14 days ago
    Frontend & DesignAuto-check: notes
  • 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 5 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

Works with

Categories

Questions about Swiftui Expert Skill

What does Swiftui Expert Skill do?

Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption. Swiftui Expert Skill is an agent skill from ilyas-hallak/romm-ios-app. Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, and iOS 26+ Liquid Glass adoption.

When should I use Swiftui Expert Skill?

Swiftui Expert Skill fits situations like: building new SwiftUI features; refactoring existing views; reviewing code quality; adopting modern SwiftUI patterns.

How do I install Swiftui Expert Skill in Claude Code?

Run `npx skills add ilyas-hallak/romm-ios-app --skill swiftui-expert-skill -a claude-code`. Or copy the skill folder (.agents/skills/swiftui-expert-skill in ilyas-hallak/romm-ios-app) into .claude/skills/swiftui-expert-skill in your project. Claude Code loads it when a task matches its description.

How do I install Swiftui Expert Skill in Codex?

Run `npx skills add ilyas-hallak/romm-ios-app --skill swiftui-expert-skill -a codex`. Or copy the skill folder (.agents/skills/swiftui-expert-skill in ilyas-hallak/romm-ios-app) into .agents/skills/swiftui-expert-skill in your project. Codex loads it when a task matches its description.

Can I use Swiftui Expert Skill 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 ilyas-hallak/romm-ios-app --skill swiftui-expert-skill -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-expert-skill, .gemini/skills/swiftui-expert-skill, .github/skills/swiftui-expert-skill and .opencode/skills/swiftui-expert-skill in your project.

What does Swiftui Expert Skill need to run?

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

Does Swiftui Expert Skill access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Swiftui Expert Skill 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 Expert Skill use?

Swiftui Expert Skill 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 Expert Skill use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 24k tokens, read only when the agent opens those files.

What are the alternatives to Swiftui Expert Skill?

Skills that share tags, products or a category with Swiftui Expert Skill: Swiftui Expert Skill (AFK-surf/OpenBridge, 430 stars), Swiftui Patterns (affaan-m/ECC, 277k stars), Swiftui Expert Skill (supabitapp/supaterm, 172 stars) and iOS Patterns (hanamizuki/solopreneur, 152 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Swiftui Expert Skill?

ilyas-hallak (a GitHub user) maintains it in ilyas-hallak/romm-ios-app, which has 173 GitHub stars. The repository was last updated on October 10, 2026.

Source: ilyas-hallak/romm-ios-app on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.