ICAO doesn't directly handle METAR/TAF codes. These are delegated to WMO and are thoroughly explained in the Manual on Codes (doc 306) found at the bottom of this page:
http://www.wmo.ch/web/www/WMOCodes.html - you want FM-15 for METAR, FM-16 for SPECI and FM-51 for TAF, found in Vol 1 part A and Regional Codes in Vol 2.