[proofplan]
The forward direction is pointwise: each tangent vector is a derivation at its base point, so applying the pointwise product rule at every $p\in M$ gives the Leibniz rule for $D_X$. For the converse, we first define a derivation at each point by $X_p(f)=D(f)(p)$ and show it depends only on the germ of $f$ at $p$ using a bump function. Locality then lets us extend coordinate functions to global smooth functions and compute the local coordinate coefficients of $X$ as $D$ applied to those extensions. Since those coefficients are smooth functions, the field is smooth, and uniqueness follows from equality of the actions on all smooth functions.
[/proofplan]
[step:Verify that a smooth vector field acts as a derivation]
Let $X\in\mathfrak{X}(M)$ be a smooth vector field. Define
\begin{align*}
D_X:C^\infty(M)&\to C^\infty(M)
\end{align*}
by
\begin{align*}
D_X(f)(p)=X_p(f)
\end{align*}
for $f\in C^\infty(M)$ and $p\in M$.
Since $X$ is a smooth vector field, the function $p\mapsto X_p(f)$ is smooth for every $f\in C^\infty(M)$, so $D_X(f)\in C^\infty(M)$. For $a,b\in\mathbb{R}$ and $f,g\in C^\infty(M)$, the $\mathbb{R}$-linearity of each tangent derivation $X_p$ gives
\begin{align*}
D_X(af+bg)(p)=X_p(af+bg)=aX_p(f)+bX_p(g)=aD_X(f)(p)+bD_X(g)(p).
\end{align*}
Thus $D_X$ is $\mathbb{R}$-linear.
For $f,g\in C^\infty(M)$ and $p\in M$, the Leibniz rule for the tangent vector $X_p$ gives
\begin{align*}
D_X(fg)(p)=X_p(fg)=f(p)X_p(g)+g(p)X_p(f).
\end{align*}
Since $X_p(g)=D_X(g)(p)$ and $X_p(f)=D_X(f)(p)$, this becomes
\begin{align*}
D_X(fg)(p)=\bigl(fD_X(g)+gD_X(f)\bigr)(p).
\end{align*}
Because this holds for every $p\in M$,
\begin{align*}
D_X(fg)=fD_X(g)+gD_X(f).
\end{align*}
[guided]
Let us check the forward direction directly from the definition of tangent vectors as derivations. A smooth vector field assigns to each point $p\in M$ a tangent vector $X_p\in T_pM$, and a tangent vector at $p$ acts on smooth functions by an $\mathbb{R}$-linear derivation at $p$. Thus, for a fixed smooth function $f\in C^\infty(M)$, the formula
\begin{align*}
D_X(f)(p)=X_p(f)
\end{align*}
defines a real number at every $p\in M$. The smoothness condition in the definition of a smooth vector field says precisely that the resulting function $p\mapsto X_p(f)$ is smooth. Hence $D_X(f)\in C^\infty(M)$.
Now fix $a,b\in\mathbb{R}$ and $f,g\in C^\infty(M)$. At each point $p\in M$, the tangent vector $X_p$ is $\mathbb{R}$-linear as a map on smooth functions, so
\begin{align*}
D_X(af+bg)(p)=X_p(af+bg)=aX_p(f)+bX_p(g).
\end{align*}
Using the definition of $D_X(f)$ and $D_X(g)$, this is
\begin{align*}
D_X(af+bg)(p)=aD_X(f)(p)+bD_X(g)(p).
\end{align*}
Since the equality holds at every $p$, the functions are equal, and $D_X$ is $\mathbb{R}$-linear.
For the product rule, take $f,g\in C^\infty(M)$. At a fixed point $p\in M$, the tangent vector $X_p$ satisfies the pointwise Leibniz rule
\begin{align*}
X_p(fg)=f(p)X_p(g)+g(p)X_p(f).
\end{align*}
Substituting the definition of $D_X$ gives
\begin{align*}
D_X(fg)(p)=f(p)D_X(g)(p)+g(p)D_X(f)(p).
\end{align*}
The right-hand side is exactly the value at $p$ of the smooth function $fD_X(g)+gD_X(f)$. Therefore
\begin{align*}
D_X(fg)=fD_X(g)+gD_X(f).
\end{align*}
[/guided]
[/step]
[step:Define the tangent vector determined by a derivation at each point]
Let
\begin{align*}
D:C^\infty(M)\to C^\infty(M)
\end{align*}
be an $\mathbb{R}$-[linear map](/page/Linear%20Map) satisfying
\begin{align*}
D(fg)=fD(g)+gD(f)
\end{align*}
for all $f,g\in C^\infty(M)$.
For each $p\in M$, define
\begin{align*}
X_p:C^\infty(M)&\to\mathbb{R}
\end{align*}
by
\begin{align*}
X_p(f)=D(f)(p).
\end{align*}
The map $X_p$ is $\mathbb{R}$-linear because $D$ is $\mathbb{R}$-linear. For $f,g\in C^\infty(M)$,
\begin{align*}
X_p(fg)=D(fg)(p)=f(p)D(g)(p)+g(p)D(f)(p).
\end{align*}
Hence
\begin{align*}
X_p(fg)=f(p)X_p(g)+g(p)X_p(f).
\end{align*}
Thus $X_p$ is a derivation at $p$, and therefore defines an element of $T_pM$ under the definition of tangent vectors as derivations at a point.
[/step]
[step:Prove that the derivation is local at each point]
Since $M$ is Hausdorff and second-countable, the smooth bump-function lemma applies: if $p\in M$ and $W\subset M$ is an open neighbourhood of $p$, then there exists $\chi\in C^\infty(M)$ such that $\chi(p)=1$ and $\operatorname{supp}\chi\subset W$; equivalently, after possibly shrinking around $p$, $\chi=1$ on a neighbourhood of $p$.
Let $p\in M$, and let $h\in C^\infty(M)$ vanish on an open neighbourhood $W\subset M$ of $p$. Choose $\chi\in C^\infty(M)$ such that $\chi(p)=1$ and $\operatorname{supp}\chi\subset W$. Since $h=0$ on $W$ and $\chi=0$ on $M\setminus W$, we have $\chi h=0$ on all of $M$. Applying $D$ gives
\begin{align*}
0=D(0)(p)=D(\chi h)(p).
\end{align*}
By the Leibniz rule,
\begin{align*}
D(\chi h)(p)=\chi(p)D(h)(p)+h(p)D(\chi)(p).
\end{align*}
Since $\chi(p)=1$ and $h(p)=0$, this yields
\begin{align*}
0=D(h)(p).
\end{align*}
Thus, if a smooth function vanishes on a neighbourhood of $p$, then $D(h)(p)=0$.
Consequently, if $f,g\in C^\infty(M)$ agree on a neighbourhood of $p$, then $f-g$ vanishes on a neighbourhood of $p$, and the preceding result gives
\begin{align*}
D(f)(p)-D(g)(p)=D(f-g)(p)=0.
\end{align*}
Therefore $D(f)(p)=D(g)(p)$ whenever $f$ and $g$ have the same germ at $p$.
[guided]
The main issue in the converse is that $D$ is defined on global smooth functions, while tangent vectors are local objects. We need to show that $D(f)(p)$ only depends on the germ of $f$ near $p$.
We use the standard smooth bump-function lemma on smooth Hausdorff second-countable manifolds: if $p\in M$ and $W\subset M$ is an open neighbourhood of $p$, then there is a smooth function $\chi\in C^\infty(M)$ with $\chi(p)=1$ and $\operatorname{supp}\chi\subset W$. This is the point where the usual smooth-manifold convention, together with the existence of smooth bump functions, enters the proof.
Let $h\in C^\infty(M)$ vanish on an open neighbourhood $W$ of $p$. Choose such a bump function $\chi$ with $\operatorname{supp}\chi\subset W$ and $\chi(p)=1$. The product $\chi h$ is identically zero on $M$: on $W$ we have $h=0$, and outside $W$ we have $\chi=0$ because the support of $\chi$ is contained in $W$. Therefore
\begin{align*}
D(\chi h)(p)=D(0)(p)=0.
\end{align*}
The Leibniz rule for $D$ gives
\begin{align*}
D(\chi h)(p)=\chi(p)D(h)(p)+h(p)D(\chi)(p).
\end{align*}
Now $\chi(p)=1$, and $h(p)=0$ because $h$ vanishes near $p$. Hence
\begin{align*}
0=D(h)(p).
\end{align*}
This proves locality in the vanishing case. If $f,g\in C^\infty(M)$ agree on a neighbourhood of $p$, then $h=f-g$ vanishes on a neighbourhood of $p$. By $\mathbb{R}$-linearity of $D$ and the vanishing case,
\begin{align*}
D(f)(p)-D(g)(p)=D(f-g)(p)=0.
\end{align*}
Thus
\begin{align*}
D(f)(p)=D(g)(p).
\end{align*}
So $D(f)(p)$ depends only on the germ of $f$ at $p$, which is exactly what will allow local coordinate functions to be used after extending them to global smooth functions.
[/guided]
[/step]
[step:Compute the local coordinate expression of the induced field]
Let $(U,\varphi)$ be a coordinate chart on $M$ with coordinate functions
\begin{align*}
x_i:U&\to\mathbb{R}
\end{align*}
defined by
\begin{align*}
x_i(q)=\pi_i(\varphi(q)),
\end{align*}
where $\pi_i:\mathbb{R}^n\to\mathbb{R}$ is the $i$th coordinate projection and $n=\dim M$.
For each $p\in U$, define the coordinate derivation $\partial_{x_i}\big|_p:C^\infty(M)\to\mathbb{R}$ by
\begin{align*}
\partial_{x_i}\big|_p(f)=\frac{\partial ((f|_U)\circ\varphi^{-1})}{\partial x_i}(\varphi(p)).
\end{align*}
This is the tangent vector at $p$ associated to the $i$th coordinate direction in the chart $(U,\varphi)$.
For each $i\in\{1,\ldots,n\}$, define a function $a_i:U\to\mathbb{R}$ as follows. Given $p\in U$, choose an open neighbourhood $W\subset U$ of $p$ and a bump function $\chi\in C^\infty(M)$ such that $\chi=1$ on $W$ and $\operatorname{supp}\chi\subset U$. Define a smooth extension $\widetilde{x}_i:M\to\mathbb{R}$ by setting $\widetilde{x}_i=\chi x_i$ on $U$ and $\widetilde{x}_i=0$ on $M\setminus U$. Then $\widetilde{x}_i=x_i$ on $W$, and the extension is smooth because $\chi$ vanishes on a neighbourhood of $M\setminus U$. Set
\begin{align*}
a_i(p)=D(\widetilde{x}_i)(p).
\end{align*}
By the locality proved above, $a_i(p)$ is independent of the chosen neighbourhood, bump function, and extension.
For every $f\in C^\infty(M)$, the tangent vector $X_p$ has the coordinate expression
\begin{align*}
X_p(f)=\sum_{i=1}^n a_i(p)\,\partial_{x_i}\big|_p(f).
\end{align*}
Indeed, the coordinate functions $(x_1,\ldots,x_n)$ form a coordinate system near $p$, and the previous step showed that $X_p$ is a derivation at $p$. Hence the coordinate-basis theorem for tangent derivations in a chart applies: every derivation $v\in T_pM$ has the form
\begin{align*}
v(f)=\sum_{i=1}^n v(x_i)\,\partial_{x_i}\big|_p(f)
\end{align*}
for all smooth functions $f$ defined near $p$, after replacing the local coordinate functions by any global smooth extensions. Applying this to $v=X_p$, the coefficient of $\partial_{x_i}\big|_p$ is its value on the $i$th coordinate function. Here that value is
\begin{align*}
X_p(\widetilde{x}_i)=D(\widetilde{x}_i)(p)=a_i(p),
\end{align*}
where locality justifies using the global extension $\widetilde{x}_i$ because $\widetilde{x}_i=x_i$ near $p$.
[/step]
[step:Show that the local coefficients are smooth]
It remains to prove that the coefficients $a_i$ vary smoothly. Let $p\in U$. Choose an open neighbourhood $W\subset U$ of $p$ and global smooth extensions
\begin{align*}
\widetilde{x}_i:M&\to\mathbb{R}
\end{align*}
such that $\widetilde{x}_i=x_i$ on $W$.
For every $q\in W$, locality gives
\begin{align*}
a_i(q)=D(\widetilde{x}_i)(q).
\end{align*}
Since $D(\widetilde{x}_i)\in C^\infty(M)$ by the codomain of $D$, the restriction
\begin{align*}
a_i|_W=D(\widetilde{x}_i)|_W
\end{align*}
is smooth. Thus each coordinate coefficient $a_i$ is smooth locally on $U$, and hence smooth on $U$.
Therefore, in the chart $(U,\varphi)$,
\begin{align*}
X|_U=\sum_{i=1}^n a_i\,\partial_{x_i},
\end{align*}
with $a_i\in C^\infty(U)$. Since smoothness of a vector field is local in coordinate charts, $X$ is a smooth vector field on $M$.
[/step]
[step:Identify the derivation and prove uniqueness]
For every $f\in C^\infty(M)$ and every $p\in M$, the construction gives
\begin{align*}
D_X(f)(p)=X_p(f)=D(f)(p).
\end{align*}
Hence $D_X(f)=D(f)$ for every $f\in C^\infty(M)$, so $D_X=D$.
Finally, suppose $Y\in\mathfrak{X}(M)$ is another smooth vector field with $D_Y=D$. Then for every $p\in M$ and every $f\in C^\infty(M)$,
\begin{align*}
Y_p(f)=D_Y(f)(p)=D(f)(p)=X_p(f).
\end{align*}
Thus $Y_p=X_p$ as derivations at $p$ for every $p\in M$. Therefore $Y=X$, proving uniqueness.
[/step]