[noun] + が + 上手
[verb (dictionary form)] + の + が + 上手 [verb (dictionary form)] + こと + が + 上手
上手 is praise, so it is for other people's skills. Saying it about yourself sounds like boasting. For your own strong points, use とくい得意, "good at, my strength".
When someone says your Japanese is 上手, the usual reply plays it down rather than saying thank you outright.
These go beyond 上手 at the end of a sentence.
上手 takes the ordinary な-adjective negative. あまり with it is the polite way to say someone is not good at something; へた下手 is blunter.
Before a noun, 上手 takes な. Before a verb, it takes に and means "well, skilfully".