docs: def apply(self, func, skills):
          """Run a function on all skills in parallel"""
  
          def run_item(skill):
              try:
                  func(skill)
                  return True
              except MsmException as e:
                  LOG.error('Error running {} on {}: {}'.format(
                      func.__name__, skill.name, repr(e)
                  ))
                  return False
              except:
                  LOG.exception('Error running {} on {}:'.format(
                      func.__name__, skill.name
                  ))
  
          with ThreadPool(20) as tp:
              return tp.map(run_item, skills)