The paths assumed by composer/installers and wfLoadSkin are not compatible: the first assumes 'skin-name' while the other one assumes 'SkinName'.
The install location of the composer/installer is determined in the function inflectSkinVars in [[https://github.com/composer/installers/blob/master/src/Composer/Installers/MediaWikiInstaller.php | MediaWikiInstaller.php]] like so:
protected function inflectSkinVars($vars)
{
$vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
return $vars;
}MediaWiki determines the location of a skin to load using the function wfLoadSkin defined in [[https://git.wikimedia.org/blob/mediawiki%2Fcore.git/master/includes%2FGlobalFunctions.php#L205|GlobalFunctions.php]] like so:
function wfLoadSkin( $skin, $path = null ) {
if ( !$path ) {
global $wgStyleDirectory;
$path = "$wgStyleDirectory/$skin/skin.json";
}
ExtensionRegistry::getInstance()->queue( $path );
}https://git.wikimedia.org/blob/mediawiki%2Fcore.git/master/includes%2FGlobalFunctions.php#L205
The composer name for the Vector skin for example is vector-skin, so the skin will be installed under skins/vector. The MediaWiki name of the Vector skin is Vector, so it will be loaded from skins/Vector. On some file systems, the two paths are not the same, so installing skins with composer does not work.