I had a concept with my main game regarding this. Essentially every enemy will always have a class and subclass (just like the players). They'll have access to the same skills the players have and, if they have any that the players don't have, those unique skills can be learned (either by crafting a piece of equipment or stealing it using the Spellthief class)
They'll always appear in groups of 1-4 (the player party size) unless its an ambush (whereupon it will be 4-8).
Such things will give a player who has never even seen a monster before an intuitive feel for what the monsters can do just by observing other clues. It'll also let the player see certain combinations of skills (that they can use) being used as combos against them. However, I'm concerned that such things might get stale if you can always guess what you will be fighting by observing the clues.
This might be exacerbated by the fact that the game, as I've planned it, has no boss battles (only rare "mini" bosses).
That said, I'm considering giving one of the monsters (the slime) a "Fusion" ability, allowing them to merge with an enemy to give them a big buff. Slimes are essentially the larval form of elemental monsters (stagnant elemental energy + life force = slime which then evolves into the other elemental forms) so it would make sense... but the players wouldn't be able to gain access to this ability.
Would having every other ability in the game be learnable save for this one make players question it? My intention for including it was for it not only to make for an engaging fight but also for the sake of world building (the fusion ability, when done between 2 slimes, will cause a new monster type to emerge, showing the player how the elemental enemies are born).