It’s probably one of the most obvious types of extensibility – to generate files out of content existing in a SharePoint Site. There are many examples already there available either in SharePoint Designer or the Visual Studio SharePoint development tools. Still there are many things yet to be created. Knowing how to programmatically create a new file in Visual Studio, is the basic thing that you need to know how to do, before you get started with your own extensions.
Generic explorer nodes, like the Features or the Content Types node, weren’t really made to be extended. After all, all they do is to wrap the “real” nodes, so that using the SharePoint Explorer is easier and better performing. Still, there might be situations, when you could want to add some extra functionality to a generic folder node like for example displaying Content Types in groups or grouping Features in Enabled and Disabled.
While extending the Visual Studio SharePoint development tools you might be working on an extension that would be using the fully qualified (4-part) name of an assembly. It could be for example a custom Deployment Step or a MSBuild Task.
If you work a lot with custom assemblies that you reference from your SharePoint Projects in Visual Studio SharePoint development tools, you might want to create an extension that does that automatically for you.
One of the things that I very often needed, while creating Visual Studio SharePoint development tools extensions, was a reference to the current project. No matter whether you want to add a reference or a new project item, a reference to the object that represents the current project is the first part of the solution.