Cooldowns are probably scripted in the abilities itself get the tick it was used and how long you have to wait before using it
For auto-use, once you have the cooldowns you can use a loop to check if they’re off cooldown and tell the server to fire the ability if they are (ofc sanity checks on the server still)
1 Client uses a skill move
2 Client fires server the skill move
3 Server executes the skill and tells the player to start cooldown and sends workspace:GetServerTimeNow()
4 Skill move info such as name / levelRequired / coolDown are held in ReplicatedStorage for both boundaries easy access so the client can visualize the cooldown.
5 Do what you prefer with the design (sliding cooldown, etc)
6 Server doesn’t constantly track or update your cooldown, just once checks if the time since that GetServerTimeNow that cooldown time has passed