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:
severity—error,warning, orinfo.category—co_change,consistency, ordomain_crossing.message— human-readable explanation grounded in your repo’s history (e.g. “user.rbanduser_spec.rbhave changed together in 89% of the last 47 commits, butuser_spec.rbis 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
| Code | Meaning |
|---|---|
no_files | No file paths provided and no staged changes detected. |
repo_not_indexed | The repo hasn’t been indexed yet. |
not_authenticated | OAuth session expired. |
Last updated