docs: function task() {
  	// make sure the release task has been initialized
  	init.apply(this, arguments);
  	var name, desc, deps, cb;
  	for (var i = 0; i < arguments.length; i++) {
  		if (typeof arguments[i] === 'string') {
  			if (name) {
  				desc = arguments[i];
  			} else {
  				name = arguments[i];
  			}
  		} else if (typeof arguments[i] === 'function') {
  			cb = taskCallback(arguments[i]);
  		} else if (Array.isArray(arguments[i])) {
  			deps = arguments[i];
  		}
  	}
  	if (rbot.env.usingGrunt) {
  		if (name && desc) {
  			return rbot.env.taskRunner.registerTask(name, desc, cb);
  		} else if (name && deps) {
  			return rbot.env.taskRunner.registerTask(name, deps);
  		}
  		throw new Error('Invalid grunt.registerTask() for: name = "' + name + '", desc = "' + desc + '", taskList = "'
  				+ deps + '", function = "' + cb + '"');
  	} else {
  		if (name && deps && cb) {
  			return rbot.env.taskRunner.task(name, deps, cb);
  		} else if (name && cb) {
  			return rbot.env.taskRunner.task(name, cb);
  		}
  		throw new Error('Invalid gulp.task() for: name = "' + name + '", deps = "' + deps + '", function = "' + cb
  				+ '"');
  	}
  }