The "fundamental rule" is that you are not allowed to use undefined expressions in your proofs. Using an expression before its definition is a syntactic error, period. If you start your argument with a statement like "$0^0 = 1$" without defining what "$0^0$" is supposed to mean, then it's the same type of error as saying "Let $x = ([[3,,7\bigoplus{\frac{\emptyset}{:)}}$" without specifying what "$([[$" and "$\frac{\emptyset}{:)}$" and all the other symbols are supposed to mean. It's just a meaningless combination of weird characters.
Some of the answers here are also mostly meaningless combinations of characters. Let's take a look at some of them.
The statement "(Tending to 0+)^(tending to 0) is 1", except being an informal combination of English words and mathematical symbols, is also misleading, because it suggests a wrong mathematical statement. "(Tending to 0+)^(tending to 0)" can be whatever you want. For example, take a look at the following limits:
$\qquad \lim_{n\to\infty}\frac{1}{n}^{\frac{1}{n}} = 1$
$\qquad \lim_{n\to\infty}\frac{1}{n}^{\frac{1}{log(log(n))}} = 0$
$\qquad \lim_{n\to\infty}(\exp(-n \log(\pi))^{-\frac{1}{n}} = \pi$
$\qquad \lim_{n\to\infty}\frac{1}{n}^{(\frac{n \mod 2}{n} + \frac{(n+1) \mod 2}{\log(\log(n))})}$ is undefined, the sequence does not converge to anything.
The statement "$0^0\neq 1$" is invalid for the same reasons: it contains an undefined expression "$0^0$", so the whole statement is again just a meaningless sequence of characters.
The comment of Renato Faraone is correct, because there is an explicit limit $\lim\limits_{x\to 0+}x^x$ given.
However, sometimes (for example if one is working with polynomials), one defines $x^0 \equiv 1$, because it makes sense in the context of polynomials, and helps to keep the notation simple yet consistent. However, as soon as you leave the context of e.g. polynomials, you must either abandon this notation, or check that it still makes sense in the other context. For example, $x/x$ is not a polynomial, but rather a rational function. To be precise, "$x/x$" does not have any meaning either, until you specify what it means. For example, you could define a function $x \mapsto \frac{x}{x}$ with the domain $\mathbb{R}\backslash\{0\}$ and the codomain $\mathbb{R}$. Having this definition, we can clearly state that this thing is not a polynomial on $\mathbb{R}$, because it is not even defined at $0$. Therefore, if your previous definition $0^0\equiv 1$ was designed for working with polynomials, you are not allowed to throw it at your weird non-polynomial function, at least not without extending the definition of $0^0$ in some sensible way.