Design and style ryOS UI using the current OS theme token system, Tailwind variants, shared primitives, Aqua Glass, dark mode, and accent conventions. Use when creating UI components, styling elements, working with themes, adding visual effects, or implementing retro OS aesthetics.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Design and style ryOS UI using the current OS theme token system, Tailwind variants, shared primitives, Aqua Glass, dark mode, and accent conventions. Use when creating UI components, styling elements, working with themes, adding visual effects, or implementing retro OS aesthetics.
Visual values belong in CSS --os-* tokens. TypeScript theme files hold metadata, platform behavior, dark-mode support flags, and wallpaper defaults; do not duplicate palettes in TS or component code.
Supported Themes
Theme
ID
Platform
Key traits
macOS Aqua
macosx
mac / aqua
Glossy controls, traffic lights, dock, pinstripe or Aqua Glass, light/dark, accents
platform.css - rules shared by mac or windows platform buckets.
containment.css - reduced motion and third-party/app isolation.
aqua.css - Aqua structural chrome, .aqua-button, brushed metal, typography.
windows.css - Windows structural landing rules.
dark-aqua.css - Aqua dark tokens and structural overrides.
aqua-glass.css - Aqua Glass overrides, imported after dark Aqua.
control-panels-mac.css / control-panels-themed.css - Control Panels skins.
Windows themes also load /css/xp-custom.css or /css/98-custom.css dynamically. When a rule applies to both XP and Win98, use data-os-platform="windows" instead of duplicated exact-theme selectors.
Shadcn HSL variables (--background, --primary, etc.) still exist for generic UI primitives. For OS chrome and app surfaces, prefer --os-* tokens and bg-os-* / text-os-* utilities.
Tailwind Variants
Use root-attribute variants for small static visual differences:
Use React branches only when structure, behavior, assets, layout math, or app logic differs. For non-React code, use useThemeStore.getState() or helpers from @/themes such as getOsPlatform, getOsMacChrome, isWindowsTheme, isMacTheme, isThemeWinXp, and isThemeWin98.
Shared Surface Primitives
Prefer shared primitives before adding new four-way class branches:
Pass isAquaGlass when a primitive supports it. Use windowsBevelClassName("raised" | "sunken") instead of hand-writing Win98 bevel borders.
Icon and Asset Sourcing
When choosing app icons, toolbar glyphs, file-type art, dialog icons, devices, folders, or other OS-flavored imagery, search the repo icon libraries before drawing new assets or using external sources.
Active theme icons live under public/icons/<theme>/... and are resolved through public/icons/manifest.json by helpers such as pickIconPath, resolveIconLegacyAware, and useIconPath. Historical source libraries live outside active theme resolution:
Mac OS X Panther/Tiger catalogs: public/resources/macos-icon-catalogs/{panther,tiger}/catalog.md
Windows 98/XP catalogs: public/resources/windows-icon-catalogs/{win98,xp}/catalog.md
Use this order:
Prefer an existing logical icon in public/icons/default, then matching theme variants in public/icons/macosx, public/icons/win98, or public/icons/xp.
If no active icon fits, search the resource catalogs by concept and source era-appropriate art from categories such as applications, system-preferences, control-panels, dialog-ui-assets, folders, devices, and file-types.
Copy/adapt the chosen catalog asset into public/icons/<theme>/... only when it should participate in active UI rendering; keep public/resources/... as the source catalog, not as runtime app metadata.
Run bun run generate:icons after changing active public/icons files.
Preserve cross-theme fallback behavior: add default assets first, then theme-specific variants where they materially improve the UI.
Aqua Glass is the default material for macosx; it is driven by data-os-aqua-material="glass" and src/styles/themes/aqua-glass.css.
Do not build ad hoc glass with generic bg-white/80 backdrop-blur-* unless the surface is intentionally outside the OS material system.
Only macosx currently supports dark mode. Use --os-* tokens, os-dark:, or os-mac-aqua-dark:; branch on isDarkMode only for behavioral or structural differences.
Mac chromes (macosx, system7) support accents. The default accent is wallpaper; default means "System" and clears inline overrides so stylesheet tokens win.
Accent-aware UI should read --os-color-selection-*, --os-color-link, focus-ring tokens, or Tailwind bg-os-selection-bg / text-os-link.
Window Materials
WindowFrame supports per-window materials:
Material
Use case
default
Standard opaque windows
transparent
Semi-transparent app windows such as media surfaces
notitlebar
Immersive windows with floating or hover chrome
brushedmetal
Classic Mac brushed-metal apps
Global Aqua Glass is separate from WindowFrame material. Regular Aqua windows receive glass classes when the global material is glass; brushed-metal windows keep brushed-metal semantics and are adjusted by CSS.
Typography
Use font-os-ui and font-os-mono; avoid theme-specific font utility names.
WindowFrame content has .window-body, which consumes --os-typography-window.
For shell or portaled copy outside a WindowFrame, use OS_SHELL_TEXT_SCALE_CLASS from @/lib/themeChrome.
For custom native chrome that must avoid Aqua global typography selectors, put OS_NATIVE_CHROME_SKIP_CLASS on an ancestor.
Use the prose-textedit typography variant for TextEdit-like rich content so Aqua dark mode stays readable.
Anti-Patterns
Do not copy hex values from old examples; add or consume --os-* tokens.
Do not make currentTheme === "xp" || currentTheme === "win98" branches for shared Windows styling; use platform attributes, variants, or helpers.
Do not use React branches for static colors, borders, radii, shadows, or text colors.
Do not create one-off glassmorphism when Aqua Glass tokens and CSS apply.
Do not add new theme-specific components before checking src/components/shared/osThemePrimitives.ts and existing app patterns.
Checklist
Search for an existing primitive or app pattern before styling from scratch.
Use cn() for conditional class merging.
Prefer --os-* tokens, token-backed Tailwind utilities, and os-*: variants.
Use useThemeFlags() or @/themes helpers only when structure or behavior changes.
Consider Aqua Glass, Aqua dark mode, accents, inactive-window selection, and Windows legacy CSS.
Test styled components across all four themes; include Aqua Glass and Aqua dark mode when touching macosx surfaces.