[proofplan]
We compute the tangent space from the cotangent space of the local ring at $p$. The first-order classes of the local equations $f_1,\dots,f_c$ are exactly the linear equations imposed on tangent vectors, because these germs generate the localized defining ideal. This identifies $T_pX$ with the kernel of the [Jacobian matrix](/page/Jacobian%20Matrix). The smoothness criterion then compares the tangent dimension with the local dimension, which is $n-c$ by the codimension hypothesis.
[/proofplan]
[step:Identify ambient tangent vectors with derivations at $p$]
Let $S:=k[x_1,\dots,x_n]$, let $\mathfrak q_p:=(x_1-a_1,\dots,x_n-a_n)$, let $R:=S_{\mathfrak q_p}$, and let $\mathfrak m:=\mathfrak q_pR$. Since $p\in \mathbb A_k^n(k)$, the residue field $R/\mathfrak m$ is $k$.
For $v=(v_1,\dots,v_n)\in k^n$, define the $k$-[linear map](/page/Linear%20Map)
\begin{align*}
D_v:S\to k
\end{align*}
by
\begin{align*}
D_v(g):=\sum_{j=1}^n \frac{\partial g}{\partial x_j}(p)v_j.
\end{align*}
This map is a $k$-derivation at $p$, meaning
\begin{align*}
D_v(gh)=g(p)D_v(h)+h(p)D_v(g)
\end{align*}
for all $g,h\in S$. It therefore factors through a $k$-linear functional on $\mathfrak m/\mathfrak m^2$. Under the basis of $\mathfrak m/\mathfrak m^2$ represented by $x_1-a_1,\dots,x_n-a_n$, this gives the standard identification
\begin{align*}
k^n\cong \operatorname{Hom}_k(\mathfrak m/\mathfrak m^2,k).
\end{align*}
[guided]
The ambient [affine space](/page/Affine%20Space) has local ring $R=S_{\mathfrak q_p}$ at $p$, and its maximal ideal is $\mathfrak m=\mathfrak q_pR$. The quotient $\mathfrak m/\mathfrak m^2$ records first-order infinitesimal functions vanishing at $p$: terms of order at least two are discarded.
A vector $v=(v_1,\dots,v_n)\in k^n$ should act on a polynomial by taking its [directional derivative](/page/Directional%20Derivative) at $p$. Thus we define
\begin{align*}
D_v:S\to k
\end{align*}
by
\begin{align*}
D_v(g):=\sum_{j=1}^n \frac{\partial g}{\partial x_j}(p)v_j.
\end{align*}
The ordinary product rule for partial derivatives gives
\begin{align*}
D_v(gh)=g(p)D_v(h)+h(p)D_v(g)
\end{align*}
for all $g,h\in S$, so $D_v$ is a derivation at the $k$-rational point $p$.
Because $D_v$ kills constants and kills products of two elements vanishing at $p$, it descends to a $k$-linear functional on $\mathfrak m/\mathfrak m^2$. Conversely, a functional on $\mathfrak m/\mathfrak m^2$ is determined by its values on the first-order coordinate classes $x_1-a_1,\dots,x_n-a_n$. These classes form a $k$-basis of $\mathfrak m/\mathfrak m^2$, so the values of the functional are exactly the coordinates $v_1,\dots,v_n$. Hence
\begin{align*}
k^n\cong \operatorname{Hom}_k(\mathfrak m/\mathfrak m^2,k).
\end{align*}
[/guided]
[/step]
[step:Translate the defining ideal into first-order equations]
Let $I:=I_{X,p}\trianglelefteq R$ and let $A:=R/I=\mathcal O_{X,p}$. Let $\mathfrak n:=\mathfrak m/I$ be the maximal ideal of $A$. By the definition of the Zariski tangent space,
\begin{align*}
T_pX=\operatorname{Hom}_k(\mathfrak n/\mathfrak n^2,k).
\end{align*}
Since
\begin{align*}
\mathfrak n/\mathfrak n^2\cong \mathfrak m/(I+\mathfrak m^2),
\end{align*}
we may identify $T_pX$ with the subspace of $\operatorname{Hom}_k(\mathfrak m/\mathfrak m^2,k)$ consisting of functionals that vanish on the image of $I$ in $\mathfrak m/\mathfrak m^2$.
The germs of $f_1,\dots,f_c$ generate $I$ by hypothesis. Also each $f_i$ vanishes at $p$, so $f_i\in \mathfrak m$. If $h_i\in R$, then
\begin{align*}
h_if_i-h_i(p)f_i=(h_i-h_i(p))f_i\in \mathfrak m^2.
\end{align*}
Therefore the image of $I$ in $\mathfrak m/\mathfrak m^2$ is generated over $k$ by the classes of $f_1,\dots,f_c$.
[/step]
[step:Recover the Jacobian kernel formula]
Under the identification $k^n\cong \operatorname{Hom}_k(\mathfrak m/\mathfrak m^2,k)$, a vector $v=(v_1,\dots,v_n)\in k^n$ lies in $T_pX$ if and only if $D_v(f_i)=0$ for every $1\le i\le c$. By the definition of $D_v$,
\begin{align*}
D_v(f_i)=\sum_{j=1}^n \frac{\partial f_i}{\partial x_j}(p)v_j.
\end{align*}
Thus the conditions $D_v(f_i)=0$ for $1\le i\le c$ are exactly the matrix equation
\begin{align*}
J_pv=0.
\end{align*}
Hence
\begin{align*}
T_pX=\ker(J_p:k^n\to k^c).
\end{align*}
The [rank-nullity theorem](/theorems/916) applied to the linear map $J_p:k^n\to k^c$ gives
\begin{align*}
\dim_k T_pX=n-\operatorname{rank}J_p.
\end{align*}
[/step]
[step:Compare tangent dimension with local dimension]
The local ring $R=\mathcal O_{\mathbb A_k^n,p}$ is a regular local ring of dimension $n$. The hypothesis that $X$ has codimension $c$ at $p$ means $\operatorname{height}(I)=c$, so
\begin{align*}
\dim \mathcal O_{X,p}=\dim R/I=n-c.
\end{align*}
Since $p\in X(k)$, the residue field of $\mathcal O_{X,p}$ is $k$. The tangent-dimension criterion for smoothness at a $k$-rational point says that $p$ is smooth over $k$ if and only if
\begin{align*}
\dim_k T_pX=\dim \mathcal O_{X,p}.
\end{align*}
Using the dimension formula above and the already proved tangent-space computation, this condition is equivalent to
\begin{align*}
n-\operatorname{rank}J_p=n-c.
\end{align*}
Equivalently,
\begin{align*}
\operatorname{rank}J_p=c.
\end{align*}
When this holds, the same equality gives
\begin{align*}
\dim_k T_pX=n-c.
\end{align*}
This proves the smoothness criterion and completes the proof.
[/step]