If you haven’t figured it out by now, I really enjoy making things. At the beginning of summer, I accidentally made a new CLI while talking with Google Gemini. I initially used Google Gemini to improve a few bash scripts I wrote 8 years ago. The results were pretty great. Then I had the idea, “What if I use Google Gemini to combine many of these random bash scripts into a new bash CLI?”. A few conversations later, using just my phone, and I had a very usable CLI.

_do
.Smash enough bash commands into a single script and you’ll have a powerful CLI. 💪
What started as a fun and quirky little AI-generated project turned into a very real and useful CLI. After two weeks creating _do
, it had me rethinking my current CaptainCore toolkit. Anything can be written in any language. Yet the tricky part is knowing which parts should be put into which language. After loading bash scripts like backup and migrate, I attempted to extract complex features from CaptainCore into _do. Those advanced features are:
- CaptainCore Quicksaves: These are lightweight file revisions powered by
git
for themes and plugins. They enable easy rollback to any previously installed version. I recreated them as_do checkpoint
. - CaptainCore Longterm backups – These are very efficient backups stored on a B2 bucket, deduplicated and compressed in a
restic
backup repository. I recreated them as_do vault
.
Pushing more functions from CaptainCore toolkit over to _do
means that more of my WordPress maintenance services can run directly on the WordPress site over SSH rather than relying on my WordPress maintenance server.
CaptainCore _do
is a 100% bash script using all of my favorites: WP-CLI, rclone
, restic
, git
and gum
.
The most common question I’ve received is “Isn’t this just WP-CLI?”. Yes and no. There is a difference between running a WP-CLI command and running a script which runs many different WP-CLI commands. Anyone who has written a thousand-line bash script knows what I mean. WP-CLI is powerful. I use it everyday. That doesn’t mean that every WordPress maintenance related task needs to be a WP-CLI command. It’s okay to still write bash.

Using gum
as a TUI for interacting with bash scripts.
Gum by Charm is a great way to improve interactions over the command line. It makes things like filling out fields, selecting from a list of choices, and confirming actions enjoyable. Here are a few examples from _do
showing these interactions.







If you want to learn about _do
, just head over to GitHub: https://github.com/CaptainCore/do.