Yes, you use somekind of a linked list by linking 2 entities together to retrieve a wider range of skills. But your script is a bit too complicated and slow. This is because you use execute and such things.
I use for instance these virtual placeholders to save classified data. For a racing game I defined a virtual track device for a car to save 17 skills. If I had to save them in the original entity's skills it would be too much consuming. By grooping it into one virtual object it is much easier to deal with.
Your approach looks like you want to do a dynamic skills list which automatically appends virtual objects to widen the range. Try dynamic creating with pointer (-> handle!!) connections. It is also recommended to write a new function to read/write skills, because the object with the skills is now relative (because there are now more than the original entity) which are possible to use.
I think until we have no pointers to variables I bet there are some serious users which have to do such a thing when they want some kind of local variables which could be accessed from outside!
(this is a wink, conitec

)
ciao
christian