Changed
- Releases are automatic. Each pull request carries one label,
release:patch,
release:minor, release:major or release:none; merging a labelled one bumps the
version, dates the changelog, tags main and publishes to PyPI and GitHub. A check
makes sure every pull request has exactly one.
grip init asks, in a terminal, which model to use, the pass mark and whether to quiz
before pushes, commits or both, with defaults detected on the machine, then says what
the chosen provider still needs. --yes takes every default; scripts are not asked.
grip install says which model will write the questions when none is configured.
Fixed
- Pushing a new branch said "nothing to quiz" when its commits were also on a branch that
had been deleted upstream (a merged pull request) but not pruned locally: the stale
origin/... ref made them look pushed. grip now asks the remote with git ls-remote
whenever the local refs say a new branch has nothing to send.
- With no provider configured, grip used the Anthropic API even when Claude Code, Codex or
Gemini CLI was installed, and without an API key it crashed with a traceback. The
default provider is now auto: the first installed coding agent, else Anthropic. A
missing Anthropic key is now a clear error that says what to set.
grip quiz --range main..feat/x cut branch names to 12 characters in its header
(main..feat/kidnap-); only full hashes are shortened now.
Documentation
- A shorter README in the usual open-source shape: what grip is, install, quick start,
configuration, links. The long-form material moved to the docs site.
- New walkthrough: one real change, from
git commit to an accepted push, with the real questions, grades and screenshots.
- New inside grip deep dive: the checks before
a quiz, diff collection, prompts, structured output per provider, rubric grading, pass
memory, the agent flow, the whiteboard's validation, layout and server, and what is
stored or sent.
- The docs navigation is regrouped into Get started, Guides, Deep dive, Reference and
Project.
Install
pipx install grip-hook==0.2.2 # or: uv tool install grip-hook==0.2.2
On PyPI: https://pypi.org/project/grip-hook/0.2.2/