v0.3.0
Safety and correctness fixes for /deep-review:auto, plus an end to the assumption that every repo has CI.
Uncommitted fixes are no longer destroyed mid-run
auto applies fixes and leaves them uncommitted across the whole fix loop while also dispatching verification agents. An agent that "resets to a clean state" with git checkout -- . destroyed every fix applied so far, and git status looked clean afterwards because reverting to HEAD is indistinguishable from never having edited.
A subagent does not inherit the parent command's allowed-tools - it gets its own broad tool set - so omitting git checkout from the frontmatter prevented nothing. The fix is a prompt-level ban stated in every dispatched agent's prompt, covering the whole checkout/restore/reset/clean/stash/revert family.
Backed by two further guards:
- A
git stash createsnapshot taken before the first fix and re-taken after each one. The pre-fix snapshot protects your existing uncommitted work; the post-fix snapshots protect the fixes. A snapshot taken before a fix exists cannot restore it. - An end-of-run integrity check that walks the applied-fix list and confirms each is still present. The clean-tree check was a precondition being treated as an invariant; nothing re-verified it.
Fixes are backed out with an edit restoring the original text, never a git restore, which cannot tell a fix from unrelated uncommitted work.
No more assuming CI exists
Both commands told you to skip build checks because "CI runs these separately". On a repo that deliberately has no CI and verifies through a local gate, that discarded the cheapest-to-catch findings with nothing downstream to catch them.
- Detects
.github/workflows, and when absent reports linter/typechecker findings instead of dropping them. - Detects the local gate, preferring a command named in CLAUDE.md over any heuristic, and handling extensionless gates such as
scripts/check. autoruns the gate before fixing as well as after, so a failure can be attributed rather than blamed on the run.- A fix that is correct but trips a formatting rule is reformatted and re-run rather than reverted.
auto works outside the PR-with-clean-tree case
- Reviews a branch with no PR, reporting in-session.
- Runs on a dirty tree, splitting the baseline against the review scope so in-scope files stay fixable while unrelated work in flight is never touched.
Trailer policy inverted
The generated-with trailer is now opt-in on a confirmed-private repo. It previously failed open: a skipped or errored visibility check leaked it onto public repos.