The famous Geoshell skinner "jhonen" wrote a nice essay about the Geoshell skinning system.
History, facts and tips...
Here it is...
Ok, I was one of the voices pushing for standardized skin names and a lot of the changes in the skinning format that took place during the last few releases.. I didn't make the changes myself, so the thanks should go to the developer(s), but I tried to supply as many of my ideas as possible to make (since my perspective is that of a skinner, not a developer).. That being said, I also haven't used geoshell in the last 2-3 months (darn computer problems and busy school/life..), so this is as much a test of my memory as it is a run down of the geoshell skin format..
Geoshell skins developed over time.. features have been added and changed as the shell has evolved. Because of that you will see different things included in different skins and I'm going to try to break this down in a way that will help you understand all the different skins you might encounter (as this is extremely useful knowledge to get old skins to work well in new releases as a well as understanding the required and optional elements of a skin).. this is not a pure history of skin development, all items are not organized in the order they were added, but in an order that I think will help new users understand what they see in a skin download or how to put together a good quality skin (notice that skins (bitmaps) are discussed a long time before schemes (reg colors) for instance...)
I should explain one thing about the notation I am going to use in this write-up before I get started.. if the name is in parenthesis that means that the name is not strict.. that being said I've tried to use the most logical names.. if the name is not in parenthesis, then it is a required name...
I have also tried to show file structure and organization and all of these files should be assumed to be located in (C:\program files)geoshell\skins(skin name)\ – please note that they way I have written this it is intened to be an example of my notation as the installation path and the skin name for geoshell are variable.. (never mind the fact that you can actually change the path to the skins folder in the registry...)
The First Basic 3 Files
left.bmp
middle.bmp
right.bmp
In the beginning there were only bitmap files in a geoshell skin, these represent the left gripper, the right gripper and the image that is tiled between the two. In the beginning horizontal and vertical skins had to be located in seperarte folders and the setting in the registry had to be changed when you changed orientation. In very old skin downloads you will see horizontal skins and vertical skins organized in this fashion:
(horizontal)\left.bmp
(horizontal)\middle.bmp
(horizontal)\right.bmp
(vertical)\left.bmp
(vertical)\middle.bmp
(vertical)\right.bmp
sometimes the " horizontal\ " and " vertical\ " folders names were simply shortened to things like " h\ " and " v\ " or the horizontal skin would be in the skin name root and the vertical skin would be located in a folder with a name like " vert\ "
The Vertical Skin is Born!
top.bmp
vmiddle.bmp
bottom.bmp
Since different left/middle/right.bmp were required for vertical and horizontal skins, it didn't seem right to have them named the same. All left.bmp 's were not created equal for instance! The horizontal skins had images that were 30 pixels high and the vertical skin had images that were 30 pixels wide. When vertical geobars were modified in the core, we gained the ability to have all of our skin bitmaps in a single folder!
Gripper Hide Gets Fancy!
hidden.bmp
vhidden.bmp
Gripper hide existed before skins. Originally, if a bar was set to gripper hide it showed the left.bmp when in a hidden state (and still will if you leave out the hidden.bmp or vhidden.bmp file!). As you can imagine, being able to set a different image for the hidden state allowed skinners a lot of new tricks/effects when creating thier skins.. also, it made gripper hide useful to skin users again. Many of us just simply stopped hiding our bars if it made our skins look ugly.. but the hidden images came to our rescue!
Skinnable Seperators
sep.bmp
vsep.bmp
As a combination of geoimage and geosep, one of the recent addition has been skinnable seperators... Geoimage existed before skin support (if my memory is correct) and some early skins were made with seperators intended to use with geoimage.. but if you changed skins you had to change the path to every single seperator.. it made changing skins a lot more time consuming, so most users just kept using geosep (an unskinned seperator plugin). We've moved past that difficulty and skinning has never been better! 
Skinnable Menus
menu.bmp
menusel.bmp
menusep.bmp
Originally skinnable menus were added as a 'experimental hack' of the menu code. Since it was more a test of whether menus could be skinned (given the nightmare that is the menu code...) than a full blown feature, it was added as three keys where you specified the individual bitmaps to use for the normal, selected and seperator states seen in the menus.
Menu skinning was a good experimental feature.. I don't remember a single problem coming out of the addition of those features, but it was a decent amount of time until the menu skinning file structure was 'finalized' in a way that made it easy to switch skins for the bars and menus at the same time (We all like our system to match, right? and We all like to do as little work as possible, right?)
Before menu skin bitmap names were finalized, it is my belief that a lot of users didn't even realize that they could skin thier menus. So you will find that a lot of older skins simply do not contain these files. Those that do probably will need to be renamed in order to get them to work in new versions since they were created, packaged and uploaded before the names became standardized...
Splash Screen
(splash).bmp or splash.bmp
Okay, I don't remember, did we standardize this name? If we did, I'm pretty sure an overide was added where you could set your own splash screen without it being effected by the skin setting..
Splash screens are largely not used or created but can be fun. If you feel like playing with splash screens, I would like to encourage you to take a look at the settings for adding text during shell load to your splash screen – displaying what is currently loading does add some usefulness to a feature that is largely agreed to be purely fluff...
Ebutton Skins
(ebutton folder)\button.bmp
(ebutton folder)\buttonClick.bmp
(ebutton folder)\buttonOver.bmp
Ok.. ebutton support is still 'interesting' to say the least.. I think my description here reflects the first version of ebutton (included in the installer last I knew) and you will have to check the documentation for ebutton2 if you want that version (available from the plugins section last I knew..)
The file names for ebutton skins are standardized but the location of ebutton skins has never been standardized into the skin format and there are some good reasons for this..
Many users create blank ebuttons to go with thier skins, but part of the neat features of ebutton is to create animated buttons where the text is part of the animation - and while ebutton does allow for text overlay, it does not resize based on text length or allow for overlayed text to interact in the animation.. Not only that but text added in image programs often looks better than text added with the overlay option.. these files could exist in the skin's root folder, but if you were to throw a ebutton in the root it should either be blank or a generic button that could serve different purposes.. or maybe a 'start' ebutton..
(ebutton folder 1)\button.bmp
(ebutton folder 1)\buttonClick.bmp
(ebutton folder 1)\buttonOver.bmp
(ebutton folder 2)\button.bmp
(ebutton folder 2)\buttonClick.bmp
(ebutton folder 2)\buttonOver.bmp
...etc...
Because you might want to include ebuttons with different text labels, you might want to include more than one folder for ebutton skins.. or if you wanted to include several ebutton skins, another good way to include them might be like this:
ebutton(ebutton name 1)\button.bmp
ebutton(ebutton name 1)\buttonClick.bmp
ebutton(ebutton name 1)\buttonOver.bmp
ebutton(ebutton name 2)\button.bmp
ebutton(ebutton name 2)\buttonClick.bmp
ebutton(ebutton name 2)\buttonOver.bmp
...etc...
GeoImage Files
(geoimage).bmp
(vgeoimage).bmp
The usefulness of the plugin has gone down over time.. since we now have skinable seperators and since you are able to use ebuttons to pop up menus it may seem strange to include images that will be loaded on bars with no function. That being said, the option still exists and if you can think of a good use for it that would not be better served by either sep.bmp/vsep.bmp or an ebutton skin, then I would encourage you to do so.. but you should remember to create a vertical and horizontal version if needed.. some of us like vertical bars!
(geoimage)(geoimage1).bmp
(geoimage)(vgeoimage1).bmp
(geoimage)(geoimage2).bmp
(geoimage)(vgeoimage2).bmp
...etc...
As with ebutton skins, you can easily add more than one geoimage file to your skin download.. and you can organize them any way you like. I would suggest that you think about a way to make it clear to the user that they are intended for use with geoimage since that plugin and files for it are not 'standard' skin components... that being said, remember that geoimages (and ebuttons) add to the complexitiy of changing skins and that changing these elements are often not covered by skin changing applications..
GeoTray Customization
(trayopen).ico
(trayclose).ico
If you want to get real fancy, you can include your own icons for expanding and collapsing the GeoTray... if you use this feature you will understand how nice it is to have icons that match your skin.. if you don't, you might want to think about the fact that other users do.. while it is not required it can add a lot to your skin... these icons can be changed with the 'Expand Button Close Icon' and 'Expand Button Open Icon' settings in the GeoTray settings key.
While it could easily be done, these files have never had standardized names added to them, so you will want to think about naming them something easy to understand..
(vtrayopen).ico
(vtrayclose).ico
Typically speaking, a open icon points to the left and a collapse icon points to the right.. but this looks strange on vertical skins, so why not include versions that point up and down?
There are plenty of good quality free icon editors available on the net. While I haven't used it in a while, SnIco created by SnideSoft used to be my free icon editor of choice. http://www.snidesoft.com/products.html
Registry Settings and Exports
(settings).reg
There are a lot of settings in the registry that need to be set for a skin to look it's best.. bar and menu colors fall into this category..
Before skin support was added, all we had were geoshell 'schemes' (registry settings that colored geobars) and many parts of the geobar are still effected by these settings... look at the inset areas of bars or at the hover/flash effects if you don't believe me!
The key that is exported in the newest release is HKCU\Software\Geo\GeoShell\ShellUI\Skin if i remember correctly...
(menu).reg
(bar).reg
Before they reorganization of the geoshell settings, it was common to find two .reg files in a skin download.. because bar and menu colors were located in two different keys, it was ususally easiest for skinners to export them seperately..
In order to adapt old reg files for use with new builds it can take a good amount of notepad editing OR a lot of cutting and pasting from the original reg file into your registry. You might want to search the messageboard for information about any points that confuse you..
Additional Files
(readme).txt
This will give you an option to say "I made this" or "go to my webpage" or whatever.. it will also allow you to spell out any strange usage instructions if you are pushing the geoshell skin envelope...
(wallpaper).bmp/jpg
While most users don't think a wallpaper should be included in a geoshell skin, you can choose to include one if you want.. they can choose not to use it..
A high quality jpeg file is probably the best way to include a large image, an image that is meant to be tiled can easily be included as a bitmap without too much increase in the file download time...
Lessons Learned from Litestep Themes
Other things can be included if you felt like it.. shell skins/themes can sometimes start to take on the 'skin suite' feel since they change the overall look of your computer, it can be understandable that many users would want to have other programs like winamp match thier system.
I don't think you should go out of your way trying to skin every skinnable application out there to match your winamp skin.. but if you have a program that you just can't live with out and you have created a matching skin for it, you may want to include it also..
Some users have also included freeware font files in thier skin downloads, though I would suggest including three or four links (some might die over time) in the readme to point to download locations if you want to suggest a font.. unless it is a really small font..