Microsoft actually has made a very helpful tool that covers the build-in commands in a few shells (bash, zsh, fish, pwsh, powershell - but not "cmd" or the confusing, almost-the-same-but-surely-it-must-be-different "Windows Terminal").
It does not work for programs in general, as programs are quite free to invent whatever syntax they like for command-line arguments (something Microsoft apparently forgot when giving us %0, %1 and so on, but no way to get the full string, unparsed, making it nigh-on impossible to pass arguments correctly in scripts; this is in fact the problem I'm having at the moment and the reason I stumbled across this page).
MS clearly had developers (and only a subset of us) in mind when designing this thing, because they made it as a node package. If you want to try it you can get node from nodejs.org, install it, then run 'npm install -g @microsoft/inshellisense', then 'inshellisense bind'. Then you're set up, but you still need to press CTRL+a the next time you're in a shell in order to activate it (the above bind command sets up this keyboard shortcut).
It's super useful for the shells that it does supports (and some programs not part of a stanard installation, but very commonly used by devs, such as git), see the animation/demo at the above github page, but I wish they had supported "cmd" as I find PowerShell to be so aeasthetically displeasing I refuse to use it for anything that can be done without it... the incredibly clunky, verbose syntax and endless typing for the tiniest of things is not for me.