[step:Verify smoothness of the pointwise product in an arbitrary chart]Let $(U, \varphi)$ be a chart on $M$ with coordinates $(x_1, \dots, x_n)$ and associated coordinate coframe $(dx_1, \dots, dx_n)$ on $U$. For multi-indices $I = (i_1 < \cdots < i_p)$ and $J = (j_1 < \cdots < j_q)$ with entries in $\{1, \dots, n\}$, write $dx_I := dx_{i_1} \wedge \cdots \wedge dx_{i_p}$ and similarly $dx_J$. The forms $\{dx_I : |I| = p\}$ and $\{dx_J : |J| = q\}$ are pointwise bases of $\Lambda^p T_x^*M$ and $\Lambda^q T_x^*M$ for $x \in U$.
Since $\alpha \in \Omega^p(M)$ and $\beta \in \Omega^q(M)$ are smooth sections, there exist unique smooth functions $\alpha_I, \beta_J : U \to \mathbb{R}$ with
\begin{align*}
\alpha|_U = \sum_{|I| = p} \alpha_I \, dx_I, \qquad \beta|_U = \sum_{|J| = q} \beta_J \, dx_J.
\end{align*}
By the pointwise $\mathbb{R}$-bilinearity established in the previous step, for $x \in U$,
\begin{align*}
(\alpha \wedge \beta)_x = \sum_{|I| = p,\, |J| = q} \alpha_I(x)\, \beta_J(x)\, (dx_I \wedge dx_J)_x.
\end{align*}
The pointwise wedge product $dx_I \wedge dx_J$ is a fixed smooth section of $\Lambda^{p+q} T^*U$ (it equals $\pm dx_K$ for the sorted multi-index $K = I \cup J$ when $I \cap J = \varnothing$, and $0$ otherwise — these signs and indices do not depend on $x$). Each $\alpha_I \beta_J : U \to \mathbb{R}$ is smooth as a product of smooth functions. Hence $\alpha \wedge \beta|_U$ is a finite $C^\infty(U)$-linear combination of smooth sections of $\Lambda^{p+q}T^*U$ and is therefore smooth on $U$. Since the chart $(U, \varphi)$ was arbitrary and $M$ is covered by such charts, $\alpha \wedge \beta \in \Omega^{p+q}(M)$.[/step]