The correct option is C at
The context refers to an activity (making soup). In this case, the phrase good "at" is correct as the preposition "at" in combination with "good" form the phrase "good at". This phrase is used to imply being skilled at some activity. Thus, "at" in option C is the correct answer.
The preposition "by" indicates the means of achieving something.
To be good "for" something is used to query if the doer is beneficial for some activity.
"From" indicates the raw material out of which something is manufactured.
Thus, option C is the correct answer.