You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(skill): address Claude review comments in /review skill (#543)
* fix(skill): ensure review skill addresses Claude's review comments, not just Greptile's
* fix(skill): address Greptile P2 feedback on review skill
- Use ANSI-C quoting ($'...') for body with newlines so \n is not passed
literally to the GitHub API
- Add issues endpoint to the reviewer checklist so issue-style commenters
(e.g. @greptileai trigger responses) are not silently missed
* fix(skill): add /reviews endpoint to Step 2b conflict-resolution guidance
Copy file name to clipboardExpand all lines: .claude/skills/review/SKILL.md
+33-10Lines changed: 33 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,7 +63,7 @@ If `CONFLICTING`:
63
63
2.**Do not assume which side to keep.** You must fully understand the context of both sides before resolving. If you don't know why a line was added — what feature it supports, what bug it fixes, what reviewer requested it — you cannot resolve the conflict correctly. Before touching any conflict:
64
64
- Read the PR description and any linked issues (`gh pr view <number>`) to understand the PR's purpose and scope.
65
65
- Check the PR's commit history (`git log --oneline origin/<base-branch>..HEAD -- <file>`) to understand *why* the conflicting line was changed on the PR side. Also check the base branch history (`git log --oneline HEAD..origin/<base-branch> -- <file>`) to understand *why* the base version exists.
66
-
- Read Greptile and Claude review comments on the PR (`gh api repos/optave/codegraph/pulls/<number>/comments`, `gh api repos/optave/codegraph/issues/<number>/comments`) — a reviewer may have requested the change that caused the conflict.
66
+
- Read Greptile and Claude review comments on the PR (`gh api repos/optave/codegraph/pulls/<number>/comments`, `gh api repos/optave/codegraph/pulls/<number>/reviews`, `gh api repos/optave/codegraph/issues/<number>/comments`) — a reviewer may have requested the change that caused the conflict.
67
67
- Check what landed on main that introduced the other side (`git log --oneline HEAD..origin/<base-branch> -- <file>`) and read those PR descriptions too if needed.
68
68
- Compare the PR's diff against its merge base (`git diff $(git merge-base origin/<base-branch> HEAD) HEAD -- <file>`) to see which side introduced an intentional change vs. which side carried stale code.
69
69
- Only then choose the correct resolution. If the PR deliberately changed a line and main still has the old version, keep the PR's version. If main introduced a fix or new feature the PR doesn't have, keep main's version. If both sides made intentional changes, merge them together manually.
@@ -95,38 +95,61 @@ If any checks are failing:
95
95
96
96
### 2d. Gather all review comments
97
97
98
-
Fetch **all** review comments from both Claude and Greptile:
98
+
Fetch **all** review comments from both Claude and Greptile. You MUST check all three endpoints — Claude's feedback often appears in the `/reviews` and `/comments` endpoints, not just issue comments:
99
99
100
100
```bash
101
-
# PR review comments (inline code comments)
101
+
# PR review comments (inline code comments — Claude and Greptile both use these)
**Important:** Go through the results from ALL three endpoints. Build a complete list of actionable items from every reviewer before starting fixes. Do not skip any reviewer's comments.
112
+
113
+
### 2e. Address every comment from EVERY reviewer
114
+
115
+
You must address comments from **all** reviewers — Claude (claude-code-review bot), Greptile, and any humans. Do not only address one reviewer's comments and skip another's. Process each reviewer's feedback systematically.
112
116
113
117
For **each** review comment — including minor suggestions, nits, style feedback, and optional improvements:
114
118
115
119
1.**Read the comment carefully.** Understand what the reviewer is asking for.
116
120
2.**Read the relevant code** at the file and line referenced.
117
121
3.**Make the change.** Even if the comment is marked as "nit" or "suggestion" or "minor" — address it. The goal is zero outstanding comments.
118
122
4.**If you disagree** with a suggestion (e.g., it would introduce a bug or contradicts project conventions), do NOT silently ignore it. Reply to the comment explaining why you chose a different approach.
119
-
5.**Reply to each comment** explaining what you did:
123
+
5.**Reply to each comment** explaining what you did. The reply mechanism depends on where the comment lives:
124
+
125
+
**For inline PR review comments** (from Claude, Greptile, or humans — these have a `path` and `line`):
120
126
```bash
121
127
gh api repos/optave/codegraph/pulls/<number>/comments/<comment-id>/replies \
122
128
-f body="Fixed — <brief description of what was changed>"
123
129
```
124
-
For issue-style comments, reply on the issue:
130
+
131
+
**For top-level PR review bodies** (Claude often leaves a summary review with `CHANGES_REQUESTED` or `COMMENT` state — these come from the `/reviews` endpoint and have no `path`):
132
+
```bash
133
+
# Reply on the PR conversation thread so the reviewer sees it
134
+
gh api repos/optave/codegraph/issues/<number>/comments \
135
+
-f body=$'Addressed Claude\'s review feedback:\n- <bullet per item addressed>'
gh api repos/optave/codegraph/issues/<number>/comments \
127
141
-f body="Addressed: <summary of changes made>"
128
142
```
129
143
144
+
**Checklist before moving on:** After addressing all comments, verify you haven't missed a reviewer:
145
+
```bash
146
+
# List all unique reviewers who left comments
147
+
gh api repos/optave/codegraph/pulls/<number>/comments --paginate --jq '[.[].user.login] | unique | .[]'
148
+
gh api repos/optave/codegraph/pulls/<number>/reviews --paginate --jq '[.[].user.login] | unique | .[]'
149
+
gh api repos/optave/codegraph/issues/<number>/comments --paginate --jq '[.[].user.login] | unique | .[]'
150
+
# Confirm you addressed comments from EVERY reviewer listed
151
+
```
152
+
130
153
### 2f. Commit and push fixes
131
154
132
155
After addressing all comments for a PR:
@@ -187,8 +210,8 @@ After processing all PRs, output a summary table:
187
210
188
211
-**Never rebase.** Always `git merge <base>` to resolve conflicts.
189
212
-**Never force-push** unless fixing a commit message that fails commitlint. Amend + force-push is the only way to fix a pushed commit title (messages are part of the SHA). This is safe on feature branches. For all other problems, fix with a new commit.
190
-
-**Address ALL comments**, even minor/nit/optional ones. Leave zero unaddressed.
191
-
-**Always reply to comments** explaining what was done. Don't just fix silently.
213
+
-**Address ALL comments from ALL reviewers** (Claude, Greptile, and humans), even minor/nit/optional ones. Leave zero unaddressed. Do not only respond to one reviewer and skip another.
214
+
-**Always reply to comments** explaining what was done. Don't just fix silently. Every reviewer must see a reply on their feedback.
192
215
-**Don't re-trigger Greptile if already approved.** If your last reply to a Greptile comment has a positive emoji reaction (👍, ✅, 🎉) from `greptileai`, it's already satisfied — skip re-triggering.
193
216
-**Only re-trigger Claude** if you addressed Claude's feedback specifically.
0 commit comments