Modernizing Command Line Interfaces: A Human-First Design Guide

Command Line Interface Guidelines

Modernizing Command Line Interfaces: A Human-First Design Guide

We created an open-source guide to help developers build better command-line programs by updating traditional UNIX principles for today. Our focus is on human-first design, ensuring tools are simple, composable, and consistent. We believe the command line remains the most versatile part of computing, offering depth and control that graphical interfaces cannot match, and we want to maximize its utility for everyone.

Because people don't understand what computing is about, they think they have it in the iPhone, and that illusion is as bad as the illusion that 'Guitar Hero' is the same as a real guitar.
  1. eikenberry

    > Use a pager (e.g. less) if you are outputting a lot of text.

    If I wanted to use a pager I'd pipe the output to a pager, no pipe to pager means I want it all dumped to STDOUT.

    So annoying.

  2. Grom_PE

    For comfortable reading, I just had to figure out what on this webpage causes Chromium to drop subpixel rendering, and it's not this:

    html { -webkit-font-smoothing: antialiased; }

    it's this:

    #TableOfContents { backdrop-filter: blur(3px); }

    A panel that overlaps content only on narrow screens disables subpixel rendering for the entire text. Thanks Chromium. Not an issue on Firefox, btw.

  3. hankbond

    > Whatever software you’re building, you can be absolutely certain that people will use it in ways you didn’t anticipate. Your software will become a part in a larger system—your only choice is over whether it will be a well-behaved part.

    good advice

  4. inetknght

    Previous discussions:

    - (2024): https://news.ycombinator.com/item?id=39273932

    - (2020): https://news.ycombinator.com/item?id=25304257

  5. jklowden

    Geez, what a lot of vague self-contradictory self-regarding opinionated advice.

    Is terminal a world of “pure information’ or “a mess”? Both, it seems. Don’t dump “pages and pages of debug” text? Check. But do use boldface fonts “in a terminal independent way” and “try” to provide man pages. But because “some people” don’t know about them and “some platforms” don’t support them, provide help text by default.

    Those “some” by the way are one: Windows. Do please enlighten us on the terminal-independent font control system that includes CMD.EXE.

    How much is too much? Their showcase examples are more than 25 lines, more than the default size of a terminal window. The authors don’t give much weight to context, to the ability to look back on over the history of the interactive session. No, much better to splat the screen with 50 lines the user didn’t request, because helpful.

    Oh, and don’t write a filter like cat(1). How the system is supposed to distinguish between reading from standard input and reading from standard input by mistake, they don’t say. Just quit and print a help message.

    I have different advice: please don’t help. Please be quiet. Don’t suggest, don’t guess, dont offer, don’t assume. Just do. Do what the user said. If he wants something else, he’ll say so in time.

    If you want —help to do something useful because you think your user is too dense to find the manual (condescension much?) then invoke it for him. Just maybe put a hint somewhere to press “q” […]

More from this day

2026-07-15