Here are some ideas regarding setting actions in qgit, these would mostly make working with actions very powerful - so they are not meant to be very specific, but only meant to be "enablers" for more high level implementations on top of them:
-> allow users to specify a "context" for their actions, i.e. to indicate when the action should become available - valid contexts could be specified as attributes for currently selected items, for example: "is_master", "is_branch", "is_tag" etc. - some actions might also be applicable in certain circumstances, this would help enable the UI to associate actions with such attributes, to interactively enable/disable certain actions depending on whether they have the corresponding attribute set or not - attributes would then be dynamically communicated from qgit to its actions for each active selection.
-> expose item-specific data via variables to the action dialog, so that UI details for an item may be accessed using a variable to reference it in an action, for example to get the SHA1 id/hash of the active selection and access it from an action, there could be a $SHA1 variable exposed in the actions dialog, likewise other commonly available info for each commit could be exposed via such fields - for example the commit date, author name, author email: $COMMIT.DATE, $COMMIT.AUTHOR_NAME, $COMMIT.AUTHOR_EMAIL - by exposing such meta information to actions, these would become highly configurable and could neatly integrate into the UI, without actions just being "dumb scripts".
-> allow users to specify if the action should be made available via a context menu or just a toolbar button (or possibly also both?)
-> allow users to associate a custom icon/symbol with their actions (mostly useful for the toolbar)
-> allow users to provide tooltips/descriptions for their actions
Thanks for considering these ideas
All the best from Germany