_This specification is inspired by and supersedes the [Brainclements commit message format](https://gist.github.com/brianclements/841ea7bffdb01346392c)._
-**build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
-**ci**: Changes to our CI configuration files and scripts (examples: CircleCi, SauceLabs)
-**docs**: Documentation only changes
-**feat**: A new feature
-**fix**: A bug fix
-**perf**: A code change that improves performance
-**refactor**: A code change that neither fixes a bug nor adds a feature
-**test**: Adding missing tests or correcting existing tests
##### Scope
The scope should be the name of the npm package affected (as perceived by the person reading the changelog generated from commit messages).
The following is the list of supported scopes:
-`layouts`
-`components`
-`components-widgets`
-`components-atoms`
-`pages`
-`pages-blog`
-`pages-docs`
-`scripts`
-`assets`
There are currently a few exceptions to the "use package name" rule:
- none/empty string: useful for `test` and `refactor` changes that are done across all packages (e.g. `test: add missing unit tests`) and for docs changes that are not related to a specific package (e.g. `docs: fix typo in tutorial`).
##### Summary
Use the summary field to provide a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- no dot (.) at the end
#### <a name="commit-body"></a>Commit Message Body
Just as in the summary, use the imperative, present tense: "fix" not "fixed" nor "fixes".
Explain the motivation for the change in the commit message body. This commit message should explain _why_ you are making the change.
You can include a comparison of the previous behavior with the new behavior in order to illustrate the impact of the change.