mcpField
T
terminal-ui-design

terminal-ui-design

github.com/ingpocDesign & UI940 installsUpdated 11w ago
Repository

About terminal-ui-design

terminal-ui-design is a design skill for creating distinctive terminal interfaces. It guides developers through choosing a visual direction and applying it consistently across layout, color, typography, and motion.

Key features

  1. 01Aesthetic direction selection
  2. 02Color palette and border guidance
  3. 03Typography and layout techniques
  4. 04Motion and data display patterns
  5. 05Implementation checklist

Use cases

  1. 01Designing a terminal dashboard
  2. 02Styling command-line help output
  3. 03Building a terminal wizard
  4. 04Improving visual consistency across terminal screens

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ingpoc/skills --skill terminal-ui-design

After installing, type/terminal-ui-designin Claude Code to confirm it loaded.

Details

From the project README

Terminal UI Design

Create distinctive, production-grade terminal interfaces with intentional aesthetics. Don't just print text—craft an experience.

Quick Start

Before coding, choose a bold aesthetic direction:

StyleVibeColorsBorders
CyberpunkNeon, futuristicHot pink #ff00ff, cyan #00ffff, purple #1a0a2eBlock █▀▄
Amber TerminalVintage CRT#ffb000 on blackDouble ╔═╗
Minimalist ZenClean, focusedNord palette, cool bluesRounded ╭─╮
Retro MainframeCorporate, formalGreen on blackASCII-only +-+
Synthwave80s nostalgiaPurple, pink gradientsHeavy ┏━┓
Monochrome BrutalistStark, boldSingle color + intensityHeavy ┏━┓

Pick ONE direction and execute it with precision.

Design Thinking Checklist

QuestionDecision Point
PurposeWhat problem? Who uses it? What workflow?
TonePick extreme: cyberpunk, zen, retro, maximalist, playful
ConstraintsPython Rich, Go bubbletea, Rust ratatui, ANSI codes?
DifferentiationWhat makes this UNFORGETTABLE?

Box Drawing & Borders

Choose borders that match your aesthetic:

Single:     ┌─────┐ │   └─────┘  Clean, modern
Double:     ╔═════╗ ║   ╚═════╝  Bold, formal, retro
Rounded:    ╭─────╮ │   ╰─────╯  Soft, friendly
Heavy:      ┏─────┓ ┃   ┗─────┛  Strong, industrial
Dashed:     ┄┄┄┄┄┄ ┆              Light, airy
ASCII:      +-----+ |   +-----+  Retro, universal
Block:      █▀▀▀▀█ ▄   ▀▀▀▀▀    Chunky, brutalist

Pro tip: Use decorative corners: ◆ ◈ ✦ ⬡ ◢◣◤◥

Color Strategies

StrategyWhen to UseTechnique
ANSI 16Universal compatibilityClassic palette, craft unique combos
256-colorRich but portableGradients, subtle variations
True colorModern terminalsFull spectrum, smooth transitions
MonochromeElegant constraintSingle color, vary intensity

Create atmosphere:

  • Background color blocks for sections
  • Gradient fills: ░▒▓█
  • Semantic color (avoid cliché red=bad, green=good)
  • Reverse video for emphasis
  • Dim for secondary, bold for primary

Typography

The terminal is ALL typography:

TechniqueEffectExample
ASCII art headersDramatic introfiglet style banners
Text weightHierarchyBold, dim, normal
DecorationEmphasisUnderline, italic, strikethrough
Letter spacingHeadersH E A D E R
CaseVoiceALL CAPS headers, lowercase body
Unicode symbolsRichness→ • ◆ ★ ⚡ λ ∴ ≡ ⌘ ✓ ✗
Custom bulletsPersonality▸ ◉ ✓ ⬢ › instead of -
Block:    ███████╗██╗██╗     ███████╗
Slant:    /___  / / // /     / ____/
Small:    ╔═╗┌─┐┌─┐
Minimal:  [ HEADER ]

Layout & Spatial Composition

Break free from single-column output:

ElementUsage
Panels & WindowsDistinct regions with borders
ColumnsSide-by-side information
TablesAligned data, Unicode table chars
WhitespaceGenerous padding, breathing room
DensityMatch purpose—dense dashboards, sparse wizards
HierarchyVisual distinction: primary, secondary, chrome
AsymmetryOff-center titles, weighted layouts

Motion & Animation

ElementExamples
Spinners⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏, ⣾⣽⣻⢿⡿⣟⣯⣷
Progress bars▓░, █▒, [=====> ], ◐◓◑◒
Typing effectsCharacter-by-character reveal
TransitionsWipe effects, fade with color intensity
Live updatesStreaming data, real-time charts

Data Display

TypeTechnique
Sparklines▁▂▃▄▅▆▇█ inline mini-charts
Bar chartsHorizontal bars with block chars
TablesSmart sizing, alternating rows, aligned nums
Trees├── └── │ hierarchies
Status● green, ○ empty, ◐ partial, ✓ complete
Gauges[████████░░] with percentage

Decorative Elements

Dividers:   ───── ═════ •••••• ░░░░░░ ≋≋≋≋≋≋
Sections:   ▶ SECTION, [ SECTION ], ─── SECTION ───, ◆ SECTION
Textures:   · ∙ ░ patterns for backgrounds
Icons:       (if Nerd Fonts available)

Anti-Patterns to Avoid

❌ Avoid✅ Instead
Plain unformatted textStyled output with intent
Default colorsCohesive palette
Generic [INFO] prefixesStyled prefixes with icons
Simple ---- dividersUnicode dividers ───── ═════
Walls of textStructured panels and sections
Generic progressCreative spinners and bars
Boring helpFormatted, aligned help text
Inconsistent spacingPrecise alignment

Library Quick Reference

LanguageLibraries
PythonRich, Textual, curses, prompt_toolkit
GoBubbletea, Lipgloss
RustRatatui
Node.jsInk, Blessed, cliui
PureANSI escape codes
ANSI Escape Codes
\x1b[1m       Bold
\x1b[3m       Italic
\x1b[4m       Underline
\x1b[31m      Red foreground
\x1b[38;2;R;G;Bm  True color (RGB)
\x1b[2J       Clear screen
\x1b[H        Cursor home

Implementation Pattern

  1. Choose aesthetic first (cyberpunk, zen, retro, etc.)
  2. Define palette (2-3 colors + background)
  3. Select border style (single, double, rounded, block)
  4. Create reusable components (panel, table, status)
  5. Apply consistently across all output

Resources

FileWhen to Load
references/box-drawing.mdNeed border character reference
references/ansi-codes.mdNeed escape code reference
references/color-palettes.mdNeed pre-defined palettes

Exit Criteria (Code Verified)

  • Output has intentional aesthetic (not generic)
  • Cohesive color palette used throughout
  • Borders and typography match chosen style
  • No plain text without formatting
  • Anti-patterns avoided

Comments

Markdown supported