Well, this is a very philosophical thread...but I like philosophical discussion, so why not? :)
Perhaps the biggest skill you need to have is the ability to solve problems. This is a remarkably domain-agnostic skill, but critical to give you a direction in everything you do as a hacker (after all, in one way or another, all programs solve problems). Conceptual Blockbusting is a great book for helping develop this skill (which, the author points out, not everyone naturally possesses, but most anyone can easily be taught).
be "Design", "Documentation", "Testing", "Coding", etc. the bottom line is that you have to be able to answer the question:
What problem am I trying to solve?
Percentage estimates of how much of each activity of design, testing, etc. should be done are relatively meaningless because it's fully dependant on what problem you're trying to solve.
By and large, hacking is far more about automating human reasoning than it is about computing, and by extension far more about being able to come up with a solution to a problem than it is about writing Perl code, or Python code, or <insert language here> code.