ytui-ui-guardian
스타0
포크0
업데이트2026년 6월 10일 22:33
Validate core UX invariants across NORMAL, SEARCH, ZEN, and help modal
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SKILL.md
readonly메뉴
Validate core UX invariants across NORMAL, SEARCH, ZEN, and help modal
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
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.