It's true that having knowledge of libraries is valuable, because as you say, how will you get anything done otherwise?
However, there's a certain type of learning that only occurs once, typically when you're first learning to program.
For example: you need to download data from a web page and parse it. If you're a total newbie, you first need to understand that there's a protocol (HTTP) involved, and that libraries exist to parse the markup language (HTML).
Just knowing that those libraries should be available in your language (standard or otherwise - another piece of knowledge) is valuable. But once you've done it once in one language, you'll know the approach for all other languages.
Another way to put it is that it's all important, depending on which problems you're trying to solve. But putting all your eggs in one basket is problematic and does not necessarily guarantee programming skill.
For example, control structures like `for' and `while' are clearly part of the language in C. But in Haskell they are part of the standard library.
That being said, I agree with your broader point. Having both domain knowledge and programming skills are key to being effective on a project.
Real-world domain knowledge is somewhere between helpful and vital, depending on one's role.
I strongly disagree with this bit. What are programming skills if not the ability to effectively get things done? How is domain knowledge not, therefore, directly tied to programming skills?
I agree with what I think your broader point is, that classes of knowledge (e.g. imperative vs. functional) are more important to note than, for example, particular languages. However, when it comes down to it, deep knowledge of the platform is the difference between clean code that's working quickly and spaghetti messes that take forever. I say this as someone who has written plenty of spaghetti. ;-)