shipquiz

You're the captain.Ship only what you can explain.

shipquiz asks a few questions about your change and blocks git push until the answers show you understand it. You use your own API key and model. The diff never goes to a shipquiz server.

Install

Paste the install command on a Mac or Linux machine. It downloads shipquiz and adds it to your shell. Setup then asks for your API key, a model, and whether to quiz this repo before a push.

Run the path line if you want to stay in the same terminal. A new one already knows where shipquiz is. Have the repo checked out? Build it from there instead.

Install
curl -fsSL https://shipquiz.com/install.sh | sh
This shell
export PATH="$HOME/.shipquiz/bin:$PATH"
Build from source
mkdir -p ~/.shipquiz/bin
go build -o ~/.shipquiz/bin/shipquiz ./cmd/shipquiz
shipquiz setup
shipquiz install

Before the push

shipquiz install adds a pre-push hook. Git sends it the commits you are about to push. If you pass, the push goes through. If you don't, it stops.

On the pull request

The Action posts the questions as a comment and opens a check named shipquiz. Reply with answers, and the check then passes or fails with an explanation of the correct answer.

shipquiz github-action --write

In the editor

The skill tells your agent to run shipquiz when a change is about to ship. You can also ask for it by name. It never sees your API key, and it does not grade the diff itself.

Your agent asks first.

Add the skill to the repo. Claude Code and Cursor both read .claude/skills. The copy in .agents/skills covers the other agents. It tells your agent to run shipquiz quiz when a change is about to ship. You can also ask for it by name. It never sees your API key.

You push. It asks.

git push stops for a question about the change. Answer it, and the push finishes.

Commands

shipquiz setup
Choose a provider, store the API key, and pick a model.
shipquiz install
Install the pre-push hook in the current repo.
shipquiz uninstall
Remove the hook and restore the previous one.
shipquiz quiz
Ask about the current change. Saved questions for this diff are reused.
shipquiz quiz --cached
Use a saved quiz only. Exits with an error if there isn't one.
shipquiz quiz --again
Ask again even if this diff already passed.
shipquiz status
Show the config, the hook, and whether the API key works.
shipquiz config
Print the config that will be used, including repo overrides.
shipquiz config set KEY VALUE
Update one global setting, such as quiz.timeout_seconds.
shipquiz github-action
Print the GitHub Actions workflow.
shipquiz github-action --write
Write .github/workflows/shipquiz.yml.
shipquiz update
Replace this binary with the latest GitHub release.
Full docs