Share a Qodo review or test report
Qodo produces two things worth reading and one place to read them. The line-level suggestion belongs in the pull request, and that works well. The broader output — the cross-file risk review, the coverage gap analysis, the summary of what the generated tests actually cover — is a document, and a document inside a PR thread is a document that collapses behind "show more", scrolls away, and vanishes when the branch merges.
The people who need the document are also frequently not on the PR. A tech lead tracking test coverage across services, an engineering manager looking at review findings by theme, a security reviewer checking one module — none of them want to reconstruct it from thirty inline comments.
Publish the analysis
Where the agent runs interactively, attach Comma's MCP server with a scoped token and give it the standing rule:
When you produce an analysis rather than a suggestion — a coverage gap summary,
a cross-file risk review, a test plan — publish it to Comma as an HTML report
and reply with the URL. Keep line-level suggestions in the pull request.
Update the report id in `.comma-report-id` rather than creating a new report.
Where it runs in CI, the publish is one call in the job that already produced the output — see publishing from CI:
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 qodo-review.html \
--arg title "Review — $(git rev-parse --short HEAD)" \
'{title: $title, html: $html}')"
Why a report and not a thread
- It survives the merge. A PR thread is gone when the branch is; a report URL is still there next quarter with its revision history.
- It renders as a document. Coverage tables stay tables, file trees stay trees — see sharing a coverage report for the drill-down case specifically.
- Comments anchor to the finding. "This branch is unreachable, ignore it" stays attached to that row — see commenting on HTML.
- The agent reads the replies, so dismissed findings inform the next run — see letting an agent respond to comments.
- Trends need one URL. Revisions at a single address are what turn a coverage number into a coverage trend.
Worth knowing
- Scope the token down.
reports:writefor the publish;comments:writeonly if the agent should reply — see scoped tokens for AI agents. - Publish on failure too. A review that only publishes on green builds misses every run that mattered. Make the step unconditional.
- Multi-file HTML output — an
index.htmlwith a directory beside it — needs the folder treatment, see sharing an HTML folder. - Refresh on a schedule with a routine if the point is a weekly picture rather than a per-commit one.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.