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.