proob
proob · for all, up to the bound

Your tests check the cases you remembered. proob finds the ones you didn't.

One command on python-semver found the bug its maintainers later fixed, in five minutes, without touching the repository.

In Claude Code, inside your repository:

claude code
/plugin marketplace add proob-ai/proob
/plugin install proob@proob
/proob:try

/proob:try works on a private copy. Your files and git status stay as they were.

/proob:try · python-semverfinal report, shortened
Failures on realistic inputs:
- The next version can sort before the current one.
  1.2.3-zeta → 1.2.3-rc.1
  1.2.3-rc9  → 1.2.3-rc10  (rc10 sorts first)

Failures only on less common inputs:
- Equal versions can have different hashes.
  prerelease='0' == prerelease='00', hashes differ

Scores: 3 passing tests caught 3, 6 and 9
of 30 mutants, so they're weak.

Cooked for 4m 21s

From docs/try.gif, on the commit before issue #497 was fixed.

mission

Make proof as cheap as code.

Spec it. Prove it. Merge it.

An agent writes more code than a team can read line by line. proob has it say, in plain English, what the code must do, and back each sentence with a check that can fail. Your reviewer approves the sentence; machines keep checking it on every pull request.

01 · does it find real bugs

14 of 15 known bugs found, with no hint.

Bugs from libraries like packaging, tomlkit and bytes, each rolled back to before its fix. 9 of the 10 fixed after the AI model's training data ends were found too. How we measure.

02 · why you can trust a pass

The agent proposes. It never decides.

your team approvesA property is live only after a teammate approves it in a pull request review. proob reads that approval from GitHub, not the repository.
a passing check has to be able to failproob mutates your code to confirm each check can fail. One that can't is reported as weak.
the verdict code is provedThe code that turns approvals and evidence into a verdict is machine-proved with Verus, against six assertions.
03 · how it works

One required check, one review habit

How proob fits into your pull requestsOnce: /proob:try, then proob shadow adopt, then make the proob gate a required check. Every pull request after that: the gate re-checks the properties the change touches; all hold leads to merge and a nightly refresh; a broken one blocks the merge; new code without a property gets a proposal in the same review.ONCE/proob:tryprivate copy, nothing changedproob shadow adoptone branch, one reviewproob gatemade a required checkEVERY PULL REQUEST AFTER THATpull requestcode, or code and propertiesgatere-checks touched propertiesmergethe review is the approvalnightlyevidence and strength refreshedholdeach checka test finds counterexamples; only a proof or a model earns Holds; the verdict says whichbrokenblocks the merge until the code is fixed or the property supersedednew code without a property/proob:declare proposes one, reviewed in the same pull request

Python and Rust today. Python is checked by tests, so it reads Checked (tested) at best. Statuses, limits and team setup: the guide.