Agent skill

cli-ux-designer

This skill should be used when the user asks to "design a CLI", "improve command structure", "format terminal output", "review CLI usability", "design help text", or "add flags and arguments". Automatically activates when designing new CLI tools, improving command interfaces, formatting terminal output, or reviewing CLI usability. Not for GUI/web design, backend APIs, or shell scripting.

Stars 10
Forks 1

Install this agent skill to your Project

npx add-skill https://github.com/sjungling/sjungling-claude-plugins/tree/main/plugins/cli-developer/skills/cli-ux-designer

SKILL.md

CLI Design Guide

Expert CLI design consultant specializing in creating exceptional command-line interfaces. Design, review, and improve CLI tools by applying comprehensive design principles and patterns.

When NOT to Use This Skill

Do not use this skill for:

  • GUI/web interface design
  • Backend API design (unless CLI tool interacts with it)
  • General UX design outside command-line contexts
  • Programming language design

Core Expertise

Core design principles to apply:

1. Reasonable Defaults, Easy Overrides

  • Optimize for common use cases while providing customization options
  • Use flags to modify default behaviors
  • Consider what most users need most often

2. Maintain Brand Consistency

  • Use platform-specific language and terminology
  • Mirror web interface patterns where appropriate
  • Apply consistent visual styling (colors, states, syntax)
  • Use sentence case, not title case

3. Reduce Cognitive Load

  • Include confirmation steps for risky operations
  • Provide clear headers for context
  • Maintain consistent command patterns
  • Anticipate user mistakes and next actions
  • Design for accessibility

4. Terminal-First with Web Integration

  • Keep users in terminal when possible
  • Provide easy paths to web interface when needed
  • Include --web flags for browser actions
  • Output relevant URLs after operations

Command Structure Expertise

Ensure commands follow this consistent pattern:

tool <command> <subcommand> [value] [flags] [value]
cli issue view 234 --web -
cli pr create - --title "Title"
cli repo fork org/repo --clone false

Components:

  • Command: The object to interact with
  • Subcommand: The action to take on that object
  • Flag: Modifiers with long version (--state) and often shorthand (-s)
  • Values: IDs, owner/repo pairs, URLs, branch names, file names

Language Guidelines:

  • Use unambiguous language that can't be confused
  • Use shorter phrases when possible and appropriate
  • Use flags for modifiers of actions, avoid making modifiers their own commands
  • Use understood shorthands to save characters

Decision Frameworks

Use these when making CLI design choices:

Flag vs. Subcommand:

  • Flag: modifies HOW a command runs (--verbose, --format json, --dry-run)
  • Subcommand: defines WHAT action to take (issue create, pr merge)
  • Rule: if it changes the action, it's a subcommand. If it changes the behavior, it's a flag.

Interactive vs. Non-interactive:

  • Default to interactive when: user is exploring, multiple choices needed, destructive action requires confirmation
  • Default to non-interactive when: command is commonly scripted, output is piped, CI/CD context
  • Always: provide --yes/-y to skip confirmations, --no-input to disable all prompts

Output Format:

  • Human-readable (default): colors, tables, summaries when stdout is a TTY
  • Machine-readable (piped): no colors, tab-delimited or JSON when stdout is not a TTY
  • Explicit: --format json|table|csv flag to override detection

Error Handling:

  • Exit code 0: success
  • Exit code 1: general error
  • Exit code 2: usage error (wrong flags/args)
  • Always: error message to stderr, suggested fix when possible

Visual Design System Knowledge

Typography

  • Assume monospace fonts
  • Use bold for emphasis and repository names
  • Create hierarchy with spacing and weight
  • No italics (unreliable support)

Color Usage

Apply the 8 basic ANSI colors:

  • Green: Success, open states
  • Red: Failure, closed states
  • Yellow: Warnings, draft states
  • Blue: Information, links
  • Cyan: Branch names, special identifiers
  • Magenta: Special highlights
  • Gray: Secondary information, labels
  • White/Default: Primary text

Guidelines:

  • Only enhance meaning, never communicate meaning solely through color
  • Consider users can customize terminal colors
  • Some terminals don't support 256-color sequences reliably

For complete ANSI color codes and escape sequences, see ./references/ansi-color-reference.md.

Iconography

Use Unicode symbols consistently:

  • Success
  • Failure
  • ! Alert
  • - Neutral
  • + Changes requested

Consider varying Unicode font support across systems.

For a comprehensive list of CLI-friendly Unicode symbols, see ./references/unicode-symbols.md.

Component Pattern Expertise

Lists

  • Use tabular format with headers
  • Show state through color
  • Include relevant contextual information

For a complete list view example, see ./references/examples/list-view-example.txt.

Detail Views

  • Show comprehensive information
  • Indent body content
  • Include URLs at bottom

Prompts

  • Yes/No: Default in caps, for confirmations
  • Short text: Single-line input with autocomplete
  • Long text: Multi-line with editor option
  • Radio select: Choose one option
  • Multi-select: Choose multiple options
  • Always provide flag alternatives to prompts

For an interactive prompt example, see ./references/examples/interactive-prompt-example.txt.

Help Pages

Required sections: Usage, Core commands, Flags, Learn more, Inherited flags Optional sections: Additional commands, Examples, Arguments, Feedback

For a complete help text example, see ./references/examples/help-text-example.txt.

Syntax Conventions

  • <required-args> in angle brackets
  • [optional-args] in square brackets
  • {mutually-exclusive} in braces
  • repeatable... with ellipsis
  • Use dash-case for multi-word variables

Anti-patterns

Avoid these common CLI design mistakes:

Anti-pattern Better Approach
Deeply nested subcommands (tool group sub action) Max 2 levels: tool command [flags]
Inconsistent flag naming (--no-color vs --disable-colors) Pick one convention and apply everywhere
Interactive prompts with no flag alternatives Every prompt must have a --flag equivalent
Cryptic error messages ("Error: 1") Include what went wrong, why, and how to fix
Silent failures (exit 0 on error) Non-zero exit codes for failures, stderr for errors
Missing --help on subcommands Every command level should have help
Mixing stdout data with status messages Data to stdout, progress/status to stderr

Technical Considerations

Script Automation Support

  • Provide flags for all interactive elements
  • Output machine-readable formats when piped
  • Use tabs as delimiters for structured data
  • Remove colors/formatting in non-terminal output
  • Include exact timestamps and full data

Accessibility

  • Use punctuation for screen reader pauses
  • Don't rely solely on color for meaning
  • Support high contrast and custom themes
  • Design for cognitive accessibility

Success Criteria

Recommendations are successful when:

  • Commands follow consistent patterns across the tool
  • Help text is clear with useful examples
  • Visual hierarchy guides users naturally
  • Both interactive and scriptable use cases work
  • Accessibility requirements are met

Expand your agent's capabilities with these related and highly-rated skills.

sjungling/sjungling-claude-plugins

git-bisect-debugging

This skill should be used when the user asks to "find which commit broke this", "debug a regression", "bisect to find the bug", or says "this used to work". Automatically activates for performance regressions, test failures that appeared recently, or any issue known to have worked at a previous commit. Can be invoked from systematic-debugging or used standalone. Not for general debugging without a known-good commit or regression history.

10 1
Explore
sjungling/sjungling-claude-plugins

structured-logging

This skill should be used when the user asks to "analyze data with SQLite", "query logs", "find patterns in test results", or "correlate errors across files". Automatically activates when parsing large output (>100 lines), correlating data from multiple sources, tracking state across operations, aggregating results (counts, averages, grouping), or querying the same dataset multiple times. Not for tiny datasets (<50 records) with a single simple query.

10 1
Explore
sjungling/sjungling-claude-plugins

tmux-aware

This skill should be used when the user asks to "start a service in tmux", "check tmux pane output", "manage background processes", or "run a server in a pane". Automatically activates when running in a TMUX session (detected by SessionStart hook). Not for one-off commands that do not need a persistent pane.

10 1
Explore
sjungling/sjungling-claude-plugins

ios-swift-expert

This skill should be used when the user asks to "build an iOS app", "create a SwiftUI view", "fix Xcode build errors", "implement Core Data", "design app architecture", or "optimize Swift performance". Automatically activates when working with .swift files, Xcode projects (.xcodeproj, .xcworkspace), SwiftUI interfaces, or Apple platform frameworks (UIKit, Core Data, Combine, WidgetKit, App Intents). Not for cross-platform frameworks (React Native, Flutter), non-Apple platforms, or backend server development.

10 1
Explore
sjungling/sjungling-claude-plugins

obsidian-vault-manager

This skill should be used when the user asks to "manage Obsidian vault", "create a daily note", "move notes without breaking links", "search vault content", or "organize Obsidian notes". Automatically activates when working with Obsidian vaults, markdown notes with [[wiki-links]], daily notes, templates, or tags. Not for general markdown editing outside Obsidian vaults.

10 1
Explore
sjungling/sjungling-claude-plugins

technical-writer

This skill should be used when the user asks to "write a README", "create API documentation", "draft release notes", "write a tutorial", "structure documentation", or "review docs for clarity". Automatically activates when working with .md files in docs/ directories, README files, or when discussing documentation structure, style guides, or content organization. Not for creative/marketing writing, academic papers, code comments/docstrings, or internal chat.

10 1
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results