What problem does it solve? Building a guided terminal UI in Node.js without a build step is error-prone: htm has no JSX fragment shorthand, @inkjs/ui widgets default to clashing colors, uncontrolled TextInput buffers bleed between wizard steps, and un-unref'd animation timers hang the test runner. This Skill encodes the verified patterns and Ink gotchas for the newsletter-crawler TUI so new screens, menus, and progress panels work the first time. ## Core Features & Use Cases - No-build component authoring: Write Ink components with htm (html\<${Box}>``) instead of JSX, with the correct Fragment workaround and pinned ink@5/react@18/@inkjs/ui@2 stack. - Semantic theme layer: Centralize colors, glyphs, and @inkjs/ui overrides via theme.js tokens and ThemeProvider, with shared Panel/FooterHints/Header widgets. - Interaction patterns: Checkbox multi-select with parallel Esc-only useInput, navigable lists with in-place preview via a single branching useInput, and label-driven menu navigation in tests. - Live progress dashboards: Route logs through setLogSink into a bounded ring buffer, poll status/telemetry, and render a crawl dashboard with phase ProgressBars separated from a curated event feed. - Use Case: When adding a new screen to the guided menu (e.g., a sources manager with async re-detect actions), follow the SourcesView pattern: pure component, props-injected side effects, single useInput branching by mode, and spy-based tests. ## Quick Start Ask the assistant to add a new screen to the guided terminal menu following the building-the-ink-tui patterns, then verify with npm test and a real TTY run.