I forgot to bump this, but I have now done pretty much what you want to do with MooseX::Role::Parameterized and MooseX::MethodAttributes.
For a reference implementation, see: http://bugs.musicbrainz.org/browser/mb_server/trunk/lib/MusicBrainz/Server/Controller/Role/Meta/Parameterizable.pm http://bugs.musicbrainz.org/browser/mb_server/trunk/lib/MusicBrainz/Server/Controller/Role/Meta/Parameterized.pm http://bugs.musicbrainz.org/browser/mb_server/trunk/lib/MusicBrainz/Server/Controller/Role/Create.pm I also wrote some documentation at: http://github.com/sartak/MooseX-Role-Parameterized/blob/2132fe392ab9906d6df9be99a9697cf94e2c07de/lib/MooseX/Role/Parameterized/Extending.pod hope this helps! -- Oliver Charles / aCiD2