This should work, but it will only work on one unit. If you need it to work on multiple units (MUI), it will be slightly more complicated.
You need two triggers. The first one triggers when the unit casts the spell and reduces the cooldown of each affected ability. I put 5 seconds here. You need to loop through the levels of the skill so that each gets affected. If I'm not mistaken and the GUI version works differently, you have to be careful, because the cooldown setting function takes indices from 0 to maximum level -1. So, for a standard hero skill, you would have to loop from 0 to 2.
Then you start a timer that resets the cooldowns when it expires and you do the same thing on your second trigger. It put 15 seconds on the timer here. The timer resets when the unit uses the ability again, so it should have the behavior you're going for.
-
Events
-

Unit - (yourUnit) Starts the effect of an ability
-
Conditions
-

(Ability being cast) Equal to (yourCooldownReducingAbility)
-
Actions
-

Set VariableSet cooldownReduceAmount = (cooldownReduceAmount + 5)
-

For each (Integer A) from 0 to 2, do (Actions)
-


Loop - Actions
-



Unit - For Unit (yourUnit), Set cooldown of ability (affectedAbility1), Level: (Integer A) to (Ability Cooldown of (yourUnit) for ability (affectedAbility1), Level: (Integer A) - 5.)
-



Unit - For Unit (yourUnit), Set cooldown of ability (affectedAbility2), Level: (Integer A) to (Ability Cooldown of (yourUnit) for ability (affectedAbility2), Level: (Integer A) - 5.)
-



Unit - For Unit (yourUnit), Set cooldown of ability (affectedAbility3), Level: (Integer A) to (Ability Cooldown of (yourUnit) for ability (affectedAbility3), Level: (Integer A) - 5.)
-

Countdown Timer - Start cooldownResetTimer as a One-shot timer that will expire in 15.00 seconds
-
Events
-

Time - cooldownResetTimer expires
-
Conditions
-
Actions
-

For each (Integer A) from 0 to 2, do (Actions)
-


Loop - Actions
-



Unit - For Unit (yourUnit), Set cooldown of ability (affectedAbility1), Level: (Integer A) to (Ability Cooldown of (yourUnit) for ability (affectedAbility1), Level: (Integer A) + cooldownReduceAmount.)
-



Unit - For Unit (yourUnit), Set cooldown of ability (affectedAbility2), Level: (Integer A) to (Ability Cooldown of (yourUnit) for ability (affectedAbility2), Level: (Integer A) + cooldownReduceAmount.)
-



Unit - For Unit (yourUnit), Set cooldown of ability (affectedAbility3), Level: (Integer A) to (Ability Cooldown of (yourUnit) for ability (affectedAbility3), Level: (Integer A) + cooldownReduceAmount.)
-

Set VariableSet cooldownReduceAmount = 0