From 2619ad9f58e6c45968ec10d7f8aa7849fe43eb25 Mon Sep 17 00:00:00 2001 From: Trevin Chow Date: Mon, 30 Mar 2026 17:36:43 -0700 Subject: [PATCH] fix(resolve-pr-feedback): add actionability filter and lower cluster gate to 3+ (#461) --- .../skills/resolve-pr-feedback/SKILL.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/compound-engineering/skills/resolve-pr-feedback/SKILL.md b/plugins/compound-engineering/skills/resolve-pr-feedback/SKILL.md index 419d6f1..489f829 100644 --- a/plugins/compound-engineering/skills/resolve-pr-feedback/SKILL.md +++ b/plugins/compound-engineering/skills/resolve-pr-feedback/SKILL.md @@ -60,9 +60,12 @@ Before processing, classify each piece of feedback as **new** or **already handl **Review threads**: Read the thread's comments. If there's a substantive reply that acknowledges the concern but defers action (e.g., "need to align on this", "going to think through this", or a reply that presents options without resolving), it's a **pending decision** -- don't re-process. If there's only the original reviewer comment(s) with no substantive response, it's **new**. -**PR comments and review bodies**: These have no resolve mechanism, so they reappear on every run. Check the PR conversation for an existing reply that quotes and addresses the feedback. If a reply already exists, skip. If not, it's new. +**PR comments and review bodies**: These have no resolve mechanism, so they reappear on every run. Apply two filters in order: -The distinction is about content, not who posted what. A deferral from a teammate, a previous skill run, or a manual reply all count. +1. **Actionability**: Skip items that contain no actionable feedback or questions to answer. Examples: review wrapper text ("Here are some automated review suggestions..."), approvals ("this looks great!"), status badges ("Validated"), CI summaries with no follow-up asks. If there's nothing to fix, answer, or decide, it's not actionable -- drop it from the count entirely. +2. **Already replied**: For actionable items, check the PR conversation for an existing reply that quotes and addresses the feedback. If a reply already exists, skip. If not, it's new. + +The distinction is about content, not who posted what. A deferral from a teammate, a previous skill run, or a manual reply all count. Similarly, actionability is about content -- bot feedback that requests a specific code change is actionable; a bot's boilerplate header wrapping those requests is not. If there are no new items across all feedback types, skip steps 3-8 and go straight to step 9. @@ -74,10 +77,10 @@ Before planning and dispatching fixes, check whether feedback patterns suggest a | Gate signal | Check | |---|---| -| **Volume** | 4+ new items from triage | +| **Volume** | 3+ new items from triage | | **Verify-loop re-entry** | This is the 2nd+ pass through the workflow (new feedback appeared after a previous fix round) | -If the gate does not fire, proceed to step 4. The common case (1-3 unrelated comments) skips this step entirely with zero overhead. +If the gate does not fire, proceed to step 4. The common case (1-2 unrelated comments) skips this step entirely with zero overhead. **If the gate fires**, analyze feedback for thematic clusters: