Explanation for how to create custom plugins