If you want to contribute to Contraptor framework by developing components, you should read this. It is assumed that you're already familiar with Contraptor basics.
If the set doesn't have what you need, you can design a custom component that will work for your particular situation. Alternatively, you can design a component that could be used in many situations. These are basic guidelines for designing construction set components. A good Contraptor component would be:
The component should be unique for what it does and work well in all scenarios where it would be used. The rationale behind this is keeping the set small. A new component that performs essentially the same function as an existing component, but is better in some situation-specific sense, would quickly bloat the set.
For example, if for some reason you need the drive shaft to be located on the grid line (as opposed to the center of 1" cell), it is better to design a universal 1/2" step adapter than a shaft mount with 1/2" step, which would be incompatible with the existing drive system components.
Since hardware upgrade is a lot more resource- and energy-intensive than the software upgrade, backward compatibility is one of the important considerations in Contraptor framework. The new components should be designed to work with existing components. If the new component is meant as a better replacement for another component, it would be expected to work everywhere where existing component works, and provide a compelling reason to throw away the existing component in favor of the new one. The idea is to try to use existing components first.
For example, properly positioned lead nut assembly (which was originally designed to fit inside the sliding element), has a 1/8" gap to the nearest angle to which it can be attached (when mounted outside of sliding element). A redundant lead nut mount could have been designed, but simply using 10-24 hex nuts to fill the gap fixed the problem.
The idea here is that no precision machines should be required to make the component. In most cases this means that the design should be tolerant to errors (up to 0.03").