# Post Review

> Post a collected GitHub PR review with inline comments as a single review submission. Use when the user is ready to post a PR review after all feedback has been gathered.

- Skill: `rperez030/post-review` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add rperez030/post-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rperez030/post-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: rperez030 (https://skillmd.com/u/rperez030)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rperez030/post-review

---


# Post PR Review

This skill posts a GitHub PR review. All feedback must already be collected and agreed upon before invoking this skill.

## Rules — follow these exactly, no exceptions

1. **Never post inline comments before the review is ready.** This skill is the signal that the review is ready to post. Do not post anything until the user invokes it.

2. **Ask whether to include a summary comment (`body`).** If the user wants one, draft it and present for explicit approval before posting. Do not auto-generate a summary. The summary is posted under the user's name and must reflect their voice and accurately represent the severity of findings. If no summary is needed, use an empty string for the `body` field.

3. **Always post everything as a single API call** using `gh api repos/{owner}/{repo}/pulls/{number}/reviews` with a JSON body that includes the summary `body`, the `event` field, and all inline `comments` in one array. Never post inline comments separately via `/pulls/{number}/comments` — that creates multiple disconnected review entries.

4. **Use `--input -` with a heredoc** to pass the full JSON payload, not individual `--field` arguments. This is the only reliable way to include multiple inline comments in a single call.

5. **Verify the result** by checking that only one new review ID appears and that its `state` matches the intended event (e.g. `CHANGES_REQUESTED`).

## Template

```bash
gh api repos/{owner}/{repo}/pulls/{number}/reviews \
  --method POST \
  --input - <<'EOF'
{
  "commit_id": "{full_sha}",
  "event": "REQUEST_CHANGES",
  "body": "{summary comment}",
  "comments": [
    {
      "path": "{file path}",
      "line": {line number},
      "side": "RIGHT",
      "body": "{inline comment text}"
    }
  ]
}
EOF
```

Valid values for `event`: `REQUEST_CHANGES`, `APPROVE`, `COMMENT`.

## If something goes wrong

If comments landed as separate reviews by mistake:
1. Delete each inline comment via `DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}`
2. Dismiss the bad review via `PUT /repos/{owner}/{repo}/pulls/{number}/reviews/{review_id}/dismissals`
3. Note: GitHub does not allow deleting submitted reviews, only dismissing them — dismissed reviews remain visible in the PR timeline
4. Repost using the template above

