docs: function createQuestions(scopes) {
    const hasScopes = ({ type }) =>
      fp.pipe(
        fp.find(['value', type]),
        fp.getOr([], 'scopes'),
        fp.concat(scopes),
        v => v.length > 0
      )(types)
  
    return [
      {
        type: 'list',
        name: 'type',
        message: "Select the type of change you're committing:",
        pageSize: types.length,
        choices: getChoices()
      },
      {
        type: 'list',
        name: 'scope',
        message: 'Specify a scope:',
        pageSize: scopes.length > 10 ? scopes.length : 10,
        choices: answers =>
          fp.pipe(
            fp.find(['value', answers.type]),
            fp.getOr([], 'scopes'),
            extras => (extras.length > 0 ? [SEPARATOR, ...extras] : extras),
            extras => [NONE, ...extras, SEPARATOR, ...scopes]
          )(types),
        when: answers => hasScopes(answers)
      },
      {
        type: 'input',
        name: 'subject',
        message: 'Write a short description:',
        default: ({ type, scope }) => {
          if (type === 'WIP') return 'Quick Commit'
          if (type === 'chore') {
            if (scope === 'dependencies') return 'Updated dependencies.'
            if (scope === 'deploy') return 'Updated Deployments.'
            if (scope === 'release') return 'Published new version'
          }
          if (type === 'build') {
            if (scope === 'scripts') return 'Updated Scripts'
            if (scope === 'ecosystem') return 'Updated Ecosystem definitions'
            if (scope === 'config') return 'Updated Config files'
            if (scope === 'webpack') return 'Updated Webpack configuration'
            if (scope === 'typescript') return 'Updated TypeScript configuration'
            if (scope === 'linters') return 'Changed Linting rules'
          }
          if (type === 'style') return 'Passing lint rules.'
          if (type === 'init') return 'First commit.'
          return ''
        },
        validate: input => (input.length > 0 ? true : 'Empty commit!')
      },
      {
        type: 'input',
        name: 'body',
        message: 'Provide a longer description: (optional)',
        when: answers => shouldSkip(answers) === false
      },
      {
        type: 'input',
        name: 'issues',
        message: 'List any issue closed [ex: #1, ...]: (optional)',
        when: answers => shouldSkip(answers) === false
      },
      {
        type: 'input',
        name: 'breaking',
        message: 'List any BREAKING CHANGES (optional):',
        when: answers => ['feat', 'fix', 'chore'].includes(answers.type)
      },
      {
        type: 'confirm',
        name: 'confirmCommit',
        message: 'Ready to commit?',
        default: true,
        when: answers => shouldSkip(answers) === false
      }
    ]
  }