Custom home page with full post for first one only

Add a counter to the query and vary the output depending upon what the count is.

You’ll need to either directly edit the args to limit to 3 posts_per_page or use pre_get_posts to do it.

pre get posts example (into your functions.php)

function hwl_home_pagesize( $query ) {
    if ( is_home() ) {
        // Display only 3 post for the original blog archive
        $query->set( 'posts_per_page', 3 );
        return;
    }

}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );

Then into your home.php (or whichever file basic theme uses):

if ( have_posts() ) {
    $i=1;
    while ( have_posts() ) {
        the_post(); 
        //
        if ($i==1) {
        //first post
           the_title();
           the_content();
        }else{
            //other 2 posts
           the_title();
           the_excerpt();
        }
        //
        $i++;
    } // end while
} // end if

Now in your dashboard also make sure that settings/reading the option “show full text” is selected.

Or, if you want to start your own query you can instead of using the main query:

// WP_Query arguments
$args = array( 'posts_per_page' => '3'; 'post_type' => 'posts';
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
  $i=1;
while ( $query->have_posts() ) {
    $query->the_post();
    // do something
        if ($i==1) {
        //first post
           the_title();
           the_content();
        }else{
        //other 2 posts
           the_title();
           the_excerpt();
        }
   $i++;

}

    } else {
    // no posts found
    }
// Restore original Post Data
wp_reset_postdata();

THis would eliminate the need to add to your functions.php