docs: def get_skill_data(self):
          """ generates tuples of name, path, url, sha """
          path_to_sha = {
              folder: sha for folder, sha in self.get_shas()
          }
          modules = self.read_file('.gitmodules').split('[submodule "')
          for i, module in enumerate(modules):
              if not module:
                  continue
              try:
                  name = module.split('"]')[0].strip()
                  path = module.split('path = ')[1].split('\n')[0].strip()
                  url = module.split('url = ')[1].strip()
                  sha = path_to_sha.get(path, '')
                  yield name, path, url, sha
              except (ValueError, IndexError) as e:
                  LOG.warning('Failed to parse submodule "{}" #{}:{}'.format(
                      locals().get('name', ''), i, e
                  ))