Designing CLIs people enjoy

A good CLI prints nothing on success and an actionable message on failure. It exits non-zero when it fails so scripts can trust it. It reads from stdin and writes to stdout so it composes.

And it never makes a destructive change without a confirmation or a --yes. The best compliment a tool gets is being forgotten because it just works.

← All posts