A skin can:
Set a new sprite/name/description
Remove and/or modify weapon slots
Remove engine slots
Add/remove built-in hullmods and weapons
You cannot directly change the bounds of a ship through skins,
however through a simple script you can alter the bounds of a ship as it enters combat, and only needs to be done once. Need to wait for 0.65 to fix a bug the clearing of the bounds first though.
You can also add weapon slots as noted above. So what you might want to do is this:
1. Create your base ship
2. Create your your modules as separate 'decorative weapons'
3. On each skin add their respective 'decorative module' module as built-in weapon
4. Add additional weapon slots as needed in the skin definition
5. On each decorative module create an EveryFrameWeaponEffectPlugin
5a. This plugin can derive what the *new* bounds are supposed to be for the ship based upon the name of the weapon for instance, or the hull/skin name
5b. Once the correct bounds are chosen, the old ones are cleared and the new ones are applied, this is done only once.
An option B would be to just have the new merged/new sprite attached to the skin, but still use an invisible weapon with the EveryFrameWeaponEffectPlugin that changes the bounds of your ship in the first frame of combat. It would work either way.
So is what you're asking for entirely possible with Skins? Absolutely!
I could probably get this script working fairly quickly as I've been working on something using the same methodology, but yeah, bugs in the BoundsAPI.Clear() preventing it from working right now in 0.6.2.
I could probably knock out the script today, but yeah I'll add it on my to-do list for 0.65 and make it publicly available. So yeah, start planning for this and making sprites and assets if you want to do it this way. Though honestly I'm not sure what is the real difference between simply making another ship and making a skin with a bounds changing weapon script.