docs: def list(self):
          """
          Load a list of SkillEntry objects from both local and
          remote skills
  
          It is necessary to load both local and remote skills at
          the same time to correctly associate local skills with the name
          in the repo and remote skills with any custom path that they
          have been downloaded to
          """
          try:
              self.repo.update()
          except GitException as e:
              if not isdir(self.repo.path):
                  raise
              LOG.warning('Failed to update repo: {}'.format(repr(e)))
          remote_skill_list = (
              SkillEntry(
                  name, SkillEntry.create_path(self.skills_dir, url, name),
                  url, sha if self.versioned else '', msm=self
              )
              for name, path, url, sha in self.repo.get_skill_data()
          )
          remote_skills = {
              skill.id: skill for skill in remote_skill_list
          }
          all_skills = []
          for skill_file in glob(join(self.skills_dir, '*', '__init__.py')):
              skill = SkillEntry.from_folder(dirname(skill_file), msm=self)
              if skill.id in remote_skills:
                  skill.attach(remote_skills.pop(skill.id))
              all_skills.append(skill)
          all_skills += list(remote_skills.values())
          return all_skills