At TriggerSkill::cost, most compulsory skills' code just like this:
return player->hasShownSkill(this) || player->askForSkillInvoke(this)
Reproduce:
When this skill is hidden at EventPhaseStart(Player::Start), you can choose trigger this skill at first. Then it will askForSkillInvoke and surely you can choose cancel because you have not this skill shown.
After this, you can show this general, but this compulsory skill won't trigger again because you have triggered it once.
So you avoided this compulsory skills' effect but showed this general.
I don't if it meets the official rules, maybe it's a bug?