The definition of yak shaving seems totally wrong to me. I always understood it to following way (as an example):
1. You need component X to carry out the original task
2. To get component X, you need to do something else
3. Several steps of recursion later, you end up shaving a yak - an activity that's unrelated whatsoever to the original task, but is still a dependency.