You might also find [https://github.com/c-blake/cligen](https://github.com/c-blake/cligen) interesting. The central insight is that a Nim proc signature (or Python or C++ or any language with default values...) already contains an adequate "spec".
More meaningful per parameter help is about all that is missing, but can be easily "added in" when identifier names & types alone are insufficient descriptions of their purpose. There are other bells & whistles in `cligen` like prefix matching (bridging the gap from short to long options) that might also inspire you.
