ytui-ui-guardian
Validate core UX invariants across NORMAL, SEARCH, ZEN, and help modal
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Validate core UX invariants across NORMAL, SEARCH, ZEN, and help modal
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Build terminal UIs with OpenTUI. Covers the core API, native audio, keymaps, React and Solid bindings, components, layout, keyboard input, plugins, and testing.
Enforce provider-capability architecture and provider manager usage
Validate dual-world agentic system consistency between .opencode/ and .claude/
Enforce folder conventions, boundaries, and no-barrel architecture rules
Ensure important code changes include matching docs and runtime definition updates
Build plugins that comply with manifest, namespace, and registry contracts
| name | ytui-ui-guardian |
| description | Validate core UX invariants across NORMAL, SEARCH, ZEN, and help modal |
| metadata | {"scope":"ui","priority":"medium"} |
OK:, ERR:, INFO: without duplicate prefixes.@opentui/react + react-redux state flow, not imperative render-loop syncing.Enter NORMAL play, Ctrl+P SEARCH play, Space in NORMAL/ZEN pause/resume, Space in SEARCH appends to query).[n]gg → first/nth track, [n]G → last/nth track, [n]dd → remove n tracks from cursor; count digits accumulate and reset on j/k or unrecognized key.Ctrl+A in SEARCH enqueues selected result without mode switch; bare a must still append to the search query.:queue clear empties the queue and resets cursor to 0.ytui-strict, ytui-best-effort, system) with correct warning/disable behavior.vol: reflects live mpv volume synced via the 750 ms telemetry tick and does not display a static initial value during active playback.isLoading is true.null now-playing after a failed play is expected behavior, not a regression.◆ in results-list and queue-list; marker absent when playback.nowPlaying is null; queue-list additionally requires the track at playingIndex to match playback.nowPlaying.id (isQueueTrackPlaying) so a stale playingIndex never shows a marker; ◆ clears after 3 consecutive unavailable sync ticks (~2.25 s).themePickerPreviousId and closes; Enter confirms without re-dispatching.Modal container (src/components/modal/modal.tsx); direct inline-chrome overlays are a regression.strategy: "centered" with content-fit sizing (width min 48 / max 82, height = content + chrome, capped to the screen) and ThemePicker uses strategy: "centered" with heightFraction=0.6.settings.statusTimeoutMs via the status-timeout listener middleware (src/state/status-timeout/status-timeout.ts); component-level status timers are a regression.commandActive block runs before the settings key handler in app-root.tsx).Ctrl+C quits through the full cleanup path (requestQuit → destroy); opentui exitOnCtrlC stays disabled and SIGINT/SIGTERM route to the same destroy.:normal, :search, :zen, :library, :logs, :settings.