Possible methods to make an armature follow shape keys

I want to finally get deep in to rigging. (of a character so mostly no hardsurface)
I’ve chosen the approach of mixed shape keys for general large movements (with exclusion of limb movement) and any tweaking would be done with bones.
One thing is that I’m not sure how I would go about is making the bones follow a shape key to preserve accuracy of tweaking.

Possible solutions would be:

  • Duplicating the mesh and parenting bones to vertices (probably really inefficient and hard/annoying to change)
  • Duplicating the armature for each shape key and using copy location constraints with drivers to move the actual bones in to place
  • using python to move all bones in to positions of a duplicate armature that matches shape keys

This is my first time doing something like this so… Am I missing something? Or is there already a proven to work way of doing this?

I guess you could look into drivers to have the shape keys control the bones … The thing is, I’ve often done this the other way round, with bones for major movements and shapekeys for minor movements, and with bones driving shapekeys.