A suggestion for clarifying the text: I was confused about whether "may" refers to choices that the tool developer is allowed to make, or choices that the end user is allowed to make.
For example: "Options can require an argument to be provided. For a long-form options, the argument may be separated from the option name by either white space or '='." Is the idea that the tool should support '=' as an alias for white space, or that the tool choose which form it wants to support? I'm guessing the latter, but I'm not totally confident in that guess. —Dan