Beyond a CS degree there are some obvious skills you need such as the ability to present to customers and at industry conferences. But more than a specific skill set, you need to develop a base of knowledge. You need to spend time with the sales organization learning how a deal progresses from an email address of a prospect to a closed deal 9 months later. You need to spend time with marketers to understand how hard and expensive it is to generate a quality lead. You need to spend time with quality assurance and support teams to understand the ramifications of ill defined features. You need to spend time with software executives to learn how a software business operates, how contracts are negotiated for example or how a partnership is put together. You need to learn the domain that your product is in and become something very close to a domain expert in it. You need to know your customers, their business, their challenges and their opportunities. You need to know your competitors as well.
More than anything though, you need to develop a comfort level with all of this so that you can say "no" to everyone when need be. You need to be able to tell a sales guy, "no", he can't have that feature to close that deal because you know it will never close anyway. You need to be able to tell an executive, "no" we can't ship it this quarter because it won't sell without a "widget segmenter" feature. You need to be able to tell an engineering manager "no", he can't have an extra 3 weeks to refactor the "widget segmenter" because it's just not going to matter to the customers. You need to be able to tell a marketer, "no" you can't build a product for that market segment, it has to be narrower. You need to be able to tell a customer, "no" he can't have that feature because it's not going to make his business problem go away. Products don't succeed because of "yes". Yes is easy, but not very useful in building an excellent product. It takes a lot of experience to get to "no".