https://github.com/uliboooo/ghost_git_writer
write a git commit message, README or Diff Summary by LLM services.
https://github.com/uliboooo/ghost_git_writer
git llm message writer
Last synced: 26 days ago
JSON representation
write a git commit message, README or Diff Summary by LLM services.
- Host: GitHub
- URL: https://github.com/uliboooo/ghost_git_writer
- Owner: Uliboooo
- License: other
- Created: 2025-07-01T10:43:26.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2026-06-04T14:47:42.000Z (27 days ago)
- Last Synced: 2026-06-04T16:21:43.980Z (27 days ago)
- Topics: git, llm, message, writer
- Language: Rust
- Homepage:
- Size: 49.5 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ghost writer - `ggw`

Ghost git writer
[](https://www.rust-lang.org/)
https://uliboooo.github.io/ghost_git_writer/
**⚠️ beta ⚠️** and this doc is unstable to updating now...
## installing
```zsh
cargo install ghost_git_writer
```
### set api key in enviroment variables
- Gemini
- `GGW_GEMINI_API`
- `GEMINI_API_KEY`
- Anthropic
- `GGW_ANTHROPIC_API`
- OpenAI
- `GGW_OPENAI_API`
- Deepseek
- `GGW_DEEPSEEK_API`
## usage
```zsh
ggw [Options]
```
### use other source as diff
```zsh
❯ gda --staged | ggw commit --stdin -m gemini/gemini-2.5-flash
⠏ LLM call...finished. Generated msg:
╭────────────────────────────────────────────────────────────╮
│ feat: Set up Emacs with configuration migrated from Neovim │
╰────────────────────────────────────────────────────────────╯
continue?(y/n)>y
```
- Sub Commands
- `commit`: generate a git commit message from git diff by llm
- `readme`: generate a README from codebase.
- `sumdiff`: generate a summry of changes from git diff
- `which-sem`: in Sem Ver, Output which field should be incremented.
- Global Options(mainly)
- `-m --model`: model sepcific tag. there are tow pattern to specific model.
- `-p --path`: specific woek path. if it's empty, set current dir path.
- `-l --lang`: change output language.(default=english). e.g. `-l japanese`
- `-e --extra`: extra prompt. if you need to append order to llm.
- `--config`: config file path. if you need to locate other than `~/.config/ggw/config.toml` or `~/.ggw.toml`.
- `--oneline`: output only llm's return for cli pipes
- Options for `commit`
- `--auto-commit`: allow auto git commit by generated message
- `-D --diff `: specify commit hash or tag or git symbolic ref(e.g. 'HEAD')
- Options for `readme`
- `-s --source `: source files path. A list of file paths separated by ','.
- `-d --directory `: souce file folder
- `--merge-readme`: allow merge to existing README.md
- Options for `sumdiff`
- `-D --diff `: specify commit hash or tag or git symbolic ref(e.g. 'HEAD')
- Options for `which-sem`
- `-D --diff `: specify commit hash or tag or git symbolic ref(e.g. 'HEAD')
## Examples
```shell
# give `git diff` to command
ggw commit -m gemini/gemini-2.0-flash
ggw commit -m gemini/gemini-3-flash-preview
# gice `git diff 76fd1d0` to command
ggw sumdiff -D 76fd1d0 -m gemini/gemini-2.5-pro
```