I know this sounds ridiculous, but try fine tuning a small local shell -> plain language model, then using the output of that for whatever you need on your end. You'll get the gist of what the frontier model is trying to accomplish, and can handle it with whatever harness workflow you want.
I'm not sure I follow, can you expand? Why would I want to go from shell to plain language? I don't have a use for an explanation of the shell command.
If this is in relation to removing the need for shell, my idea is more like inspecting common files like Makefile or package.json to extract and dynamically generate tools for the llm call.