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
Add quick-action menu and follow-up issue workflow to /address-review (#2808)
## Summary
- Adds quick-action menu (`f`, `f+i`, `d`, `r`, `m`) after triage to
support a "fix what matters, merge, follow-up the rest" pattern
- Adds range syntax (`N-M`) for selecting items (e.g., `r7-9`, `1,3-5`)
- Adds follow-up GitHub issue creation to bundle deferred
discuss/skipped items
- Adds merge-ready signaling after completing actions
- Updates both `.claude/commands/address-review.md` and
`.agents/workflows/address-review.md`
Closes#2805
## Test plan
- [ ] Run `/address-review` on a PR with mixed must-fix, discuss, and
skipped items
- [ ] Verify quick-action menu appears after triage
- [ ] Test `f` action: fixes must-fix, reply-skips rest, signals
merge-ready
- [ ] Test `f+i` action: fixes must-fix, creates follow-up issue,
signals merge-ready
- [ ] Test `r` with range syntax (e.g., `r3-5`)
- [ ] Test `m` action: creates follow-up issue for everything
- [ ] Test direct item selection with ranges (e.g., `1,3-5`)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Documentation-only workflow changes that adjust expected
`/address-review` behavior (including follow-up issue creation and
thread resolution). Low implementation risk, but reviewers should verify
the new instructions align with desired operational safeguards
(push/resolve semantics).
>
> **Overview**
> Updates the `/address-review` workflow docs to add a **post-triage
quick-action menu** (`f`, `f+i`, `d`, `r`, `m`) and specify per-action
behavior for fixing, discussing, replying, and deferring review
feedback.
>
> Adds **range-based item selection** (e.g., `3-5`) with validation
rules, introduces a **follow-up GitHub issue** creation template for
deferred items, and clarifies **merge-ready signaling**, `git push`
confirmation requirements, and inclusion of `html_url` in fetched
comment payloads for easier linking.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
0834a5f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Redesigned address-review workflow with a required quick-action menu
(f, f+i, d, r, m) and explicit per-action behaviors.
* Added support for direct item selection, range syntax (N-M) and
presets (e.g., "all must-fix") for bulk operations.
* Include fetched comment links in review outputs and require git-push
confirmation before pushing.
* Clarified follow-up issue creation rules, merge-readiness signaling,
and thread-resolution/rationale handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Include the review body as a general comment when it contains actionable feedback. When the review body contains actionable feedback, note that it cannot be replied to via the `/replies` endpoint — responses to review summary bodies must be posted as general PR comments (see Step 7).
@@ -87,7 +87,7 @@ Include the review body as a general comment when it contains actionable feedbac
@@ -146,22 +146,88 @@ Create a task list with TodoWrite containing **only the `MUST-FIX` items**:
146
146
- Description: Include the full review comment text and any relevant context
147
147
- All tasks should start with status: `"pending"`
148
148
149
-
## Step 6: Present Triage to User
149
+
## Step 6: Present Triage and Quick-Action Menu
150
150
151
151
Present the triage to the user - **DO NOT automatically start addressing items**:
152
152
153
153
- Use a single sequential numbering across all categories (1, 2, 3, ...) so every item has a unique number the user can reference. Do not restart numbering at 1 for each category.
154
154
-`MUST-FIX ({count})`: list the todos created
155
155
-`DISCUSS ({count})`: list items needing user choice, with a short reason
156
156
-`SKIPPED ({count})`: list skipped comments with a short reason, including duplicates and factually incorrect suggestions
157
-
- Wait for the user to tell you which items to address
158
-
- Always offer an explicit optional follow-up to post rationale replies on selected `SKIPPED` or declined `DISCUSS` items
159
-
- Never post those rationale replies unless the user explicitly selects which items to reply to
160
-
- Ask two things when there are `SKIPPED` or declined `DISCUSS` items:
161
-
- Which items to address in code/tests/docs
162
-
- Which skipped/declined items (if any) should receive a rationale reply
163
157
164
-
## Step 7: Address Items, Reply, and Resolve
158
+
After the triage list, present a **quick-action menu**:
159
+
160
+
```text
161
+
Quick actions:
162
+
f — Fix must-fix items, then confirm whether to reply/resolve skipped items before deciding discuss items
d — Discuss specific items before deciding (e.g., "d2,4"). Bare "d" presents all DISCUSS items.
165
+
r — Reply with rationale to items (e.g., "r3,5", "r7-9", "r all skipped", "r all discuss"); add `+ resolve` to also resolve those threads
166
+
m — Skip code changes + create follow-up issue for must-fix/discuss/non-trivial skipped items
167
+
168
+
Or pick items by number: "1,2", "all must-fix", "1,3-5"
169
+
```
170
+
171
+
**Range syntax**: Support `N-M` to expand into individual item numbers (e.g., `3-5` becomes `3,4,5`). Ranges work everywhere: item selection, `d`, and `r`.
172
+
If a range is malformed, reversed, or out of bounds, show a validation message and ask the user to retry (do not silently coerce it).
173
+
174
+
**Dynamic menu**: Generate `f` and `f+i` descriptions dynamically using actual item numbers and deferred targets from the current triage set (e.g., "Fix #1, #3" instead of "Fix must-fix items"). When there are no `DISCUSS` or `SKIPPED` items, only show `f` and direct item selection.
175
+
176
+
Wait for the user to choose an action before proceeding.
177
+
178
+
## Step 7: Execute the Chosen Action
179
+
180
+
### Action `f` — Fix and merge-ready
181
+
182
+
1. Address all `MUST-FIX` items (make code changes, run checks). If there are no `MUST-FIX` items, skip directly to discuss/skipped handling.
183
+
2. If local changes exist, commit and then ask for push confirmation before pushing. If there are no local changes, skip commit/push and continue decision flow.
184
+
3. Reply to each addressed comment explaining the fix.
185
+
4. Resolve the corresponding review threads.
186
+
5. If `SKIPPED` items exist, ask for explicit confirmation before posting rationale replies and resolving those threads (for example: "Reply/resolve 3 skipped items? y/n").
187
+
6. Do **not** auto-resolve `DISCUSS` items in `f`; after must-fix work, re-present discuss items and prompt the user to choose `d` (discuss), `f+i` (create follow-up issue), or `r all discuss + resolve`. If `f` starts with zero `MUST-FIX` items, show this discuss decision menu immediately.
188
+
7. Tell the user the PR is merge-ready only after `DISCUSS` items are resolved or explicitly deferred.
189
+
8. If any `DISCUSS` items remain, explicitly prompt with the next action (for example: "DISCUSS items remain - use `d` to review, `f+i` to defer to a follow-up issue, or `r all discuss + resolve` to decline and close.").
190
+
191
+
### Action `f+i` — Fix, follow-up issue, and merge-ready
192
+
193
+
1. Do everything in `f` for `MUST-FIX` items. If there are no `MUST-FIX` items, skip the fix phase and continue with deferred-item handling.
194
+
2. Create a **follow-up GitHub issue** (see Step 8) bundling all `DISCUSS` and non-trivial `SKIPPED` items.
195
+
3. For each deferred item in the follow-up issue, post a reply in the original location referencing the issue (use review-comment replies for inline comments and issue comments for review summaries/general comments), and resolve the thread when one exists. For general PR comments and review summary bodies (which have no thread), the reply alone is sufficient.
196
+
4. For trivial `SKIPPED` items that are not included in the follow-up issue (duplicates, factually incorrect suggestions, status noise), still post rationale replies and resolve those threads.
197
+
5. If there are zero deferred items, skip issue creation and behave like `f`.
198
+
6. No additional commit is required unless later steps introduce local changes; if they do, commit and ask for push confirmation before pushing.
199
+
7. Tell the user the PR is merge-ready.
200
+
201
+
### Action `d` — Discuss items
202
+
203
+
Present the requested items with full context and ask the user for a decision on each. If the user enters bare `d` with no item numbers, present all `DISCUSS` items. After the user decides, treat approved items as `MUST-FIX` (fix, reply, resolve) and declined items as `SKIPPED` (optionally reply with rationale if the user asks). For approved items that produce local changes, use the same commit/push-before-reply ordering as action `f`. After handling requested `d` items, re-offer the quick-action menu for remaining unaddressed items.
204
+
205
+
### Action `r` — Reply with rationale
206
+
207
+
Post rationale replies to the specified items explaining why they are being deferred or skipped. By default, do not resolve threads in `r` unless the user explicitly asks to resolve them (for example, `r3,5 + resolve`). Accept only `SKIPPED`/`DISCUSS` item numbers, ranges, `r all skipped`, or `r all discuss`. If the selection includes any `MUST-FIX` item (including `r all must-fix`), do not post replies; direct the user to `f` or explicit deferral (`f+i` / `m`).
208
+
209
+
### Action `m` — Merge as-is
210
+
211
+
1. Create a follow-up GitHub issue (see Step 8) bundling `MUST-FIX`, `DISCUSS`, and non-trivial `SKIPPED` items.
212
+
2. Post replies in the original location for each deferred item: use review-comment replies for inline comments and issue comments for review summaries/general comments.
213
+
3. Resolve `DISCUSS` and `SKIPPED` review threads after replying (resolve only when a thread exists).
214
+
4. If any `MUST-FIX` items were deferred, keep those review threads open by default unless the user explicitly asks to close them.
215
+
5. If any `MUST-FIX` items were deferred, explicitly tell the user the PR is **not merge-ready** without an override decision.
216
+
6. Only signal merge-ready with no code changes when there are zero deferred `MUST-FIX` items.
217
+
218
+
### Direct item selection (e.g., "1,2", "all must-fix", "1,3-5")
219
+
220
+
Address only the selected items. After completing them:
221
+
222
+
1. If selected items produced local changes, commit and ask for push confirmation before pushing (skip this step when there are no local changes).
223
+
2. Reply and resolve threads for addressed items.
224
+
3. Ask whether remaining items should receive rationale replies, a follow-up issue, or be left as-is.
225
+
226
+
### Combination actions
227
+
228
+
Users can chain actions: e.g., `f+i` then `r7-9`. After the first action completes, check if there are remaining un-replied items and offer the next logical action.
229
+
230
+
### General rules for all actions
165
231
166
232
When addressing items, after completing each selected item (whether `MUST-FIX` or `DISCUSS`), reply to the original review comment explaining how it was addressed.
167
233
If the user selects `DISCUSS` items to address, treat them the same as `MUST-FIX`: make the code change, reply, and resolve the thread.
@@ -211,6 +277,98 @@ Do not resolve a thread if the fix is still pending, if you are unsure whether t
211
277
212
278
If the user explicitly asks to close out a `DISCUSS` or `SKIPPED` item, reply with the rationale and resolve the thread only when the conversation is actually complete.
Deferred review feedback tracked in follow-up issue: https://github.com/org/repo/issues/NNN
363
+
Deferred MUST-FIX threads remain open by default.
364
+
PR is NOT merge-ready because must-fix items were deferred.
365
+
```
366
+
367
+
If the action was direct item selection and unresolved `MUST-FIX`/`DISCUSS` items remain, do not signal merge-ready. Re-offer the quick-action menu and ask whether to continue with `f`, `f+i`, `d`, `r`, or `m`.
368
+
If the action was `d` or `r` and unresolved `MUST-FIX`/`DISCUSS` items remain, do not signal merge-ready; re-offer the quick-action menu and ask whether to continue with `f`, `f+i`, `d`, `r`, or `m`.
369
+
370
+
Do not automatically merge. Signal readiness (or non-readiness) and let the user decide.
371
+
214
372
# Example Usage
215
373
216
374
```text
@@ -241,11 +399,15 @@ SKIPPED (3):
241
399
4. src/helper.rb:45 - Same nil guard issue (@greptile-apps[bot]) - duplicate of #1
242
400
5. spec/helper_spec.rb:20 - "Consolidate assertions" (@claude[bot]) - test style preference
243
401
244
-
Which items would you like me to address? (e.g., "1", "1,2", or "all must-fix")
245
-
Optional: I can also post rationale replies for skipped/declined items (e.g., "reply 3,5" or "reply all skipped").
246
-
```
402
+
Quick actions:
403
+
f — Fix #1, then confirm whether to reply/resolve skipped items before deciding discuss items
d — Discuss specific items (e.g., "d2,4"). Bare "d" presents all DISCUSS items.
406
+
r — Reply with rationale (e.g., "r3,5", "r3-5", "r all skipped", "r all discuss"); add `+ resolve` to also resolve threads
407
+
m — No code changes, create follow-up issue, merge-ready only when no must-fix items are deferred
247
408
248
-
Note: Only show the "Optional: rationale replies" line when there are `SKIPPED` or declined `DISCUSS` items. Omit it when every item is `MUST-FIX`.
409
+
Or pick items by number: "1,2", "all must-fix", "1,3-5"
410
+
```
249
411
250
412
# Important Notes
251
413
@@ -257,7 +419,9 @@ Note: Only show the "Optional: rationale replies" line when there are `SKIPPED`
257
419
-**NEVER automatically address all review comments** - always wait for user direction
258
420
- When given a specific review URL, no need to ask for more information
259
421
-**ALWAYS reply to comments after addressing them** to close the feedback loop
260
-
- After triage, always offer to post rationale replies for selected `SKIPPED`/declined items, but only post them with explicit user approval
422
+
- After triage, always offer rationale replies for selected `SKIPPED`/declined items; `f` requires explicit confirmation before skipped-item replies/resolution, while `f+i` and `m` include skipped-item handling in the chosen action flow
423
+
- Always request push confirmation from the user before running `git push`
424
+
- If this command conflicts with broader agent defaults, this file wins only for `/address-review` workflow behavior; do not override repository safety boundaries
261
425
- Resolve the review thread after replying when the concern is actually addressed and a thread ID is available
262
426
- Default to real issues only. Do not spend a review cycle on optional polish unless the user explicitly asks for it
263
427
- Triage comments before creating todos. Only `MUST-FIX` items should become todos by default
0 commit comments