Don't mind me, I'm just here to toot my own horn!
My solution to this battle problem has always been, "if it isn't going to be used, it doesn't need to exist". As in, every single character of mine learns 6 skills (I have one that learns 7, but his seventh skill is a possible out of 3 choices, and it can even be missed by players). Each skill is unique in some way so as not to just get people casting "the best thing all the time".
I wanted my battles to remain somewhat interesting, so I incorporated some unique flavors to spells and how my skill systems work. At certain junctures, I allow players to "level up" the skill. They complete a quest in the required manner and they are rewarded with the new version of the skill. I completely delete the old version and replace it with the exact same named new version. I then set two major "paths" for each skill. I'm big on customization, so I think it suits the system well. A player can settle on two versions of a "pure" skill, or two versions of "in between" of that skill.
Let me explain:
I have a skill called "Second Wind". It's an Adrenaline Skill and so requires only TP to activate. It costs 10 TP to activate and heals 10% of your HP (it's the only healing skill I have in the game). However, it cannot ever be used on allies, only on yourself. Early on in the game, the 10% HP recovery actually translates to about 2 HP. Fairly worthless early on, right? It's a situational kind of skill. The more HP you have, the more it recovers. Okay, so now you remember you can improve the Skill. It has two major lines of improvement. HP and Defense. If you take it all the way down the HP line, it can eventually heal 40% of your HP at the cost of 50 TP. If you take it all the way down the Defense line it can heal 10% of HP, provide a 50% Defense Buff for 3 turns, and grant Magic Reflect for those same 3 turns. The two lines between those two absolutes are mixtures of the two lines. One of them is 20% HP recovery with a 50% Defense buff for 3 turns and the other is a 30% HP recovery with a 25% Defense buff for 3 turns.
Essentially, it's a skill I want players to use "in emergencies". In fact, that's the whole point of my "Adrenaline" skill line to begin with. They are highly circumstantial skills that could be useful if used properly, and they're so highly diverse that it's worth considering your options.
Second Wind heals the user only and can offer defense buffs.
Battle Cry provides a full party Attack buff that can even buff some of my other attacking stats (like Magic and Speed).
Painless grants the Immortal State at the cost of 80% of your total HP. Immortal State can eventually last upwards of 5 turns, but starts at 2. Or, you can make the state drain less of your total HP.
Last Stand grants a really large single hit swipe at the cost of all your TP and all of your HP. It hits a single target initially for ATK * 4 (ignores defense).
Berserker adds the "Berserk" state which makes Defense practically zero and attack boosted for the duration. You also lose control of the character while it is in effect.
Counter Attack adds state that gives a percentage chance of counter attacking each time the user is hit for a duration of time.
Those are just for my main character. They're highly circumstantial and I want players to think about their uses and not about how to spam them.
My magic spells take on different roles depending on how you want them to work as well. As an example, my "Fire" spell can either be turned into an uber spell with a 1% chance of causing "instant death" on anything not immune to the state or the element or it can be a State Infliction spell which can lay down the "Burn" status with almost every single casting. My "Lightning" spell can either strike a single target more than once or it can strike multiple (random) enemies on the field (up to four). My "Ice" spell can lower enemy speed or inflict the "Frozen" state which makes you weak to blunt weaponry.
I've got a "Magic Knight" that has "weapon skills" he can use. Each Skill can only be used while he has certain weapons equipped. The skills start out as essentially elemental versions of his basic attack. They can be leveled up into "Versatility" Skills or "Support" Skills. Versatility paths let you use more than a single weapon type to cast them (essentially adds a second type) as well as adds multiple strikes (one of the few classes with multi-target abilities). Support paths add weaknesses to the element the enemy was hit with or special nullifying states (like turning Defense to 0 for a turn or two or inflicting Silence and Paralyze).
What I've been doing with my skills is really just filling niches in the RPG roles. I've also been breaking a lot of the "conventional" ways of doing things for certain classes. I want every skill to feel unique so that players are just swapping characters willy nilly because they've got certain stats. I didn't want traditional "Tank, Rogue, Healer, Wizard/Ranger" parties. I wanted players to discover that certain characters had synergy with other characters... or they could have their skills leveled up to provide Synergy with other characters.
I don't want to create a "useless skill", so I work hard on making every skill useful in at least some way so that players will seriously debate on what to use and how to use it. I even did the same thing with "States". I didn't want there to be a useless state. I didn't want someone to go, "Awesome, I've got this Death Spell that kills instantly, but I'd never cast it on a basic enemy and all bosses are immune to it". Instead, I simply made some bosses immune to certain states and susceptible to others. I also removed traditional states that were "overpowered" or "unused" in most RPGs.
The problem most people have with Skills is that there's this weird need to leave players with older versions of the skills. You don't keep a weapon you used at level 1 in an RPG for the boss fight at the end of the game. No, you equip better stuff as time goes on and sell the worthless crap. Skills should be the same way. Skills should also not just be a way for someone with a high magic stat to do damage... Or to force players to play Rock, Paper, Scissors with elements. Skills can be far more interesting and circumstantial and unique!
Skills should always alter the flow of battle, not merely be a way to do a lot of damage in a short amount of time.