How can I perfect that skill of choosing the right design patterns?
At times you could ask 5 experts which is best, and you might get 5 different answers.
I'd say write clean code yes, and just browse good quality github applications and draw ideas here.
A design pattern to me is basically certain code here, put that class there, etc.
Some like the repository pattern, some just go for fat controllers.
Now for a secret: The cpu cares less where the code comes from.
It will run the same whether it came from a repository pattern, or from a plump controller, or even vanilla php spaghetti code.
OOP, patterns, etc are for humans for readability, a compiler and the cpu does not care.
But I like readable clean code.