When developing powerups for your game, you have to take mechanics into account as well as function. What this means is that if you give the player too much access, then they can end up “over” powered and break the combat mechanics, or even worse, the player may find that the lack of challenge makes the game less enjoyable. Give the player too little access and they feel starved. So how do you determine what a powerup needs in order to work just right?
Well, the truth is that there is no real right answer… There is no magic one size fits all way to handle a situation like this. But this is where “Playtesting” comes in!
This is the process of taking the game mechanics that you are building and implementing them into the game so that you can test them out. It is necessary and full of struggles as well as rewards. You may have to repeat the same sequence of movements over, and over, and over until you figure out how to fix the problem you're dealing with. But this applies to development, as much as it does to debugging.
Testing the spacing between attacks, or the challenge presented against your enemy AI when a powerup lasts for 5 seconds instead of 7 can make the difference between a fun time, and an overpowered player that completely obliterates any sense of a challenge and in effect, any sense of enjoyment.
So the only advice I can give here without breaking down a 30-minute lecture on Game Feel vs Game Psychology is that you just need to test it out. Do it again and again, and when you're all done, do it 10 more times. Find out what’s fun, what your game is meant to portray, and how that is going to feel for the player. Then try and emphasize or capture that feeling within the mechanics you implement and the functions that you assign them.