If you have suggestions about conditions that would allow the system to ask "is X pending", that would be a great boon to me.
It depends on the implementation. You can store all these skills in some data object, like an array or JSON. In this case you can read the array/json in a loop and check the "pending/completed" value of every record. If you decide to go this route, I strongly suggest JSON.
Another option (which is less 'professional' but is actually easier to do in Construct) is to use a sprite with instance variables. Say, if there are 20 different skills in the game, you can put 20 instances of SkillSprite on the layout. They will only be used as data storage and can be invisible. For each SkillSprite instance you define a bunch of variables, for example SkillType=magic, IsSelected=true, IsProcessed=false, Priority=1 etc. Then in your functions you can easily filter and pick these instances. For example, this block of conditions will pick the next pending magic skill:
SkillSprite compare value SkillType="magic"
SkillSprite compare value isProcessed=false
SkillSprite pick by highest priority