In D&D 3rd Edition, 3.5 Edition, and even Pathfinder, it is ridiculously easy as a player to purposely or inadvertently break the skill system, especially with Diplomacy.
For example: A level 5 Halfling Bard with a Charisma of 18, netting a +4 Ability Score Bonus to all Charisma based checks would have at the bare minimum a +12 to Diplomacy (+4 CHA, +3 Trained class skill, +5 Ranks.) This is discounting the possibility of taking the Skill Focus feat, but even with that the Bard would receive a base of a +15 to Diplomacy! At this point the .5-ling Bard who came up against a CR7 Young Brine Dragon (Bestiary 2, p. 94) would have a Diplomacy DC of only 26 if the Dragon is hostile and a 21 if it is just plain unfriendly. That's the worst case scenario. The Young Brine Dragon is Lawful Neutral, and baring the party from being outright evil, the Dragon is probably indifferent (DC 16). Regardless, with even a fair to middling role, the Bard could raise the creature's attitude quite easily. And this is even discounting the Aid Another ability! If the Bard was a member of a 6 PC party and the other 5 members passed their checks, the Bard would net an additional +10 bonus to the Diplomacy check!
I'm not even talking about a "Min-Maxed" Bard, because then the base bonus would be even higher!
Aside from requiring players to role-play out the Diplomacy fully and disregard all Diplomacy rolls (I know a fair number of DMs, myself included, who prefer either the roll or the role-play and the roll itself) how can this skill be fixed? Diplomacy is a great skill in game, from both a roll and role-playing perspective, and while it is good to be able to haggle, turn enemies into friends, and end potential combats with words, it breaks the game if/when the skill mechanic is abused, purposely or not.
Now, I know that Giant In the Playground had a great but somewhat needlessly complex solution to the problem, but it was just that, needlessly complex. What are some other solutions to the broken Diplomacy skill in 3.0E, 3.5E, and Pathfinder?