seems somewhat illogical to store an identifier on each skill,

if you need to use parent for anything else, store handles in the skills

Code:
#define ally skill5
ENTITY* get_ally(ENTITY* e){
	return(ptr_for_handle(e.ally));
}

void set_ally(ENTITY* e, ENTITY* a){
	e.ally = handle(a);
}

action ally_action(){
	set_ally(me, you); //store ally
	you = get_ally(me); //retrieve ally
}