Decomposition of a tensor product of Lie algebra representations into irreducibles
In all generality there is the following basic method: compute the (formal) characters of each representation (using Weyl's character formula or Freudenthal's recursive weight multiplicity formula), multiply the two to find the character of the tensor product, then repeatedly take a highest (remaining) weight in the character, subtract off (the appropriate multiple of) the character of the corresponding irreducible highest weight representation after contributing it to the result, and so on until nothing is left of the character.
There is a better method that needs to develop only the full character of one of the two factors being multiplied; the result is multiplied by the highest weight (only) of the other factor. The result is a non $W$-symmetric formal sum of weights; any non-dominant contributions in it are made more dominant (or annihilated) by anti-reflection in the simple root hyperplanes shifted downwards. This means the non-dominant weights $\mu$ with $\langle\mu,\alpha_i^\vee\rangle=-1$ lie one the shifted hyperplane and are annihilated; weights further down with respect to $\alpha_i^\vee$ are reflected in that shifted hyperplane and their coefficient replaced by its opposite. After repeating thes operations sufficiently often, every remaining term has become dominant, and represents an irreducible component of the tensor product.
There is also a general formula using Littelmann paths, or Lakshmibai-Seshadri paths (which are particular instances), which are techniques related to crystal graphs. They are somewhat more difficult to apply in general, but for classical types there are special instances that can be implemented efficiently, such as the Littelwood-Richardson rule in type $A_n$.