Create template “author” with a plugin

You can riff off of how WooCommerce and other plugins are providing templates in their plugin, while allowing the theme to override them if they exist.

Basically, you hook into the template_include function, which is where WordPress decides what template to load for a given query.

Since you want to do something with the author.php template, you will want to test for the is_author() conditional tag. Now author.php is something that is pretty common in a theme, so if you want to hijack that to something custom I would probably rename the template to something else.

add_filter( 'template_include', 'wpa_155871_template_loader' );

function wpa_155871_template_loader( $template ) {

    $file="";

    if ( is_author() ) {
        $file="custom-author.php"; // the name of your custom template
        $find[] = $file;
        $find[] = 'plugin-name/' . $file; // name of folder it could be in, in user's theme
    } 

    if ( $file ) {
        $template       = locate_template( array_unique( $find ) );
        if ( ! $template ) { 
            // if not found in theme, will use your plugin version
            $template = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/templates/' . $file;
        }
    }

    return $template;
}

Untested, so your mileage may vary and there could be typos.