docs: def _backup_previous_version(func: Callable = None):
      """Private decorator to back up previous skill folder"""
  
      @wraps(func)
      def wrapper(self, *args, **kwargs):
          self.old_path = None
          if self.is_local:
              self.old_path = join(gettempdir(), self.name)
              if exists(self.old_path):
                  rmtree(self.old_path)
              shutil.copytree(self.path, self.old_path)
          try:
              func(self, *args, **kwargs)
  
          # Modified skill or GitError should not restore working copy
          except (SkillModified, GitError, GitException):
              raise
          except Exception:
              LOG.info('Problem performing action. Restoring skill to '
                       'previous state...')
              if exists(self.path):
                  rmtree(self.path)
              if self.old_path and exists(self.old_path):
                  shutil.copytree(self.old_path, self.path)
              self.is_local = exists(self.path)
              raise
  
      return wrapper