Why is the pullback completely determined by $d f^\ast = f^\ast d$ in de Rham cohomology? Fix a smooth map $f : \mathbb{R}^m \rightarrow \mathbb{R}^n$.  Clearly this induces a pullback $f^\ast : C^\infty(\mathbb{R}^n) \rightarrow C^\infty(\mathbb{R}^m)$.  Since $C^\infty(\mathbb{R}^n) = \Omega^0(\mathbb{R}^n)$ (the space of zero-forms) by definition, we consider this as a map $f^\ast : \Omega^0(\mathbb{R}^n) \rightarrow  \Omega^0(\mathbb{R}^m)$.  We want to extend $f^\ast$ to the rest of the de Rham complex in such a way that $d f^\ast = f^\ast d$.
Bott and Tu claim (Section I.2, right before Prop 2.1), without elaboration, that this is enough to determine $f^\ast$ .  I can see why this forces e.g.
$\displaystyle\sum_{i=1}^n f^\ast \left[ \frac{\partial g}{\partial y_i} d y_i \right] = \sum_{i=1}^n f^* \left[ \frac{\partial g}{\partial y_i}\right] d(y_i \circ f)$,
but I don't see why this forces each term of the LHS to agree with each term of the RHS -- it's not like you can just pick some $g$ where $\partial g/\partial y_i$ is some given function and the other partials are zero.

Consider $h = g \circ Q_{i}$ where $Q_{i}$ sends $(a_1,...,a_n)$ to $(0,\dotsc, a_i, \dotsc, 0)$. Apply your observation to $h$.
