What problem does it solve? Building the gcl-ui desktop interface requires consistent patterns across Slint layout files and Rust glue code; without shared conventions, screens leak logic, block the UI thread, deadlock on config locks, and break keyboard focus or dialog stacking. ## Core Features & Use Cases - Architecture rules: Enforces Theme-token styling, per-screen *State globals, pure layout screens, and the Bridge pattern that keeps every Launcher call off the UI thread. - Threading and lifecycle safety: Documents rules for ModelRc/Image UI-thread confinement, Weak<AppWindow> captures, generation counters for stale async results, and debounce timers for ComboBox/Slider controls. - Testing and preview workflow: Covers element id naming for the Slint testing backend, flow-test harness usage, Preview<Screen> components, and slint-viewer live reload. - Use Case: When adding a new settings control to the launcher, follow the skill to declare a Theme token, bind it through SettingsState, debounce its commit timer, name its element id, and verify it with a flow test. ## Quick Start Read this skill before editing any .slint file or gcl-ui Rust code, then follow its layout, Bridge, and state-global rules for your change.