code: protected function findDirs($dir)
      {
          $list = [];
          $handle = @opendir($dir);
          if ($handle === false) {
              return [];
          }
          while (($file = readdir($handle)) !== false) {
              if ($file === '.' || $file === '..') {
                  continue;
              }
              $path = $dir . DIRECTORY_SEPARATOR . $file;
              if (is_dir($path) && preg_match('/^yii2-(.*)$/', $file, $matches)) {
                  $list[] = $matches[1];
              }
          }
          closedir($handle);
  
          foreach ($list as $i => $e) {
              if ($e === 'composer') { // skip composer to not break composer update
                  unset($list[$i]);
              }
          }
  
          return $list;
      }
docs: Finds linkable applications.
  
  @param string $dir directory to search in
  @return array list of applications command can link