Our menu code is complicated, and it would be a good idea to start some where :-)
When I tried to scope this out earlier, I found it was useful to take a bottom up approach - starting with the link inside the list items inside the menus.
# TODO
[] Add a new component called SkinComponentMenuLink (or something similar e.g. SkinComponentPortletLink)
[] For now, the component should be a data array with a single `html` property. Use the existing Skin::makeLink to make it.
[] Update the Skin::makeLink function to use the new SkinComponentMenuLink component
```
$link = new SkinComponentMenuLink( ... );
return $link->getTemplateData()['html']
```
# Sign off steps
[] The SkinComponentMenuListItem component would be the next obvious task to scope out referring to the proof of concept patch in https://gerrit.wikimedia.org/r/c/mediawiki/core/+/749584 and https://gerrit.wikimedia.org/r/c/mediawiki/core/+/726995
[] Consider making the Footer component to allow us to map the footer to the existing menu system and hooks
'html' => $this->makeLink( $this->key, $this->item, $this->options )