The kind of common event you are looking for should be pretty simple to do.
Just a loop, conditional branches for each skill that may be usable in the random-skill, and loop-breaks whenever a skill got chosen and casted.
This will only properly work if your characters are locked however... like the 1st char always is Actor No. 1. If you want that random ability to work no matter how your characters are grouped you need it in script, yeah.
Gonna try to show it with event code/whatever:
I skipped all "Else" clauses that wouldn't affect the code beside making it less readable.
@>Loop
@>Control Variables: [000#: Random] = Random No. (1...# skills usable by the ability)
@>Conditional Branch: Variable [000#: Random] == 1
@>Conditional Branch: [CharacterX] is [Skill A] learned
@>Force action: Actor No.1, [Skill A], Random, Execute Now
@>Exit Event Processing or Break Loop
@>Conditional Branch: Variable [000#: Random] == 2
@>Conditional Branch: [CharacterX] is [Skill B] learned
@>Force action: Actor No.1, [Skill B], Random, Execute Now
@>Exit Event Processing or Break Loop
.....
@>Conditional Branch: Variable [000#: Random] == # skills usable by ability
@>Conditional Branch: [CharacterX] is [Skill Omega] learned
@>Force action: Actor No.1, [Skill Omega], Last Target, Execute Now
@>Exit Event Processing or Break Loop
: Repeat Above (Until a usable skill has been randomly selected and executed, at which point the Event or Loop will stop processing and the battle should then proceed as normal.)
Now I lost track of where I placed that new event on my map... x_x
Hope this helps.