Down the line (maybe in 2020) you might want to consider looking at using Tree Notation instead of JSONSchema. Could simplify things quite a bit.
Here's what that might look like, using your example on your Readme:
http://treenotation.org/designer/#grammar%0A%20shapeFormNode...