π€ About the benefits of cli
Since a few years now, we started to design various cli
for internal batch usage, on our Java Stack on top of picocli
and quarkus
, delivered as images, and run on podman
.
Our goal was to :
- Avoid as much as possible to write unnecessary documentations : each tool should describe himself according to a common pattern
- Rely on the best possible practices
- And overall : deliver a consistent first-class UX to OPS
Therefore I started to read and follow the following site to follow the best possible guidelines :
cli-guidelines
/
cli-guidelines
A guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
Command Line Interface Guidelines
An open-source guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
This is the source code for the guide. To read it, go to clig.dev.
Join us on Discord if you want to discuss the guide, or just chat about CLI design.
Contributing
The content of the guide lives in a single Markdown file, content/_index.md. The website is built using Hugo.
To run Hugo locally to see your changes, run:
$ brew install hugo
$ cd <path>/<to>/cli-guidelines/
$ hugo server
To view the site on an external mobile device, run:
hugo server --bind 0.0.0.0 --baseURL http://$(hostname -f):1313
License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
π― Our Go
(al)
On my very own side I gave a try during a hackathon to Go and goreleaser
:

β³GitHub Copilot 1-Day Build Challenge : eol, a tiny Go client to manage eols
adriens γ» Jan 11
Then, I wanted to bring my team to the Go experience at the office as sometimes we need to deliver apps to systems on which we don't want or can't install new softwares : so delivering a static binary thanks to Go and goreleaser
seemed a good option for effortless cross-compilation... and of course build the best possible UX
thanks to Cobra.
So I used this opportunity to sharpen our skill with my team :
And...
Build the best possible
cli
of our dreams to sendsms
from a terminal and see what we can deliver and learn from that.
πΏ v1.0.0
brew
unboxing
π The story behind the product development
As I always say to my team & student, always "Start with why" :
After having drafted my ideas :
Here are the motivations that kept us on track :
Do things extremely :
- π§© Interoperable
- π«΄ Easy to integrate for anyone (even on legacy systems)
- β‘ Efficient
- π¦₯ Useful : make people save time, ie. make more with less effort
- π¦ Easy to deliver and install
- π€© Beautiful
- π Fast to build : for an improved Time to market
- π’ Fast to (learn to) use
- π‘ Inspiring for us and others, eg. create new business opportunities ideas
- π Desirable : people should feel the desire to use the product and feel joy while using it
- π§βπ€βπ§ Create new relationships with people and discover new practices
π What's next
Next, we'll focus on showing and sharing the benefits :
- βΎοΈ Continuous delivery tools and automation
- πΌ New ways of documentation with next-gen tools
- π‘οΈ Security (beacause it always matters)
- π¦Έ One liners (because they're both a cool and efficient way to get things done)
- π§ Classical linux tools
- π General IT Culture
- π§βπ¨ Creative product design and development
Hopefully you'll like it as much as we do...and will engage yourself on the same kind of way : the #learnbydoing
journey π€
Top comments (2)
Kudos @supervinh @mbarre @draks898
Nice work!