OK, this just has a hacky feel to me, but I've seen the FAQ and it is officially endorsed.  I had some ideas about factoring this out into a general routine in Ska::Run, but maybe this will be dead code in a year or two and it's just not worth the time.  

You might still factor out the "run a command with stdin, stdout, stderr" part from the JSON handling, and put all this stuff in a separate Starcheck:: module.  In that way you could actually do some unit testing (doesn't have to be formalized) to convince yourself that the error handling actually works.