Identify immediate siblings block type in matrix
Fun question! :)

You can use getNext() and getPrev() Methods on the MatrixBlockModel documentation page.

{% for point in entry.keyPoints %}

    {# if this is the "typeToWrap" block type #}
    {% if point.type == 'typeToWrap' %}

        {# if there is a previous point to check #}
        {% if point.getPrev() %}

            {# if the previous point wasn't the "typeToWrap" type start a ul #}
            {% if point.getPrev().type != 'typeToWrap' %}
                &lt;ul&gt;
            {% endif %}

        {# if there isn't a previous point start a ul #}
        {% else %}
            &lt;ul&gt;
        {% endif %}

    {% endif %}

    {# output point #}

    {# if this is the "typeToWrap" block type #}
    {% if point.type == 'typeToWrap' %}

        {# if there is a next point to check #}
        {% if point.getNext() %}

            {# if the next point isn't the "typeToWrap" type end a ul #}
            {% if point.getNext().type != 'typeToWrap' %}
                &lt;/ul&gt;
            {% endif %}

        {# if there isn't another point end a ul #}
        {% else %}
            &lt;/ul&gt;
        {% endif %}

    {% endif %}

{% endfor %}