I'm trying to figure out how to put a constraint on the shoulder bone as shown in the images below. What I'm looking for is a realistic motion where the shoulder moves upward ONLY when the arm bone reaches a high enough angle. The image with the green circle is the position where I want the upward movement of the shoulder to start. I've tried tinkering with the rotational bone constraints but I ran into a couple of problems. The first problem is that I could never get the bone to rotate in the upward direction. The second problem is trying to find the axis behavior that causes the rotation resulting in upward motion. Moving the shoulder bone itself only rotates it in one direction and moving it indirectly with an IK through chain length doesn't change the coordinates of the bone itself.
Try using a Transformation constraint, this allows you to convert a location change into a rotation change.
In the following example I take the Z location of the arm bone with values between -0.3 and 0.3 and convert that to an rotation of the X axis of the shoulder bone from -5 to 5 degrees. Notice in the middle the Z source maps to the X destination.
Looking at your file, I've adjusted couple of things to make its looks good and realistic.
First the IK bone constraint of the ForeArm.L bone, setting the chain length to 3 makes the shoulder bone included in the chain and this is not correct and makes bad deformation as shown below:
change the chain length to only 2 as you don't want the shoulder to be affected and will give a realistic deformation as shown below:
Also once you do that then there will be no need to set an IK constraint for the UpperArm.L bone so you can disable it as shown below:
Below is the updated file where the contraints where updated and the constraint of the UpperArm.L bone was disabled.