The CLI is Having a Renaissance
GUIs get all the design love. Dashboards, web apps, mobile interfaces — they have entire teams dedicated to making them beautiful and usable. Meanwhile, CLIs get a --help flag and a README.
That's changing. Tools like gh, railway, turso, and wrangler have shown that a CLI can be delightful. And with AI-powered development becoming the norm, the terminal is more relevant than ever.
What Good CLI Design Looks Like
After building and using hundreds of CLI tools, here's what separates the great ones:
1. Progressive Disclosure
Don't dump every option on the user. The basic command should do the obvious thing. Advanced options exist but stay out of the way.
# Good: obvious default behavior
deploy
Also good: power when needed
deploy --region us-east-1 --env production --skip-tests
2. Helpful Error Messages
Bad error: Error: ENOENT
Good error:
Error: Config file not found at ./config.yml
Did you mean to run this from your project root?
Try: cd my-project && deploy
3. Interactive When Appropriate
If a command needs three pieces of info, don't make the user memorize flag names. Ask them:
? Select environment: (use arrows)
❯ production
staging
development
But also support the non-interactive path for scripts and CI.
The AI-CLI Convergence
Here's what's interesting: AI agents primarily interact through text. The CLI is their native interface. As we build more agent-driven workflows, the quality of CLI design directly impacts agent reliability.
A well-structured CLI with clear output formats, predictable behavior, and good error messages isn't just nice for humans — it's essential for AI agents that need to parse and act on the output.
The Minimum Bar
Every CLI tool should have:
- Colored output that degrades gracefully (respect
NO_COLOR) - JSON output mode (
--json) for programmatic use - Autocomplete for shells (bash, zsh, fish)
- Contextual help — not just global
--help, but per-subcommand - Sensible defaults that work for 80% of use cases
Build for the Terminal Renaissance
The developers who care about CLI design will build the tools that last. The terminal isn't going anywhere — if anything, AI is making it more central to how we work.
Build CLIs like you'd build a product. Because that's what they are.