Почему i is not defined?
for (i = 0; i < skillsContent.length; i++) {
Ты забыл объявить переменную i
Просто добавь let и всё заработает:
for (let i = 0; i < skillsContent.length; i++) {

Кстати not defined и undefined - это разные вещи.
Потому что если в функции не объявить переменную - она будет взята из внешнего блока, а если и там нигде не объявлена, но нет 'use strict' - будет использоваться поле глобального объекта window, то есть, window.i
Если use strict есть, то поведение будет нормальным - ругаться на необъявленную переменную.