possible vim leader key work-around?

You can easily do what you want. There are three parts to it: multi-key / prefix mappings, custom commands, and <Space>.

A simple example shows that multi-key mappings work: do :map \g G, then press \g.

The catch is that <Space> is already mapped to l, so maps like <Space>x have no effect until you unmap the default (known issue).
I recommend you use the following:

CodeMirror.Vim.unmap('<Space>');
CodeMirror.Vim.map('<Space><Space>', 'l');

Then add your custom maps after.


The fun part - your custom command. Did you know you can map to an ex-cmd, e.g. :map \s :s/\[\s\]/[x]/g? Unfortunately you can’t chain ex-cmds by adding <CR>. (You can make a mapping for each part, then a map to chain those maps…)

For custom commands you can use either defineAction or defineEx, the main differences are in how easy it is to map and how args are handled. To do what you asked, you’ll probably want to use handleKey and handleEx:

const { Vim } = CodeMirror;
Vim.unmap('<Space>');
Vim.map('<Space><Space>', 'l');
Vim.defineAction('githubMdCheckbox', (cm, args) => {
  Vim.handleEx(cm, 's/\[\s\]/[x]/g');
  Vim.handleEx(cm, 'nohls');
  Vim.handleKey(cm, 'h');
  Vim.handleKey(cm, 'j');
  Vim.handleKey(cm, 'j');
});
Vim.mapCommand('<Space>s', 'action', 'githubMdCheckbox');

If you need to pass args to your action, that’s the 4th argument on mapCommand. Its an object that get cloned and there are a few default keys to watch out for: repeat, repeatIsExplicit, registerName, selectedCharacter. If you want to limit it to Normal mode, add a 5th arg {context: 'normal'}.

Ex-cmds also can work on a range, so give that a try too. Good luck!