With all the discussions and arguments we had over the CLI database these past months, it has always been at the back of my mind to figure out what's the best way going forward. A nagging feeling I've always had is the current mainline database format is not very suitable for CLI apps for so many reasons that I shall not detail here.
A long time ago, I made a little app called Media Cookbook that never really attracted much attention. However, I have found it useful enough to be using it even today (I also add use doskey to automate common CLI tasks). But I have always been keenly aware of its inadequacies (eg. too much work to add minor variations of a task), but I find a recipe-based approach is still very attractive for me.
Then last evening it hit me. I think what is needed for the CLI site is not an app-centric database, but a recipe-centric database. Let me explain.
A recipe is simply a short description of what you are trying to achieve, and the CLI for doing it. So for example:
Add subtitle to MP4 ffmpeg -i <infile.mp4> -i <infile.srt> -c copy -c:s mov_text <outfile.mp4> Remove execution permission for all files in given folder icacls <folder> /deny <User>:(CI)(OI)(X) /t Replace text in file sed -i 's/<oldtext>/<newtext>/g' <file.txt> -o <file.txt> awk '{sub(/2019/,2020); print . "<file.txt>" }' file.txt Download YouTube video youtube-dl "<video-url> |
Note that "ffmpeg" in the first recipe is optionally linked to the version I used successfully for my recipe. The system can automatically compile a list of all the ffmpeg's in the system and show the full list with an optional button, so this solves the problem of curating different versions of a CLI tool.
The search function will return a list of matching titles, so searching for "youtube" or "video" will return "Download YouTube video" and all matching titles/recipes. So surfacing the right recipes is pretty straightforward and could be made as targeted as you want.
For contribution, one can add a new CLI for the recipe eg. "Add subtitle to MP4", so the latter can have multiple CLIs for performing that function, which can then be voted upon. Or one can create a new recipe altogether if none of the existing ones match the new function.
Note that a recipe can mash together multiple CLIs, or could even be a Powershell script. The only constraint is the target function should be as single-purpose as possible (I believe the technical term is "orthogonal") , so no "I wrote this script that can juggle 4 balls, eat lunch and perform squats at the same time".

The database does not need to be comprehensive. The key idea is having problems that are worth solving, the CLIs to solve them, and the right args to use. CLIs are different in this regard to GUIs. Most of the time, you need to mash a number of different args from different recipes to do what you want.
The major difference of this approach is that the focus now is _not_ on new versions of CLI tools, but new recipes. A recipe can indicate that it only works with > certain version because of a new arg etc. The front page will list new and updated recipes instead of new versions of CLIs.
OK, that's about all that I have at the moment. Roast my idea pls!