Currently there is no such status change but you could use the commented status change SC_HPREGEN and SC_SPREGEN. Uncomment them in status.hpp and in script_constants.hpp.
Then you need to define it in status.yml.
Then in skill_db.yml you link the skill to the status.
And then in the source code at the code where the skill is executed in skill.cpp you can just start it with:
sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))
"type" contains the status that is linked to the skill in skill_db.yml, if you don't define it there you could also hardcode it here.
skill_get_time() means it uses Duration1 defined for the skill.
And then in the regen code you can just check if the status change is active
if(sc && sc->getSCE(SC_HPREGEN)) {
[...]
}