[proofplan]
We prove the colimit statement directly from the hom-set form of an adjunction and the universal property of a colimit. Given a colimit cocone $\lambda_j: X(j) \to L$ in $\mathcal C$, we show that the cocone $F(\lambda_j): F(X(j)) \to F(L)$ is universal in $\mathcal D$. The key point is that maps out of $F(L)$ correspond by adjunction to maps out of $L$, and the colimit property of $L$ converts those maps into compatible cocones from $X$; adjunction then transports those cocones back to compatible cocones from $F \circ X$. The limit statement is the formally dual argument.
[/proofplan]
[step:Fix a colimit cocone and define the candidate image cocone]
Let $\mathcal J$ be a small category and let
\begin{align*}
X: \mathcal J \to \mathcal C
\end{align*}
be a diagram. Suppose $L \in \mathcal C$ is a colimit of $X$, with colimit cocone
\begin{align*}
\lambda_j: X(j) \to L
\end{align*}
for each object $j \in \mathcal J$.
Since $F: \mathcal C \to \mathcal D$ is a functor, applying $F$ to the cocone gives morphisms
\begin{align*}
F(\lambda_j): F(X(j)) \to F(L)
\end{align*}
in $\mathcal D$. For every morphism $u: j \to k$ in $\mathcal J$, the cocone identity for $\lambda$ gives
\begin{align*}
\lambda_k \circ X(u) = \lambda_j.
\end{align*}
Applying $F$ and using functoriality gives
\begin{align*}
F(\lambda_k) \circ F(X(u)) = F(\lambda_j).
\end{align*}
Thus the family $(F(\lambda_j))_{j \in \mathcal J}$ is a cocone from $F \circ X$ to $F(L)$ in $\mathcal D$.
[/step]
[step:Translate maps out of $F(L)$ into cocones from $F \circ X$]
For each object $d \in \mathcal D$, define $\operatorname{Cocone}_{\mathcal D}(F \circ X, d)$ to be the set of families
\begin{align*}
(\alpha_j: F(X(j)) \to d)_{j \in \mathcal J}
\end{align*}
such that for every morphism $u: j \to k$ in $\mathcal J$,
\begin{align*}
\alpha_k \circ F(X(u)) = \alpha_j.
\end{align*}
We prove that the function
\begin{align*}
\Phi_d: \operatorname{Hom}_{\mathcal D}(F(L), d) &\to \operatorname{Cocone}_{\mathcal D}(F \circ X, d) \\
\beta &\mapsto (\beta \circ F(\lambda_j))_{j \in \mathcal J}
\end{align*}
is a bijection.
Let
\begin{align*}
\theta_{c,d}: \operatorname{Hom}_{\mathcal D}(F(c), d) \to \operatorname{Hom}_{\mathcal C}(c, G(d))
\end{align*}
denote the adjunction bijection, natural in $c \in \mathcal C$ and $d \in \mathcal D$.
Given a cocone $(\alpha_j)_{j \in \mathcal J} \in \operatorname{Cocone}_{\mathcal D}(F \circ X, d)$, define morphisms
\begin{align*}
\widetilde{\alpha}_j := \theta_{X(j),d}(\alpha_j): X(j) \to G(d)
\end{align*}
in $\mathcal C$. For every morphism $u: j \to k$ in $\mathcal J$, naturality of $\theta$ in the $\mathcal C$-variable gives
\begin{align*}
\theta_{X(j),d}(\alpha_k \circ F(X(u)))
=
\theta_{X(k),d}(\alpha_k) \circ X(u).
\end{align*}
Since $(\alpha_j)$ is a cocone, $\alpha_k \circ F(X(u)) = \alpha_j$, hence
\begin{align*}
\widetilde{\alpha}_k \circ X(u) = \widetilde{\alpha}_j.
\end{align*}
Therefore $(\widetilde{\alpha}_j)_{j \in \mathcal J}$ is a cocone from $X$ to $G(d)$.
Because $(L, \lambda_j)$ is a colimit cocone, there exists a unique morphism
\begin{align*}
h: L \to G(d)
\end{align*}
such that
\begin{align*}
h \circ \lambda_j = \widetilde{\alpha}_j
\end{align*}
for every $j \in \mathcal J$. Define
\begin{align*}
\beta := \theta_{L,d}^{-1}(h): F(L) \to d.
\end{align*}
For each $j \in \mathcal J$, naturality of $\theta$ in the $\mathcal C$-variable gives
\begin{align*}
\theta_{X(j),d}(\beta \circ F(\lambda_j))
=
\theta_{L,d}(\beta) \circ \lambda_j
=
h \circ \lambda_j
=
\widetilde{\alpha}_j
=
\theta_{X(j),d}(\alpha_j).
\end{align*}
Since $\theta_{X(j),d}$ is a bijection, $\beta \circ F(\lambda_j) = \alpha_j$. Thus $\Phi_d(\beta) = (\alpha_j)_{j \in \mathcal J}$.
The same calculation shows uniqueness. If $\beta': F(L) \to d$ also satisfies $\beta' \circ F(\lambda_j) = \alpha_j$ for all $j$, then
\begin{align*}
\theta_{L,d}(\beta') \circ \lambda_j
=
\theta_{X(j),d}(\beta' \circ F(\lambda_j))
=
\theta_{X(j),d}(\alpha_j)
=
\widetilde{\alpha}_j
\end{align*}
for every $j$. By uniqueness in the colimit property of $L$, $\theta_{L,d}(\beta') = h$. Since $\theta_{L,d}$ is bijective, $\beta' = \beta$. Hence $\Phi_d$ is a bijection.
[guided]
We want to prove that $F(L)$ has the universal property of the colimit of $F \circ X$. This means: for each object $d \in \mathcal D$, giving a morphism $F(L) \to d$ should be equivalent to giving a compatible cocone from $F \circ X$ to $d$.
For an object $d \in \mathcal D$, define $\operatorname{Cocone}_{\mathcal D}(F \circ X, d)$ to be the set of all families
\begin{align*}
(\alpha_j: F(X(j)) \to d)_{j \in \mathcal J}
\end{align*}
such that for every morphism $u: j \to k$ in $\mathcal J$,
\begin{align*}
\alpha_k \circ F(X(u)) = \alpha_j.
\end{align*}
The candidate universal map sends a morphism $\beta: F(L) \to d$ to the cocone obtained by precomposing with the structure maps:
\begin{align*}
\Phi_d(\beta) := (\beta \circ F(\lambda_j))_{j \in \mathcal J}.
\end{align*}
Now let $(\alpha_j)_{j \in \mathcal J}$ be an arbitrary cocone from $F \circ X$ to $d$. We need to construct a unique $\beta: F(L) \to d$ inducing it. The adjunction gives, for each $c \in \mathcal C$ and $d \in \mathcal D$, a natural bijection
\begin{align*}
\theta_{c,d}: \operatorname{Hom}_{\mathcal D}(F(c), d) \to \operatorname{Hom}_{\mathcal C}(c, G(d)).
\end{align*}
Apply this bijection componentwise and define
\begin{align*}
\widetilde{\alpha}_j := \theta_{X(j),d}(\alpha_j): X(j) \to G(d).
\end{align*}
We must check that these morphisms form a cocone from $X$ to $G(d)$. Let $u: j \to k$ be a morphism of $\mathcal J$. Since $(\alpha_j)$ is a cocone,
\begin{align*}
\alpha_k \circ F(X(u)) = \alpha_j.
\end{align*}
Naturality of the adjunction bijection in the $\mathcal C$-variable gives
\begin{align*}
\theta_{X(j),d}(\alpha_k \circ F(X(u)))
=
\theta_{X(k),d}(\alpha_k) \circ X(u).
\end{align*}
Combining these identities yields
\begin{align*}
\widetilde{\alpha}_k \circ X(u) = \widetilde{\alpha}_j.
\end{align*}
So $(\widetilde{\alpha}_j)$ is a cocone from $X$ to $G(d)$.
Since $L$ is the colimit of $X$, this cocone factors uniquely through $L$. Therefore there is a unique morphism
\begin{align*}
h: L \to G(d)
\end{align*}
such that
\begin{align*}
h \circ \lambda_j = \widetilde{\alpha}_j
\end{align*}
for every $j \in \mathcal J$. Transport $h$ back across the adjunction and define
\begin{align*}
\beta := \theta_{L,d}^{-1}(h): F(L) \to d.
\end{align*}
It remains to verify that $\beta$ induces the original cocone. For each $j$,
\begin{align*}
\theta_{X(j),d}(\beta \circ F(\lambda_j))
=
\theta_{L,d}(\beta) \circ \lambda_j
=
h \circ \lambda_j
=
\widetilde{\alpha}_j
=
\theta_{X(j),d}(\alpha_j).
\end{align*}
Because $\theta_{X(j),d}$ is bijective, this implies
\begin{align*}
\beta \circ F(\lambda_j) = \alpha_j.
\end{align*}
Thus $\Phi_d(\beta) = (\alpha_j)$.
Finally, suppose $\beta': F(L) \to d$ also induces the same cocone. Applying the adjunction and using naturality gives
\begin{align*}
\theta_{L,d}(\beta') \circ \lambda_j
=
\theta_{X(j),d}(\beta' \circ F(\lambda_j))
=
\theta_{X(j),d}(\alpha_j)
=
\widetilde{\alpha}_j.
\end{align*}
The colimit property of $L$ says that there is only one morphism $L \to G(d)$ with these composites, namely $h$. Hence $\theta_{L,d}(\beta') = h$, and since $\theta_{L,d}$ is bijective, $\beta' = \beta$. Therefore $\Phi_d$ is a bijection.
[/guided]
[/step]
[step:Conclude that $F(L)$ is the colimit of $F \circ X$]
The bijection $\Phi_d$ is precisely the universal property of the cocone
\begin{align*}
(F(\lambda_j): F(X(j)) \to F(L))_{j \in \mathcal J}.
\end{align*}
Since this holds for every object $d \in \mathcal D$, the object $F(L)$, together with the cocone $(F(\lambda_j))_{j \in \mathcal J}$, is a colimit of $F \circ X$ in $\mathcal D$.
Therefore $F$ sends every colimit cocone in $\mathcal C$ to a colimit cocone in $\mathcal D$. Hence every left adjoint preserves all colimits that exist in its domain.
[/step]
[step:Apply the dual argument to right adjoints and limits]
Now suppose $G: \mathcal D \to \mathcal C$ is right adjoint to $F: \mathcal C \to \mathcal D$. Let
\begin{align*}
Y: \mathcal J \to \mathcal D
\end{align*}
be a diagram with limit object $M \in \mathcal D$ and limit cone
\begin{align*}
\rho_j: M \to Y(j)
\end{align*}
for each $j \in \mathcal J$.
Applying $G$ gives a cone
\begin{align*}
G(\rho_j): G(M) \to G(Y(j))
\end{align*}
from $G(M)$ to $G \circ Y$. For each object $c \in \mathcal C$, the adjunction bijections identify morphisms $c \to G(M)$ with morphisms $F(c) \to M$. The limit property of $M$ identifies morphisms $F(c) \to M$ with compatible cones from $F(c)$ to $Y$. Applying the adjunction componentwise identifies those cones with compatible cones from $c$ to $G \circ Y$.
Thus, for every $c \in \mathcal C$, composition with the cone $(G(\rho_j))_{j \in \mathcal J}$ gives a bijection between morphisms $c \to G(M)$ and cones from $c$ to $G \circ Y$. This is exactly the universal property of the limit of $G \circ Y$. Hence $G(M)$ is a limit of $G \circ Y$, and every right adjoint preserves all limits that exist in its domain.
[/step]