[verb (dictionary form)] + のが上手
のが上手 means "good at doing". The verb is in the dictionary form, の turns it into a noun, and that noun takes が before 上手. The person who is good at it takes は.
上手 is a な-adjective, so it is 上手だった in the past and 上手じゃない in the negative. The verb stays in the dictionary form.
上手 is praise, so it is for other people. Said about yourself it sounds like boasting. For your own skills, use とくい得意, "my strong point".
With a noun, there is no の: にほんご日本語がじょうず上手ですね. The opposite is のがへた下手.