In combat, you can just parse the page looking for the skill id in the dropdown menu as a more failsafe method. That's what I did, since I wasn't sure how have_skill() worked 1) with skills granted from equipment/familiars/etc, or b) when your character has a skill but doesn't actually have it available at the moment due to birdform, lack of proper equipment, or somesuch. It seemed a much simpler way to deal with it.
Of course that wouldn't work as well predictively, so YMMV.