Skip to main content

CLI Design Considerations

"Traditionally, UNIX commands were written under the assumption they were going to be used primarily by other programs. They had more in common with functions in a programming language than with graphical applications." "Today, even though many CLI programs are used primarily (or even exclusively) by humans, a lot of their interaction design still carries the baggage of the past. It’s time to shed some of this baggage: if a command is going to be used primarily by humans, it should be designed for humans first."

https://clig.dev

  • Standard in/out/err
  • Signals
  • Exit codes
  • Use of config (e.g. YAML, JSON, etc)
  • Anticipant users not using it as you anticipated
  • Designing for composability
  • Output verbosity
  • Whether to use a "top", such as HTop

Guides

Conventions

> mycli --descriptive
> mycli -d

Subcommand Choices

  • netlify functions:invoke
  • netlify functions invoke

Concept of a TUI

TUI stands for Terminal User Interface and basically describes an app that runs in the terminal (in the same manner as a CLI-based application) that has a more interactive user interface.

Examples

Things to consider for a TUI...

Libraries

Great CLIs

Completion