All skills
lassejlv avatar

/build-gpui-apps

@52f4cfd
by Lasselassejlv/skills50 stars
1

Build, scaffold, refactor, debug, review, and validate native Rust desktop applications with GPUI. Recommend GPUI Kit and ask before adopting it; use gpui_kit imports after agreement, or preserve the chosen upstream GPUI stack. Includes the merged GPUI Kit component and design skills, full application/Base/Component/Shell documentation, coding and design guides, state, actions, async, input, accessibility, motion, themes, native integration, packaging, auto updates, testing, and production delivery. Use paper-to-gpui when the primary task is faithfully translating a selected Paper.design frame into an existing view.

Use this Skill: https://skilld.dev/gh/lassejlv/skills/build-gpui-apps

This session only. Nothing lands on disk.

referencesgpui-kitupstreamindex.md

≈6.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

GPUI Kit documentation index

Retrieved 2026-10-01T10:02:28+00:00. All 183 English pages from the official index are bundled below. Chinese translations remain discoverable in llms.txt; images stay remote.

Read only the pages relevant to the task. These are documentation snapshots, not proof that an API exists in a project's locked version. See manifest.json for page sources and SHA-256 hashes.

Credit: GPUI Kit. Prose and original illustrations: CC BY 4.0. Code: Apache-2.0. Third-party material retains its terms. Links and attribution are adapted; the guide content is retained.

Application guides

Page Covers

| Accessibility | Build and test accessible GPUI Kit interfaces with AccessKit semantics and actions. |

| Action | Define typed commands and route them through focus, key contexts, and GPUI's dispatch path. |

| Animation | Choose GPUI element animation, GPUI Base motion, and GPUI Component motion with correct identity, interruption, and reduced-motion behavior. |

| Auto Update | Plan safe update checks, verified downloads, installation, and restart for GPUI Kit desktop apps. |

| Coding Guides | Architecture and coding conventions for maintainable GPUI Kit applications |

| Comparison | Compare GPUI Kit, Iced, egui, Qt 6, and Slint for desktop application architecture and capabilities. |

| Context | Understand how GPUI provides application, Entity, Window, and async access. |

| Design Guides | Product and interaction design guidance for GPUI Kit applications |

| Element | Understand GPUI's element tree and low-level rendering lifecycle. |

| ElementId | Give GPUI elements stable identity and understand how keyed state survives frames. |

| Entity | Create, share, read, update, and observe state with GPUI Entity. |

| Event | Use GPUI Events for typed notifications and connect them to Actions. |

| Focus | Build keyboard reachable GPUI views with stable focus handles, focus events, and safe focus traps. |

| Fonts | System fonts, theme fonts, per-element overrides, and bundling custom fonts. |

| FPS Monitor | Read the gpui-fps HUD — what MAX FPS is, why it is derived rather than counted, and what each row measures. |

| Geometry | Work with GPUI's typed coordinates, layout lengths, and colors in practical UI code. |

| Getting Started | Build your first GPUI Kit desktop application with one dependency and one view. |

| Global | Share application-wide state with GPUI Global, and connect changes to Views and windows. |

| GPUI Kit | A comprehensive Rust framework for building fantastic, high-performance desktop applications with GPUI. |

| I18N | Set up translations, switch locales, and check text behavior in GPUI Kit. |

| Icons & Assets | Configure bundled icons and custom assets for GPUI Kit applications. |

| Images | How img() and svg() load, decode, size, and cache images, and how to cache remote images over HTTP. |

| Installation | Install GPUI Kit and the platform dependencies required to build Rust desktop applications on macOS, Windows, and Linux. |

| KeyBinding | Bind GPUI Actions to keys, chords, and focused Key Contexts. |

| Mobile | Build an iOS application or embed GPUI Kit in a Swift UIKit container with the experimental gpui-pre-mobile platform. |

| Multi Window | Open multiple GPUI Kit windows, share application state, route work to the right window, and handle closing and restoration. |

| Native Extensions | Integrate native menus and child views with GPUI Kit, including handles, layout, input, lifetime, and platform limits. |

| Packaging | Turn a GPUI Kit release build into a macOS app and DMG, a Windows installer, or a Linux tarball and DEB. |

| Paint | Draw custom geometry in GPUI and understand the boundary between layout, hit testing, and painting. |

| Render | Turn Entity state into an element tree and understand when GPUI rebuilds a View. |

| RenderOnce | Build reusable, declarative GPUI components from owned data. |

| SharedString | Choose and use GPUI's immutable, cheaply cloned text for UI state and components. |

| Style | Style GPUI elements with Tailwind CSS–familiar utilities, typed values, and fluent Rust builders. |

| SystemNotification | Send OS notifications with GPUI, handle activation, and understand GPUI Kit's Notification integration and platform limits. |

| Task | Run asynchronous work with GPUI Task, control its lifetime, and return results to the UI. |

| Testing | Test GPUI Kit applications and GPUI behavior with Rust unit tests, TestAppContext, native UI interactions, layout assertions and CI. |

| TextSystem | Shape, measure, lay out, and paint text through GPUI's text system and GPUI Kit components. |

| View Cache | Reuse clean GPUI view subtrees and distinguish view caching from element state, geometry caching, and virtualization. |

| WebAssembly | Build and run GPUI Kit applications in a browser with the repository's WebAssembly examples. |

| WebView | Embed a native Wry WebView in a GPUI Kit window, with the current platform and overlay limitations. |

| Window | Use GPUI Window for window-local input, focus, rendering, and asynchronous work. |

Styled components

Page Covers

| Accordion | The accordion uses collapse internally to make it collapsible. |

| Alert | Displays a callout for user attention. |

| AlertDialog | A modal dialog that interrupts the user with important content and expects a response. |

| Attachment | A composable file and media attachment surface with lifecycle states, previews, and actions. |

| Avatar | Displays a user avatar image with fallback options. |

| Badge | A red dot that indicates the number of unread messages, status, or other notifications. |

| Bubble | A composable chat surface for text, rich content, and reaction controls. |

| Button | Displays a button or a component that looks like a button. |

| Calendar | A flexible calendar component for displaying months, navigating dates, and selecting single dates or date ranges. |

| Carousel | A composable carousel for browsing related content. |

| Chart | Beautiful charts and graphs for data visualization including line, bar, area, pie, radar, candlestick, and sankey charts. |

| Checkbox | A control that allows the user to toggle between checked and not checked. |

| Clipboard | A button component that helps you copy text or other content to your clipboard. |

| Collapsible | An interactive element which expands/collapses. |

| ColorPicker | A comprehensive color selection interface with support for multiple color formats, presets, and alpha channel. |

| Combobox | An autocomplete input paired with a searchable dropdown list. |

| Command | A command palette — a filtered list of commands and quick actions. |

| Components | Browse 75+ production-ready Rust UI components and primitives for forms, navigation, data, feedback, editing, and application layouts. |

| DataTable | High-performance data table with virtual scrolling, sorting, filtering, and column management. |

| DatePicker | A date picker component for selecting single dates or date ranges with calendar interface. |

| DescriptionList | Use to display details with a tidy layout for key-value pairs. |

| Dialog | A dialog dialog for displaying content in a layer above the app. |

| Dock | Production-ready dock layouts with styled tabs, split panes, edge docks, and persistent state. |

| DropdownButton | A DropdownButton is a combination of a button and a trigger button. It allows us to display a dropdown menu when the trigger is clicked, but the left Button can still respond to independent events. |

| Editor | Source-code editor with syntax highlighting, gutter, folding, and decorations. |

| Empty | Composable empty states with media, text, actions, and custom content. |

| Focus Trap | A utility element that traps keyboard focus within a container, preventing Tab navigation from escaping. |

| Form | Flexible form container with support for field layout, validation, and multi-column layouts. |

| GroupBox | A styled container element with an optional title to group related content together. |

| HoverCard | A floating overlay that displays rich content when hovering over a trigger element. |

| Icon | Display SVG icons with various sizes, colors, and transformations. |

| Image | Display embedded, local, and remote images with sizing, loading, and error states. |

| Input | Text input component with validation, masking, and various features. |

| Input Group | Combine inputs and textareas with text, icons, buttons, and toolbars. |

| Kbd | Displays keyboard shortcuts with platform-specific formatting. |

| Label | Text labels for form elements with highlighting and styling options. |

| List | A flexible list component that displays a series of items with support for sections, search, selection, and infinite scrolling. |

| Marker | A compact composable row for conversation status, notifications, loading, and separators. |

| Menu | Context menus and popup menus with support for icons, shortcuts, submenus, and various menu item types. |

| Message | Compose sender identity, metadata, rich content, and actions into an aligned chat message. |

| MessageScroller | A virtualized message list with tail following, history insertion, unread navigation, and customizable jump controls. |

| Notification | Display toast notifications that appear at the top right of the window with auto-dismiss functionality. |

| NumberInput | Number input component with increment/decrement controls and numeric formatting. |

| OtpInput | One-time password input component with multiple fields, auto-focus, and paste handling. |

| Pagination | Pagination with page navigation, next and previous links. |

| Plot | A low-level plotting library for creating custom charts and data visualizations. |

| Popover | A floating overlay that displays rich content relative to a trigger element. |

| Progress | Displays an indicator showing the completion progress of a task, typically displayed as a progress bar or circular indicator. |

| Questionnaire | A composable multi-step questionnaire with choice, freeform, validation, and navigation support. |

| Radio | A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time. |

| Rating | A simple interactive star rating component. |

| Resizable | A flexible panel layout system with draggable resize handles and adjustable panels. |

| Root View | Use the Root view to enable themes, notifications, dialogs, and other GPUI Component features in a window. |

| Scrollable | Scrollable container with custom scrollbars, scroll tracking, and virtualization support. |

| Select | Displays a list of options for the user to pick from—triggered by a button. |

| Settings | A settings UI with grouped setting items and pages. |

| Sheet | A sliding panel that appears from the edges of the screen for displaying content. |

| Shimmer | Theme-aware loading text with configurable sweep timing, spread, direction, and reduced-motion behavior. |

| Sidebar | A composable, themeable and customizable sidebar component for navigation and content organization. |

| Skeleton | Use to show a placeholder while content is loading. |

| Slider | A control that allows the user to select values from a range using a draggable thumb. |

| Spinner | Displays an animated loading showing the completion progress of a task. |

| StatusBar | A horizontal status bar with left, center, and right regions, usually placed at the bottom of a window or pane. |

| Stepper | A step-by-step progress for users to navigate through a series of steps or stages. |

| Switch | A control that allows the user to toggle between checked and not checked. |

| Table | A basic table component for directly rendering tabular data. |

| Tabs | A set of layered sections of content—known as tab panels—that are displayed one at a time. |

| Tag | A short item that can be used to categorize or label content. |

| Textarea | Multi-line text input with fixed rows, soft wrapping, and auto-grow. |

| TextView | Renders Markdown and HTML text with optional custom Markdown plugins. |

| Theme | Customize colors, typography, radii, and light or dark appearance with the GPUI Component theme system. |

| TimeField | A segmented input for a time of day, on a 24-hour or 12-hour clock. |

| TitleBar | A custom window title bar component with window controls and custom content support. |

| Toggle | A button-style toggle component for binary on/off or selected states. |

| Toolbar | A transparent, sizable container for commands in headers, tab panels, and custom surfaces. |

| Tooltip | Display helpful information on hover or focus, with support for keyboard shortcuts and custom content. |

| Tree | A hierarchical tree view component for displaying and navigating tree-structured data. |

| VirtualList | High-performance virtualized list component for rendering large datasets with variable item sizes. |

Base behavior and primitives

Page Covers

| Accordion | A disclosure group composed from independently styleable header, trigger, and panel parts. |

| Alert Dialog | A modal confirmation surface for actions that need an explicit decision. |

| Avatar | An image with composable fallback content for a person or entity. |

| Button | An unstyled, accessible pressable with semantic state and keyboard activation. |

| Calendar | A state-driven date grid with selection matchers and custom item rendering. |

| Checkbox | A controlled tri-state check control with a separately styled indicator. |

| Collapsible | A composable region that shows or hides content without prescribing its trigger styling. |

| Color Picker | State and interaction foundations for selecting colors in a custom picker UI. |

| Combobox | A text input paired with keyboard-navigable suggestions and selection behavior. |

| Date Picker | A focus-aware date input that composes calendar behavior with a popup. |

| Dialog | A composable modal surface with focus management, backdrop, title, and close parts. |

| Dock | A dockable workspace — splits, tab groups, and edge docks — whose layout is pure data and whose appearance is entirely yours. |

| Editor | An unstyled source-code editor with language, gutter, folding, and decoration support. |

| Getting Started | Install, initialize, and render your first gpui-base control. |

| GPUI Base | The unstyled behavior and infrastructure foundation of GPUI Kit, the Rust desktop framework. |

| History | Browser-style navigation trails and grouped undo/redo transactions for application state. |

| Hover Card | A delayed floating card associated with a pointer or keyboard trigger. |

| Input | An unstyled single-line text input with masking, validation, and number stepping. |

| Link | An accessible link-like control with application-defined styling. |

| Motion | Typed transitions, springs, keyframes, presence, stagger, and reduced-motion behavior in gpui-base. |

| Nav Stack | A navigation stack of views with push, pop, forward, and replace, and an animatable transition lifecycle. |

| Number Input | A numeric input with reusable increment, decrement, and step behavior. |

| OTP Input | A multi-cell one-time-code input driven by a shared text state. |

| Pagination | A controlled page navigator with explicit current and total page state. |

| Plot | Unstyled plotting in gpui-base — scales, shapes, axes, the Plot element, and hover tracking — for building charts in any design system. |

| Popover | An anchored floating surface with controlled or internally managed open state. |

| Popup | A low-level trigger and anchored floating-content host. |

| Primitives | The complete catalog of user-facing gpui-base primitives. |

| Progress | Composable track and indicator parts for reporting task completion. |

| Radio | A controlled single-choice item with selectable and disabled semantics. |

| Radio Group | Groups radio items and provides keyboard navigation for a single selection. |

| Resizable | Panel groups and resize handles for user-adjustable split layouts. |

| Scrollbar | Add a styled, animated scrollbar to GPUI scroll views, lists, and custom viewports. |

| Select | A button-like selection control backed by an anchored, keyboard-navigable popup. |

| Sheet | A modal surface that enters from an edge while managing dismissal and focus. |

| Slider | A state-driven range input with independently styleable track, indicator, and thumb. |

| Switch | A controlled on/off control with separately styleable track and thumb. |

| Table | Semantic table primitives for composing headers, bodies, rows, and cells. |

| Tabs | A tab list and accessible tab controls with controlled selection. |

| Text Selection | Add native window-level text selection to plain text and custom GPUI participants. |

| Textarea | An unstyled multi-line text field with fixed rows or auto-grow behavior. |

| TextView | Render selectable Markdown and HTML directly with gpui-base. |

| Time Field | A segmented time-of-day editor with a complete keyboard model and 24- or 12-hour clocks. |

| Toast | A managed, animated stack of temporary status messages. |

| Toggle | A controlled two-state pressable for persistent choices such as formatting. |

| Toggle Group | Coordinates a set of toggle controls as a single- or multiple-selection group. |

| Tooltip | A delayed, positioned description associated with a trigger element. |

| Tree | A virtualized hierarchical list with explicit expansion and selection state. |

| VirtualList | Render a hundred thousand differently sized rows by drawing only the ones on screen. |

Shell and extensions

Page Covers

| API Reference | Every name a script can import or reach — the four built-in modules, the cx and window globals, and the element methods that are not styles. |

| Capabilities | The default-deny model, the fs / storage / clipboard / process surface, where storage lives, and what the sandbox withholds. |

| Dependencies | Shell packages — what makes a Git repository one, and how a manifest names, selects, fetches and imports it, down to what an editor sees. |

| Dock and Panels | A dockable layout drawn entirely by script — panels that survive a restart, chrome you draw yourself, and commands instead of callbacks. |

| Elements | Constructors, composition with child / children / when, and why an element description can only be used once. |

| Examples | Complete standalone and embedded applications, including retained state, HostModule registrations, and native motion. |

| Getting Started | Add the runtime to a Rust application, write the script it loads, and check that script without opening a window. |

| GPUI Shell | Makes a Rust GPUI application extensible in JavaScript, rendered by GPUI itself — no WebView, no DOM. Plugins first, standalone script applications second. |

| Hosting | The Rust side in full — runtime lifetime, mounting script Views, refreshing them from host state, metrics, exit requests and hot-reload. |

| HostModule | How a host lends its own Rust to a script — registration, the import that reaches it, the plain-data boundary, and the rules a Host function runs under. |

| Overlays | Dialogs, the sheet and toasts, their stacking and dismissal order, and why they may only be opened from an event. |

| Performance | What a script costs once frame rate stops being the variable — invalidation against description size, the View as the boundary that bounds both, and the two failures FPS cannot tell apart. |

| State and Views | Views, init and render, cx.notify(), retained input state, and asynchronous work. |

| Styling | The fluent style surface, length and colour grammars, semantic theme tokens, and hover / active / focus styles. |

| The Engine Seam | QuickJS behind one internal interface, why the seam exists, and the three measurements that tell script cost apart from frame cost. |

Source: SKILL.md on GitHub

No alerts3d3 checks · Risk SAFE
  • Gen Agent Trust Hub3d

    The skill provides comprehensive documentation and reference material for building native desktop applications using Rust and GPUI. No security risks, prompt injections, or malicious behaviors were identified. External dependencies originate from reputable organizations in the Rust ecosystem.

  • Socket3d

    No alerts

  • Snyk3d

    Risk: LOW · No issues

Signed by skilld at 52f4cfd. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 4 days ago

README badge

README badge for lassejlv/skills/build-gpui-apps