Way back when I started on something similar
to this called Class::AutoPlug
. The idea was to be able to transform a class that didn't accept plugins to one that did with the minimum possible amount of code. It did use attributes to add methods, plus pre- and post-hooks for existing or added methods.
It has a number of shortcomings, notably that the plugin installation order is not defined. This makes it difficult for one plugin to re-delegate another, since there's no guaranteed order. It would of course be possible to add this via more attributes, but I moved on to another project; this one languished and has now suffered bit rot - it's currently no longer passing its tests on 5.10 and 5.12. Take a look if you'd like; it's on github here - if it's useful, feel free to fork and play with it. I'd be happy to pull any changes or fixes back.