This is similar to the Conventional Changelog:
https://github.com/conventional-changelog/conventional-chang...
I often use a customized Commit Lint in combo with Husky to enforce conventional changelog messages:
https://github.com/marionebl/commitlint
https://github.com/typicode/husky
You can also throw in something like the Commitizen cli for newcomers: