clamping UART signals
There could be a lot more to it than just clamping, depending on what you mean by "power domain".  If you are only talking about going between two ICs on the same board with the same ground but different power voltages, then level shifters is all you need.

Note that going from high to low voltage can be as simple as a resistor divider.  For example, a 5 V logic signal with 1 k&Omega; in series followed by 2 k&Omega; to ground brings the level safely down to what 3.3 V logic can handle.  Some ICs may run on 3.3 V but have "5V tolerant" inputs, in which case you don't need any level conversion at all.

Going from low to high voltage requires a level shifter in the general case, but look closely at the minimum guaranteed high level of the input.  If you can arrange the input to have TTL levels, then even 3.3 V is sufficiently above the minimum high level to use just a direct connection.  If you need to perform some logic between the two UARTs, using logic chips with TTL levels gets you level conversion for free.  For example, use 74HCTxxx instead of 74HCxxx logic chips.

If these power domains are fed from different wall power and are each grounded locally, then it gets more complicated.  Even if the grounds are in theory tied together, the path may be long and there can be significant ground offset compared to the small digital voltages.  In that case, opto-isolation is usually the best approach.  Consider the baud rate and the speed of the optos carefully.  Some optos, especially cheap ones, can be rather slow.  At 115.2 kBaud, each bit lasts 8.7 &micro;s.  The opto delay should be a small fraction of that, like around 1 &micro;s maximum in this example.  If baud rate is only 9600 baud, for example, then each bit lasts 104 &micro;s and even a slow 10 &micro;s opto will do fine.  Also arrange the polarity so that the opto is off at the line idle level.  This minimizes power and maximizes the lifetime of the LED in the opto.