gitmoji-cli is an interactive command-line tool that injects gitmoji emojis into git commit messages. It operates in two modes: a client mode (`gitmoji -c`) that runs interactive inquirer prompts to assemble a commit message before shelling out to `git commit`, and a hook mode (`gitmoji -i`) that installs a `prepare-commit-msg` git hook which intercepts every `git commit` and prompts the user before writing the commit message file. Additional subcommands list, fuzzy-search, update, and configure the emoji dataset and CLI preferences. It depends on the gitmoji.dev public API as the source of emoji data, git itself, and the npm ecosystem. Architecturally it is a Node.js ESM CLI built with a Babel compilation pipeline and a deliberate mix of Flow-typed JavaScript and newer TypeScript modules. The command layer is cleanly separated from utilities: meow parses flags and subcommands, a small dispatcher routes to lazily-imported command modules, inquirer drives prompts with a registered autocomplete plugin, and execa shells out to git. The emoji dataset is fetched via node-fetch, cached in `~/.gitmoji/gitmojis.json` for offline use, and searched using fuse.js with weighted scoring. Configuration resolves through a precedence hierarchy of `.gitmojirc.json`, a `gitmoji` key in package.json, parent-directory lookups, and a schema-validated global conf store. Notable engineering exists in the git hook integration, which correctly detects in-progress rebases and amends, handles SIGINT so an interrupted prompt does not abort the user's commit, and skips prompting when the commit title already contains a Unicode or shortcode emoji. The codebase has comprehensive Jest unit and snapshot tests, GitHub Actions CI covering lint/flow/test/coverage, a release pipeline, and a current dependency set. Main quirks are the transitional dual type system (Flow + TypeScript) and a few cosmetic copy-paste issues, but overall this is a polished, well-maintained developer tool.
This is a VS Code extension that enables users to easily insert gitmojis (emojis related to git commits) into commit messages. The extension activates via a command or SCM menu item, presents an emoji picker, and inserts the selected emoji at a configurable position (start, end, or cursor) in the commit message. It features smart handling of existing emojis (removing them when repeats aren't allowed), usage-based sorting, auto-matching based on commit message content, and support for custom emojis. The architecture follows standard VS Code extension patterns with clear separation between UI logic, data (emoji definitions), and utility functions.