Documentation here is reasonably good.
Not covered
We have no way that we teach this, though since it can be written as a puppet-language or ruby function, it is somewhat covered by those topics and having actually done one before probably isn't a hard requirement as long as you have the underlying skills