For instance if my plugin is creating a form on a page, what can I do to make it as easy as possible for theme developers to skin the form too?
First of all, provide a well-formed default HTML form. Use
Provide a filter that allows developers to tweak the default form.
To go even further, you can allow developers to completely rewrite the form output to their likings by allowing them to provide a custom form template file within a theme.
Have a look at the
In general, less is more, i.e. do no styling besides adding WP standard classes. If your plugin is to blend in, it should look like the rest.
However, if you have sufficient reason to believe that your plugin's output should be styled differently than the rest of the site (i.e. if you add a distinct visual feature), you can add -- besides the standard classes -- your own class names to the elements you create. Stick to as few classes as possible as high up in the hierarchy as possible, e.g.
is better than
Then, users can create a child theme of their main theme in whose CSS they can add styling information for your elements.
(I actually used to think that plugins should provide options to style their output but I changed my mind. Separation of concerns should be applied here: you create (reasonable) output, users style if they want to.)