{"_id":"@alcanivorax/git-msg","_rev":"4-6b5e3f85a868d88f3cd71437a28dc590","name":"@alcanivorax/git-msg","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@alcanivorax/git-msg","version":"0.1.0","keywords":["git","commit","cli","conventional-commits","developer-tools"],"author":{"name":"alcanivorax"},"license":"MIT","_id":"@alcanivorax/git-msg@0.1.0","maintainers":[{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"}],"homepage":"https://github.com/alcanivorax/git-msg#readme","bugs":{"url":"https://github.com/alcanivorax/git-msg/issues"},"bin":{"git-msg":"dist/index.js"},"dist":{"shasum":"c8f2fea4fd7d636a5a46172fc3b2ce390e4bd78e","tarball":"https://registry.npmjs.org/@alcanivorax/git-msg/-/git-msg-0.1.0.tgz","fileCount":16,"integrity":"sha512-Vi6ck8bMLVMNBnpfAbrbZPm5HSKWORnifPU6HIELzKyfaX3q+3O96mXSFTIzfTeDsC9R545LXpGR8Ubdy2weBA==","signatures":[{"sig":"MEQCIB+uenJ9Im4GzlCTIVN7JejsXqa+XT+lqmxOgkTO61GgAiBzCHuzacNTMisw/YkjD6iceC8zwwnYy2kQ1EbfR6hwEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25490},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2a34c5c878befae8299ae826aa251bde72e8aed5","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest","build":"tsc","format":"prettier --write .","lint:fix":"eslint . --fix","postbuild":"chmod +x dist/index.js","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"},"repository":{"url":"git+https://github.com/alcanivorax/git-msg.git","type":"git"},"_npmVersion":"10.9.3","description":"A Git-native CLI that suggests conventional commit messages from staged changes.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","vitest":"^4.0.17","prettier":"^3.8.0","typescript":"^5.9.3","@types/node":"^25.0.9","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/git-msg_0.1.0_1769508959616_0.8879100324473606","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alcanivorax/git-msg","version":"0.1.1","keywords":["git","commit","cli","conventional-commits","developer-tools"],"author":{"name":"alcanivorax"},"license":"MIT","_id":"@alcanivorax/git-msg@0.1.1","maintainers":[{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"}],"homepage":"https://github.com/alcanivorax/git-msg#readme","bugs":{"url":"https://github.com/alcanivorax/git-msg/issues"},"bin":{"git-msg":"dist/index.js"},"dist":{"shasum":"7c2517049c84680c6275249b6cfbf62f9d0e3601","tarball":"https://registry.npmjs.org/@alcanivorax/git-msg/-/git-msg-0.1.1.tgz","fileCount":16,"integrity":"sha512-ib2AP7My5faWO3WKgjTZadaLY1/IztGAvwzjQ/I5yDNl4egiYFi+krTU98WOzRT9bRIVHKTi3qQWXy0XVQqyzA==","signatures":[{"sig":"MEUCIQCCyZ0wBhLMTdBJr3Ul4vtnyA7Xvwqq0npZt6KodMeSvwIgP9H8mHG9HjwqJQZ5rX5XPLPwJ1qyJuvZ7M7Kkz3OCD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25543},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"862a548cd452d2777784d41b00d20c380a594ac3","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest","build":"tsc","format":"prettier --write .","lint:fix":"eslint . --fix","postbuild":"chmod +x dist/index.js","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"},"repository":{"url":"git+https://github.com/alcanivorax/git-msg.git","type":"git"},"_npmVersion":"10.9.3","description":"A Git-native CLI that suggests conventional commit messages from staged changes.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","vitest":"^4.0.17","prettier":"^3.8.0","typescript":"^5.9.3","@types/node":"^25.0.9","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/git-msg_0.1.1_1769509139173_0.6467694484198705","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alcanivorax/git-msg","version":"0.1.2","keywords":["git","commit","cli","conventional-commits","developer-tools"],"author":{"name":"alcanivorax"},"license":"MIT","_id":"@alcanivorax/git-msg@0.1.2","maintainers":[{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"}],"homepage":"https://github.com/alcanivorax/git-msg#readme","bugs":{"url":"https://github.com/alcanivorax/git-msg/issues"},"bin":{"git-msg":"dist/index.js"},"dist":{"shasum":"10103247d77f1f1b2640a0199e881b66996849a3","tarball":"https://registry.npmjs.org/@alcanivorax/git-msg/-/git-msg-0.1.2.tgz","fileCount":16,"integrity":"sha512-hY9WJHAP8JdFzdHDyDQMBJ3URpWVOqXwtCBCphOYzLi29/XIiYbPntjI+d419Cr/j0nmjZ3hV+7N7m5479W3JA==","signatures":[{"sig":"MEQCIA2F9juF+iEjYe3jWUg//H+mGawCUXxx33i7Du+Amw7aAiBMrRYkGt4PxQg7Yy0PWtU3IgrcpJ2lKPNXgY2RoAG2zA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25539},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"11e7fb5474947ab4af911317e38205f4b3241da6","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest","build":"tsc","format":"prettier --write .","lint:fix":"eslint . --fix","postbuild":"chmod +x dist/index.js","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"},"repository":{"url":"git+https://github.com/alcanivorax/git-msg.git","type":"git"},"_npmVersion":"10.9.3","description":"A Git-native CLI that suggests conventional commit messages from staged changes.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","vitest":"^4.0.17","prettier":"^3.8.0","typescript":"^5.9.3","@types/node":"^25.0.9","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/git-msg_0.1.2_1769510421240_0.4678642033590428","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alcanivorax/git-msg","version":"0.1.3","description":"A Git-native CLI that suggests conventional commit messages from staged changes.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"bin":{"git-msg":"dist/index.js"},"scripts":{"dev":"tsx src/index.ts","build":"tsc","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","format":"prettier --write .","format:check":"prettier --check .","lint":"eslint .","lint:fix":"eslint . --fix","prepublishOnly":"pnpm run build","postbuild":"chmod +x dist/index.js"},"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/alcanivorax/git-msg.git"},"keywords":["git","commit","git-commit","commit-message","conventional-commits","cli","developer-tools","productivity"],"author":{"name":"alcanivorax"},"license":"MIT","packageManager":"pnpm@10.28.0","devDependencies":{"@types/node":"^25.0.9","@typescript-eslint/eslint-plugin":"^8.53.1","@typescript-eslint/parser":"^8.53.1","eslint":"^9.39.2","prettier":"^3.8.0","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.17"},"_id":"@alcanivorax/git-msg@0.1.3","gitHead":"6563aa03c3b4b79dee90332b92ec1d3657953884","bugs":{"url":"https://github.com/alcanivorax/git-msg/issues"},"homepage":"https://github.com/alcanivorax/git-msg#readme","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-aBYhVrqHdCdKkJa0M6ulTzVqsJ2w+tWwbNY88i1q7EaRSbp2yDR0qXt/hZLU40ttHp19fRd3sAbjRNiLzMHYmw==","shasum":"feb78beb3f83f6a73e6940d2106beeaf7b0f345f","tarball":"https://registry.npmjs.org/@alcanivorax/git-msg/-/git-msg-0.1.3.tgz","fileCount":19,"unpackedSize":45595,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFrADyCOh0IfbLm3+jqrC+P4u7CICxkoFrBfDJqilHz0AiBk4/Y/QVDw6dlNUAwNLj/0GfO8HcXQl39/byZDdenvhQ=="}]},"_npmUser":{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"},"directories":{},"maintainers":[{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/git-msg_0.1.3_1773505637331_0.247851011132173"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-27T10:15:59.494Z","modified":"2026-03-14T16:27:17.564Z","0.1.0":"2026-01-27T10:15:59.767Z","0.1.1":"2026-01-27T10:18:59.324Z","0.1.2":"2026-01-27T10:40:21.368Z","0.1.3":"2026-03-14T16:27:17.454Z"},"bugs":{"url":"https://github.com/alcanivorax/git-msg/issues"},"author":{"name":"alcanivorax"},"license":"MIT","homepage":"https://github.com/alcanivorax/git-msg#readme","keywords":["git","commit","git-commit","commit-message","conventional-commits","cli","developer-tools","productivity"],"repository":{"type":"git","url":"git+https://github.com/alcanivorax/git-msg.git"},"description":"A Git-native CLI that suggests conventional commit messages from staged changes.","maintainers":[{"name":"alcanivorax","email":"roshansingh6.022@gmail.com"}],"readme":"<h1 align=\"center\">git-msg</h1>\n\n<p align=\"center\">\n  <img\n    src=\"https://raw.githubusercontent.com/alcanivorax/git-msg/main/assets/git-msg-preview.gif\"\n    alt=\"git-msg demo\"\n    width=\"900\"\n  />\n</p>\n\n<p align=\"center\">\n  A Git-native CLI that suggests conventional commit messages from staged changes.\n</p>\n\n---\n\n`git-msg` removes the pause before `git commit`. Stage your changes, run `git msg`, and get a clear commit message you can use, edit, or cancel — without leaving the terminal.\n\nNo AI. No config. No editor.\n\n## Install\n\n```bash\nnpm i -g @alcanivorax/git-msg\n```\n\n## Usage\n\nStage your changes as usual, then run:\n\n```bash\ngit add .\ngit msg\n```\n\nYou'll see something like:\n\n```\nSuggested commit message:\n\n  feat(auth): add user authentication\n\n[e]dit  [u]se  [c]ancel\n```\n\nPress a single key — no Enter required.\n\n| Key | Action                               |\n| --- | ------------------------------------ |\n| `u` | Commit with the suggested message    |\n| `e` | Edit the message inline, then commit |\n| `c` | Abort                                |\n\n## Inline editing\n\nPressing `e` opens a prompt with the message pre-filled:\n\n```\nEdit commit message:\n> feat(auth): add user authentication\n```\n\nEdit it like any shell input. `Enter` commits. `Ctrl+C` cancels. No vim, no `$EDITOR`.\n\n## Message format\n\nSuggestions follow the [Conventional Commits](https://www.conventionalcommits.org/) format:\n\n```\n<type>(<scope>): <verb> <object>\n```\n\nThe scope is included when the staged files share a clear module or directory. It is omitted when changes span multiple unrelated areas.\n\n**Examples:**\n\n```\nfeat(auth): add user authentication\nfix(api): handle null response in user validation\nfeat(auth): implement JWT token refresh\nrefactor: remove legacy payment module\ntest(auth): add login flow tests\nchore: update eslint config\ndocs: update contributing guide\nci: update node version matrix\n```\n\n## How messages are generated\n\n`git-msg` reads your staged changeset and derives the message from three sources:\n\n**File metadata**\n\n- Git status codes (`A`, `M`, `D`, `R`, `C`) determine the verb — `add`, `remove`, `rename`, etc.\n- File paths determine the scope and object — `src/auth/login.ts` → scope `auth`\n- Change size (insertions vs. deletions) refines the verb for modification-only changes\n\n**Diff content**\n\n- Newly declared symbols (functions, classes, types, interfaces) are extracted and used as the commit object — `validateUserEmail` → `user email`\n- Fix/error keywords in added lines (`error`, `bug`, `crash`, `invalid`, etc.) promote the type to `fix`\n- Test framework patterns (`describe`, `it`, `expect`) promote the type to `test`\n- New package imports are detected for context\n\n**Classification**\n\n- Files are classified into categories (code, tests, docs, config, build, ci, styles) and the dominant category maps to a commit type\n- When signals conflict, higher-confidence signals win — fix patterns beat a generic `feat`, all-deletes become `refactor`\n\nNo AI. No AST parsing. No network calls. The tool runs entirely offline and produces a deterministic result for a given set of staged files.\n\n## Options\n\n```\ngit msg [options]\n\n  -h, --help     Show help\n  -v, --version  Show version\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}