Note that the first expected argument to xcopies() is the spacing argument, so you do not need to supply the spacing= argument name. Similarly, ycopies() makes a line of evenly spaced copies centered ...
This file provides functions and modules that construct shapes from a list of cross sections. In the case of skin() you specify each cross sectional shape yourself, and the number of points can vary.