Pass custom variable to block.html.twig I have a customer who requires the correct set of responsive classes for his block in a given theme depending on its position and count. In my theme_preprocess_page(&amp;$vars) I can identify the blocks in this region and build up an array for each block using its plugin_id and save it to $variables['highlighted']. 

In my page.html.twig I use {{ highlighted }} and the array shows up wonderfully. Because block.html.twig by default is set up to be looking for {{ plugin_id }} I expected that I can test if plugin_id is in_array() and add these classes to that instance of the block.

But {{ highlighted }} in block.html.twig returns null in this theme, suggesting that $variables['page'] works for the page, but not block?
Twig has a way to pass off variables to an arbitrary twig file but I do not know how to do this in Drupal. For instance, my page.html.twig is using {{ highlighted }} to pull in these blocks from $variables. 

So my question is how does Drupal 8's adaptation the Twig source determine which variables are passed (plugin_id, content, attributes, id, etc) and how I can add mine? I've looked through the twig.engine and searched the Twig source, but it's not clear to me which class controls what variables are passed to blocks?
My other avenue is to find a way to pass this array of classes to theme_preprocess_block but every attempt I made to try this ends up with theme_preprocess_block returning NULL for this array, suggesting that preprocess_page() and preprocess_block() are working separtely.
You will need to preprocess the block instead of the page. Preprocessing pages will not pass a variable to the block. See hook_preprocess_block. If you are needing to determine values based on how many times a block is rendered you can look into using drupal_static to store variables that can be reused during the rendering process. 

Drupal static example:

$first_row = &amp;drupal_static('first_row');

if ($first_row == 2) {
  // I equal 2
}

// Since I am passed by reference I can alter and will keep my value.
$first_row++;