← ClaudeAtlas

ape-cli-terminal-experiencelisted

Designs the terminal experience of a CLI app the way Claude Code does it -- palette, status glyphs, spinners, progress narration, prompts, confirmations, listings, key hints, and full-screen TUI views. Trigger on "ape cli terminal experience", or whenever the task involves printing to a terminal from a CLI: adding or restyling output, adding a spinner or progress indicator, writing a prompt or confirmation, building a TUI, choosing exit codes, or deciding stdout vs stderr. Also trigger on casual phrasings like "make the output nicer", "add colour", "this CLI looks ugly". Read this before writing the first line of output code.
arpitbbhayani/ape-skills · ★ 44 · Web & Frontend · score 81
Install: claude install-skill arpitbbhayani/ape-skills
# CLI Terminal Experience A terminal UI that reads like Claude Code: mostly grey, a few deliberate accents, one line per fact, animation only while something is actually happening, and a plain-text fallback the moment the output stops being a terminal. Every rule below is enforceable and testable. Follow them exactly rather than approximating the vibe. --- ## 1. The two laws **Subtle by default.** Colour marks meaning -- a failure, a value the user will act on -- and nothing else. Labels, units, paths, and chrome are dim; values are plain. A full screen of output should read as mostly grey with a handful of accents, never as a colour test page. If you cannot say what a colour *means*, remove it. **Plain when not a terminal.** Pipe the program anywhere and every escape sequence disappears, glyphs fall back to bracketed ASCII, rules vanish, and the spinner goes silent. Output stays greppable; a script parsing it never sees a byte of styling. Three consequences that people get wrong: - Colour detection and terminal detection are **different questions**. `FORCE_COLOR` should add colour to piped output, but carriage-return redraws still make no sense there. Gate colour on `color_enabled()`, gate animation on `is_tty()`. - **Only colour is a colour question.** Glyph shape, rules, and the spinner are terminal questions -- they gate on `is_tty()`. Conflating the two is the single most common bug in this module: `NO_COLOR=1` in a real terminal then degrades `✓` to `[OK