I think that the difference is about the object of what you are good at/with.
If it is a verb, you will use at. For example you are good at playing poker (not with playing poker), you are good at cooking pasta (not with cooking pasta).
In general if it is a noun you will use with. For instance I could say I am not good with words, or with numbers (and not at words or at numbers).
I hope it helps!