Neat!
I like using the shellish package better than doing normal shell scripting. I believe it works on windows also. shellish lends itself to re-using commands after binding them to Haskell names. Binding them to Haskell names gives some additional safety (particularly after having used them once). I suppose you could still try something similar with shqq. The ideal would be for the qq to warn you at compile time if the shell command was valid.

Or at least syntactically valid, but a problem here is that there are many different shells that aren't completely compatible with each other. There are probably practices for how to write portable shell scripts, but not sure how trivial it would be to automate validation of that. Perhaps different quoters could be provided bound to specific shells: