skills/pr-comment/SKILL.md
Post friendly review comments to a GitHub PR — prepare locally, preview, then submit as atomic review. Use when: posting code review comments, giving PR feedback, sending inline suggestions. Not for: reading existing reviews (use load-pr-review), creating PRs (use create-pr), PR status (use pr-summary).
npx skillsauth add sd0xdev/sd0x-dev-flow pr-commentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
pr comment, review comment, post comment, send review, pr feedback, inline comment
| Need | Use Instead |
|------|-------------|
| Read existing PR review comments | /load-pr-review |
| Create a code review (automated) | /codex-review-fast or /codex-review |
| Create a PR | /create-pr |
| PR status overview | /pr-summary |
Discuss locally → prepare friendly comments → dry-run preview → user confirms → atomic submit
Control plane (this SKILL.md) handles conversation, tone, orchestration.
Data plane (JS script) handles validation, API calls, safety.
Claude prepares comments following these rules:
| Rule | Description | Example | | ---- | ----------- | ------- | | Questions over commands | Use "would it make sense to" instead of "change this to" | "Would it make sense to extract this to a shared utility?" | | Code, not person | Subject is the code, not "you" | "This logic seems to..." not "You wrote..." | | Explain why | Give the reason, not just the what | "If one copy gets a bug fix but the other doesn't..." | | Assume good intent | Confirm rather than accuse | "Just want to confirm this trade-off is intentional" | | Praise first | Acknowledge before suggesting | "This async design is great. One thought though..." | | No emoji | Unless user explicitly requests | -- | | Follow PR language | Match the language used in the PR | -- |
Internal classification (Conventional Comments, not shown in output):
| Label | Purpose | Blocking |
| ----- | ------- | -------- |
| suggestion | Improvement proposal | Configurable |
| question | Clarification | No |
| issue | Points out a problem | Yes |
| nitpick | Stylistic preference | No |
| praise | Positive feedback | No |
sequenceDiagram
participant U as User
participant C as Claude (Conversation)
participant SK as SKILL.md (Orchestration)
participant JS as pr-comment.js (Data Plane)
participant GH as GitHub API
Note over U,C: Phase 1: Natural conversation
U->>C: Discuss PR diff, observations
C->>U: Draft N friendly comments
U->>C: Adjust tone / content / count
Note over U,GH: Phase 2: Skill invoked
U->>SK: /pr-comment [PR#]
SK->>SK: Collect comments from conversation
SK->>JS: prepare --pr N --repo owner/repo --input comments.json
JS->>GH: gh pr view (metadata)
JS->>GH: gh api pulls/N/files (changed files)
JS->>GH: gh api pulls/N (head SHA)
JS-->>SK: Validated payload + validation summary
SK->>U: Dry-run preview (default)
alt User confirms
SK->>U: AskUserQuestion gate
U->>SK: Approved
SK->>JS: submit --pr N --repo owner/repo --input payload.json
JS->>JS: Re-fetch head SHA, drift check
JS->>GH: POST /repos/{owner}/{repo}/pulls/{N}/reviews
GH-->>JS: 200/201 Success
JS-->>SK: Success + review URL
SK->>U: Review posted successfully
end
From the conversation context, gather the user's review comments. Each comment needs:
| Field | Required | Default | Description |
| ----- | -------- | ------- | ----------- |
| path | Yes | -- | File path (repo-relative) |
| line | Yes | -- | Line number (positive integer) |
| side | No | RIGHT | RIGHT (new) or LEFT (deleted) |
| body | Yes | -- | Comment content |
Write the comments to a temp JSON file, then run:
bash scripts/run-skill.sh pr-comment pr-comment.js \
prepare --pr <N> --repo <owner/repo> --input <comments.json>
Parse the JSON output. Display to user:
## PR #<N>: <title>
**Target**: <owner/repo> | **Head**: <branch> | **State**: <state>
### Comments to Post (<valid>/<total> valid)
| # | File | Line | Side | Preview |
|---|------|------|------|---------|
| 1 | path/to/file.go | 136 | RIGHT | First 80 chars of body... |
### Validation
- Valid: N | Invalid: M (excluded) | Warnings: K
If invalid comments exist, show them with reasons. If warnings exist, note them but include in payload.
Use AskUserQuestion to get user approval before submitting.
Save the prepare output (including payload) to a temp file, then run:
bash scripts/run-skill.sh pr-comment pr-comment.js \
submit --pr <N> --repo <owner/repo> --input <payload.json>
| Exit Code | Meaning | Action | |-----------|---------|--------| | 0 | Success | Report review URL | | 2 | Error (including 422) | Report error details | | 3 | SHA drift | Warn user, offer to re-prepare |
If submit returns exit 3:
references/api-and-guardrails.md -- API contract + safety rules + exit codesdocumentation
Rewrite the previous reply in Traditional Chinese
development
Monitor GitHub Actions CI runs until completion. Use when: watching CI after push, checking build status, monitoring PR checks, waiting for CI completion, user says 'watch CI', 'check CI', 'CI status', 'monitor build', or /watch-ci. Not for: pushing code (use push-ci), creating PRs (use create-pr). Output: per-run verdict (pass/fail/timeout).
development
Verification loop — lint -> typecheck -> unit -> integration -> e2e
development
Research current code state then update corresponding docs, ensuring docs stay in sync with code.