A check for code written by coding agents

Slopbouncer flags tests that got weaker.

A coding agent's job is to make the checks pass. One way to do that is to weaken the check. Slopbouncer compares every test before and after a change and tells you which ones lost something.

It reads code and never runs it, so it takes seconds and is safe to put in any pipeline.

View on GitHub Status: in development. Reads Ruby tests first.

What it flags

What it leaves alone

What a report looks like

$ slopbouncer main..HEAD

test/basket_test.rb
  Basket applies a voucher
    skip_added  marked to be skipped

test/checkout_test.rb
  Checkout lets a guest pay
    assertion_removed  assert_equal "paid", order.status

test/refund_test.rb
  Refund refunds part of an order
    expected_value_changed  100 → 90

3 tests got weaker in 3 files

Feeding it back to the agent

Slopbouncer is most use when the agent that made the change hears about it. The agent knows why it changed a test, and it can put the test back. One command sets an agent up:

$ slopbouncer install claude-code

When the agent is about to finish and has weakened an existing test, it is sent back once and told which tests. It can put the test back and make the code pass it, or leave the change and tell you which behaviour changed.

Claude Code is the one it has been run under so far. The other three are written to those agents' published hook contracts.

Try it

It needs Ruby 3.4 and git.

$ gem install slopbouncer

Then run it from the root of your project, as in the report above.

Its limits

Slopbouncer catches tests that are visibly weaker. A test that looks thorough and checks nothing needs mutation testing, which is slower and runs the code. Use both: Slopbouncer on every change, mutation testing behind it.

It flags changes for a person to review. It does not block a merge unless you ask it to.