I don't have a program at the moment. The layout I currently use is in the codebase, starts here: https://github.com/akavel/clawtype/blob/96980f68427eb1089112... Personally, I just edited this layout description into a more compact form and printed it on a sheet of A4 paper as a cheatsheet. I do intend to make this aspect more scriptable, but didn't get to it yet.

For learning, I personally just try to slowly code simple hobby things in vim, with the cheatsheet in the other hand... I tried to make the layout relatively intuitive wherever I could. I also patiently went through all the possible combinations of presses, and tried to group them into categories of easy<->medium<->hard<->impossible, then tried to put esp. the more frequently used keys on the easier combinations/chords.