A real world example of how http://lovefruitful.com Developers and Desingers collaborate on AngularJS directives to benifit the whole product team.
The way this example uses an isolated scope has since been updated so that the link methods do the setup and ngModel is set as a parent controller using require: '^ngModel' which behaves much better when nesting directives.
We create the number input as type=text, which allows formatting and leading 0s and a cleaner input box then the one you get with the HTML 5 type=number. By using inputmode=numeric and using both native pattern and Angular specific ng-pattern mobile browsers still use the number entry keyboard by default.
As a developer, it's tempting to lean on configuration over semantically sound tags, for instance passing a "currency" format into a number, rather than having a specific currency tag.
Opting for a simpler and clearer currency tag however is a much better choice in the long run and allows you to easily decide to treat currency data differently down the line
Using custom directives to wrap up small bits of functionality scales nicely too, for instance a method to show the password entry as text rather then hidden is only a couple of lines on sign in, but on a password update page it would need three different versions and would likely be in a different controller to the sign in form, so keeping it within the directive allows reuse of even simple functionality easily.