In addition to them things you mentioned, let me offer this. A PM should know and understand ( there's a difference between these that's critical), not only the "What", or the customer requirements, but also the "Why", or their motivation to initiate the project in the first place. This will give the PM insight into latent scope or constraints that may emerge later. I'd also add that the PM needs to know what metrics/criteria the customer is using to measure project performance, and then make sure that the Project team is using the same metrics/criteria. If you're not measuring or perceiving your performance the same way the customer is, that's a customer relationship disaster just waiting to happen.