I actually took a 3-month crash course on Visual Design because I was weak in that area (as a front-end developer). Probably one of the best professional investments I have made. The course taught me basically the above list.
I would add knowledge about grids and negative spacing to the above list.
I would add knowledge about grids and negative spacing to the above list.