Now that I'm about halfway down this rabbit hole (stair module), I should probably go a bit further. Most stairs need a hand rail:
Additional advanced option: Handrails (Yes or No)
Then the handrail options shall be:
1.) Profile: Circle, Square, Custom1, Custom2 etc... (or any user defined profiles from sub-folder)
2.) Position: Left, Right, Both
3.) Height: 36" (default), vertical distance from tread line to top of handrail.
4.) Size: 1.5" (default), only applicable to circle and square profiles.
5.) Clearance: 1.5" (default), distance from inside edge of handrail to wall (gypsum).
6.) End Treatment: Cut/Vertical/Return (return shown above)
7.) Handrail Material: Default materials and custom materials from library
I think these seven parameters are enough to define a basic handrail(s) for a straight run of stairs as shown. The option to have a vertical end treatment will allow the user to insert newel posts, however I am not really giving the option to customize where exactly the handrail will terminate so there may be some manual editing required.
With regards to manual edits, similar to the wall assemblies, the user can include custom groups or components within the stair assembly group and have them retained simply by including the text "custom" or "CUSTOM" somewhere in the instance name. If the stair assembly is then edited or regenerated by the plugin these custom entities will not be blown away but will maintain their position and properties within the main group. So theoretically one could insert any number of items such as balusters, newel posts, additional molding etc...