I don’t know how much of this is really “balance” advice, given that’ll be highly dependent on the context they’re in, but I think there’s definitely some best practices.
First of all is that bonuses to “soft” stats, i.e. Hit, Avoid, Crit, and Crit Evade, need to come in much higher amounts compared to say, bonus damage, to feel good. Because the Hit/Miss and Crit rolls are binary, it can be hard to feel out how much a +10 to Hit actually affected the outcome, but a +30 bonus will allow you to feel much more confident that your attack will hit. My rule of thumb is that a +1 to damage or defense is roughly equivalent to a +5 or so to Hit, Avoid, etc.
Furthermore, making skills require the player to meet simple conditions to activate are good. It makes the player feel satisfied for successfully using a skill (even if it doesn’t really effect the outcome), and it allows you to influence the way you want the game to be played. Adding skills that only activate when the player initiates (i.e. Darting Blow, Quick Draw) is a good way to make your hack more player phase focused, for example.
If skills are decided by class, then it’s generally preferable to reinforce strengths as opposed to covering up weaknesses. Making a unit too self-sufficient can incentivize snowballing or low-manning, which is usually undesirable. Exacerbating existing strengths makes a unit excel in a particular field while still needing to rely on others. Weaker classes, i.e. knight and archers, might be exempt from this clause, but only if the weakness is particularly crippling.
At the end of the day, however, creating skills is more of an art than a science. If you’ve got a cool idea for a skill, script it and see how it plays in practice. Playtesting is the ultimate tool in your arsenal for measuring balance.