The skeletal structure is the most fundamental part of a rig and so we will create it first. We will actually have multiple sets of bones in some cases. For example, for the limbs we will want the option to control them with either FK or IK. We will thus have a FK joint chain, a IK joint chain, and a third joint chain called the "bind" skeleton that blends the two and ultimately deforms the skin. We will try to keep the different parts of our rig segmented so we can rig it in pieces. The different pieces can then be combined later. This is also useful if we want to replace a piece later on.
A short reminder of Joint Guidelines:
We will now create a joint chain for the spine. Start at the middle of the hips and create 6 more joints, following the general shape of the spine. Rename the root joint cen_root_bind_joint and the other joints cen_spine_1_bind_joint, cen_spine_2_bind_joint, cen_spine_3_bind_joint, etc.
Select all the joints in the Outliner and go to Display → Transform Display → Local Rotation Axes. You will notice that some of the Y axes point forward. We want them all to point backwards and so go to component mode (F9), click the Select Miscellaneous Components button (), and select the Y axes that are pointing forward. Once you have selected them (They should turn yellow), type "rotate 180 0 0" into the MEL command line at the bottom of the window and hit Enter. This should rotate the axes so that they all point backwards now.
Create a new joint chain for the head with joints at the base of the neck, middle of the neck, and below the ear. When creating the first joint, vertex snap it to the last joint of the spine chain. Rename these joints cen_neck_1_bind_joint, cen_neck_2_bind_joint, and cen_head_bind_joint. Make sure all the Y axes are pointing backwards like the spine. Zero out the joint orient of cen_head_bind_joint.
Create a single joint at the base of the mandible and name it cen_jaw_bind_joint. Create two more single joints and place them at the center of each eye. You can do this by selecting an eye then a joint and then using a Point constraint with Maintain offset turned off. Delete the constraint once the joint has moved into place. Rename the eye joints left_eye_bind_joint and right_eye_bind_joint. Parent the jaw and both eye joints under the head joint to place them in the hierarchy.
In the Top view, create joint chains for each of the fingers and the thumb. Move the chains up so that they are inside the fingers. You will have to rotate the thumb chain downward, but be sure to Freeze Transformations on it afterward to eliminate the rotate. Rename the joint chains left_FINGER_#_bind_joint where FINGER is pinky, ring, index, pointer, or thumb and # is the number of the joint in the chain.
Duplicate the left_wrist_pos_joint joint from the arm chain. Unparent it and rename it left_wrist_bind_joint. Parent all of the finger chains under this new wrist joint. Be sure to zero out the Joint Orient of the end joints.