code: def base_create_agent_configurations(cls) -> ConfigObject:
          
          config = ConfigObject()
          location_config = config.add_header_name(BOT_CONFIG_MODULE_HEADER)
          location_config.add_value(LOOKS_CONFIG_KEY, str,
                                    description='Path to loadout config from runner')
          location_config.add_value(PYTHON_FILE_KEY, str,
                                    description="Bot's python file.\nOnly need this if RLBot controlled")
          location_config.add_value(BOT_NAME_KEY, str, default='nameless',
                                    description='The name that will be displayed in game')
  
          details_config = config.add_header_name(BOT_CONFIG_DETAILS_HEADER)
          details_config.add_value('developer', str, description="Name of the bot's creator/developer")
          details_config.add_value('description', str, description="Short description of the bot")
          details_config.add_value('fun_fact', str, description="Fun fact about the bot")
          details_config.add_value('github', str, description="Link to github repository")
          details_config.add_value('language', str, description="Programming language")
  
          cls.create_agent_configurations(config)
  
          return config
docs: This is used when initializing agent config via builder pattern.
          It also calls `create_agent_configurations` that can be used by BaseAgent subclasses for custom configs.
          :return: Returns an instance of a ConfigObject object.