Angular JS naming conventions ($, camelCase and CamelCase)

What is the convention in AngularJS for prefixing providers with $? Should I prefix all custom services in my own code?

Looks like all things that come with angular have prefixed services, e.g. $http. Controllers, however, are not prefixed with $ in most articles. Also, all angular code comes with services named in camelCase, however I've also seen CamelCase in many blogs online. Which one is the convention?

The docs state this convention for internal services, but also state you should not do it for your own services to reduce naming collisions.

http://docs.angularjs.org/guide/concepts#angular_namespace

Also, regarding camelCase, the docs say to use camelCase.

Angular uses name-with-dashes for attribute names and camelCase for the corresponding directive name

http://docs.angularjs.org/tutorial/step_00

  1. Use PascalCase for controllers and for functions which return a constructor function that's supposed to be newed, e.g. var user = new User(). Controllers in Angular are viewed as scope constructor functions--thus the PascalCase.

  2. Controllers should have Controller appended in their name. See http://demisx.github.io/angularjs/2014/09/14/angular-what-goes-where.html for naming examples.

  3. Use camelCase for everything else.

These follow important Javascript conventions that dev around the world got used to.