>% At the start of a new galley we do not want to have any vertical
>% space being inserted not even a zero |\parskip| since that would
>% mess up use of |\vtop| etc.  The below is a sort of crude fix for
>% the problem ie this is the old minipage switch.

Here is some stuff I found in my notes:

% Usage: \if\AtBoxTop ...\else ...\fi
% Assumption: called in inner vertical mode.
\def\AtBoxTop{\ifdim\prevdepth=-\@m\p@ T\else F\fi T}

% Usage: \if\AtPageTop ...\else ...\fi
% Assumption: called in vertical mode
\def\AtPageTop{\ifinner F\else\ifdim\pagetotal=\z@ T\else F\fi\fi T}

Most of the time I think the parskip will not be added before the
internal galley stuff has a chance to get control---for example, with


you don't get parskip at the top. But if there is any non-text object
preceding the first text you will get the parskip (\mark, \special,
\write, \hrule). So I guess when the AtBoxTop test is true it might be
advisable to combine the prev-whatsits with the next-whatsits.