I’ve been using the CMF tool for the last one year and I think its simplicity is its potential. Basically it is a terminal tool developd in Go by Walmart Digital that helps you to standarize the commits log of your projects.

I’ve been using for the last year and a half approximatley and all I can say its very useful. We agreed with the team the configuration we want to use and defined a set of changes that applies in our case. Also we choose the Jira flow and we changed the values for the change adding an emojis to make the commits a bit more funny to check them in the log.

You can install it via npm:

npm install -g go-cmf

or from Go:

go install github.com/walmartdigital/commit-message-formatter

After that, open a terminal and navigate to the root of the project you want to use it. Then type:

cmf init 

You will need to select one of the flows and it will create a .cmf.yaml file with the template of the selected one. You can edit that file in the way you want. The unique condition is that any variable you wanna use have to be defined using {{}}. Example: {{CHANGE}} it will prompt you asking the CHANGE you did and displaying the options you defined in the template.

Here is the .cmf.yaml file that I’m using on this site:

PROMPT:
    - KEY: "CHANGE"
      LABEL: "Type of change"
      OPTIONS:
        - VALUE: "feat โœจ"
          DESC: "A new feature"
        - VALUE: "fix ๐Ÿ›"
          DESC: "A bug fix"
        - VALUE: "test ๐Ÿšจ"
          DESC: "Adding missing tests or correcting wrong ones"
        - VALUE: "style ๐Ÿ’„"
          DESC: "A code change to improve clean code"
        - VALUE: "build-ci ๐Ÿ‘ทโ€โ™‚๏ธ"
          DESC: "Changes that affect the build system and/or CI configuration files and scripts"
        - VALUE: "refactor ๐Ÿ”จ"
          DESC: "A code change"
        - VALUE: "docs ๐Ÿ“š"
          DESC: "Documentation only changes"
        - VALUE: "chore ๐Ÿ“‡"
          DESC: "Changes that don't fit any of the options above"
    - KEY: "MESSAGE"
      LABEL: "Commit message"
TEMPLATE: "{{CHANGE}}: {{MESSAGE}}"