# commitclerk

Git · CLI · Agent Workbench

One command between your staged diff and a commit. It reads the diff, asks an LLM for a Conventional Commits message, shows it to you, and commits once you agree. About 230 lines in a single file, so you can read the whole thing before trusting it with your history.

- Platform: Python 3.8+
- Licence: Apache-2.0
- Product site: https://alegauss.github.io/commitclerk/
- Source: https://github.com/alegauss/commitclerk

Public numbers as of 2026-10-20: latest release v0.2.1 (2026-07-28).

## Install

pipx:

```
pipx install commitclerk
```

pip:

```
pip install commitclerk
```

## What comes next

From docs/ROADMAP.md at 276ad36.

### Block D — Trust & safety

- 💭 The no-egress claim is documented and never tested
- 💭 A repository whose tests carry credential fixtures must pass --redact on every commit

### Block E — Configuration & conventions

- 💭 Encoding a team's convention means forking `_RULES`
- 💭 The message is English whatever language the team works in
- 💭 An existing message cannot be checked without generating a new one
- 💭 The model's type and scope are trusted without being checked

### Block F — Interaction & UX

- 💭 A wrong message is only fixable after it is already committed
- 💭 Editing the message means rewriting it after the commit
- 💭 A slow or local model shows a frozen terminal for thirty seconds
- 💭 What a run costs is invisible
- 💭 An amended commit is described by its fixup alone
- 💭 An API failure and a git failure are indistinguishable to a script
- 💭 Nothing budgets the reply, so a verbose model fails with "returned no message text"
- 📋 There is no way to see what was actually sent
- 💭 Nothing bounds the size of the whole request

### Block G — Git-native integration

- 💭 The tool runs only when the author remembers to run it
- 💭 The framework the Python world already runs cannot install this tool

### Block H — Beyond a single commit

- 💭 A mixed working tree becomes one commit nothing can describe
- 💭 Changelog entries are written by hand from commits that already say it
- 💭 A release body needs a different register and there is only the changelog
- 💭 The version bump is a judgement made without reading the commits
- 💭 A PR title and description are retyped from commits that already exist

### Block I — Distribution & reach

- 💭 Nobody meets the tool where they already work
- 💭 The curl install advertised in the README is unsigned
- 💭 The README is the only documentation and it is outgrowing itself
- 💭 Every team writes its rule pack from nothing
- 💭 A CLI nobody can watch is a CLI nobody tries

### Block J — Quality engineering

- 💭 The deterministic half of the pipeline is asserted against nothing
- 💭 A prompt change cannot be shown to be an improvement
- 💭 A quality result cannot be attributed to a prompt
- 💭 Every end-to-end path needs an API key to test
- 💭 A CLI surface change reaches users without anyone reviewing it
- 💭 Non-ASCII output renders as `?` on a cp1252 console
- 💭 Six documentation surfaces are updated by hand per shipped flag
- 📋 Instruction examples leak into the output
- 💭 Line endings differ between contributors and the build compares artifact text
- 💭 Every end-to-end check hand-builds a git repository in a shell script
- 💭 `main` gains a branch per feature and nothing ever splits it
- 💭 Each new module costs a hand-written re-export block and a dozen lint findings

### Block K — The landing page on the design system

- 💭 The landing page carries its own inline CSS for the nav, hero, cards and footer, outside the design system

## Recently shipped

- 2026-09-21 · T66: A file named only in the diff's prose is described as a file this commit changed
- 2026-09-21 · T65: A line the diff deletes is described as work that was done
- 2026-08-25 · T71: The page ends without a pointer to any other tool the same author publishes
- 2026-08-02 · T61: One switch hides two very different data flows
- 2026-08-02 · T25: A team convention is retyped as flags on every commit
- 2026-08-02 · T24: `SECURITY.md` does not say what leaves the machine
- 2026-08-02 · T23: History cannot say which commits were AI-assisted
- 2026-08-02 · T21: A hook that calls an API hard-blocks the commit when the network is down

All entries: https://alegauss.github.io/changelog/commitclerk/
