code: func (e *Runner) Help(cmdUse string) string {
  	e.prepareForExecution()
  
  	// computes the max length of for each phase use line
  	maxLength := 0
  	e.visitAll(func(p *phaseRunner) error {
  		if !p.Hidden && !p.RunAllSiblings {
  			length := len(p.use)
  			if maxLength < length {
  				maxLength = length
  			}
  		}
  		return nil
  	})
  
  	// prints the list of phases indented by level and formatted using the maxlength
  	// the list is enclosed in a mardown code block for ensuring better readability in the public web site
  	line := fmt.Sprintf("The %q command executes the following phases:\n", cmdUse)
  	line += "```\n"
  	offset := 2
  	e.visitAll(func(p *phaseRunner) error {
  		if !p.Hidden && !p.RunAllSiblings {
  			padding := maxLength - len(p.use) + offset
  			line += strings.Repeat(" ", offset*p.level) // indentation
  			line += p.use                               // name + aliases
  			line += strings.Repeat(" ", padding)        // padding right up to max length (+ offset for spacing)
  			line += p.Short                             // phase short description
  			line += "\n"
  		}
  
  		return nil
  	})
  	line += "```"
  	return line
  }
docs: // Help returns text with the list of phases included in the workflow.