Here's a quick idea I threw out for a possible new UCL config menu. Sorry for my terrible penmanship.

The top part is the group configuration. You start by choosing a group (or creating, removing) on the left, users in the group are shown on the right with the ability to add and remove from there too. In the middle is every possible access flag. There's a checkbox to enable/disable access to the specified permission, and the 'more' button.
The menu you get when you click the 'more' button for 'ulx ban' is shown on the bottom of the page. It starts by showing you the command format and then going into specific configs for each parameter. In the case of the first arg, you can specify that the group is allowed to target immune players with this command, or specify groups they can target. The second arg is a little more exciting in this case, where you can constrain the range of time this group is allowed to ban someone. The checkboxes show whether they are constrained to that number or not (how else do we allow infinity?).
Don't let this scare you from a programming aspect though, I've thought it through and I think it would be fairly simple to program. Specifically, if we go with the method I proposed earlier where we're specifying the args a command can take like this...
cmd = NewCommand( "ulx slap" )
cmd:SetFunction( ulx.Slap )
cmd:SetParam{ arg=1, type=PlayerArg }
cmd:SetParam{ arg=2, optional, type=IntArg, max=100, min=0 }
cmd:SetParam{ arg=3, optional, type=BoolArg }
It all becomes a simple matter of having the types (PlayerArg, IntArg, BoolArg, etc) take care of menu generation, config loading/saving/validation, etc. The menus would all be generated using the information we're already specifying in the code.
Thoughts?
EditSorry about the image, my computer is showing it rotated perfectly, not sure why it's not showing right here...