Difficulty:
S+. I wanna be the toughest rival the games have seen. The kind of rival that makes people learn how to actually play the game and build a competent team or face being sent to the Pokemon center every time I show up.
Team Composition:
Something that changes often, with the final team(s) looking nothing like the first team(s) aside from the starter and maybe some other mainstay like an eeveelution or something. A team progression that shows your rival is catching and trying out new and stronger Pokemon, so you should too.
Personality:
Not a dick but not a toothless friendly rival, either. The kind of rival that does their own thing in the region instead of just being the protagonist's drag-along luggage. The kind that'll give the player some hints on optional areas they might want to hit up for some stronger mons and better items while pointing them in the right direction for the story, but only after they've proven that they're already on the right track to improving themselves.
Frequency:
Infrequent. Maybe four or five battles total: Tutorial battle (after picking a starter), some time after gym one, some time after gym three, some time after gym six, something before the pokemon league, and a true-final-boss somewhere in the postgame.
Theme:
Something fun and upbeat. The kind of theme you look forward to hearing, because the player might be hearing it a lot if one of the battles gatekeeps them from making progression and they keep running into the fight like it's a brick wall. Like one of those dance remixes of the gen 3 rival theme.
https://www.youtube.com/watch?v=ZZy3RQD9ZFc