Question: I build a Zig-Zag-mechanic from a bone chain and enabled Inverse Kinematics for
the first bone and the whole chain.
When contracted it should look like this: VVVVVVV
Currently it is a straight line of bones like this: ---------------
Now the fun part ;)

How can I force the bones to always build this ZigZag-Pattern if the IK-enabled bone is moved directly towards the opposite of the chain?
How can I force the bone chain into one plane of movement?
How can I force the bone chain to build a half circle if the IK-enabled
bone is not directly moved towards the end of the chain?
The movement of the IK-enabled bone always is in the same plane as the rest
of the bones.
I tried "Limit rotation" but this does not work for me (which either could
mean, that I did something wrong or "Limit rotation" is the wrong tool.

How can I acchieve what I want to do?

Answer: 
By making a Group Node you can easily adjust specific inputs.

1. Go the Node Editor
2. Select all Nodes **except** the Node you want to be flexible, in this case every node except the Color Node
3. Hit Ctrl+G
4. Hit Tab to toggle between the general node view and group node
5. Now you can use this group node in your other materials, and adjust the color per specific material. If you make adjustments to the group node itself it will be applied to all other materials
You can use the Pass Index to discriminate between objects with the same material.

* In Object Properties > Relations, assign a Pass index to each object, between 1 and [ your number of distinct colors ]. You can assign the index to multiple selected objects by right-clicking the Pass Index field on the active object, and choosing 'Copy to Selected'.
* Replace the RGB node in your tree with the nodes illustrated here:

[![enter image description here](https://i.stack.imgur.com/Jxvuk.jpg)](https://i.stack.imgur.com/Jxvuk.jpg)

The Divide is just to map the range of integers to 0.0 .. 1.0 for the color ramp, and the subtract nudges the point to make the tabs in the color ramp easier to place)

[![enter image description here](https://i.stack.imgur.com/CUPuq.png)](https://i.stack.imgur.com/CUPuq.png)

If you need the Pass index for something else, you can drive a Value node from a Custom Property, but that's not quite so convenient to assign.