Share a RuboCop report
A big Ruby codebase adopting RuboCop produces a number nobody can act on: 812 offenses detected. The terminal output that explains it is four thousand lines long and lives in a CI log that expires.
RuboCop ships an HTML formatter for exactly this:
rubocop --format progress --format html --out rubocop.html
Two formatters, one command: dots in the terminal, a browsable report on disk. It groups by file, expands to the offending source line, and links each offense to the cop that raised it.
Publish it
Drag rubocop.html into the app, or from CI:
bundle exec rubocop --format html --out rubocop.html || true
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html rubocop.html \
--arg title "RuboCop — $GITHUB_SHA" '{title: $title, html: $html}')"
Run the publish step with if: always() (GitHub Actions), when: always
(GitLab, CircleCI) or post { always { … } } (Jenkins). A clean lint report
is not the one anyone needs.
The conversation lint actually needs
Style enforcement is a social negotiation with a config file attached. The decisions are worth keeping:
- Anchored threads on the cop or the file — "we're disabling
Metrics/ClassLengthforapp/services, here's why". See commenting on HTML. - Revisions — one report id per repo, one revision per run, so a
.rubocop_todo.ymlregeneration shows up as movement instead of a vibe. - Access per report — private, team, domain-gated, or named reviewers. See the sharing model.
Let the agent read the offenses
If a coding agent is doing the cleanup, point it at the report through MCP: it can read the published offenses and the human comments on them in the same call, which is a cheaper context than re-running the linter and re-deriving what the team already decided. See give an agent feedback.
Limits
- Entry HTML: 5 MB. An 800-offense report is comfortably under; a
50,000-offense first run may not be — scope with
--onlyor by directory. - 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.