A button for each of your skills, hidden, unkeybound, named SkillName.
A button for each of your macro's, including whatever checking you feel inclined to include (for instance MyMacro1 /castsequence reset=1 MMSteadyShot, MMAutoShot)
You could then use your limitted "macro" space within the default macro area to create other macros that reference the above in a way that fits your preference, to wit:
/click [button:2]MyMacro 1;[button:3]MyMacro2;[Harm]MMSilencingShot;[Help]MMMendPet
You can of course shorten all of those "button names" (MyMacro1, MyMacro2, etc) quite a bit, and if for some reason you required even more code in a single macro you could further abstract them by moving them to their own button and using just a simple /click MyGiganticMacroOfAbsurdity as your "blizzard macro".
The secure buttons can be logically combined so that you can have a macro of whatever length you're interested in, and as a side benefit you can hide the buttons which provide minimal useful feedback. They also have a benefit in that they allow you to reuse common logic without retyping it.
For instance, as a caster, I use:
/stopcasting /run SetCVar("Sound_EnableSFX","0") /use 14 /stopcasting /script UIErrorsFrame:Clear() /run SetCVar("Sound_EnableSFX","1")
In a few of my macros, to toggle a +dmg trinket without providing error feedback when it's on cooldown. (Lifetap, and curse of doom)
Make more sense?