MooseX::Attribute::Prototype is a Perl module that implements attribute prototyping -- the practice of borrowing an attribute from a role and optionally overriding/extending the attribute definition. This is This works very similar to Moose's native attribute cloning, but allows for additional benefits such as changing the name of the attribute and the abstracting of attributes into roles.
Attributes are very often designed as objects that have their own types and methods associated with them. MooseX::Attribute::Prototype takes a very pragmatic view of attributes. They are the fundamental building blocks of a class. This module promotes a more natural reuse of attributes.
When your attribute includes a prototype specification, the attribute is copied from the role and attribute. In many situations, all you will want is declare a prototype. All current specifications override those provided by prototype.
has 'my_attr' => (
is => 'rw' ,
isa => 'Str' ,
prototype => 'MyRole/my_attr' ,
has 'my_attr_2' => prototype => 'MyRole2/my_attr_2';
has 'my_attr_3' => prototype => 'MyRole3'; # Same as 'MyRole3/myrole3'