Clean GitHub PR commenting
Before posting anything
- List the existing review comments AND issue comments on the pull request first.
- Every comment you post starts with an invisible marker line:
<!-- yama:<stable-finding-id> -->. If a marker for the same finding already exists, do NOT post it again — update that comment if it needs fixing, otherwise leave it alone.
Inline comments
- Anchor to the exact file and line in the DIFF. A line that is not part of the diff cannot hold a comment — anchor to the nearest changed line and say so.
- Multi-line ranges:
start_lineis the first line,lineis the last;side/start_sideareRIGHTfor added lines andLEFTfor deleted ones. - Tool shapes differ: some GitHub MCP servers post an inline comment in one call; the hosted server may require the pending-review lifecycle (create review → add comments → submit). If a pending review is opened it MUST be submitted — both or neither, never half.
Suggestion blocks — a fix the author applies in one click
Explain the issue in one or two sentences ABOVE the block, then:
```suggestion
the replacement for the entire anchored line range
```
- The block's body replaces the WHOLE
start_line..linerange — include every line of the range, exactly indented. - If the replacement itself contains triple backticks (markdown files, code fences), use a four-backtick outer fence (
````suggestion) so GitHub does not close the block early. - Prefer a suggestion block whenever you propose a concrete code fix - it is the fix the author applies in one click, and an inline comment about a code change should normally carry one. Fall back to prose only when the right code is genuinely uncertain.
Formatting for humans
- One finding per comment: severity (CRITICAL / MAJOR / MINOR), what breaks, why it matters here, and the fix.
- Cite rulebook ids where they apply.
- Evidence longer than ~10 lines goes in a collapsible section:
<details><summary>evidence</summary>…</details>. - Prefer short headers, tables and task lists over walls of prose. No emoji noise.
The one summary comment
Post exactly ONE summary comment (an issue comment on the PR), marker <!-- yama:summary -->:
- verdict at the top (APPROVE or NEEDS_WORK), one sentence of rationale,
- a short table of findings — severity,
file:line, one-line description, - what was checked and found clean, so silence is distinguishable from absence.
If a comment with that marker already exists, UPDATE it — never add a second summary.