Okay, you keep moving the goalposts. Which is frustrating. But I'll keep responding.
Here's what I'm saying isn't easy: imagine that you want to maximize() familiar weight (or any other stat where familiar weight is beneficial), and $effect[chorale of companionship] is recommended. That's the starting point, $effect[chorale of companionship].
Well, no. The starting point is a record containing the effect, a command that the maximizer recommends to get that effect, and if applicable an item to use to get that effect. That answers basically all of your above questions all at once. Yes, with some very straightforward string parsing if it's a skill. I'll probably add a $skill field to the record eventually to eliminate that, which is not what you've been asking for but will be actually useful.
Now, you're asking for two more proxy fields on $effect which are essentially $effect.all parsed out into $effect.items and $effect.skills. Okay. But say I implemented those new proxy fields and gave you $effect[chorale]. Now, what did the maximizer recommend to use? Oh wait, that information is not actually in the proxy field. It's back in the record in the .item or eventual .skill field, or available by parsing the command string.