Pick a point $p$ on a smooth manifold $M$ and consider two $C^{\infty}$ functions $f: U \to \mathbb{R}$ and $g: V \to \mathbb{R}$, where $U,V$ are neighborhoods of $p$. We say that $(f,U)$ and $(g,V)$ are equivalent, if there exists an open $W \subset U \cap V$, such that $p \in W$ and $f|_{W} = g|_{W}$. The equivalence class of $(f,U)$ is then called the germ of $f$ at $p$. The set of all such germs at $p$ is denoted by $C^{\infty}_p(M)$.
I want to prove that $C^{\infty}_p(M)$ is a vector space over $\mathbb{R}$. This is a basic fact that is stated in almost every book on differential geometry, but I have never encountered a proof. I'm also a little bit confused of how to carry through such a proof because of the involved equivalence relation. I'd be very thankful if someone could help me formalize my arguments. I want to restrict myself here to my main problems of understanding:
Let us define the multiplication with an element $\lambda \in \mathbb{R}$ as $\lambda[(f,U)]_p := [(\lambda f, U)]_p$. How can I show that $C^{\infty}_p(M)$ is closed under this operation, i.e. how to show that $[(\lambda f, U)] \in C^{\infty}_p(M)$? I feel like there's almost nothing to show, because of course $\lambda f$ is also $C^{\infty}$ on $U$. How can I establish the existence of its equivalence class? Is there a subtlety I missed, or something else that needs to be shown for this closure property?
As two germs can have different domains we need to define the addition operation on their intersection, i.e. as $[(f, U)]_p + [(g, V)]_p := [(f+g, U\cap V)]_p$. Again $f + g$ is $C^{\infty}$. Is this all that needs to be shown? This feels really unsatisfactory!
We also need to show that the operations defined above are well defined. Let $(f,U) \sim (g,V)$, that is $f$ and $g$ agree in a neighborhood $W \subset U \cap V$ of $p$. Then we need to show that $\lambda [(f,W)]_p = \lambda [(g,W)]_p = [(\lambda f,W)]_p$. Since $f$ and $g$ are equivalent we have $f|_{W} = g|_{W}$. From this it follows that $\lambda f|_{W} = \lambda g|_{W}$ and thus $[(\lambda f,U)]_p = [(\lambda g,V)]_p$. Is this correct?