In fact I would say use per-action , don't use shared.
If you have a big team using per-action will add flexibility of being able to work independent. If you use shared this means the scripts couldn't be edited by more than one employee at the same time.
"I realize it's an error, but no one is going to try to do that!"
From "Top 10 Stupid Comments from Developers".
And I would say don't use actions(use function libraries as actions) and use a per page/function shared object repository rather than one big one per site/appplication. And also load that dynamically rather than associating with tests.