Skip to content

πŸ‰ Commoji is a compact and expressive tagging system that blends meaning and emoji to make your commit history more readable and beautiful. 🏷️

License

Notifications You must be signed in to change notification settings

igorskyflyer/commoji

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

62 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Icon of Commoji, a Visual Studio Code extension

Commoji

This file contains the
v1.1.0 β€’ 27 Jul 2025
specification and documentation of Commoji.
πŸš€ Head to the Revisions or Releases page to browse the other versions.

πŸ‰ Commoji is a compact, expressive tagging system that blends meaning and emoji to make your commit history more readable and beautiful. 🏷️


πŸ“ƒ Table of Contents


πŸ€– Features

Commoji’s purpose is to transform the way developers communicate intent through commit messages – by blending semantic clarity with visual expressiveness. It's not just a tagging system; it’s a visual grammar for storytelling in code.


πŸ•΅πŸΌ Usage

πŸ“ Format

Commoji proposes the following formats when writing commit messages:

  • when the scope is known or not global: <emoji> <tag>(<scope>): <verb> <object>

  • when the scope is unknown or global: <emoji> <tag>: <verb> <object>

Use the UTF-8 emoji glyph wherever possible.
If your environment doesn’t render emojis, fall back to the ASCII aliases below.

All the elements except the scope and the object should be taken from the tables below. While the object is free-form, it should ideally be a concise, semantically clear noun phrase. See additional recommendations for the object below.


🏷️ Tags

Commoji achieves its goal by defining the following tags, their purpose, emoji and the fallback/alias ASCII sequence:

Emoji Tag Purpose ASCII Alias
🐣 init Initial commit / setup :hatching_chick:
✨ feat New feature :sparkles:
πŸ› fix Bug fix :bug:
πŸ“š docs Documentation updates :books:
πŸ’„ style Code style or visual tweaks (no logic change) :lipstick:
πŸ”¨ refactor Code refactoring :hammer:
⚑ perf Performance improvements :zap:
βœ… test Adding/modifying tests :white_check_mark:
🏭 build Build system updates :factory:
πŸ‘·πŸ» ci CI configuration changes :construction_worker:
πŸš€ deploy Deployment :rocket:
πŸ”§ chore Misc tasks and maintenance :wrench:
πŸ”¬ experiments Experimental features :microscope:
βͺ revert Reverting changes rewind:
πŸ”€ merge Merge commits :twisted_rightwards_arrows:
πŸ“¦ deps Dependency updates :package:
βš™οΈ config Configuration changes :gear:
πŸ”₯ cleanup Remove dead code :fire:
πŸ” security Security patches or enhancements :closed_lock_with_key:
🧠 ux UX improvements beyond styling :brain:
β™Ώ accessibility Enhancing accessibility :wheelchair:
🌐 i18n Internationalization / localization :globe_with_meridians:
Table 1. Commoji's tagging system


Note

Tags should be written in lowercase.


πŸ‘“ Scope

The scope of a commit narrows its focus to a specific section of your codebase, such as a module, feature, or directory. This enables readers to swiftly determine where the change is applicable without the necessity of reviewing the entire diff.

When selecting a scope, please follow these guidelines:

  • choose the name of the pertinent module, component, or feature folder (for example, auth, ui, api, database),
  • write scopes in lowercase and use hyphens for names that consist of multiple words (for instance, user-profile, error-handler)
  • avoid using excessively broad or generic scopes (like core, misc), as they detract from the purpose of scoping.
  • if the change impacts the project as a whole or spans multiple areas, it is recommended to omit the scope altogether.


Note

Scopes should be written in lowercase.


πŸ› οΈ Verbs

Commoji also proposes the following imperative verbs to be used when writing commit messages:

Verb Action Purpose
add Introduce a new element
update Modify an existing element
remove Eliminate something
rename Change a name or label
move Reposition without modifying content
implement Build out functionality
fix Resolve a fault or issue
refactor Improve structure without changing behavior
optimize Improve performance or efficiency
test Add or modify tests
configure Adjust system or environment settings
prepare Set up for release or deployment
release Publish or ship a version
revert Undo a previous change
merge Combine branches or changes
experiment Try out prototype ideas
clean Purge unused or obsolete elements
translate Add or revise localization
Table 2. Commoji's verbs


Note

Verbs should be written in lowercase. Use the imperative, present tense.


πŸ“š Object

The object in the commit message should be specific enough to convey what changed. Aim for a concise noun phrase that captures intent; use the commit body for details.


Tip

Keep your summary under ~50 characters. If it grows longer, split out details into the body.


Guidelines:

  • use a precise noun phrase whenever applicable

βœ… Good: πŸ“š docs: add ToC to README

❌ Bad: πŸ“š docs: update README (too generic)

  • don’t list every change in the summary
  • summarize the primary intent, e.g., β€œadd OAuth section,” not β€œadd OAuth section, fix typo, update link.”
  • leverage the commit body for elaboration:
πŸ“š docs: add ToC to README

- generated Table of Contents for each heading  
- updated README links to anchor tags  
- fixed minor typos in examples

When a change truly spans multiple concerns, choose a higher-level verb:

πŸ“š docs: overhaul README, then explain sub-items in the body.


πŸ”¬ Examples


Here are some examples of objects when writing commit messages that adhere to Commoji's conventions.

Summary Valid Reason
πŸ“š docs: add ToC in README βœ… Specific feature added
πŸ“š docs: rename section headings βœ… Clear noun phrase
πŸ“š docs: update installation guide βœ… Specific docs subsection
✨ feat(ui): add dark mode toggle βœ… Pinpointed feature
πŸ› fix(auth): fix login null pointer βœ… Precise bug identifier
⚑ perf: optimize startup time βœ… Measurable metric improved
πŸ“š docs: update docs ❌ Object too broad
✨ feat: add mode ❌ Ambiguous object
πŸ› fix: fix bug ❌ Generic object
⚑ perf: improve performance ❌ Unspecified metric
Table 3. Commoji's object examples

πŸ—’οΈ Examples

The following table shows some usage examples that are valid or invalid according to Commoji’s formatting guidelines.


Commit Message Valid Why
πŸ“š docs: update README βœ… All elements follow Commoji format
✨ feat(auth): implement login flow βœ… Emoji, tag, verb, scope and object aligned
πŸ› fix: Fix Login Bug ❌ Verb is capitalized – should be lowercase
πŸ“š update README ❌ Tag (docs) is missing
πŸš€ deploy: deploy to prod ❌ Verb is not from verb list (deploy β‰  release)
πŸ”¨ refactor(auth): refactored auth ❌ Verb refactored is not in imperative, present tense
πŸ› fix: remove typo βœ… Uses tag fix, verb remove, valid object
πŸ”₯ cleanup: remove unused imports βœ… Grammatically clear and semantically precise
✨ feat(ui): implement dark mode βœ… Grammatically clear and semantically precise
Table 4. Commoji-formatted commit messages

πŸ“ Changelog

πŸ“‘ See the full changelog in: CHANGELOG.md.


πŸͺͺ License

Licensed under the MIT license which is available here, MIT license.


πŸ’– Support

I work hard for every project, including this one and your support means a lot to me!
Consider buying me a coffee. β˜•

Donate to igorskyflyer

Thank you for supporting my efforts! πŸ™πŸ˜Š

🧬 Related

@igor.dvlpr/scrollend-polyfill

πŸ›΄ A performant and light (< 1.5KB) JavaScript polyfill for the scrollend Event. ⛸️


@igor.dvlpr/zing

🐌 Zing is a C# style String formatter for JavaScript that empowers Strings with positional arguments - composite formatting. πŸš€


@igor.dvlpr/strip-yaml-front-matter

πŸ¦“ Strips YAML front matter from a String or a file. πŸ‘Ύ


@igor.dvlpr/registry-apppaths

πŸͺ€ A Node.js module for reading the AppPaths registry key on Windows. Useful for retrieving applications that can be launched from the command prompt. πŸ—ƒ


@igor.dvlpr/emojilyzer

πŸ’¬ Emojifies strings, converting textual representations of emojis to graphical ones. πŸ–ŒοΈ


πŸ‘¨πŸ»β€πŸ’» Author

Created by Igor Dimitrijević (@igorskyflyer).

About

πŸ‰ Commoji is a compact and expressive tagging system that blends meaning and emoji to make your commit history more readable and beautiful. 🏷️

Resources

License

Stars

Watchers

Forks

Sponsor this project