npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

gitquill

v0.2.0

Published

Privacy-first CLI that turns your git history into beautiful narratives — AI-generated commit messages and release notes. Works with any OpenAI-compatible endpoint, including local models via Ollama.

Downloads

157

Readme

🪶 gitquill

Privacy-first CLI for AI-generated commit messages & release notes.

Turn your git history into clean, Conventional-Commits-friendly narratives — with any OpenAI-compatible model, including fully local ones via Ollama.

License: MIT Node PRs Welcome Conventional Commits


✨ Why gitquill?

Writing good commit messages is a chore. Writing good release notes is a chore and a meeting. gitquill does both for you, without shipping your code to a third party if you don't want to.

  • 🔒 Privacy-first by default — points at a local Ollama model out of the box. Nothing leaves your machine unless you reconfigure it.
  • 🧩 Provider-agnostic — works with OpenAI, Groq, OpenRouter, LM Studio, Together, Mistral, DeepSeek, vLLM, llama.cpp, Jan, or any OpenAI-compatible endpoint.
  • 📐 Conventional Commits aware — parses, formats and groups commits by type. Your changelog writes itself.
  • 📝 Two commands, that's itgitquill commit and gitquill release.
  • 🪶 Tiny & dependency-light — no heavy TUI, no telemetry, no account.

🚀 Quick start

# 1. Install (when published) or run from source:
git clone https://github.com/Cryptoteep/gitquill.git
cd gitquill
bun install        # or npm install
bun run build

# 2. (Optional) pull a local model with Ollama
ollama pull qwen2.5-coder:7b

# 3. Make some changes, stage them, and let gitquill write the message
git add .
./dist/index.js commit --yes

Prefer a cloud provider?

gitquill config provider openai
gitquill config set provider.apiKey sk-...
gitquill commit

🧰 Commands

gitquill commit

Generate a commit message from staged changes and (optionally) create the commit.

gitquill commit                 # generate, confirm, commit
gitquill commit --all           # stage everything first
gitquill commit -y              # commit without prompting
gitquill commit -e              # open $EDITOR before committing
gitquill commit --dry-run       # just show the message
gitquill commit --language ru   # generate in Russian
gitquill commit --no-conventional
gitquill commit --type fix --scope auth   # hint type & scope
gitquill commit --max-diff 4000           # cap staged-diff size

gitquill release

Generate Markdown release notes from a commit range.

gitquill release                          # latest tag → HEAD
gitquill release --from v1.0.0 --to HEAD
gitquill release --tag v1.2.0 --out CHANGELOG.md
gitquill release --flat                   # no grouping by type
gitquill release --no-header              # omit the # project header

gitquill config

Inspect & edit the persistent config at ~/.gitquill/config.json.

gitquill config show
gitquill config path
gitquill config provider ollama          # apply a preset
gitquill config set provider.model llama3.1
gitquill config set commit.language es
gitquill config init                     # write a repo-local .gitquill.json
gitquill config reset

Presets: ollama · openai · groq · openrouter · lmstudio

Repo-local overrides

Run gitquill config init to create a .gitquill.json in your repo. Any field set there wins over your global ~/.gitquill/config.json, so a team can share a preferred model, language, or diff cap without touching anyone's global config. Commit it to share with collaborators.

gitquill doctor

Diagnose your setup — Node version, git binary, repo state, provider connectivity.

gitquill doctor

⚙️ Configuration

Config lives at ~/.gitquill/config.json (override with GITQUILL_CONFIG_DIR).

{
  "version": 1,
  "provider": {
    "name": "ollama",
    "baseUrl": "http://localhost:11434/v1",
    "apiKey": "ollama",
    "model": "qwen2.5-coder:7b",
    "temperature": 0.3,
    "maxTokens": 512
  },
  "commit": {
    "conventional": true,
    "maxLength": 72,
    "emitBody": true,
    "language": "en",
    "maxDiff": 20000
  },
  "release": {
    "groupByType": true,
    "includeContributors": true,
    "language": "en",
    "header": true
  }
}

Environment variables

| Variable | Purpose | | ---------------------- | -------------------------------------------------- | | GITQUILL_CONFIG_DIR | Override the config directory. | | OPENAI_API_KEY | Used by the openai preset if set. | | GROQ_API_KEY | Used by the groq preset if set. | | OPENROUTER_API_KEY | Used by the openrouter preset if set. | | EDITOR / VISUAL | Editor launched by gitquill commit -e. |

🔌 Using a local model (Ollama)

# install: https://ollama.com
ollama serve
ollama pull qwen2.5-coder:7b   # or llama3.1, mistral, qwen2.5-coder:14b …

gitquill config provider ollama
gitquill doctor                # should report "Provider reachable"
gitquill commit

No API key, no network egress, no per-token cost.

🤝 Contributing

Contributions are welcome and appreciated! See CONTRIBUTING.md for guidelines, the development workflow, and our commit conventions.

Good first issues are labeled good first issue.

🗺️ Roadmap

  • [x] Unit tests (vitest) — bun run test
  • [x] E2E tests against a mock OpenAI server — bun run test:e2e
  • [x] Repo-local .gitquill.json overrides
  • [x] --type / --scope commit hints
  • [ ] npm publish (npm i -g gitquill)
  • [ ] gitquill pr — draft PR descriptions
  • [ ] Streaming output for long release notes
  • [ ] Plug-in prompt templates
  • [ ] More provider presets (Together, Mistral, DeepSeek, vLLM)

📄 License

MIT © Cryptoteep and contributors. See LICENSE.

💛 Acknowledgements

Inspired by the wonderful work of Conventional Commits, commitlint, Ollama, and every maintainer who has ever dreaded writing release notes on a Friday afternoon.