Scrubby

scrubby_review_changeset

Review a set of changed files together. Flags missing co-changes, consistency issues, and domain crossings before you push.

Reviews a set of changed files as a single unit. Where scrubby_review is per-file context, this tool answers the changeset-level questions: did you forget anything, do these changes look consistent, are you crossing domain boundaries that need attention?

Parameters

Name Type Required Description
file_paths string[] No File paths to review. If omitted, Scrubby auto-detects from your local staged git changes.
repo_id number No Scrubby repository ID. Auto-detected if omitted.
repo_name string No Repository name (e.g. api). Used to auto-resolve in remote mode when multiple repos are indexed.

What it checks

  • Missing co-changes. Files that historically change with files in your changeset but are absent from it. Threshold and mechanics in Co-Change Analysis.
  • Consistency issues. Cross-file patterns that look broken — e.g. you added migration columns but didn’t update the model validation, you added a route but didn’t add a controller action.
  • Domain crossings. When the changeset touches files in multiple domains, Scrubby flags it so you can decide whether the crossing is intentional.

Response

Returns a list of findings, each with:

  • severityerror, warning, or info.
  • categoryco_change, consistency, or domain_crossing.
  • message — human-readable explanation grounded in your repo’s history (e.g. user.rb and user_spec.rb have changed together in 89% of the last 47 commits, but user_spec.rb is not in this changeset.”).
  • files — the files involved.

Typical usage

Pre-commit, in your AI editor:

"Run scrubby_review_changeset on my staged files."

If you want to review a specific list rather than auto-detected staged changes:

"Run scrubby_review_changeset on app/models/user.rb and app/serializers/user_serializer.rb."

Errors

CodeMeaning
no_filesNo file paths provided and no staged changes detected.
repo_not_indexedThe repo hasn’t been indexed yet.
not_authenticatedOAuth session expired.

Last updated