Repository navigation
Releases: abranchesia/doneguard
Release list
doneguard 0.6.0
Added
doneguard init --global: install and forget. It hooks doneguard into your agents' user config (Claude Code, Codex, Gemini CLI, Copilot, Antigravity, Kiro CLI V3; Cursor and Devin run Claude Code's), once per machine.- The first session in a git repo writes that repo's
.doneguard.confand keeps it out of git (.git/info/exclude). The quick checks are on; databases, the tests that need them and e2e are commented out. - Projects hooked on their own keep their hooks, and the global ones step aside there, so nothing runs twice.
initin a project no longer adds hooks for an agent that is hooked for every project.
- The first session in a git repo writes that repo's
doneguard 0.5.0
Added
- A
secretsgroup incheats: AWS, Anthropic, OpenAI, Stripe, GitHub, Slack and Google keys, and private keys, added in the session to a file git would commit. They're shown cut short, so the key doesn't spread to the agent's transcript or a PR comment.initadds the group to new projects. In an existing.doneguard.conf, addsecretsto thecheatsline (a line with-already has it);init --updateleaves that line as it is. - README FAQ: why not a hand-written stop hook.
Changed
- Codex CLI and GitHub Copilot CLI are tested end to end in real sessions (✅), with recordings in the README.
doneguard 0.4.0: see it working
See doneguard working, not only when it blocks. And upgrading a project is one command.
uv tool upgrade doneguard
doneguard init --update # in each project: adds the checks this version bringsA receipt in Claude Code
When everything passes, a line under the agent's answer says what was checked:
Stop says: doneguard: ✓ cheats · tsc · postgres · vitest · playwright (4.8 s)
doneguard report
The same checks as markdown, for a pull request or a CI run:
doneguard report --base origin/main | gh pr comment --body-file -
doneguard report --base origin/main >> $GITHUB_STEP_SUMMARYAlso new
doneguard init --updateadds the newly detected checks to an existing.doneguard.conf, each where it works, and leaves your lines alonedoneguard doctortells you when a newer doneguard is out- A "checked by doneguard" README badge: Show it
Full list: CHANGELOG.md
doneguard 0.3.0: no shortcuts
Your agent can't fake "done" anymore: no skipped tests, no silenced type checker, and no broken files it never opened.
uv tool upgrade doneguard # or: uv tool install doneguard
doneguard init # existing projects: it lists the new lines to addNo shortcuts
init adds a cheats line. When the agent tries to stop, doneguard sends back what it added in the session to make checks pass without fixing anything: test.skip, .only, @pytest.mark.skip, @ts-ignore, eslint-disable, # noqa, as any, deleted test files…
[.] cheats: changes that hide failures instead of fixing them
src/cart.test.ts:7 test.skip skips or focuses a test: that hides the failure instead of fixing it
It compares against a git snapshot taken when the session starts, so what's already in your code doesn't count. Each finding is flagged once: if the agent keeps it, it has to say why, and you're told. More
New errors in files the agent didn't touch
When a session starts, doneguard notes in the background the errors tsc, cargo, go vet… already report. When the agent stops, any new error counts, in any file. A caller the agent broke without opening it is caught, and old errors still never block anyone.
Also new
doneguard doctor: what each check needs (tools, Docker, Playwright browsers, hooks) and what's missingdoneguard check --base origin/main: everything a branch changed, for CIdoneguard --version- Integration CI: every push runs a real Postgres, vitest and Playwright on the demo project
Full list: CHANGELOG.md
doneguard 0.2.0: throwaway databases and e2e tests with evidence
Your agent now tests against a real database and in a real browser before it can say "done".
uv tool install doneguard # new: on PyPI
doneguard initThrowaway databases for tests
When the tests need Postgres, MySQL, Redis or MongoDB, doneguard starts one in Docker right before them. It points DATABASE_URL (and the URL variables from your .env, your shell and your ORM config) at it, runs your migrations and seed, runs the tests, and removes it. init detects the database from your dependencies, Prisma schema or docker-compose.yml. More
End-to-end tests with evidence
With Playwright, doneguard runs the e2e suite in Chromium and keeps a screenshot and a video of every test, plus traces of failures, in .doneguard/evidence/. When a test fails, the agent gets the failure screenshot and a snapshot of the page, and fixes it. More
Also new
- Detection for Ruby (rubocop, rspec, rails test),
go test, Gradle, .NET, Pest and PHPUnit, Deno, Biome, pytest-playwright doneguard checkprints a progress line per check- With an existing
.doneguard.conf,initlists the checks it would add
Full list: CHANGELOG.md