docs: function validate( opts, options ) {
  	if ( !isObject( options ) ) {
  		return new TypeError( 'invalid input argument. Options argument must be an object. Value: `' + options + '`.' );
  	}
  	if ( options.hasOwnProperty( 'template' ) ) {
  		opts.template = options.template;
  		if ( !isString( opts.template ) ) {
  			return new TypeError( 'invalid option. Template option must be a string primitive. Option: `' + opts.template + '`.' );
  		}
  		if ( !contains( templates, opts.template ) ) {
  			return new Error( 'invalid option. Unrecognized template name. Must be one of [' + templates.join( ',' ) + '] Option: `' + opts.template + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'name' ) ) {
  		opts.name = options.name;
  		if ( !isString( opts.name ) ) {
  			return new TypeError( 'invalid option. Package name must be a string primitive. Option: `' + opts.name + '`.' );
  		}
  		if ( isValidName( opts.name ).validForNewPackages === false ) {
  			return new Error( 'invalid option. Invalid package name. Option: `' + opts.name + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'desc' ) ) {
  		opts.desc = options.desc;
  		if ( !isString( opts.desc ) ) {
  			return new TypeError( 'invalid option. Package description must be a string primitive. Option: `' + opts.desc + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'author' ) ) {
  		opts.author = options.author;
  		if ( !isString( opts.author ) ) {
  			return new TypeError( 'invalid option. Package author must be a string primitive. Option: `' + opts.author + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'email' ) ) {
  		opts.email = options.email;
  		if ( !isString( opts.email ) ) {
  			return new TypeError( 'invalid option. Package author email must be a string primitive. Option: `' + opts.email + '`.' );
  		}
  		if ( !isValidEmail( opts.email ) ) {
  			return new Error( 'invalid option. Invalid email address. Option: `' + opts.email + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'repo' ) ) {
  		opts.repo = options.repo;
  		if ( !isString( opts.repo ) ) {
  			return new TypeError( 'invalid option. Package repository option must be a string primitive. Option: `' + opts.repo + '`.' );
  		}
  		if ( opts.repo.split( '/' ).length !== 2 ) {
  			return new Error( 'invalid option. Package repository option must consist of two parts: an owner/organization and a repository name. Option: `' + opts.repo + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'cmd' ) ) {
  		opts.cmd = options.cmd;
  		if ( !isString( opts.cmd ) ) {
  			return new TypeError( 'invalid option. Package command name must be a string primitive. Option: `' + opts.cmd + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'keywords' ) ) {
  		opts.keywords = options.keywords;
  		if ( !isStringArray( opts.keywords ) ) {
  			return new TypeError( 'invalid option. Package keywords must be a string array. Option: `' + opts.keywords + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'license' ) ) {
  		opts.license = options.license;
  		if ( !isString( opts.license ) ) {
  			return new TypeError( 'invalid option. Package license option must be a string primitive. Option: `' + opts.license + '`.' );
  		}
  	}
  	if ( options.hasOwnProperty( 'private' ) ) {
  		opts.private = options.private;
  		if ( !isBoolean( opts.private ) ) {
  			return new TypeError( 'invalid option. Private option must be a boolean primitive. Option: `' + opts.private + '`.' );
  		}
  	}
  	return null;
  }